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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8a82b0c422a1dc920fe649ef09c2fc057d4673da
4
- data.tar.gz: ca07f7ac0c8def3bda386609c3ae2ef74c7b6605
3
+ metadata.gz: 1cd662a26ed0e144ce18028fdd47f6c7303721e6
4
+ data.tar.gz: 5c6badda070063a7461fcff53e0e2a608f49210d
5
5
  SHA512:
6
- metadata.gz: b92a2b36d02f38f21fe08edfcd4ae0d0384935a8f53ff13595d4c2a046bf94f1a390122d3324479613e67393eefa25945c567b84c8e9decf38bf2bfb848d5f2a
7
- data.tar.gz: d0a1b396f1ffdd39575d3cbc06cd37a81218b666c02dc128d5f0255aed4a1225cc1346ee7549625b91a6228f84059aa64fab8d122dbb6cf9f1795345ee223898
6
+ metadata.gz: 1455a3aec26e933b11aec49ec7c39417fa7010030a33c46f605bd5b81b8304a70613678291143c401b58d9d583e434ab9279d86d3b54cde2afd1d01753830918
7
+ data.tar.gz: c6fc26ba9a993d0cada2c9bfb9bfacbe0efba672293d8e9c7096da976058d4a4edb4156da9a2b688b0eb07d98177347a3cee6284a4fec32fad876c4689d65b74
@@ -1,28 +1,29 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- cmd = ARGV.shift
4
- session = "keenser"
5
-
3
+ # FIXME: don't hardcode this; ensure SYNC
4
+ ENV['PATH'] = "/usr/local/bin:#{ENV['PATH']}"
6
5
 
7
- if cmd == "boot"
8
- unless system "tmux list-windows -t '#{session}' >/dev/null 2>&1"
9
- `TMUX= tmux new-session -s '#{session}' -d`
10
- `tmux send-keys -t '#{session}' '#{__FILE__} server' C-m`
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 "remote"
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
- puts DRbObject.new_with_uri(Keenser::Server.uri).send *ARGV
38
- else
39
- raise Keenser::Error.new "Not implemented: #{cmd}"
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
@@ -9,8 +9,7 @@ module Keenser
9
9
  end
10
10
 
11
11
  def to_s
12
- pre = status == "playing" ? "" : "[#{status}] "
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
@@ -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
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Keenser
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
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.6
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-27 00:00:00.000000000 Z
11
+ date: 2014-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: colorize