keenser 0.0.6 → 0.0.7
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/keenser +27 -20
- data/lib/keenser/model/song.rb +13 -2
- data/lib/keenser/music.rb +3 -2
- data/lib/keenser/server.rb +2 -0
- data/lib/keenser/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1cd662a26ed0e144ce18028fdd47f6c7303721e6
|
4
|
+
data.tar.gz: 5c6badda070063a7461fcff53e0e2a608f49210d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1455a3aec26e933b11aec49ec7c39417fa7010030a33c46f605bd5b81b8304a70613678291143c401b58d9d583e434ab9279d86d3b54cde2afd1d01753830918
|
7
|
+
data.tar.gz: c6fc26ba9a993d0cada2c9bfb9bfacbe0efba672293d8e9c7096da976058d4a4edb4156da9a2b688b0eb07d98177347a3cee6284a4fec32fad876c4689d65b74
|
data/bin/keenser
CHANGED
@@ -1,28 +1,29 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
# FIXME: don't hardcode this; ensure SYNC
|
4
|
+
ENV['PATH'] = "/usr/local/bin:#{ENV['PATH']}"
|
6
5
|
|
7
|
-
|
8
|
-
unless system "
|
9
|
-
|
10
|
-
|
11
|
-
`tmux split-window -h -t '#{session}'`
|
12
|
-
`tmux send-keys -t '#{session}' "cmus" C-m`
|
13
|
-
if ENV["TMUX"]
|
14
|
-
puts "Started new session '#{session}'"
|
15
|
-
exit
|
16
|
-
else
|
17
|
-
exec "tmux attach -t '#{session}'"
|
18
|
-
end
|
6
|
+
%w{ tmux cmus cmus-remote }.each do |bin|
|
7
|
+
unless system "which #{bin} >/dev/null 2>&1"
|
8
|
+
puts "Couldn't find #{bin}. Is it on $PATH?"
|
9
|
+
exit 1
|
19
10
|
end
|
20
11
|
end
|
21
12
|
|
13
|
+
session = "keenser"
|
14
|
+
unless system "tmux list-windows -t '#{session}' >/dev/null 2>&1"
|
15
|
+
puts "Booting server in tmux session '#{session}'"
|
16
|
+
`TMUX= tmux new-session -s '#{session}' -d`
|
17
|
+
`tmux send-keys -t '#{session}' '#{__FILE__} server' C-m`
|
18
|
+
`tmux split-window -h -t '#{session}'`
|
19
|
+
`tmux send-keys -t '#{session}' "cmus" C-m`
|
20
|
+
sleep 1
|
21
|
+
end
|
22
|
+
|
22
23
|
|
23
24
|
require_relative "../lib/keenser"
|
24
25
|
|
25
|
-
case cmd
|
26
|
+
case cmd = ARGV.shift
|
26
27
|
when "boot"
|
27
28
|
# No-op, just run the above startup logic
|
28
29
|
when nil, "console"
|
@@ -31,10 +32,16 @@ when nil, "console"
|
|
31
32
|
Keenser.pry
|
32
33
|
when "server"
|
33
34
|
Keenser.start_server!
|
34
|
-
when "
|
35
|
+
when "status"
|
36
|
+
Keenser.status
|
37
|
+
when "setup"
|
38
|
+
Keenser.setup
|
39
|
+
else # Pass command to remote
|
35
40
|
require "drb/drb"
|
36
41
|
DRb.start_service
|
37
|
-
|
38
|
-
|
39
|
-
|
42
|
+
begin
|
43
|
+
puts DRbObject.new_with_uri(Keenser::Server.uri).send cmd, *ARGV
|
44
|
+
rescue DRb::DRbConnError => e
|
45
|
+
puts "Could not connect to Keenser server: #{e.message}"
|
46
|
+
end
|
40
47
|
end
|
data/lib/keenser/model/song.rb
CHANGED
@@ -9,8 +9,7 @@ module Keenser
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def to_s
|
12
|
-
|
13
|
-
disp = "#{pre}#{artist} - #{title}"
|
12
|
+
disp = "#{badge} #{name}".gsub /\s+/, ' '
|
14
13
|
if disp.length > 40
|
15
14
|
disp.slice(0,39) + "…"
|
16
15
|
else
|
@@ -18,6 +17,18 @@ module Keenser
|
|
18
17
|
end
|
19
18
|
end
|
20
19
|
|
20
|
+
def badge
|
21
|
+
status == "playing" ? "" : "[#{status}]"
|
22
|
+
end
|
23
|
+
|
24
|
+
def name
|
25
|
+
if artist && title
|
26
|
+
"#{artist} - #{title}"
|
27
|
+
else
|
28
|
+
path
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
21
32
|
def local_path
|
22
33
|
"#{Computer.local.music}/#{path}"
|
23
34
|
end
|
data/lib/keenser/music.rb
CHANGED
@@ -28,14 +28,15 @@ module Keenser
|
|
28
28
|
|
29
29
|
def tag name
|
30
30
|
playing.tag name
|
31
|
-
puts "Tagging #{playing} as #{name}"
|
31
|
+
puts "Tagging #{playing.strip} as #{name}"
|
32
32
|
"#{name} ← #{playing}"
|
33
33
|
end
|
34
34
|
|
35
35
|
def list name
|
36
|
+
return all if name == "all"
|
36
37
|
t = Tag.where(name: name.to_s).first
|
37
|
-
t.export!
|
38
38
|
raise Error.new "Cannot find tag '#{t}'" unless t
|
39
|
+
t.export!
|
39
40
|
`echo "load -p #{t.playlist}\nset play_library=false\nplayer-next" | cmus-remote`
|
40
41
|
"'#{name}' now playing"
|
41
42
|
end
|
data/lib/keenser/server.rb
CHANGED
@@ -11,6 +11,7 @@ module Keenser
|
|
11
11
|
end
|
12
12
|
|
13
13
|
class Server
|
14
|
+
# FIXME: set up access control list
|
14
15
|
def self.uri
|
15
16
|
"druby://localhost:8787"
|
16
17
|
end
|
@@ -20,6 +21,7 @@ module Keenser
|
|
20
21
|
Music.send cmd, *args
|
21
22
|
rescue => e
|
22
23
|
puts "#{'✗'.red} #{e.message}"
|
24
|
+
"✗ #{e.message}"
|
23
25
|
end
|
24
26
|
end
|
25
27
|
end
|
data/lib/keenser/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: keenser
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Dabbs
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-01-
|
11
|
+
date: 2014-01-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: colorize
|