slnky 0.6.1 → 0.7.0

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: e747630542d981d1f4ab34882597fc75b001b4e4
4
- data.tar.gz: c0cf47bda3335ff7f14ce4e40c36f208bd0e20fc
3
+ metadata.gz: 80d5dc68a166001641591a4ef021f391dd70f94f
4
+ data.tar.gz: 94b1e65b7268f55da42fc1c7b807d1f64192a8d3
5
5
  SHA512:
6
- metadata.gz: 7f7de1bc212ad6defd0621727b40902247aeef3027a92ec5f8598efddda93c3ee83e5f5b2e105722d271dcf32db16262bb404a62ac47e04fca7b5e4b32a82e57
7
- data.tar.gz: 28a571ede88ffe0c67e713f8124b816f3955a261c8861bc1a988ed0332150a6102e89d0e930dd44aa8fc17dc57897bb69d78d26f288f2d03a9ea19f2e9cc9700
6
+ metadata.gz: 0870455ed3aa7cebc2ef3da4e29a8685e3e1d199e6c85cc151484f48e7924fafe81ad2e87f30435563c3d7a78f4ad7d30d0bea74d50c4817d8641311a0f220ea
7
+ data.tar.gz: 416f5224034de7e6b4138f5733180833261e841d8680e44b66ee1b5c25620fc57f675fbdbe9d8d0c85df3d47b5301afff46df14e5383b8c149b3847d4304ac1e
data/bin/slnky CHANGED
@@ -4,4 +4,4 @@ require 'rubygems'
4
4
  require 'bundler/setup'
5
5
  require 'slnky/cli'
6
6
 
7
- Slnky::CLI::Main.start(ARGV)
7
+ Slnky::CLI::Main.run
@@ -1,17 +1,21 @@
1
1
  module Slnky
2
2
  module CLI
3
- class Generate < Thor
4
- desc 'service NAME [DIR]', 'generate a service named NAME'
5
- def service(name, dir=nil)
6
- generator = Slnky::Generator::Service.new(name, dir)
7
- generator.generate
3
+ class Generate < Base
4
+ subcommand 'service', 'generate a service named NAME' do
5
+ parameter 'NAME', 'the name of the service'
6
+ def execute
7
+ generator = Slnky::Generator::Service.new(name, dir)
8
+ generator.generate
9
+ end
8
10
  end
9
11
 
10
- desc 'command NAME [DIR]', 'generate a service named NAME'
11
- def command(name, dir=nil)
12
- raise Thor::Error, "not implemented"
13
- # Slnky::Generator::Command.new(name, dir).generate
12
+ subcommand 'command', 'generate a command named NAME' do
13
+ parameter 'NAME', 'the name of the command'
14
+ def execute
15
+ raise 'not implemented'
16
+ end
14
17
  end
15
18
  end
16
19
  end
17
20
  end
21
+ Slnky::CLI::Main.subcommand 'generate', 'generate from templates', Slnky::CLI::Generate
@@ -0,0 +1,41 @@
1
+ module Slnky
2
+ module CLI
3
+ class Notify < Base
4
+ # option %w{-s --server}, '[SERVER]', 'set server url', environment_variable: 'SLNKY_SERVER'
5
+ option %w{-f --file}, '[FILE]', 'load attributes from yaml file' do |f|
6
+ unless File.exist?(f)
7
+ puts "ERROR: file #{f} does not exist"
8
+ exit(1)
9
+ end
10
+ f
11
+ end
12
+ parameter 'NAME', 'the name of the event to send'
13
+ parameter '[ATTRIBUTES] ...', 'key=value pairs to add to the event, merged with optional file', attribute_name: :kvs
14
+
15
+ def execute
16
+ attributes = {}
17
+ if file
18
+ begin
19
+ yaml = YAML.load_file(file)
20
+ attributes.merge!(yaml)
21
+ rescue => e
22
+ puts "ERROR: reading file #{file}"
23
+ exit(1)
24
+ end
25
+ end
26
+ kvs.each do |kv|
27
+ (k, v) = kv.split('=')
28
+ attributes[k] = v
29
+ end
30
+ msg = Slnky::Message.new({name: name, attributes: attributes})
31
+ cfg = Slnky.config
32
+ srv = server || cfg['slnky']['url']
33
+
34
+ puts 'sending message:'
35
+ puts JSON.pretty_generate(msg.to_h)
36
+ Slnky.notify(msg)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ Slnky::CLI::Main.subcommand 'notify', 'send notification to the slnky server', Slnky::CLI::Notify
data/lib/slnky/cli.rb CHANGED
@@ -1,37 +1,45 @@
1
1
  require 'slnky'
