Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge from librespotorg #291

Open
wants to merge 364 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
364 commits
Select commit Hold shift + click to select a range
7788283
core API: move now_ms to spirc.rs
awiouy Feb 10, 2018
d7fa146
core API: move mkdir_existing to cache.rs
awiouy Feb 10, 2018
496a802
core API: move subfile.rs to player.rs
awiouy Feb 10, 2018
a35edc6
core API: move run_program to player.rs
awiouy Feb 10, 2018
f3bb85c
Merge pull request #137 from awiouy/core_API
sashahilton00 Feb 10, 2018
1248796
Somewhat uniform coding style might help myself to better understand …
michaelherger Jan 31, 2018
5ed4639
Remove the -z as an alias for the --zeroconf-port parameter
michaelherger Jan 31, 2018
4636cb7
Print more descriptive error message when we fail to bind zeroconf to…
michaelherger Feb 9, 2018
0d92ac7
Add rustfmt.toml
awiouy Feb 11, 2018
c9ba73c
rustfmt: core
awiouy Feb 11, 2018
8658ad3
.travis.yml: add rustfmt
awiouy Feb 11, 2018
685c607
Merge pull request #141 from awiouy/rustfmt
plietar Feb 11, 2018
191caca
core API: move Bitrate and PlayerConfig from core to playback
awiouy Feb 11, 2018
d900134
connect: discovery and spirc
awiouy Feb 11, 2018
b7c32e9
rustfmt: connect
awiouy Feb 11, 2018
2617a9c
Merge pull request #139 from michaelherger/rustify
sashahilton00 Feb 11, 2018
90ae9d7
Fix conflicts from PR #143
sashahilton00 Feb 12, 2018
9dc03b5
Merge pull request #144 from librespot-org/awiouy-core_API
sashahilton00 Feb 12, 2018
2349586
Implement [replace] for rust-crypto
sashahilton00 Feb 12, 2018
0cf11da
Merge pull request #147 from librespot-org/replace
plietar Feb 12, 2018
e276d39
core: remove protobuf_macros (#146)
awiouy Feb 12, 2018
1324149
Cargo.lock
awiouy Feb 12, 2018
0fd398e
core API: SessionData
awiouy Feb 12, 2018
aed4fe3
core API: SessionInternal
awiouy Feb 12, 2018
6a9084b
core API: Lazy
awiouy Feb 12, 2018
7dd5a40
travis: Use `cargo --locked` everywhere
plietar Feb 13, 2018
60996d1
Update device usage instructions
sashahilton00 Feb 13, 2018
4c2b641
core API: move spotify_id to lib.rs
awiouy Feb 12, 2018
ea59736
core API: component.new()
awiouy Feb 13, 2018
0ed4fb1
core API: MercuryManager.request()
awiouy Feb 13, 2018
edbe00c
core API: move StrChunks* to metadata
awiouy Feb 13, 2018
a427c83
metadata.rs is empty
awiouy Feb 13, 2018
67dabcd
Enable backtrace on all builds
sashahilton00 Feb 13, 2018
6936825
[ci skip] Accidentally deleted commit
sashahilton00 Feb 13, 2018
17d39df
Make backtrace var conditional
sashahilton00 Feb 13, 2018
1ff634f
Merge pull request #151 from librespot-org/backtrace
sashahilton00 Feb 13, 2018
1de8049
Merge pull request #148 from awiouy/sisyphus
sashahilton00 Feb 13, 2018
8be88d0
Merge pull request #150 from plietar/cargo-lock
sashahilton00 Feb 13, 2018
874cc54
Merge pull request #138 from librespot-org/authpanic
sashahilton00 Feb 13, 2018
63cc63b
Merge pull request #3 from librespot-org/master
ComlOnline Feb 14, 2018
d0ffb2e
Update for rust format
ComlOnline Feb 14, 2018
1257f98
Merge pull request #153 from ComlOnline/rustformat
sashahilton00 Feb 14, 2018
77bea07
Run onstart/onstop when a new song is loaded
SimonTeixidor Feb 14, 2018
b0ee031
First attempt at a better playback event system.
SimonTeixidor Feb 15, 2018
1590961
connect: dispose of protobuf_macros
awiouy Feb 16, 2018
1cd7d4d
connect: rewrite initial_state and CommandSender
awiouy Feb 17, 2018
edabd04
Include updating context_uri along with tracks and current index.
kingosticks Feb 17, 2018
a463633
Also update repeat and shuffle status.
kingosticks Feb 17, 2018
4f3a594
Merge pull request #155 from awiouy/protobuf_macros_2
sashahilton00 Feb 17, 2018
1b943d0
Move PlayerEvent into player.
SimonTeixidor Feb 20, 2018
0a6825b
Add playing_to_end_of_track method to PlayerState.
SimonTeixidor Feb 20, 2018
3e2e6d6
Send Changed event after song change even if we stop playback.
SimonTeixidor Feb 20, 2018
ef48afb
Simplify match with if let.
SimonTeixidor Feb 20, 2018
081a282
Removed unreachable cases.
SimonTeixidor Feb 20, 2018
2eb4aa6
Use single program on events, and pass events in envars.
SimonTeixidor Feb 20, 2018
93af49a
Send player event messages over futures aware channel.
SimonTeixidor Feb 20, 2018
23d3c15
Just spawn event handlers, don't wait for exit code.
SimonTeixidor Feb 20, 2018
9ff6fe9
Don't log messages when sending player events over channel.
SimonTeixidor Feb 20, 2018
3ce2211
Fix example use declarations (#160)
akosel Feb 22, 2018
685fb4e
Merge pull request #156 from kingosticks/fix/update-context-uri
sashahilton00 Feb 22, 2018
1ee8ac9
Enable compilation under Android
mjaggard Feb 22, 2018
edb263e
Updated readme with removed items to compile for Android.
mjaggard Feb 22, 2018
f107c9d
Helpers to compile for android
mjaggard Feb 22, 2018
f8db550
Add volume normalisation support
sashahilton00 Feb 23, 2018
1518459
Minor fixes after review.
SimonTeixidor Feb 23, 2018
fc6c414
[ci skip] Correct spelling
sashahilton00 Feb 23, 2018
127f8b7
Add constant for readability
sashahilton00 Feb 23, 2018
8c3f587
Assignment instead of mem::repalce()
SimonTeixidor Feb 24, 2018
542ec9d
Minor style changes to normalisation code
sashahilton00 Feb 24, 2018
58ea1ba
Issue 130 (#164)
awiouy Feb 24, 2018
eed2bb6
Merge pull request #162 from librespot-org/normalisation
sashahilton00 Feb 24, 2018
bde157f
Merge branch 'master' into events-on-prev-next
sashahilton00 Feb 24, 2018
21d7b61
Merge pull request #154 from Spotifyd/events-on-prev-next
sashahilton00 Feb 25, 2018
4fb8c71
Set SpotifyId methods to return Result
sashahilton00 Feb 25, 2018
084646e
Use prompt for password in main.rs
sashahilton00 Feb 25, 2018
0abad9a
Add custom SpotifyIdError type
sashahilton00 Feb 25, 2018
197d80e
Fix formatting
sashahilton00 Feb 25, 2018
80e0bda
Add kSupportsPlaylistV2 enum
sashahilton00 Feb 25, 2018
79a1d9a
Merge pull request #167 from librespot-org/fix_enum
sashahilton00 Feb 25, 2018
ae15790
Better error reporting
mjaggard Feb 25, 2018
c3745a9
Merge pull request #166 from librespot-org/apireview
sashahilton00 Feb 26, 2018
237ef1e
Format according to rustfmt
sashahilton00 Feb 26, 2018
53387a3
Update travis to run rustfmt against all crates
sashahilton00 Feb 26, 2018
aa880f8
Merge pull request #165 from librespot-org/rustfmt
sashahilton00 Feb 26, 2018
8e0d758
[ci skip] Create CONTRIBUTING.md
sashahilton00 Feb 26, 2018
8cd1ab4
Remove TODO list from README
plietar Feb 27, 2018
593dfa0
Merge pull request #170 from librespot-org/plietar-patch-1
sashahilton00 Feb 27, 2018
a7334b6
Add to_base62 method
sashahilton00 Feb 28, 2018
cbc4ee7
Add to_base62 method
sashahilton00 Feb 28, 2018
f830322
Fix spotify URI logging
sashahilton00 Feb 28, 2018
8f8eb8c
Merge pull request #173 from librespot-org/base62
sashahilton00 Feb 28, 2018
24cd9aa
Add a armv6hf crossbuild target
ashthespy Mar 1, 2018
b3966b0
Add optional linear volume contol
thekr1s Mar 11, 2018
9d9c311
Merge pull request #184 from ashthespy/armv6hf
ComlOnline Mar 11, 2018
b1f2a41
fir rustfmt issues
thekr1s Mar 11, 2018
d6b82cd
revert file mode to original mode
thekr1s Mar 14, 2018
085f761
Merge pull request #188 from thekr1s/linear-volume-control
sashahilton00 Mar 15, 2018
0f80d80
[ci skip] Update links and documentation.
sashahilton00 Mar 16, 2018
e92bb45
[ci skip] Add related projects note to bottom of readme
sashahilton00 Mar 18, 2018
014533a
playback: Only send a packet to the audio backend if it isn't empty
brain0 Mar 20, 2018
0c18aa5
playback: pulseaudio: Panic in write if data is empty
brain0 Mar 20, 2018
98c48de
Merge remote-tracking branch 'librespotorg/master'
mjaggard Mar 21, 2018
0fb4071
Updating to latest librespot org master
mjaggard Mar 21, 2018
cb61e22
Merge pull request #194 from brain0/fix_pulseaudio
sashahilton00 Mar 23, 2018
6129789
Reformat according to new rustfmt rules
janderholm Mar 23, 2018
3bdc5e0
Add support for http proxy
janderholm Mar 23, 2018
1a04e3b
Resolve AP through proxy as well
janderholm Mar 23, 2018
3a14e9a
Validate proxy urls better.
janderholm Mar 24, 2018
96a6978
Update Cargo.lock
janderholm Mar 23, 2018
8995f76
Merge pull request #191 from Fulkerson/master
sashahilton00 Apr 6, 2018
96124c5
Add 5xx error panic
sashahilton00 Apr 6, 2018
03de235
Merge pull request #198 from librespot-org/500_error
ComlOnline Apr 12, 2018
d62b72f
fixed example play.rs initalizing player
kbrah Apr 16, 2018
4caf2b8
formatting
kbrah Apr 16, 2018
2aea0e8
do not panic on connection reset
lrbalt Apr 21, 2018
ab70e6e
run rustfmt --all
lrbalt Apr 25, 2018
ffb7714
Merge pull request #206 from lrbalt/master
sashahilton00 Apr 25, 2018
d76d972
Remove rust fmt from Travis
sashahilton00 Apr 25, 2018
59cff3d
Merge pull request #202 from kbrah/master
sashahilton00 Apr 25, 2018
e6fff80
remove deprecated and unused import
Apr 26, 2018
6a4e9e8
return from Main loop on Ctrl-C/shutdown
lrbalt Apr 30, 2018
870afdb
fix deprecation warning for bytes
lrbalt Apr 30, 2018
92835af
Merge pull request #212 from lrbalt/shutdown
sashahilton00 Apr 30, 2018
b86ffa9
Update Cargo versions
sashahilton00 Apr 30, 2018
817dff0
Merge pull request #211 from lrbalt/remove-warning
sashahilton00 Apr 30, 2018
deb240c
reverse #212 since it does not address the real problem (#213)
lrbalt May 1, 2018
21f1ccf
Fixed Jackaudio compiling (#222)
StopMotionCuber May 15, 2018
d40c0f5
Cache volume across restarts (#220)
bricedp May 17, 2018
431be9e
Add kUnknown enum (#224)
dawidd6 May 17, 2018
f61bbd8
Change documentation to reflect code behavior
haroldm Jul 3, 2018
00e8934
Formatting
haroldm Jul 3, 2018
4fb3d5f
Add ap-port option to specify preferred port
haroldm Jul 3, 2018
861515e
Add contrib to .dockerignore for the docker cache to work, when modif…
romerod Sep 2, 2017
4f8ea66
Add Dockerfile.Rpi which creates a librespot docker image which can b…
romerod Sep 2, 2017
e467702
replace rust-crypto's hashes, HMAC and PBKDF2
newpavlov Jul 23, 2018
1f1cd11
aes-ctr
newpavlov Jul 30, 2018
2ae5589
bump min Rust version to 1.27
newpavlov Jul 30, 2018
ee87904
Merge pull request #236 from haroldmrt/master
sashahilton00 Aug 6, 2018
a4e0f58
Merge pull request #237 from romerod/master
ComlOnline Aug 17, 2018
be6910f
Added librespot-java to related projects
devgianlu Sep 17, 2018
37c588d
Set proper name for `kUnknown` enum
ashthespy Sep 26, 2018
c5fcdfd
Upgrade `protobuf` to `2.0` and use `protoc-rust` to compile proto files
ashthespy Sep 28, 2018
96b432a
Implement support for dynamic playlists (Radio)
ashthespy Oct 12, 2018
0626655
update dependencies
newpavlov Oct 15, 2018
eaac599
reap the exit statuses from 'onevent' child processes
wfraser Oct 16, 2018
9fa138a
implement using tokio-process instead
wfraser Oct 16, 2018
3614404
Merge pull request #248 from devgianlu/master
sashahilton00 Oct 16, 2018
8d53c80
Merge pull request #255 from wfraser/wfraser/child-exit-wait
sashahilton00 Oct 21, 2018
473fc18
Bump minimum version for Travis Builds
sashahilton00 Oct 30, 2018
d12640f
Merge pull request #251 from ashthespy/master
sashahilton00 Oct 31, 2018
7cbf6d1
update lewton to 0.9.3
awiouy Nov 1, 2018
0331a7f
Remove contrib from .dockerignore
sashahilton00 Nov 3, 2018
81e7c9b
Changed TRACK_ID from base16 to base62 so that it is equal with the o…
StopMotionCuber Nov 4, 2018
3441ef8
Merge pull request #259 from awiouy/lewton-0.9.3
awiouy Nov 4, 2018
96557b4
Merge pull request #260 from StopMotionCuber/fix_232
awiouy Nov 7, 2018
74e0ada
Fix seek past EOF panic for some tracks
sashahilton00 Nov 10, 2018
d2cadec
Merge pull request #262 from librespot-org/seek-eof
sashahilton00 Nov 19, 2018
7725915
Merge branch 'master' into master
newpavlov Dec 6, 2018
5706562
update deps
newpavlov Dec 6, 2018
4bd0fc8
update aes-ctr to 0.3
newpavlov Dec 6, 2018
54974d8
update Cargo.lock
newpavlov Dec 6, 2018
b320c4b
Run cargo update
tstenner Feb 5, 2019
113fed5
Update rand to 0.6
tstenner Jan 17, 2019
9b6b55e
Update subscription uri
forslund Feb 22, 2019
daeeeaa
Merge pull request #291 from forslund/uri-tweak-for-load-issue
sashahilton00 Feb 22, 2019
a3c63b4
Speed up loading of files by requesting file and key in parallel.
kaymes Mar 9, 2019
2e492e4
Speed up playback by avoiding unnecessary seek when playing from the …
kaymes Mar 9, 2019
f62709f
Merge remote-tracking branch 'origin/master' into kaymes-faster
kaymes Mar 9, 2019
43959ee
Commit missing ;
kaymes Mar 9, 2019
43dcc6b
Remove deft over debug message.
kaymes Mar 10, 2019
0a9a293
Fix travis rust version
sashahilton00 Mar 10, 2019
0686fe5
Update Spirc depreciated rand method
sashahilton00 Mar 10, 2019
8978559
Merge pull request #284 from tstenner/rand06
sashahilton00 Mar 10, 2019
c83c95b
Fix depreciated cause error, bump Travis min. version to 1.27.0
sashahilton00 Mar 10, 2019
c22a6d1
Requires 1.30.0 not 1.27.0 apparently.
sashahilton00 Mar 11, 2019
4c1562f
discover: do not panic on MAC mismatch. (Fixes #289)
kingosticks Mar 13, 2019
83bfdff
discover: log the actual HTTP port that is used.
kingosticks Mar 13, 2019
6a60059
main: exit librespot after the first ctrl+c if no currently active sp…
kingosticks Mar 13, 2019
c041697
Support Dailymixes and refactor dynamic playlists
ashthespy Mar 13, 2019
4a6d7b9
Updated version number
devgianlu Mar 13, 2019
7f22785
Merge pull request #303 from devgianlu/unlock-features-fix
sashahilton00 Mar 13, 2019
806a8f2
Merge pull request #297 from kaymes/kaymes-faster
sashahilton00 Mar 13, 2019
06c6969
Switch to `protobuf-codegen-pure` to remove `protoc` dependency
ashthespy Nov 27, 2018
0fcfe4f
Merge pull request #304 from librespot-org/protoc-rust
sashahilton00 Mar 13, 2019
ef28df6
Merge pull request #302 from kingosticks/fix/discover-bad-mac-panic
sashahilton00 Mar 14, 2019
b0ee8ec
Tweak malformed gid handling
ashthespy Mar 15, 2019
391b9c6
Merge branch 'master' into master
newpavlov Mar 15, 2019
6870c76
Limit new context tracks added to frame
ashthespy Mar 16, 2019
7258944
update Cargo.lock, use constant time equality check, remove block-modes
newpavlov Mar 16, 2019
308ff32
Merge pull request #239 from newpavlov/master
sashahilton00 Mar 20, 2019
8b32e7a
Merge pull request #305 from ashthespy/dynamic-playlists
sashahilton00 Mar 20, 2019
0bbca1d
Use serde 1.0
medwards Mar 15, 2019
8912981
Initial untested VecDeque concept.
willstott101 Nov 15, 2018
ac9423d
cpal backend builds. Panics building output stream on my system.
willstott101 Nov 15, 2018
b81bdca
QDH: Instantiate audio backend immediately when using "--device ?".
willstott101 Nov 15, 2018
1eb5b7d
Turns out I don't have an appropriate output device.
willstott101 Nov 15, 2018
2c2bfc5
Cpal -> Rodio
willstott101 Mar 20, 2019
49fd48b
Sink.play is not the opposite of Sink.stop in Rodio
willstott101 Mar 1, 2019
587aa9c
Simple block of playback thread based on buffer size.
willstott101 Mar 20, 2019
f1be508
Make rodio backend the default
willstott101 Mar 10, 2019
5ceb4db
Improve formatting and macro usage in devices list.
willstott101 Mar 20, 2019
99703a2
Warn when there's a Rodio failure accessing a default device formats.
willstott101 Mar 17, 2019
3548917
Update Cargo.lock with successful windows build.
willstott101 Mar 20, 2019
6d7d385
Merge pull request #277 from willstott101/cpal-backend
sashahilton00 Mar 20, 2019
e606ace
Merge branch 'master' into master
sashahilton00 Mar 20, 2019
d26153a
Fix Cargo.lock
sashahilton00 Mar 20, 2019
2fb901a
Merge pull request #307 from medwards/master
sashahilton00 Mar 20, 2019
fe4b71d
Fix tokio depreciation warnings
sashahilton00 Mar 20, 2019
1ccf00c
Merge branch 'master' into error-source-fix
sashahilton00 Mar 20, 2019
b7a2aad
Add credentials field alias
medwards Mar 20, 2019
fe073e6
add ncspot to list of related projects
hrkfdn Mar 20, 2019
a41ab28
Merge pull request #315 from hrkfdn/patch-1
sashahilton00 Mar 21, 2019
a67048c
Add initial support for `alsamixer`
ashthespy Mar 20, 2018
08cfb15
Switch to latest `alsa-rs` crate
ashthespy Mar 21, 2018
99106c5
Rework `alsa` hw and mixer parameters
ashthespy Sep 1, 2018
0e11470
Add run time option flags for `AlsaMixer`
ashthespy Sep 11, 2018
a80bf86
Clean up alsa stragglers and typos
ashthespy Oct 16, 2018
cc6c9b2
More `alsa` stragglers
ashthespy Nov 1, 2018
8fd0caf
Explicitly set `start_threshold` and pretty print devices
ashthespy Nov 2, 2018
9cb2f49
Switch `alsa` to crates.io
ashthespy Mar 21, 2019
52c5b18
add SDL backend based on sdl2 crate
matikij Dec 28, 2018
18a6746
Remove unnecessary comments, fix typo
matikij Mar 22, 2019
4e64934
[ciskip] Update Readme.md
sashahilton00 Mar 23, 2019
dc9b2de
Fixed issue with time alignment
devgianlu Mar 24, 2019
c55c63c
Merge pull request #313 from medwards/alias_facebook_fields
sashahilton00 Mar 25, 2019
e9b159e
Merge pull request #321 from devgianlu/time-alignment-fix
sashahilton00 Mar 25, 2019
5990a0d
Merge pull request #245 from ashthespy/alsa
ashthespy Mar 25, 2019
9f9218f
Remove redundant `rpassword` crate from `librespot-core`
ashthespy Mar 26, 2019
9b4ede0
Server time delta is a signed integer
medwards Mar 25, 2019
14721f4
Merge pull request #323 from medwards/check_underflow
sashahilton00 Mar 27, 2019
8d08425
Refactor adding context tracks to state
ashthespy Mar 28, 2019
df3bea8
Merge pull request #324 from ashthespy/bloat
sashahilton00 Apr 12, 2019
bf7f54a
Merge pull request #299 from librespot-org/error-source-fix
sashahilton00 Apr 12, 2019
2e7c5e9
Bump rust version number.
sashahilton00 Apr 12, 2019
6c4311f
Merge pull request #283 from matikij/sdl-backend
sashahilton00 Apr 12, 2019
5d2cb32
Merge pull request #325 from ashthespy/dynamic-playlists
sashahilton00 Apr 16, 2019
9e68a29
Run cargo update
tstenner May 2, 2019
37eca2f
Update env_logger to 0.6
tstenner May 3, 2019
4e3576b
Merge pull request #335 from tstenner/env_logger
sashahilton00 Jun 1, 2019
6e280b3
Upgrade dependencies
GeorgeHahn Jul 8, 2019
0bf96ec
Regenerate protobufs with rust-protobuf 2.7.0
GeorgeHahn Jul 18, 2019
f662d15
[Travis] Increase minimum Rust version to 1.32.0
GeorgeHahn Jul 18, 2019
1f75479
Merge pull request #347 from GeorgeHahn/upgrade-dependencies
sashahilton00 Jul 21, 2019
08e88d6
travis: Add `rodio` & `sdl` to tests
ashthespy Jul 18, 2019
51a634d
Merge pull request #353 from ashthespy/travis
ashthespy Jul 23, 2019
9d97f8f
Automatic update to protobuf 2.8, regenerate protocol files
tstenner Jul 27, 2019
1ba6e58
Restrict protobuf updates
tstenner Jul 30, 2019
d4bba4d
Merge pull request #356 from tstenner/updateprotobuf
sashahilton00 Aug 19, 2019
1ce0706
Add note for request for maintainers
sashahilton00 Aug 19, 2019
730d8b7
Merge branch 'master' of github.com:librespot-org/librespot
mjaggard Aug 23, 2019
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@ target
.cargo
spotify_appkey.key
.vagrant/
.project
.history
31 changes: 20 additions & 11 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
language: rust
rust:
- 1.17.0
- 1.32.0
- stable
- beta
- nightly
Expand All @@ -14,6 +14,8 @@ addons:
- libc6-dev-armhf-cross
- libpulse-dev
- portaudio19-dev
- libasound2-dev
- libsdl2-dev

before_script:
- mkdir -p ~/.cargo
Expand All @@ -22,15 +24,22 @@ before_script:
- rustup target add armv7-unknown-linux-gnueabihf

script:
- cargo build --no-default-features
- cargo build --no-default-features --features "with-tremor"
- cargo build --no-default-features --features "portaudio-backend"
- cargo build --no-default-features --features "pulseaudio-backend"
- cargo build --no-default-features --features "alsa-backend"
- cargo build --no-default-features --target armv7-unknown-linux-gnueabihf
- if [[ $TRAVIS_RUST_VERSION != *"1.17.0"* ]]; then
cargo build --no-default-features --features "with-lewton";
fi
- cargo build --locked --no-default-features
- 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 "alsa-backend"
- cargo build --locked --no-default-features --features "portaudio-backend"
- cargo build --locked --no-default-features --features "pulseaudio-backend"
- cargo build --locked --no-default-features --features "jackaudio-backend"
- cargo build --locked --no-default-features --features "rodio-backend"
- cargo build --locked --no-default-features --features "sdl-backend"
- cargo build --locked --no-default-features --target armv7-unknown-linux-gnueabihf

notifications:
email: false
email: false
webhooks:
urls:
- https://webhooks.gitter.im/e/780b178b15811059752e
on_success: change # options: [always|never|change] default: always
on_failure: always # options: [always|never|change] default: always
on_start: never # options: [always|never|change] default: always
165 changes: 165 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,165 @@
# Contributing

## Setup

In order to contribute to librespot, you will first need to set up a suitable rust build environment, with the necessary dependenices installed. These instructions will walk you through setting up a simple build environment.

You will need to have C compiler, rust, and portaudio installed.

### Install Rust

The easiest, and recommended way to get rust setu is to use [rustup](https://rustup.rs). You can install rustup with this command:

```bash
curl https://sh.rustup.rs -sSf | sh
```

Follow any prompts it gives you to install rust. Once that’s done, rust is ready to use.

### Install Other Dependencies
On debian / ubuntu, the following command will install these dependencies :

```bash
sudo apt-get install build-essential portaudio19-dev
```

On Fedora systems, the following command will install these dependencies :

```bash
sudo dnf install portaudio-devel make gcc
```

On macOS, using homebrew :

```bash
brew install portaudio
```

### Getting the Source

The recommended method is to first fork the repo, so that you have a copy that you have read/write access to. After that, it’s a simple case of git cloning.

```bash
git clone git@github.com:YOURUSERNAME/librespot.git
```

CD to the newly cloned repo...

```bash
cd librespot
```

### Development Extra Steps

If you are looking to carry out development on librespot:

```bash
rustup override set nightly
```

The command above overrides the default rust in the directory housing librespot to use the ```nightly``` version, as opposed to the ```stable``` version.

Then, run the command below to install [rustfmt](https://github.com/rust-lang-nursery/rustfmt) for the ```nightly``` toolchain. This is not optional, as Travis CI is set up to check that code is compliant with rustfmt.

```bash
rustup component add rustfmt-preview
```

## Compiling & Running

Once your build environment is setup, compiling the code is pretty simple.

### Compiling

To build a ```debug``` build, from the project root:

```bash
cargo build
```

And for ```release```:

```bash
cargo build --release
```

You will most likely want to build debug builds when developing, as they are faster, and more verbose, for the purposes of debugging.

There are also a number of compiler feature flags that you can add, in the event that you want to have certain additional features also compiled. The list of these is available on the [wiki](https://github.com/librespot-org/librespot/wiki/Compiling#addition-features).

By default, librespot compiles with the ```portaudio-backend``` feature. To compile without default features, you can run with:

```bash
cargo build --no-default-features
```

### Running

Assuming you just compiled a ```debug``` build, you can run librespot with the following command:

```bash
./target/debug/librespot -n Librespot
```

There are various runtime options, documented in the wiki, and visible by running librespot with the ```-h``` argument.

## Reporting an Issue

Issues are tracked in the Github issue tracker of the librespot repo.

If you have encountered a bug, please report it, as we rely on user reports to fix them.

Please also make sure that your issues are helpful. To ensure that your issue is helpful, please read over this brief checklist to avoid the more common pitfalls:

- Please take a moment to search/read previous similar issues to ensure you aren’t posting a duplicate. Duplicates will be closed immediately.
- Please include a clear description of what the issue is. Issues with descriptions such as ‘It hangs after 40 minutes’ will be closed immediately.
- Please include, where possible, steps to reproduce the bug, along with any other material that is related to the bug. For example, if librespot consistently crashes when you try to play a song, please include the Spotify URI of that song. This can be immensely helpful in quickly pinpointing and resolving issues.
- Lastly, and perhaps most importantly, please include a backtrace where possible. Recent versions of librespot should produce these automatically when it crashes, and print them to the console, but in some cases, you may need to run ‘export RUST_BACKTRACE=full’ before running librespot to enable backtraces.

## Contributing Code

If there is an issue that you would like to write a fix for, or a feature you would like to implement, we use the following flow for updating code in the librespot repo:

```
Fork -> Fix -> PR -> Review -> Merge
```

This is how all code is added to the repository, even by those with write access.

#### Steps before Commiting

In order to prepare for a PR, you will need to do a couple of things first:

Make any changes that you are going to make to the code, but do not commit yet.

Make sure you are using rust ```nightly``` to build librespot. Once this is confirmed, you will need to run the following command:

```bash
cargo fmt --all
```

This command runs the previously installed ```rustfmt```, a code formatting tool that will automatically correct any formatting that you have used that does not conform with the librespot code style. Once that command has run, you will need to rebuild the project:

```bash
cargo build
```

Once it has built, and you have confirmed there are no warnings or errors, you should commit your changes.

```bash
git commit -a -m “My fancy fix”
```

**N.B.** Please, for the sake of a readable history, do not bundle multipe major changes into a single commit. Instead, break it up into multiple commits.

Once you have made the commits you wish to have merged, push them to your forked repo:

```bash
git push
```

Then open a pull request on the main librespot repo.

Once a pull request is under way, it will be reviewed by one of the project maintainers, and either approved for merging, or have changes requested. Please be alert in the review period for possible questions about implementation decisions, implemented behaviour, and requests for changes. Once the PR is approved, it will be merged into the main repo.

Happy Contributing :)