MrMurano 1.4.1 → 1.4.2

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: 20574af6b6ff5b2c2260cba7d436aa46599cc691
4
- data.tar.gz: daca7cfcc9d0814d7423a1a15773aa6a02f65810
3
+ metadata.gz: 0271003380ad3597a7b8522db408a955f9e0678f
4
+ data.tar.gz: e36306d65362a9c67bca0b504713aecfa9f16a1d
5
5
  SHA512:
6
- metadata.gz: 0689228efca83f14f7289376ba2e36f5e5034202fcfda983bb02c3a89382a8fa329c74c614600cb59adccfca8db94d762fd30c5406b221d2d2e3f045ed8fc841
7
- data.tar.gz: 0bbf24196e0912384045f251c14b28a79e4dea2b864c62b7d5f3e284c22485260d8affbb54c19a9c60d09b1e251c5eae2eff4942768590d88d5d8e1f9549e927
6
+ metadata.gz: b032e0e3f04e2c9f2b6be2cc01584bd8b93484027a6509b0bd2657b25dda5d6e13fe3bbd8f0e6ffbc6860765c4b0386201c8625f986775196cbc4141f707b24f
7
+ data.tar.gz: c666e9604c69f2385d5ddea60232027a05714605b5ffa0900783c9f53b7a601fc617e2b4f788ed8af91b3f8fac06c92dae1a85b083c21b9f7f6aad434ed3e92b
data/lib/MrMurano.rb CHANGED
@@ -1,26 +1,24 @@
1
1
  require 'MrMurano/version'
2
2
  require 'MrMurano/verbosing'
3
- require 'MrMurano/hash'
3
+ require 'MrMurano/hash.rb'
4
4
  require 'MrMurano/http'
5
- require 'MrMurano/Config'
5
+ require 'MrMurano/configFile'
6
6
  require 'MrMurano/Account'
7
7
  require 'MrMurano/Solution'
8
- require 'MrMurano/Solution-Endpoint'
9
- require 'MrMurano/Solution-File'
10
- require 'MrMurano/Solution-Services'
11
- require 'MrMurano/Solution-Users'
12
- require 'MrMurano/Solution-ServiceConfig'
8
+ require 'MrMurano/Solution-Endpoint.rb'
9
+ require 'MrMurano/Solution-File.rb'
10
+ require 'MrMurano/Solution-Services.rb'
11
+ require 'MrMurano/Solution-Users.rb'
12
+ require 'MrMurano/Solution-ServiceConfig.rb'
13
13
  require 'MrMurano/Product'
14
14
 
15
- require 'MrMurano/accountCommand'
16
- require 'MrMurano/assignCommand'
17
15
  require 'MrMurano/configCommand'
18
16
  require 'MrMurano/contentCommand'
19
17
  require 'MrMurano/cors'
20
18
  require 'MrMurano/exportImport'
21
- require 'MrMurano/keystore'
22
- require 'MrMurano/logs'
23
- require 'MrMurano/status'
24
- require 'MrMurano/sync'
25
- require 'MrMurano/timeseries'
19
+ require 'MrMurano/keystore.rb'
20
+ require 'MrMurano/logs.rb'
21
+ require 'MrMurano/sync.rb'
22
+ require 'MrMurano/status.rb'
23
+ require 'MrMurano/timeseries.rb'
26
24
  #require 'MrMurano/shelledCommand'
@@ -2,10 +2,10 @@ require 'uri'
2
2
  require 'net/http'
3
3
  require 'json'
4
4
  require 'date'
5
+ require 'pp'
6
+ require 'terminal-table'
5
7
  require 'pathname'
6
8
  require 'yaml'
7
- require 'MrMurano/Config'
8
- require 'MrMurano/http'
9
9
 
10
10
  module MrMurano
11
11
  class Passwords
@@ -125,4 +125,55 @@ module MrMurano
125
125
  end
126
126
  end
127
127
 