2
2
  require 'yaml'
3
- require 'thor'
3
+ require 'clamp'
4
4
  require 'active_support/all'
5
5
 
6
- path = File.expand_path("../cli", __FILE__)
7
- Dir["#{path}/**/*.rb"].each do |file|
8
- require file
9
- end
10
-
11
6
  module Slnky
12
7
  module CLI
13
- class Main < Thor
14
- map %w[--version -v] => :__print_version
15
-
16
- desc "--version, -v", "print the version"
17
- def __print_version
8
+ class Base < Clamp::Command
9
+ option %w{-v --version}, :flag, 'print version' do |v|
18
10
  puts "Slnky version: #{Slnky::VERSION}"
11
+ exit(0)
19
12
  end
20
13
 
21
- desc 'init', 'initialize configuration directory'
22
- def init
23
- dir = "#{ENV['HOME']}/.slnky"
24
- FileUtils.mkdir_p(dir)
25
- defaults = {
26
- slnky: {
27
- url: 'http://localhost:3000'
28
- }
29
- }.deep_stringify_keys
30
- File.open("#{dir}/config.yaml", "w+") {|f| f.write(defaults.to_yaml)}
14
+ option %w{-c --config}, '[CONFIG]', 'set config directory location', default: '~/.slnky', environment_variable: 'SLNKY_CONFIG' do |c|
15
+ p = File.expand_path("#{c}/config.yaml")
16
+ Slnky.load_config(p)
17
+ c
31
18
  end
32
19
 
33
- desc 'generate', 'generate slnky objects from templates'
34
- subcommand 'generate', Slnky::CLI::Generate
20
+ option %w{-s --server}, '[SERVER]', 'set server url', environment_variable: 'SLNKY_SERVER'
21
+ end
22
+
23
+ class Main < Base
24
+ subcommand 'init', 'initialize the configuration directory' do
25
+ parameter '[SERVER]', 'the server to point to', default: 'http://localhost:3000'
26
+
27
+ def execute
28
+ dir = "#{ENV['HOME']}/.slnky"
29
+ FileUtils.mkdir_p(dir)
30
+ defaults = {
31
+ slnky: {
32
+ url: server
33
+ }
34
+ }.deep_stringify_keys
35
+ File.open("#{dir}/config.yaml", "w+") { |f| f.write(defaults.to_yaml) }
36
+ end
37
+ end
35
38
  end
36
39
  end
37
40
  end
41
+
42
+ path = File.expand_path("../cli", __FILE__)
43
+ Dir["#{path}/**/*.rb"].each do |file|
44
+ require file
45
+ end
data/lib/slnky/data.rb ADDED
@@ -0,0 +1,16 @@
1
+ require 'json'
2
+ require 'slnky/ext/deep_struct'
3
+
4
+ module Slnky
5
+ class Data < DeepStruct
6
+ class << self
7
+ def parse(str)
8
+ new(JSON.parse(str))
9
+ end
10
+ end
11
+
12
+ def to_s
13
+ to_h.to_json
14
+ end
15
+ end
16
+ end
data/lib/slnky/message.rb CHANGED
@@ -2,15 +2,7 @@ require 'json'
2
2
  require 'slnky/ext/deep_struct'
