slnky 0.6.1 → 0.7.0

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