MrMurano 1.4.1 → 1.4.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: 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 :