128
+ command :account do |c|
129
+ c.syntax = %{mr account [options]}
130
+ c.description = %{Show things about your account.}
131
+ c.option '--businesses', 'Get businesses for user'
132
+ c.option '--products', 'Get products for user (needs a business)'
133
+ c.option '--solutions', 'Get solutions for user (needs a business)'
134
+ c.option '--idonly', 'Only return the ids'
135
+
136
+ c.example %{List all businesses}, 'mr account --businesses'
137
+ c.example %{List solutions}, 'mr account --solutions -c business.id=XXXXXXXX'
138
+
139
+ c.action do |args, options|
140
+
141
+ acc = MrMurano::Account.new
142
+
143
+ if options.businesses then
144
+ data = acc.businesses
145
+ if options.idonly then
146
+ say data.map{|row| row[:bizid]}.join(' ')
147
+ else
148
+ busy = data.map{|row| [row[:bizid], row[:role], row[:name]]}
149
+ table = Terminal::Table.new :rows => busy, :headings => ['Biz ID', 'Role', 'Name']
150
+ say table
151
+ end
152
+
153
+ elsif options.products then
154
+ data = acc.products
155
+ if options.idonly then
156
+ say data.map{|row| row[:pid]}.join(' ')
157
+ else
158
+ busy = data.map{|r| [r[:label], r[:type], r[:pid], r[:modelId]]}
159
+ table = Terminal::Table.new :rows => busy, :headings => ['Label', 'Type', 'PID', 'ModelID']
160
+ say table
161
+ end
162
+
163
+ elsif options.solutions then
164
+ data = acc.solutions
165
+ if options.idonly then
166
+ say data.map{|row| row[:apiId]}.join(' ')
167
+ else
168
+ busy = data.map{|r| [r[:apiId], r[:domain], r[:type], r[:sid]]}
169
+ table = Terminal::Table.new :rows => busy, :headings => ['API ID', 'Domain', 'Type', 'SID']
170
+ say table
171
+ end
172
+
173
+ else
174
+ say acc.token
175
+ end
176
+
177
+ end
178
+ end
128
179
  # vim: set ai et sw=2 ts=2 :
@@ -2,8 +2,6 @@ require 'uri'
2
2
  require 'mime/types'
3
3
  require 'csv'
4
4
  require 'pp'
5
- require 'MrMurano/http'
6
- require 'MrMurano/verbosing'
7
5
 
8
6
  module MrMurano
9
7
  class ProductBase
@@ -2,7 +2,6 @@ require 'uri'
2
2
  require 'net/http'
3
3
  require 'json'
4
4
  require 'pp'
5
- require 'MrMurano/Solution'
6
5
 
7
6
  module MrMurano
8
7
  # …/endpoint
@@ -4,7 +4,6 @@ require "http/form_data"
4
4
  require 'digest/sha1'
5
5
  require 'mime/types'
6
6
  require 'pp'
7
- require 'MrMurano/Solution'
8
7
 
9
8
  module MrMurano
10
9
  # …/file
@@ -1,4 +1,4 @@
1
- require 'MrMurano/Solution'
1
+ require 'terminal-table'
2
2
 
3
3
  module MrMurano
4
4
  # …/serviceconfig
@@ -51,4 +51,55 @@ module MrMurano
51
51
  end
52
52
  end
53
53
 
54
+ command 'assign list' do |c|
55
+ c.syntax = 'mr assign list [options]'
56
+ c.description = 'List the products that are assigned'
57
+ c.option '--idonly', 'Only return the ids'
58
+ c.action do |args, options|
59
+ sol = MrMurano::SC_Device.new
60
+
61
+ trigs = sol.showTriggers()
62
+ if options.idonly or $cfg['business.id'].nil? then
63
+ say trigs.join(' ')
64
+ else
65
+ acc = MrMurano::Account.new
66
+ products = acc.products
67
+ products.select!{|p| trigs.include? p[:modelId] }
68
+ if products.empty? then
69
+ say trigs.join(' ')
70
+ else
71
+ busy = products.map{|r| [r[:label], r[:type], r[:pid], r[:modelId]]}
72
+ table = Terminal::Table.new :rows => busy, :headings => ['Label', 'Type', 'PID', 'ModelID']
73
+ say table
74
+ end
75
+ end
76
+ end
77
+ end
78
+ alias_command :assign, 'assign list'
79
+
80
+ command 'assign set' do |c|
81
+ c.syntax = 'mr assign set [product]'
82
+ c.description = 'Assign a product to a eventhandler'
83
+
84
+ c.action do |args, options|
85
+ sol = MrMurano::SC_Device.new
86
+
87
+ prname = args.shift
88
+ if prname.nil? then
89
+ prid = $cfg['product.id']
90
+ else
91
+ acc = MrMurano::Account.new
92
+ products = acc.products
93
+ products.select!{|p|
94
+ p[:label] == prname or p[:modelId] == prname or p[:pid] == prname
95
+ }
96
+ prid = products.map{|p| p[:modelId]}
97
+ end
98
+ raise "No product ID!" if prid.nil?
99
+ say "Assigning #{prid} to solution" if $cfg['tool.verbose']
100
+ sol.assignTriggers(prid) unless $cfg['tool.dry']
101
+ end
102
+
103
+ end
104
+
54
105
  # vim: set ai et sw=2 ts=2 :
