mirror of
https://github.com/oSumAtrIX/free-librespot.git
synced 2025-12-20 02:14:22 +00:00
Merge remote-tracking branch 'origin/dev' into dynamic-blocks-kdev
This commit is contained in:
commit
d237ce7b1b
4 changed files with 115 additions and 3 deletions
11
.travis.yml
11
.travis.yml
|
|
@ -6,6 +6,16 @@ rust:
|
||||||
- nightly
|
- nightly
|
||||||
|
|
||||||
cache: cargo
|
cache: cargo
|
||||||
|
# Reduce cache bloat
|
||||||
|
before_cache:
|
||||||
|
- rm -rfv "$TRAVIS_HOME/.cargo/registry/src"
|
||||||
|
- rm -rfv target/debug/incremental/{librespot,build_script_build}-*
|
||||||
|
- rm -rfv target/debug/.fingerprint/librespot-*
|
||||||
|
- rm -rfv target/debug/build/librespot-*
|
||||||
|
- rm -rfv target/debug/deps/liblibrespot-*
|
||||||
|
- rm -rfv target/debug/deps/librespot-*
|
||||||
|
- rm -rfv target/debug/{librespot,liblibrespot}.d
|
||||||
|
- cargo clean -p librespot librespot-core librespot-connect librespot-audio librespot-metadata librespot-playback
|
||||||
|
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
|
|
@ -25,6 +35,7 @@ before_script:
|
||||||
|
|
||||||
script:
|
script:
|
||||||
- cargo build --locked --no-default-features
|
- cargo build --locked --no-default-features
|
||||||
|
- cargo build --locked --examples
|
||||||
- cargo build --locked --no-default-features --features "with-tremor"
|
- cargo build --locked --no-default-features --features "with-tremor"
|
||||||
- cargo build --locked --no-default-features --features "with-vorbis"
|
- cargo build --locked --no-default-features --features "with-vorbis"
|
||||||
- cargo build --locked --no-default-features --features "alsa-backend"
|
- cargo build --locked --no-default-features --features "alsa-backend"
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,28 @@
|
||||||
# Publishing
|
# Publishing
|
||||||
|
|
||||||
|
## How To
|
||||||
|
|
||||||
|
The bash script in the root of the project, named `publish.sh` can be used to publish a new version of librespot and it's corresponding crates. the command should be used as follows: `./publish 0.1.0` from the project root, substituting the new version number that you wish to publish. *Note the lack of a v prefix on the version number. This is important, do not add one.* The v prefix is added where appropriate by the script.
|
||||||
|
|
||||||
|
## What the script does
|
||||||
|
|
||||||
|
This is briefly how the script works:
|
||||||
|
|
||||||
|
- Change to branch master, pull latest version, merge development branch.
|
||||||
|
- CD to working dir.
|
||||||
|
- Change version number in all files.
|
||||||
|
- Commit and tag changes.
|
||||||
|
- Publish crates in given order.
|
||||||
|
- Push version commit and tags to master.
|
||||||
|
|
||||||
|
## Notes
|
||||||
|
|
||||||
Publishing librespot to crates.io is a slightly convoluted affair due to the various dependencies that each package has on other local packages. The order of publising that has been found to work is as follows:
|
Publishing librespot to crates.io is a slightly convoluted affair due to the various dependencies that each package has on other local packages. The order of publising that has been found to work is as follows:
|
||||||
|
|
||||||
`protocol -> core -> audio -> metadata -> playback -> connect -> librespot`
|
`protocol -> core -> audio -> metadata -> playback -> connect -> librespot`
|
||||||
|
|
||||||
The `protocol` package needs to be published with `cargo publish --no-verify` due to the build script modifying the source during compile time.
|
The `protocol` package needs to be published with `cargo publish --no-verify` due to the build script modifying the source during compile time.
|
||||||
|
|
||||||
Publishing can be done using the command `cargo publish` in each of the directories of the respecive crate.
|
Publishing can be done using the command `cargo publish` in each of the directories of the respective crate.
|
||||||
|
|
||||||
|
The script is meant to cover the standard publishing process. There are various improvements that could be made, such as adding options such as the user being able to add a change log, though this is not the main focus, as the script is intended to be run by a CI. Feel free to improve and extend functionality, keeping in mind that it should always be possible for the script to be run in a non-interactive fashion.
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ _Note: librespot only works with Spotify Premium. This will remain the case for
|
||||||
## Quick start
|
## Quick start
|
||||||
We're available on [crates.io](https://crates.io/crates/librespot) as the _librespot_ package. Simply run `cargo install librespot` to install librespot on your system. Check the wiki for more info and possible [usage options](https://github.com/librespot-org/librespot/wiki/Options).
|
We're available on [crates.io](https://crates.io/crates/librespot) as the _librespot_ package. Simply run `cargo install librespot` to install librespot on your system. Check the wiki for more info and possible [usage options](https://github.com/librespot-org/librespot/wiki/Options).
|
||||||
|
|
||||||
After installation, you can run librespot form the CLI using a command such as `librespot -n "Librespot Speaker" -b 192` to create a speaker called _Librespot Speaker_ serving 192kbps audio.
|
After installation, you can run librespot form the CLI using a command such as `librespot -n "Librespot Speaker" -b 160` to create a speaker called _Librespot Speaker_ serving 160kbps audio.
|
||||||
|
|
||||||
## This fork
|
## This fork
|
||||||
As the origin by [plietar](https://github.com/plietar/) is no longer actively maintained, this organisation and repository have been set up so that the project may be maintained and upgraded in the future.
|
As the origin by [plietar](https://github.com/plietar/) is no longer actively maintained, this organisation and repository have been set up so that the project may be maintained and upgraded in the future.
|
||||||
|
|
|
||||||
82
publish.sh
Executable file
82
publish.sh
Executable file
|
|
@ -0,0 +1,82 @@
|
||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
WORKINGDIR="$( cd "$(dirname "$0")" ; pwd -P )"
|
||||||
|
cd $WORKINGDIR
|
||||||
|
|
||||||
|
crates=( "protocol" "core" "audio" "metadata" "playback" "connect" "librespot" )
|
||||||
|
|
||||||
|
function switchBranch {
|
||||||
|
# You are expected to have committed/stashed your changes before running this.
|
||||||
|
echo "Switching to master branch and merging development."
|
||||||
|
git checkout master
|
||||||
|
git pull
|
||||||
|
git merge dev
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateVersion {
|
||||||
|
for CRATE in "${crates[@]}"
|
||||||
|
do
|
||||||
|
if [ "$CRATE" = "librespot" ]
|
||||||
|
then
|
||||||
|
CRATE=''
|
||||||
|
fi
|
||||||
|
crate_path="$WORKINGDIR/$CRATE/Cargo.toml"
|
||||||
|
crate_path=${crate_path//\/\///}
|
||||||
|
sed -i '' "s/^version.*/version = \"$1\"/g" "$crate_path"
|
||||||
|
echo "Path is $crate_path"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function commitAndTag {
|
||||||
|
git commit -a -m "Update version numbers to $1"
|
||||||
|
git tag "v$1" -a -m "Update to version $1"
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_crate_name {
|
||||||
|
awk -v FS="name = " 'NF>1{print $2; exit}' Cargo.toml
|
||||||
|
}
|
||||||
|
|
||||||
|
function publishCrates {
|
||||||
|
for CRATE in "${crates[@]}"
|
||||||
|
do
|
||||||
|
if [ "$CRATE" = "librespot" ]
|
||||||
|
then
|
||||||
|
CRATE=''
|
||||||
|
fi
|
||||||
|
|
||||||
|
crate_path="$WORKINGDIR/$CRATE"
|
||||||
|
crate_path=${crate_path//\/\///}
|
||||||
|
cd $crate_path
|
||||||
|
|
||||||
|
crate_name=`echo $( awk -v FS="name = " 'NF>1{print $2; exit}' Cargo.toml )`
|
||||||
|
echo "Publishing $crate_name to crates.io"
|
||||||
|
if [ "$CRATE" == "protocol" ]
|
||||||
|
then
|
||||||
|
# Protocol crate needs --no-verify option due to build.rs modification.
|
||||||
|
cargo publish --no-verify
|
||||||
|
else
|
||||||
|
cargo publish
|
||||||
|
fi
|
||||||
|
echo "Successfully published $crate_name to crates.io"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
function updateRepo {
|
||||||
|
cd $WORKINGDIR
|
||||||
|
echo "Pushing to master branch of repo."
|
||||||
|
git push origin master
|
||||||
|
echo "Pushing v$1 tag to master branch of repo."
|
||||||
|
git push origin v$1
|
||||||
|
}
|
||||||
|
|
||||||
|
function run {
|
||||||
|
switchBranch
|
||||||
|
updateVersion $1
|
||||||
|
commitAndTag $1
|
||||||
|
publishCrates
|
||||||
|
updateRepo $1
|
||||||
|
echo "Successfully published v$1 to crates.io and uploaded changes to repo."
|
||||||
|
}
|
||||||
|
|
||||||
|
# First argument is new version number.
|
||||||
|
run $1
|
||||||
Loading…
Add table
Reference in a new issue