keenser 0.0.6 → 0.0.7

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 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