sonic-pi-cli 0.1.1 → 0.1.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (4) hide show
  1. checksums.yaml +5 -5
  2. data/bin/sonic_pi +26 -2
  3. data/lib/sonic_pi.rb +7 -4
  4. metadata +3 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: e8a35a28ae7c1fbbca157b1abd9a440bd111fb65
4
- data.tar.gz: b12c2724e73572e864d2c22a4fe9abf55c913673
2
+ SHA256:
3
+ metadata.gz: 56c7ffafe6adcba49b7448fbf712920476cb7c1cec31a0e117b4fa9b466c015c
4
+ data.tar.gz: aaef39b5888f51b5889d6860b5759c2118668f600bff6c2ed23598482198b060
5
5
  SHA512:
6
- metadata.gz: 8defef082afe8732928650355b39bcfa33680368041c236c717394cdf1f2ec0ac946191676a34474e70abe90da7df89a13f4dce50c82ce350e7f425515daa13a
7
- data.tar.gz: c13f61e4981f17fa517cddcae1d8ced5022c8f55c2ad5a207dc0459e7a5c262f6a0209213d98fa0a4e0c767ada22b840e308f3e1ee3643a0fb323c0ace207f0f
6
+ metadata.gz: f27cf2472303f9fd0458370da7947aa812ac2e150bd2db7b618286baf750b65d014eb6a749fe16ea1eb95da5a13eb1114ace445ee64177a8f7713f98bed018db
7
+ data.tar.gz: 49877b80ce03c869ccbf126c72f65e043d011b9b1e81461750bbb853b7aed10d1496b1c9d7cb30a9ee0d370e6519a0b1af1c12f74f4b335885fe3268043e0d51
@@ -1,6 +1,8 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'sonic_pi'
3
+ require "sonic_pi"
4
+
5
+ PORT_LOG_REGEX = Regexp.compile(/Listen port:\s+(?<port>\d+)/)
4
6
 
5
7
  def stdin
6
8
  unless STDIN.tty?
@@ -8,6 +10,28 @@ def stdin
8
10
  end
9
11
  end
10
12
 
13
+ def find_port
14
+ port = 4557
15
+
16
+ begin
17
+ log_path = File.join(Dir.home, ".sonic-pi", "log", "server-output.log")
18
+
19
+ File.open(log_path, 'r') do |f|
20
+ port_log_entry =
21
+ f.each_line
22
+ .lazy
23
+ .map { |line| line[PORT_LOG_REGEX, "port"] }
24
+ .find { |match| !!match }
25
+
26
+ port = port_log_entry.to_i if port_log_entry
27
+ end
28
+ rescue Errno::ENOENT
29
+ # not to worry if the file doesn't exist
30
+ end
31
+
32
+ port
33
+ end
34
+
11
35
  def args
12
36
  ARGV.join(' ')
13
37
  end
@@ -43,7 +67,7 @@ HELP
43
67
  end
44
68
 
45
69
  def run
46
- app = SonicPi.new
70
+ app = SonicPi.new(find_port)
47
71
 
48
72
  case args_and_stdin
49
73
  when '--help', '-h', ''
@@ -4,10 +4,13 @@ require 'osc-ruby'
4
4
  require 'securerandom'
5
5
 
6
6
  class SonicPi
7
+ def initialize(port=4557)
8
+ @port=port
9
+ end
10
+
7
11
  RUN_COMMAND = "/run-code"
8
12
  STOP_COMMAND = "/stop-all-jobs"
9
13
  SERVER = 'localhost'
10
- PORT = 4557
11
14
  GUI_ID = 'SONIC_PI_CLI'
12
15
 
13
16
  def run(command)
@@ -21,8 +24,8 @@ class SonicPi
21
24
  def test_connection!
22
25
  begin
23
26
  socket = UDPSocket.new
24
- socket.bind(nil, PORT)
25
- abort("ERROR: Sonic Pi is not listening on #{PORT} - is it running?")
27
+ socket.bind(nil, @port)
28
+ abort("ERROR: Sonic Pi is not listening on #{@port} - is it running?")
26
29
  rescue
27
30
  # everything is good
28
31
  end
@@ -31,7 +34,7 @@ class SonicPi
31
34
  private
32
35
 
33
36
  def client
34
- @client ||= OSC::Client.new(SERVER, PORT)
37
+ @client ||= OSC::Client.new(SERVER, @port)
35
38
  end
36
39
 
37
40
  def send_command(call_type, command=nil)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sonic-pi-cli
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Johnstone
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-10 00:00:00.000000000 Z
11
+ date: 2019-08-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: osc-ruby
@@ -52,8 +52,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
52
52
  - !ruby/object:Gem::Version
53
53
  version: '0'
54
54
  requirements: []
55
- rubyforge_project:
56
- rubygems_version: 2.5.1
55
+ rubygems_version: 3.0.3
57
56
  signing_key:
58
57
  specification_version: 4
59
58
  summary: Sonic Pi CLI