@@ -2,7 +2,6 @@ require 'uri'
2
2
  require 'net/http'
3
3
  require 'json'
4
4
  require 'pp'
5
- require 'MrMurano/Solution'
6
5
 
7
6
  module MrMurano
8
7
  ##
@@ -3,7 +3,6 @@ require 'net/http'
3
3
  require 'json'
4
4
  require 'yaml'
5
5
  require 'pp'
6
- require 'MrMurano/Solution'
7
6
 
8
7
  module MrMurano
9
8
  ##
@@ -4,9 +4,6 @@ require 'json'
4
4
  require 'tempfile'
5
5
  require 'shellwords'
6
6
  require 'pp'
7
- require 'MrMurano/Config'
8
- require 'MrMurano/http'
9
- require 'MrMurano/verbosing'
10
7
 
11
8
  module MrMurano
12
9
  class SolutionBase
File without changes
@@ -4,21 +4,11 @@ require 'fileutils'
4
4
 
5
5
  command 'config export' do |c|
6
6
  c.syntax = %{mr config export}
7
- c.summary = %{Export data to Solutionfiles}
8
- c.description = %{Export data to Solutionfiles
9
-
10
- This will write to the Solutionfile.json and .Solutionfile.secret used by the
11
- exosite-cil tool.
12
-
13
- This also will merge all of the endpoints into a single 'routes.lua' file.
14
- }
7
+ c.summary = %{Export data to a Solutionfile.json and .Solutionfile.secret}
15
8
 
16
9
  c.option '--force', "Overwrite existing files."
17
- c.option '--[no-]merge', "Merge endpoints into a single routes.lua file"
18
10
 
19
11
  c.action do |args, options|
20
- options.defaults :merge => true
21
-
22
12
  solfile = Pathname.new($cfg['location.base'] + 'Solutionfile.json')
23
13
  solsecret = Pathname.new($cfg['location.base'] + '.Solutionfile.secret')
24
14
 
@@ -27,26 +17,24 @@ command 'config export' do |c|
27
17
  say "Use --force to overwrite"
28
18
  end
29
19
 
20
+ epf = 'routes.lua'
21
+ File.open(epf, 'w') do |dst|
22
+ MrMurano::Endpoint.new.locallist.each do |ed|
23
+ ed[:local_path].open do |fin|
24
+ FileUtils.copy_stream(fin, dst)
25
+ end
26
+ dst << "\n\n"
27
+ end
28
+ end
29
+
30
30
  solf = {
31
+ :routes => 'epf',
31
32
  :assets => $cfg['location.files'],
32
33
  :default_page => $cfg['files.default_page'],
33
34
  :services => {},
34
35
  :modules => {}
35
36
  }
36
37
 
37
- if options.merge then
38
- epf = 'routes.lua'
39
- File.open(epf, 'w') do |dst|
40
- MrMurano::Endpoint.new.locallist.each do |ed|
41
- ed[:local_path].open do |fin|
42
- FileUtils.copy_stream(fin, dst)
43
- end
44
- dst << "\n\n"
45
- end
46
- end
47
- solf[:routes] = epf
48
- end
49
-
50
38
  dpwd = Pathname.new(Dir.pwd)
51
39
  MrMurano::EventHandler.new.locallist.each do |ev|
52
40
  rp = ev[:local_path].relative_path_from(dpwd).to_s
@@ -83,12 +71,7 @@ end
83
71
 
