conquer 0.1.1 → 0.1.2

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: 0cf4765d8e3b3654cca97c56fa4689fe19625410
4
- data.tar.gz: f23ae868d569a33e37877b459e4c6dcbb0697ca5
3
+ metadata.gz: 04927a4ee65cc431c91bb841a3e02e3811a8b772
4
+ data.tar.gz: 0145552faa91f177e69d9a4a39ddcab618bfad57
5
5
  SHA512:
6
- metadata.gz: 5a9c43ff8d956af027d6e1c23a3647cb36d54070dd73600cae55e9032d92ed3a9b44d543a5d36a5ab1c761f6c64c60103b5ac6ee54e703d8c0731e57567c9e7f
7
- data.tar.gz: 0872e53f714150a0ea14e9e3e2f869cd1e74a4aaaa753d6cac57b8e194847f556dfe497e9e73b9d469676f9ff47e349d016f02cb00fe6efee38fba7d980e520b
6
+ metadata.gz: e4d9a0881e87ccc2de1da43abb7615c06218894b3b01af462031ff4ffc35021935b59be250200aa039a1bea2d81e0aba5b1b781ed9eed43b8026fd9a53f7d50b
7
+ data.tar.gz: 7259acd38a69e3631e56446bdf7350c263e8c728c375ebc283a01ef35f452fed2cc02af9e9c6b623e387c704096686765e15b604eee24d63837d87e7d1f2b78c
data/conquer.gemspec CHANGED
@@ -23,4 +23,5 @@ Gem::Specification.new do |spec|
23
23
  spec.add_development_dependency "rspec", "~> 3.0"
24
24
 
25
25
  spec.add_dependency 'celluloid', '~> 0.1'
26
+ spec.add_dependency 'celluloid-io', '~> 0.1'
26
27
  end
data/exe/conquer CHANGED
@@ -1,6 +1,33 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- abort 'Usage: conquer bar.rb' if ARGV.empty?
3
+ require 'optparse'
4
4
 
5
- require 'conquer'
6
- require File.join(ENV['PWD'], ARGV[0])
5
+ module Conquer
6
+ options = {}
7
+ parser = OptionParser.new do |p|
8
+ p.banner = 'Usage: conquer [options] bar.rb'
9
+ p.on('-s', '--socket=PATH', 'use rpc socket in PATH') do |path|
10
+ options[:socket] = path
11
+ end
12
+
13
+ p.on('-h', '--help') do
14
+ puts p
15
+ exit
16
+ end
17
+ end
18
+
19
+ parser.parse!
20
+ abort(parser.to_s) if ARGV.empty?
21
+
22
+ runtime_dir = ENV['XDG_RUNTIME_DIR'] || "/run/user/#{ENV['UID']}"
23
+ RPC_SOCKET = options[:socket] || "#{runtime_dir}/conquer.socket"
24
+ end
25
+
26
+ begin
27
+ require 'conquer'
28
+ file = ARGV[0]
29
+ file.prepend("#{ENV['PWD']}/") unless file.start_with?('/')
30
+ require file
31
+ ensure
32
+ File.delete(Conquer::RPC_SOCKET) if File.exist?(Conquer::RPC_SOCKET)
33
+ end
data/lib/conquer/dsl.rb CHANGED
@@ -12,10 +12,16 @@ module Conquer
12
12
  Helpers.singleton_class.class_eval(&block)
13
13
  end
14
14
 
15
- def separator(string = ' | ')
16
- every(100.hours) { string }
15
+ def separator(string = ' | ', &block)
16
+ if block_given?
17
+ every(100.hours, &block)
18
+ else
19
+ every(100.hours) { string }
20
+ end
17
21
  end
18
22
 
23
+ alias static separator
24
+
19
25
  def every(timespan, &block)
20
26
  @container.register(Segment, timespan, block)
21
27
  end
@@ -0,0 +1,54 @@
1
+ require 'celluloid/current'
2
+ require 'celluloid/io'
3
+ require 'json'
4
+ require 'socket'
5
+
6
+ module Conquer
7
+ class RPC
8
+ include Celluloid::IO
9
+ include Celluloid::Notifications
10
+ include Celluloid::Internals::Logger
11
+
12
+ def initialize
13
+ info('Starting rpc server')
14
+ @server = UNIXServer.new(RPC_SOCKET)
15
+ async.run
16
+ end
17
+
18
+ def shutdown
19
+ @server.close if @server
20
+ end
21
+
22
+ def event(type, *args)
23
+ publish(type, *args)
24
+ end
25
+
26
+ private
27
+
28
+ def run
29
+ loop do
30
+ async.handle_connection(@server.accept)
31
+ end
32
+ end
33
+
34
+ def handle_connection(socket)
35
+ info('RPC: connection initiated')
36
+ loop do
37
+ line = socket.gets
38
+ break unless line
39
+ info("RPC: #{line}")
40
+ command = JSON.parse(line)
41
+ public_send(command['method'], *(command['params'] || []))
42
+ end
43
+ end
44
+
45
+ def rpc_server(&block)
46
+ UNIXServer.open(RPC_SOCKET) do |server|
47
+ info('RPC: socket opened')
48
+ loop do
49
+ server.accept(&block)
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -1,3 +1,3 @@
1
1
  module Conquer
2
- VERSION = "0.1.1"
2
+ VERSION = '0.1.2'.freeze
3
3
  end
data/lib/conquer.rb CHANGED
@@ -2,18 +2,30 @@ require 'conquer/version'
2
2
  require 'conquer/container'
3
3
  require 'conquer/dsl'
4
4
  require 'conquer/bar'
5
+ require 'conquer/rpc'
5
6
 
6
7
  module Conquer
7
8
  MAIN_TOPIC = 'conquer'.freeze
8
9
 
9
- def self.bar(io = STDOUT, &block)
10
+ @startup_hooks = []
11
+
12
+ module_function
13
+
14
+ def bar(io = STDOUT, &block)
10
15
  main_container = Container.new(MAIN_TOPIC)
11
16
  dsl = DSL.new(main_container)
12
17
  dsl.instance_eval(&block)
13
18
 
19
+ @startup_hooks.each(&:call)
20
+
21
+ RPC.supervise
14
22
  Bar.supervise(args: [MAIN_TOPIC, io])
15
23
  main_container.start_worker
16
24
 
17
25
  sleep
18
26
  end
27
+
28
+ def on_startup(&block)
29
+ @startup_hooks << block
30
+ end
19
31
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: conquer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Joakim Reinert
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-06-04 00:00:00.000000000 Z
11
+ date: 2016-06-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: celluloid-io
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.1'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.1'
69
83
  description: Conquer is a DSL for writing concurrent status bars
70
84
  email:
71
85
  - mail@jreinert.com
@@ -91,6 +105,7 @@ files:
91
105
  - lib/conquer/core_ext/numeric.rb
92
106
  - lib/conquer/dsl.rb
93
107
  - lib/conquer/helpers.rb
108
+ - lib/conquer/rpc.rb
94
109
  - lib/conquer/scroller.rb
95
110
  - lib/conquer/segment.rb
96
111
  - lib/conquer/version.rb