Setting Up the Development Environment#

General Setup#

The basic steps for setup the development environment and building the source file are described in the readme.md of the score repository.

This includes:

  • on your linux operating system Bazelisk is available

  • the score repository is cloned to your hard drive

Additional assistance for working with Bazel is provided by following tools:

Buildifier#

Buildifier is a tool which can format .bzl files. Additional info and installation instructions are provided on github

In short:

  • download binary

  • renamed binary to buildifier

  • place it somewhere in the system path e.g.

    • ~/.local/bin (no root required)

    • /usr/local/bin

Autocompletion in the Shell#

How to activate autocompletion in bash and zsh is described here

Basically following steps need to be performed:

  1. Navigate to project workspace folder

  2. Determine bazel version

    bazel --version
    
  3. Build and install the bash completion:

    • Change to any temporary directory and execute

    git clone https://github.com/bazelbuild/bazel.git
    cd bazel
    git checkout <VERSION_OF_BAZEL>
    USE_BAZEL_VERSION=<VERSION_OF_BAZEL> bazel build //scripts:bash_completion
    sudo cp bazel-bin/scripts/bazel-complete.bash /etc/bash_completion.d/
    cd ..
    rm -rf bazel
    

IDE Support#

Currently as a goal for this project the IDE shall provide support for most of the languages which are used in this project. For this Project VS Code is selected as the primary IDE. This means that only VS code will be checked in case of breaking changes!

Other IDE integrations are provided on a community best effort basis.

Python Environment#

The tooling environment, which includes all essential python packages for docs can be built in a virtual python environment which is located in <workspace_root/.venv_dovs>. It needs be build first:

bazel run //docs:ide_support

Later the different IDEs shall be configured to use the tools which were installed into this virtual environment.

IDE Guides#