84
72
  command 'config import' do |c|
85
73
  c.syntax = %{mr config import}
86
- c.summary = %{Import data from Solutionfiles}
87
- c.description = %{Import data from Solutionfiles
88
-
89
- This imports from the Solutionfile.json and .Solutionfile.secret that are created
90
- by the exosite-cli tool.
91
- }
74
+ c.summary = %{Import data from a Solutionfile.json and .Solutionfile.secret}
92
75
 
93
76
  c.action do |args, options|
94
77
  solfile = ($cfg['location.base'] + 'Solutionfile.json')
@@ -12,7 +12,7 @@ module MrMurano
12
12
  end
13
13
 
14
14
  def write(writestr)
15
- post("/#{scid}/call/write", { :q=>writestr })
15
+ post("/#{scid}/call/write", { :query=>writestr })
16
16
  end
17
17
 
18
18
  def command(cmd)
@@ -1,4 +1,4 @@
1
1
  module MrMurano
2
- VERSION = '1.4.1'.freeze
2
+ VERSION = '1.4.2'.freeze
3
3
  end
4
4
 
@@ -1,7 +1,16 @@
1
- require 'MrMurano/version'
2
- require 'MrMurano/Account'
1
+ require 'rubygems'
2
+ require 'commander/import'
3
+ require 'MrMurano'
3
4
  require 'tempfile'
4
5
 
