muzak 0.1.4 → 0.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +1 -1
- data/CONFIGURATION.md +213 -0
- data/README.md +7 -2
- data/lib/muzak/config.rb +3 -0
- data/lib/muzak/const.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 38d02c02227daac78a8a7d7b7aa219c99bec2843
|
4
|
+
data.tar.gz: 993d13e33b8484b6fb8053231e2015c0268c5d47
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3394c2f9f00ffbb1fb3ecaeca71a29544690bbb743dacd89bbf7d3faca7329623e4cf7574c42cbf68e1970dd9a77f03971a0429383bb1d4676387b719f333b9a
|
7
|
+
data.tar.gz: e7872463a13c5997c9521e1bf65e3a456a64678309836d3834ac47f3c57819cd60c9be69de7c858af43ba25fffd187714545dcfdfaf1d9862d51aeea5bf3ab97
|
data/.yardopts
CHANGED
@@ -1 +1 @@
|
|
1
|
-
--tag command:"muzak command" --tag cmdexample:"example invocation" --no-private --markup-provider=redcarpet --markup=markdown -
|
1
|
+
--tag command:"muzak command" --tag cmdexample:"example invocation" --no-private --markup-provider=redcarpet --markup=markdown - *.md LICENSE
|
data/CONFIGURATION.md
ADDED
@@ -0,0 +1,213 @@
|
|
1
|
+
Muzak configuration
|
2
|
+
===================
|
3
|
+
|
4
|
+
This is the user-facing documentation for muzak's configuration.
|
5
|
+
|
6
|
+
For the developer documentation, see {Muzak::Config}.
|
7
|
+
|
8
|
+
## General behavior
|
9
|
+
|
10
|
+
All of muzak's configuration is kept in {Muzak::Config}, which is read
|
11
|
+
during load-time (i.e., during `require`) from {Muzak::CONFIG_FILE}, which
|
12
|
+
is YAML-formatted.
|
13
|
+
|
14
|
+
Muzak loads configuration keys just like commands, translating them from
|
15
|
+
`kebab-case` to `snake_case`. For example, take the following configuration:
|
16
|
+
|
17
|
+
```yaml
|
18
|
+
---
|
19
|
+
debug: true
|
20
|
+
verbose: true
|
21
|
+
music: "/home/william/mnt/fortuna/music/"
|
22
|
+
player: mpv
|
23
|
+
art-geometry: 300x300
|
24
|
+
jukebox-size: 100
|
25
|
+
deep-index: true
|
26
|
+
```
|
27
|
+
|
28
|
+
This is exposed in `Muzak::Config` as follows:
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
Muzak::Config.debug # => true
|
32
|
+
Muzak::Config.verbose # => true
|
33
|
+
Muzak::Config.music # => "/home/william/mnt/fortuna/music/"
|
34
|
+
Muzak::Config.player # => "mpv"
|
35
|
+
Muzak::Config.art_geometry # => "300x300"
|
36
|
+
Muzak::Config.jukebox_size # => 100
|
37
|
+
Muzak::Config.deep_index # => true
|
38
|
+
```
|
39
|
+
|
40
|
+
Since {Muzak::Config} is populated whenever `muzak` is loaded via `require`,
|
41
|
+
it can be used within both scripts and clients. As such, it should be preferred
|
42
|
+
over custom configuration solutions for external programs that interact
|
43
|
+
primarily with muzak.
|
44
|
+
|
45
|
+
{Muzak::Config} resolves undefined keys to `false`, allowing a pattern like
|
46
|
+
this:
|
47
|
+
|
48
|
+
```ruby
|
49
|
+
something_special Config.special_key if Config.special_key
|
50
|
+
```
|
51
|
+
|
52
|
+
## A note on plugin configuration
|
53
|
+
|
54
|
+
Muzak loads a plugin if and only if `plugin-$name` is present in the
|
55
|
+
configuration, where `$name` is the lowercased class name of the plugin
|
56
|
+
(see {Muzak::Plugin::StubPlugin.plugin_name} and {Muzak::Config.plugin?}).
|
57
|
+
|
58
|
+
For example, to enable the made-up "foo" plugin, your configuration should
|
59
|
+
include something like this.
|
60
|
+
|
61
|
+
```
|
62
|
+
plugin-foo:
|
63
|
+
foo-option-1: bar
|
64
|
+
foo-option-2: baz
|
65
|
+
```
|
66
|
+
|
67
|
+
Plugins can, of course, access their configuration through {Muzak::Config}:
|
68
|
+
|
69
|
+
```
|
70
|
+
Muzak::Config.plugin_foo["foo-option-1"] # => "bar"
|
71
|
+
```
|
72
|
+
|
73
|
+
## Core configuration
|
74
|
+
|
75
|
+
These are the configuration keys observed by muzak's "core," particularly
|
76
|
+
{Muzak::Instance} any everything it controls.
|
77
|
+
|
78
|
+
In no particular order:
|
79
|
+
|
80
|
+
### `debug`
|
81
|
+
|
82
|
+
*Optional.*
|
83
|
+
|
84
|
+
*Default:* `false`
|
85
|
+
|
86
|
+
If `debug: true` is set in the configuration file, then muzak operates in
|
87
|
+
debugging mode. This includes printing debug messages and not forking `muzakd`
|
88
|
+
into the background.
|
89
|
+
|
90
|
+
### `verbose`
|
91
|
+
|
92
|
+
*Optional.*
|
93
|
+
|
94
|
+
*Default:* `true`
|
95
|
+
|
96
|
+
If `verbose: true` is set in the configuration file, then muzak operates in
|
97
|
+
verbose mode. This includes printing informational messages and not forking
|
98
|
+
`muzakd` into the background.
|
99
|
+
|
100
|
+
### `music`
|
101
|
+
|
102
|
+
*Mandatory.*
|
103
|
+
|
104
|
+
*Default:* `~/music`
|
105
|
+
|
106
|
+
`music: <directory>` should be set to the directory of the music library.
|
107
|
+
Muzak uses this key to point the indexer at the correct directory.
|
108
|
+
|
109
|
+
### `player`
|
110
|
+
|
111
|
+
*Mandatory.*
|
112
|
+
|
113
|
+
*Default:* `mpv`
|
114
|
+
|
115
|
+
`player: <player>` should be set to the short name of the user's music player.
|
116
|
+
Muzak uses this key to find the correct {Muzak::Player} underclass to
|
117
|
+
initialize and control.
|
118
|
+
|
119
|
+
The short names of supported players can be found in
|
120
|
+
{Muzak::Player::PLAYER_MAP}.
|
121
|
+
|
122
|
+
### `index-autobuild`
|
123
|
+
|
124
|
+
*Optional.*
|
125
|
+
|
126
|
+
*Default:* `86400`
|
127
|
+
|
128
|
+
`index-autobuild: <span>` should be set to maximum number of seconds before
|
129
|
+
an index is considered outdated (based on its {Muzak::Index#timestamp} field).
|
130
|
+
|
131
|
+
When an outdated index is loaded and this key is set, muzak will automatically
|
132
|
+
rebuild the index.
|
133
|
+
|
134
|
+
**Note:** This is *not* an interval - the outdated index is only rebuilt
|
135
|
+
when a new {Muzak::Instance} or {Muzak::Index} is instantiated.
|
136
|
+
|
137
|
+
### `deep-index`
|
138
|
+
|
139
|
+
*Optional.*
|
140
|
+
|
141
|
+
*Default:* `false`
|
142
|
+
|
143
|
+
If `deep-index: true` is set in the configuration file, then muzak will
|
144
|
+
build a "deep" index. This involves opening each music file and reading metadata
|
145
|
+
from it, which can take substantially longer than just a shallow filesystem
|
146
|
+
index.
|
147
|
+
|
148
|
+
This primary benefit of this is caching - having all the song metadata in the
|
149
|
+
index allows muzak to make fewer disk accesses, which may be expensive over
|
150
|
+
a remote disk.
|
151
|
+
|
152
|
+
### `jukebox-size`
|
153
|
+
|
154
|
+
*Mandatory.*
|
155
|
+
|
156
|
+
*Default:* `100`
|
157
|
+
|
158
|
+
`jukebox-size: <size>` should be set to the number of random songs to enqueue
|
159
|
+
by default with the `jukebox` size.
|
160
|
+
|
161
|
+
### `art-geometry`
|
162
|
+
|
163
|
+
*Optional.*
|
164
|
+
|
165
|
+
*No default.*
|
166
|
+
|
167
|
+
`art-geometry: <geometry>` should be set to the desired size of displayed
|
168
|
+
album art, in "WxH" format. If not set, album art will be displayed at
|
169
|
+
any size the player pleases.
|
170
|
+
|
171
|
+
It's entirely up to the user's player to obey this value.
|
172
|
+
|
173
|
+
### `autoplay`
|
174
|
+
|
175
|
+
*Optional.*
|
176
|
+
|
177
|
+
*No default.*
|
178
|
+
|
179
|
+
`autoplay: <playlist>` should be set to a playlist that the user wishes to
|
180
|
+
automatically start when muzak starts. If not set, no playlist is automatically
|
181
|
+
played.
|
182
|
+
|
183
|
+
## Daemon/client configuration
|
184
|
+
|
185
|
+
These are configuration keys observed by muzak's interface(s).
|
186
|
+
|
187
|
+
### `daemon-port`
|
188
|
+
|
189
|
+
*Optional.*
|
190
|
+
|
191
|
+
*Default:* `2669`
|
192
|
+
|
193
|
+
`daemon-port: <port>` should be set to a valid port number for `muzakd` to
|
194
|
+
listen on.
|
195
|
+
|
196
|
+
### `daemon-host`
|
197
|
+
|
198
|
+
*Optional.*
|
199
|
+
|
200
|
+
*Default:* `localhost`
|
201
|
+
|
202
|
+
`daemon-host: <hostname>` should be set to the hostname for `muzakd` to
|
203
|
+
listen on.
|
204
|
+
|
205
|
+
### `dmenu-exec`
|
206
|
+
|
207
|
+
*Optional.*
|
208
|
+
|
209
|
+
*No default.*
|
210
|
+
|
211
|
+
`dmenu-exec: <command args...>` can be used to alter `muzak-dmenu`'s
|
212
|
+
invocation of `dmenu`. It can also be used to substitute a dmenu-compatible
|
213
|
+
prompt like `rofi -dmenu`.
|
data/README.md
CHANGED
@@ -1,10 +1,12 @@
|
|
1
1
|
muzak
|
2
2
|
=====
|
3
3
|
|
4
|
+
[](https://badge.fury.io/rb/muzak)
|
5
|
+
|
4
6
|
muzak is an attempt at a metamusic player.
|
5
7
|
|
6
8
|
It indexes a filesystem tree, providing metadata to a user's preferred media
|
7
|
-
player. It also provides a
|
9
|
+
player. It also provides a command API for controlling the indexed files
|
8
10
|
and the state of the player.
|
9
11
|
|
10
12
|
### Screenshot
|
@@ -24,7 +26,10 @@ $ ruby -Ilib bin/muzak-cmd enqueue-artist "The Beatles"
|
|
24
26
|
|
25
27
|
API documentation can be found on [RubyDoc](http://www.rubydoc.info/gems/muzak/).
|
26
28
|
|
27
|
-
|
29
|
+
User documentation for commands can be found under [COMMANDS](COMMANDS.md),
|
30
|
+
as well as on RubyDoc.
|
31
|
+
|
32
|
+
User documentation for configuration can be found under [CONFIGURATION](CONFIGURATION.md),
|
28
33
|
as well as on RubyDoc.
|
29
34
|
|
30
35
|
### TODO
|
data/lib/muzak/config.rb
CHANGED
@@ -8,6 +8,7 @@ module Muzak
|
|
8
8
|
# @example
|
9
9
|
# # corresponds to `art-geometry: 300x300` in configuration
|
10
10
|
# Config.art_geometry # => "300x300"
|
11
|
+
# @see file:CONFIGURATION.md User Configuration
|
11
12
|
class Config
|
12
13
|
if File.exist?(CONFIG_FILE)
|
13
14
|
@config = YAML::load_file(CONFIG_FILE)
|
@@ -46,6 +47,8 @@ module Muzak
|
|
46
47
|
false
|
47
48
|
end
|
48
49
|
|
50
|
+
# Synchronizes the in-memory configuration with {CONFIG_FILE}.
|
51
|
+
# @return [void]
|
49
52
|
def self.sync!
|
50
53
|
File.open(CONFIG_FILE, "w") { |io| io.write @config.to_yaml }
|
51
54
|
end
|
data/lib/muzak/const.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: muzak
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- William Woodruff
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-01-
|
11
|
+
date: 2017-01-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: taglib-ruby
|
@@ -35,6 +35,7 @@ extra_rdoc_files: []
|
|
35
35
|
files:
|
36
36
|
- ".yardopts"
|
37
37
|
- COMMANDS.md
|
38
|
+
- CONFIGURATION.md
|
38
39
|
- LICENSE
|
39
40
|
- README.md
|
40
41
|
- bin/muzak-cmd
|