mirror of
https://github.com/owntone/owntone-server.git
synced 2025-01-23 12:43:18 -05:00
[docs] Docs for development setup
This commit is contained in:
parent
2fe6969f72
commit
9420c52bf7
88
docs/development.md
Normal file
88
docs/development.md
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
# Development
|
||||||
|
|
||||||
|
## Dev Containers and VSCode
|
||||||
|
|
||||||
|
To set up a development environment for OwnTone, the project includes an example Dev Containers configuration.
|
||||||
|
|
||||||
|
!!! tip "Dev Containers"
|
||||||
|
To learn more about Dev Containers and how to use them check out the documentation at:
|
||||||
|
|
||||||
|
- <https://code.visualstudio.com/docs/devcontainers/containers>
|
||||||
|
- <https://containers.dev/>
|
||||||
|
|
||||||
|
Dev Containers config for OwnTone includes all the necessary and some nice to have tooling:
|
||||||
|
|
||||||
|
- C-tools to build and develop for owntone-server, including autotools, dependencies, etc.
|
||||||
|
- Javascript-tools to build and develop the OwnTone web interface.
|
||||||
|
- Python-tools to build and run the OwnTone documentation with mkdocs.
|
||||||
|
|
||||||
|
### Prerquisites
|
||||||
|
|
||||||
|
1. Install [Docker](https://www.docker.com/get-started).
|
||||||
|
2. Install [Visual Studio Code](https://code.visualstudio.com/).
|
||||||
|
3. Install the [Remote - Containers](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers) extension for Visual Studio Code.
|
||||||
|
|
||||||
|
### Initial setup
|
||||||
|
|
||||||
|
The Dev Container and VSCode example configuration files are located in the project folder `.dev/devcontainer` and `.dev/vscode`.
|
||||||
|
|
||||||
|
To make use of them follow these steps:
|
||||||
|
|
||||||
|
1. Copy the directories or run `make vscode` from inside the `.dev` folder.
|
||||||
|
2. Open your project in Visual Studio Code.
|
||||||
|
3. Open the Command Palette (`Ctrl+Shift+P`) and select `Dev Containers: Reopen in Container`.
|
||||||
|
4. VSCode will build the container and reopen the project inside the container.
|
||||||
|
Be patient, the first run will take several minutes to complete.
|
||||||
|
|
||||||
|
### Usage
|
||||||
|
|
||||||
|
Inside the container you can follow the build instructions (see [Building](building.md)):
|
||||||
|
|
||||||
|
- Build owntone-server
|
||||||
|
|
||||||
|
```bash
|
||||||
|
autoreconf -i
|
||||||
|
./configure
|
||||||
|
make
|
||||||
|
```
|
||||||
|
|
||||||
|
- Build web interface
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cd web-src
|
||||||
|
npm run build
|
||||||
|
```
|
||||||
|
|
||||||
|
Running `owntone-server` from inside the container with the predefined run/debug configuration will
|
||||||
|
use the conf file `.devcontainer/data/devcontainer-owntone.conf` as `owntone.conf`.
|
||||||
|
|
||||||
|
Configure the mount configuration in `.devcontainer/devcontainer.json` to use a different music folder
|
||||||
|
or mount the log folder to a local directory.
|
||||||
|
|
||||||
|
```json
|
||||||
|
// Mounts volumes to keep files / state between container rebuilds
|
||||||
|
"mounts": [
|
||||||
|
//...
|
||||||
|
|
||||||
|
// Bind mounts for owntone config file and logs, cache, music directories
|
||||||
|
//"source=<path-to-local-logs-dir>,target=/data/logs,type=bind,consistency=cached",
|
||||||
|
//"source=<path-to-local-cache-dir>,target=/data/cache,type=bind,consistency=cached",
|
||||||
|
//"source=<path-to-local-music-dir>,target=/data/music,type=bind,consistency=cached",
|
||||||
|
"source=${localWorkspaceFolder}/.devcontainer/data/devcontainer-owntone.conf,target=/data/conf/owntone.conf,type=bind,consistency=cached"
|
||||||
|
],
|
||||||
|
```
|
||||||
|
|
||||||
|
### Dev Container configuration
|
||||||
|
|
||||||
|
The Dev Container example uses an Ubuntu image as base. It contains some additional (opinionated) tools to customize the shell prompt and some terminal niceties:
|
||||||
|
|
||||||
|
- [Starship](https://starship.rs/) to customize the shell prompt.
|
||||||
|
- [eza](https://eza.rocks/) as `ls` replacement.
|
||||||
|
- [Atuin](https://atuin.sh/) for the shell history.
|
||||||
|
|
||||||
|
Take a look at `.devcontainer/devcontainer.env` if you want to disable any of those.
|
||||||
|
|
||||||
|
Additional terminal tools installed are:
|
||||||
|
|
||||||
|
- [zoxide](https://github.com/ajeetdsouza/zoxide) - a smarter `cd`
|
||||||
|
- [bat](https://github.com/sharkdp/bat) - a `cat` clone with syntax highlighting
|
@ -158,4 +158,5 @@ nav:
|
|||||||
- Radio Streams: advanced/radio-streams.md
|
- Radio Streams: advanced/radio-streams.md
|
||||||
- Remote Access: advanced/remote-access.md
|
- Remote Access: advanced/remote-access.md
|
||||||
- Multiple Instances: advanced/multiple-instances.md
|
- Multiple Instances: advanced/multiple-instances.md
|
||||||
|
- Development: development.md
|
||||||
- JSON API: json-api.md
|
- JSON API: json-api.md
|
||||||
|
Loading…
x
Reference in New Issue
Block a user