6
+ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
7
+ # Some kludgery to work around commander. Likely a better way to do this.
8
+ program :version, MrMurano::VERSION
9
+ program :description, %{Manage a Solution in Exosite's Murano}
10
+ command(:nop){ |c| c.action {|a,o|} }
11
+ default_command :nop
12
+ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
13
+
5
14
  RSpec.describe MrMurano::Passwords, "#pwd" do
6
15
  it "Creates a file " do
7
16
  tmpfile = Dir.tmpdir + '/pwtest' # This way because Tempfile.new creates.
@@ -1,5 +1,8 @@
1
1
  require 'MrMurano/version'
2
+ require 'MrMurano/verbosing'
3
+ require 'MrMurano/http'
2
4
  require 'MrMurano/Product'
5
+ require 'MrMurano/configFile'
3
6
 
4
7
  RSpec.describe MrMurano::ProductBase, "#product_base" do
5
8
  before(:example) do
@@ -1,5 +1,8 @@
1
1
  require 'MrMurano/version'
2
+ require 'MrMurano/verbosing'
3
+ require 'MrMurano/http'
2
4
  require 'MrMurano/Product'
5
+ require 'MrMurano/configFile'
3
6
 
4
7
  RSpec.describe MrMurano::ProductContent, "#product_content" do
5
8
  before(:example) do
data/spec/Product_spec.rb CHANGED
@@ -1,5 +1,8 @@
1
1
  require 'MrMurano/version'
2
+ require 'MrMurano/verbosing'
3
+ require 'MrMurano/http'
2
4
  require 'MrMurano/Product'
5
+ require 'MrMurano/configFile'
3
6
 
4
7
  RSpec.describe MrMurano::Product, "#product" do
5
8
  before(:example) do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: MrMurano
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.1
4
+ version: 1.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michael Conrad Tadpol Tilstra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-16 00:00:00.000000000 Z
11
+ date: 2016-09-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: commander
@@ -185,7 +185,6 @@ files:
185
185
  - bin/mr
186
186
  - lib/MrMurano.rb
187
187
  - lib/MrMurano/Account.rb
188
- - lib/MrMurano/Config.rb
189
188
  - lib/MrMurano/Product.rb
190
189
  - lib/MrMurano/Solution-Endpoint.rb
191
190
  - lib/MrMurano/Solution-File.rb
@@ -193,9 +192,8 @@ files:
193
192
  - lib/MrMurano/Solution-Services.rb
194
193
  - lib/MrMurano/Solution-Users.rb
195
194
  - lib/MrMurano/Solution.rb
196
- - lib/MrMurano/accountCommand.rb
197
- - lib/MrMurano/assignCommand.rb
198
195
  - lib/MrMurano/configCommand.rb
196
+ - lib/MrMurano/configFile.rb
199
197
  - lib/MrMurano/contentCommand.rb
200
198
  - lib/MrMurano/cors.rb
201
199
  - lib/MrMurano/exportImport.rb
@@ -1,54 +0,0 @@
1
- require 'terminal-table'
2
-
3
- command :account do |c|
4
- c.syntax = %{mr account [options]}
5
- c.description = %{Show things about your account.}
6
- c.option '--businesses', 'Get businesses for user'
7
- c.option '--products', 'Get products for user (needs a business)'
8
- c.option '--solutions', 'Get solutions for user (needs a business)'
9
- c.option '--idonly', 'Only return the ids'
10
-
11
- c.example %{List all businesses}, 'mr account --businesses'
12
- c.example %{List solutions}, 'mr account --solutions -c business.id=XXXXXXXX'
13
-
14
- c.action do |args, options|
15
-
16
- acc = MrMurano::Account.new
17
-
18
- if options.businesses then
19
- data = acc.businesses
20
- if options.idonly then
21
- say data.map{|row| row[:bizid]}.join(' ')
22
- else
23
- busy = data.map{|row| [row[:bizid], row[:role], row[:name]]}
24
- table = Terminal::Table.new :rows => busy, :headings => ['Biz ID', 'Role', 'Name']
25
- say table
26
- end
27
-
28
- elsif options.products then
29
- data = acc.products
30
- if options.idonly then
31
- say data.map{|row| row[:pid]}.join(' ')
32
- else
33
- busy = data.map{|r| [r[:label], r[:type], r[:pid], r[:modelId]]}
34
- table = Terminal::Table.new :rows => busy, :headings => ['Label', 'Type', 'PID', 'ModelID']
35
- say table
36
- end
37
-
38
- elsif options.solutions then
39
- data = acc.solutions
40
- if options.idonly then
41
- say data.map{|row| row[:apiId]}.join(' ')
42
- else
43
- busy = data.map{|r| [r[:apiId], r[:domain], r[:type], r[:sid]]}
44
- table = Terminal::Table.new :rows => busy, :headings => ['API ID', 'Domain', 'Type', 'SID']
45
- say table
46
- end
47
-
48
- else
49
- say acc.token
50
- end
51
-
52
- end
53
- end
54
- # vim: set ai et sw=2 ts=2 :
@@ -1,54 +0,0 @@
1
- require 'terminal-table'
2
-
3
- command 'assign list' do |c|
4
- c.syntax = 'mr assign list [options]'
5
- c.description = 'List the products that are assigned'
6
- c.option '--idonly', 'Only return the ids'
7
- c.action do |args, options|
8
- sol = MrMurano::SC_Device.new
9
-
10
- trigs = sol.showTriggers()
11
- if options.idonly or $cfg['business.id'].nil? then
12
- say trigs.join(' ')
13
- else
14
- acc = MrMurano::Account.new
15
- products = acc.products
16
- products.select!{|p| trigs.include? p[:modelId] }
17
- if products.empty? then
18
- say trigs.join(' ')
19
- else
20
- busy = products.map{|r| [r[:label], r[:type], r[:pid], r[:modelId]]}
21
- table = Terminal::Table.new :rows => busy, :headings => ['Label', 'Type', 'PID', 'ModelID']
22
- say table
23
- end
24
- end
25
- end
26
- end
27
- alias_command :assign, 'assign list'
28
-
29
- command 'assign set' do |c|
30
- c.syntax = 'mr assign set [product]'
31
- c.description = 'Assign a product to a eventhandler'
32
-
33
- c.action do |args, options|
34
- sol = MrMurano::SC_Device.new
35
-
36
- prname = args.shift
37
- if prname.nil? then
38
- prid = $cfg['product.id']
39
- else
40
- acc = MrMurano::Account.new
41
- products = acc.products
42
- products.select!{|p|
43
- p[:label] == prname or p[:modelId] == prname or p[:pid] == prname
44
- }
45
- prid = products.map{|p| p[:modelId]}
46
- end
47
- raise "No product ID!" if prid.nil?
48
- say "Assigning #{prid} to solution" if $cfg['tool.verbose']
49
- sol.assignTriggers(prid) unless $cfg['tool.dry']
50
- end
51
-
52
- end
53
-
54
- # vim: set ai et sw=2 ts=2 :