3
3
 
4
4
  module Slnky
5
- class Message < DeepStruct
6
- class << self
7
- def parse(str)
8
- new(JSON.parse(str))
9
- end
10
- end
5
+ class Message < Data
11
6
 
12
- def to_s
13
- to_h.to_json
14
- end
15
7
  end
16
8
  end
data/lib/slnky/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Slnky
2
- VERSION = "0.6.1"
2
+ VERSION = "0.7.0"
3
3
  end
data/lib/slnky.rb CHANGED
@@ -1,10 +1,31 @@
1
1
  require 'slnky/version'
2
+ require 'slnky/data'
2
3
  require 'slnky/message'
3
4
  require 'slnky/service'
4
5
  require 'slnky/generator'
5
6
 
7
+ require 'rest_client'
8
+
6
9
  module Slnky
7
- def version
8
- Slnky::VERSION
10
+ class << self
11
+ def version
12
+ Slnky::VERSION
13
+ end
14
+
15
+ def config
16
+ load_config unless @config
17
+ @config
18
+ end
19
+
20
+ def load_config(file='~/.slnky/config.yaml')
21
+ path = File.expand_path(file)
22
+ @config = Slnky::Data.new(YAML.load_file(path))
23
+ end
24
+
25
+ def notify(msg, server=nil)
26
+ server ||= config.slnky.url
27
+ params = {name: msg.name, event: msg.to_h}
28
+ RestClient.post "#{server}/hooks/notify", params.to_json, content_type: :json, accept: :json
29
+ end
9
30
  end
10
31
  end
data/slnky.gemspec CHANGED
@@ -33,8 +33,9 @@ Gem::Specification.new do |spec|
33
33
 
34
34
  spec.add_dependency 'dotenv', '~> 2.1.0'
35
35
  spec.add_dependency 'amqp', '~> 1.5.1'
36
- spec.add_dependency 'thor', '~> 0.19.1'
36
+ spec.add_dependency 'clamp', '~> 1.0.0'
37
37
  spec.add_dependency 'activesupport', '~> 4.2.5.1'
38
38
  spec.add_dependency 'tilt', '~> 2.0.2'
39
39
  spec.add_dependency 'eventmachine', '~> 1.0.9.1'
40
+ spec.add_dependency 'rest-client', '~> 1.8.0'
40
41
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slnky
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.1
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shawn Catanzarite
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-17 00:00:00.000000000 Z
11
+ date: 2016-03-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -81,19 +81,19 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: 1.5.1
83
83
  - !ruby/object:Gem::Dependency
84
- name: thor
84
+ name: clamp
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: 0.19.1
89
+ version: 1.0.0
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: 0.19.1
96
+ version: 1.0.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: activesupport
99
99
  requirement: !ruby/object:Gem::Requirement
@@ -136,6 +136,20 @@ dependencies:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
138
  version: 1.0.9.1
139
+ - !ruby/object:Gem::Dependency
140
+ name: rest-client
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: 1.8.0
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: 1.8.0
139
153
  description: core slnky lib and command line
140
154
  email:
141
155
  - me@shawncatz.com
@@ -160,6 +174,8 @@ files:
160
174
  - lib/slnky.rb
161
175
  - lib/slnky/cli.rb
162
176
  - lib/slnky/cli/generate.rb
177
+ - lib/slnky/cli/notify.rb
178
+ - lib/slnky/data.rb
163
179
  - lib/slnky/ext/deep_struct.rb
164
180
  - lib/slnky/generator.rb
165
181
  - lib/slnky/generator/command.rb
@@ -212,7 +228,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
212
228
  version: '0'
213
229
  requirements: []
214
230
  rubyforge_project:
215
- rubygems_version: 2.4.8
231
+ rubygems_version: 2.4.7
216
232
  signing_key:
217
233
  specification_version: 4
218
234
  summary: core slnky lib and command line