# Music Hoard ## Developing ### Pre-requisites #### musicbrainz-api This feature requires the `openssl` system library. On Fedora: ``` sh sudo dnf install openssl-devel ``` ## Usage notes ### Text selection To select and copy text use the terminal-specific modifier key (on Linux this is usually the Shift key). ## Code Coverage ### Pre-requisites ``` sh rustup component add llvm-tools-preview cargo install grcov ``` ### Generating Code Coverage ```sh env CARGO_TARGET_DIR=codecov \ rm -rf ./codecov/debug/{coverage,profraw} env CARGO_TARGET_DIR=codecov \ cargo clean -p musichoard env RUSTFLAGS="-C instrument-coverage" \ LLVM_PROFILE_FILE="codecov/debug/profraw/musichoard-%p-%m.profraw" \ CARGO_TARGET_DIR=codecov \ BEETSDIR=./ \ cargo test --all-features --all-targets grcov codecov/debug/profraw \ --binary-path ./codecov/debug/ \ --output-types html \ --source-dir . \ --ignore-not-existing \ --ignore "build.rs" \ --ignore "tests/*" \ --ignore "src/main.rs" \ --ignore "src/bin/musichoard-edit.rs" \ --excl-start "GRCOV_EXCL_START|mod tests \{" \ --excl-stop "GRCOV_EXCL_STOP" \ --output-path ./codecov/debug/coverage/ xdg-open codecov/debug/coverage/index.html ``` Note that some changes may not be visible until `codecov/debug/coverage` is removed and the `grcov` command is rerun. For most cases `cargo clean` can be replaced with `rm -rf ./codecov/debug/{coverage,profraw}`. ## Benchmarks ### Pre-requisites ``` sh rustup toolchain install nightly ``` ### Running benchmarks ``` sh env BEETSDIR=./ rustup run nightly cargo bench --all-features --all-targets ```