MuranoCLI 2.0.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.
Files changed (151) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +28 -0
  3. data/.rspec +2 -0
  4. data/.travis.yml +21 -0
  5. data/Gemfile +27 -0
  6. data/LICENSE.txt +19 -0
  7. data/MuranoCLI.gemspec +50 -0
  8. data/MuranoCLI.iss +50 -0
  9. data/README.markdown +208 -0
  10. data/Rakefile +188 -0
  11. data/TODO.taskpaper +122 -0
  12. data/bin/mr +8 -0
  13. data/bin/murano +84 -0
  14. data/docs/demo.md +109 -0
  15. data/lib/MrMurano/Account.rb +211 -0
  16. data/lib/MrMurano/Config-Migrate.rb +47 -0
  17. data/lib/MrMurano/Config.rb +286 -0
  18. data/lib/MrMurano/Mock.rb +63 -0
  19. data/lib/MrMurano/Product-1P-Device.rb +145 -0
  20. data/lib/MrMurano/Product-Resources.rb +195 -0
  21. data/lib/MrMurano/Product.rb +358 -0
  22. data/lib/MrMurano/ProjectFile.rb +349 -0
  23. data/lib/MrMurano/Solution-Cors.rb +46 -0
  24. data/lib/MrMurano/Solution-Endpoint.rb +177 -0
  25. data/lib/MrMurano/Solution-File.rb +150 -0
  26. data/lib/MrMurano/Solution-ServiceConfig.rb +140 -0
  27. data/lib/MrMurano/Solution-Services.rb +326 -0
  28. data/lib/MrMurano/Solution-Users.rb +129 -0
  29. data/lib/MrMurano/Solution.rb +59 -0
  30. data/lib/MrMurano/SubCmdGroupContext.rb +49 -0
  31. data/lib/MrMurano/SyncUpDown.rb +565 -0
  32. data/lib/MrMurano/commands/assign.rb +57 -0
  33. data/lib/MrMurano/commands/businessList.rb +45 -0
  34. data/lib/MrMurano/commands/completion.rb +152 -0
  35. data/lib/MrMurano/commands/config.rb +67 -0
  36. data/lib/MrMurano/commands/content.rb +130 -0
  37. data/lib/MrMurano/commands/cors.rb +30 -0
  38. data/lib/MrMurano/commands/domain.rb +17 -0
  39. data/lib/MrMurano/commands/gb.rb +33 -0
  40. data/lib/MrMurano/commands/init.rb +138 -0
  41. data/lib/MrMurano/commands/keystore.rb +157 -0
  42. data/lib/MrMurano/commands/logs.rb +78 -0
  43. data/lib/MrMurano/commands/mock.rb +63 -0
  44. data/lib/MrMurano/commands/password.rb +88 -0
  45. data/lib/MrMurano/commands/postgresql.rb +41 -0
  46. data/lib/MrMurano/commands/product.rb +14 -0
  47. data/lib/MrMurano/commands/productCreate.rb +39 -0
  48. data/lib/MrMurano/commands/productDelete.rb +33 -0
  49. data/lib/MrMurano/commands/productDevice.rb +84 -0
  50. data/lib/MrMurano/commands/productDeviceIdCmds.rb +86 -0
  51. data/lib/MrMurano/commands/productList.rb +45 -0
  52. data/lib/MrMurano/commands/productWrite.rb +27 -0
  53. data/lib/MrMurano/commands/show.rb +80 -0
  54. data/lib/MrMurano/commands/solution.rb +14 -0
  55. data/lib/MrMurano/commands/solutionCreate.rb +39 -0
  56. data/lib/MrMurano/commands/solutionDelete.rb +34 -0
  57. data/lib/MrMurano/commands/solutionList.rb +45 -0
  58. data/lib/MrMurano/commands/status.rb +92 -0
  59. data/lib/MrMurano/commands/sync.rb +60 -0
  60. data/lib/MrMurano/commands/timeseries.rb +115 -0
  61. data/lib/MrMurano/commands/tsdb.rb +271 -0
  62. data/lib/MrMurano/commands/usage.rb +23 -0
  63. data/lib/MrMurano/commands/zshcomplete.erb +112 -0
  64. data/lib/MrMurano/commands.rb +32 -0
  65. data/lib/MrMurano/hash.rb +20 -0
  66. data/lib/MrMurano/http.rb +153 -0
  67. data/lib/MrMurano/makePretty.rb +75 -0
  68. data/lib/MrMurano/schema/pf-v1.0.0.yaml +114 -0
  69. data/lib/MrMurano/schema/sf-v0.2.0.yaml +77 -0
  70. data/lib/MrMurano/schema/sf-v0.3.0.yaml +78 -0
  71. data/lib/MrMurano/template/mock.erb +9 -0
  72. data/lib/MrMurano/template/projectFile.murano.erb +81 -0
  73. data/lib/MrMurano/verbosing.rb +99 -0
  74. data/lib/MrMurano/version.rb +4 -0
  75. data/lib/MrMurano.rb +20 -0
  76. data/spec/Account-Passwords_spec.rb +242 -0
  77. data/spec/Account_spec.rb +272 -0
  78. data/spec/ConfigFile_spec.rb +50 -0
  79. data/spec/ConfigMigrate_spec.rb +89 -0
  80. data/spec/Config_spec.rb +409 -0
  81. data/spec/Http_spec.rb +204 -0
  82. data/spec/MakePretties_spec.rb +118 -0
  83. data/spec/Mock_spec.rb +53 -0
  84. data/spec/ProductBase_spec.rb +113 -0
  85. data/spec/ProductContent_spec.rb +162 -0
  86. data/spec/ProductResources_spec.rb +329 -0
  87. data/spec/Product_1P_Device_spec.rb +202 -0
  88. data/spec/Product_1P_RPC_spec.rb +175 -0
  89. data/spec/Product_spec.rb +153 -0
  90. data/spec/ProjectFile_spec.rb +324 -0
  91. data/spec/Solution-Cors_spec.rb +164 -0
  92. data/spec/Solution-Endpoint_spec.rb +581 -0
  93. data/spec/Solution-File_spec.rb +212 -0
  94. data/spec/Solution-ServiceConfig_spec.rb +202 -0
  95. data/spec/Solution-ServiceDevice_spec.rb +176 -0
  96. data/spec/Solution-ServiceEventHandler_spec.rb +385 -0
  97. data/spec/Solution-ServiceModules_spec.rb +465 -0
  98. data/spec/Solution-UsersRoles_spec.rb +207 -0
  99. data/spec/Solution_spec.rb +92 -0
  100. data/spec/SyncRoot_spec.rb +83 -0
  101. data/spec/SyncUpDown_spec.rb +495 -0
  102. data/spec/Verbosing_spec.rb +279 -0
  103. data/spec/_workspace.rb +27 -0
  104. data/spec/cmd_assign_spec.rb +51 -0
  105. data/spec/cmd_business_spec.rb +59 -0
  106. data/spec/cmd_common.rb +72 -0
  107. data/spec/cmd_config_spec.rb +68 -0
  108. data/spec/cmd_content_spec.rb +71 -0
  109. data/spec/cmd_cors_spec.rb +50 -0
  110. data/spec/cmd_device_spec.rb +96 -0
  111. data/spec/cmd_domain_spec.rb +32 -0
  112. data/spec/cmd_init_spec.rb +30 -0
  113. data/spec/cmd_keystore_spec.rb +97 -0
  114. data/spec/cmd_password_spec.rb +62 -0
  115. data/spec/cmd_status_spec.rb +239 -0
  116. data/spec/cmd_syncdown_spec.rb +86 -0
  117. data/spec/cmd_syncup_spec.rb +62 -0
  118. data/spec/cmd_usage_spec.rb +36 -0
  119. data/spec/fixtures/.mrmuranorc +9 -0
  120. data/spec/fixtures/ProjectFiles/invalid.yaml +9 -0
  121. data/spec/fixtures/ProjectFiles/only_meta.yaml +24 -0
  122. data/spec/fixtures/ProjectFiles/with_routes.yaml +27 -0
  123. data/spec/fixtures/SolutionFiles/0.2.0.json +20 -0
  124. data/spec/fixtures/SolutionFiles/0.2.0_invalid.json +18 -0
  125. data/spec/fixtures/SolutionFiles/0.2.json +21 -0
  126. data/spec/fixtures/SolutionFiles/0.3.0.json +20 -0
  127. data/spec/fixtures/SolutionFiles/0.3.0_invalid.json +19 -0
  128. data/spec/fixtures/SolutionFiles/0.3.json +20 -0
  129. data/spec/fixtures/SolutionFiles/basic.json +20 -0
  130. data/spec/fixtures/SolutionFiles/secret.json +6 -0
  131. data/spec/fixtures/configfile +9 -0
  132. data/spec/fixtures/dumped_config +42 -0
  133. data/spec/fixtures/mrmuranorc_deleted_bob +8 -0
  134. data/spec/fixtures/mrmuranorc_tool_bob +3 -0
  135. data/spec/fixtures/product_spec_files/example.exoline.spec.yaml +116 -0
  136. data/spec/fixtures/product_spec_files/example.murano.spec.yaml +14 -0
  137. data/spec/fixtures/product_spec_files/gwe.exoline.spec.yaml +21 -0
  138. data/spec/fixtures/product_spec_files/gwe.murano.spec.yaml +16 -0
  139. data/spec/fixtures/product_spec_files/lightbulb-no-state.yaml +11 -0
  140. data/spec/fixtures/product_spec_files/lightbulb.yaml +14 -0
  141. data/spec/fixtures/roles-three.yaml +11 -0
  142. data/spec/fixtures/syncable_content/assets/icon.png +0 -0
  143. data/spec/fixtures/syncable_content/assets/index.html +0 -0
  144. data/spec/fixtures/syncable_content/assets/js/script.js +0 -0
  145. data/spec/fixtures/syncable_content/modules/table_util.lua +58 -0
  146. data/spec/fixtures/syncable_content/routes/manyRoutes.lua +11 -0
  147. data/spec/fixtures/syncable_content/routes/singleRoute.lua +5 -0
  148. data/spec/fixtures/syncable_content/services/devdata.lua +18 -0
  149. data/spec/fixtures/syncable_content/services/timers.lua +4 -0
  150. data/spec/spec_helper.rb +119 -0
  151. metadata +498 -0
@@ -0,0 +1,14 @@
1
+ ---
2
+ resources:
3
+ - alias: mystring
4
+ - alias: temp
5
+ format: float
6
+ - alias: led6
7
+ format: integer
8
+ - alias: config
9
+ format: string
10
+ initial: '{"text": "555-555-1234", "email": "jeff@555.com"}'
11
+ - alias: person
12
+ format: string
13
+ initial: '{"name":"John Doe"}'
14
+ - alias: place
@@ -0,0 +1,21 @@
1
+ ---
2
+ dataports:
3
+ - alias: engine_fetch
4
+ format: string/json
5
+ - alias: sensors_report
6
+ format: string/json
7
+ - alias: update_interval
8
+ format: string
9
+ - alias: device_info
10
+ format: string/json
11
+ - alias: usage_report
12
+ format: string/json
13
+ - alias: fetch_status
14
+ format: string/json
15
+ - alias: engine_report
16
+ format: string/json
17
+ jsonschema: {"title": "Person Schema",
18
+ "type": "object",
19
+ "properties": {"name": {"type": "string"}},
20
+ "required": ["name"]}
21
+
@@ -0,0 +1,16 @@
1
+ ---
2
+ resources:
3
+ - alias: engine_fetch
4
+ format: string
5
+ - alias: sensors_report
6
+ format: string
7
+ - alias: update_interval
8
+ format: string
9
+ - alias: device_info
10
+ format: string
11
+ - alias: usage_report
12
+ format: string
13
+ - alias: fetch_status
14
+ format: string
15
+ - alias: engine_report
16
+ format: string
@@ -0,0 +1,11 @@
1
+ ---
2
+ resources:
3
+ - alias: temperature
4
+ format: float
5
+ initial: 0
6
+ - alias: uptime
7
+ format: integer
8
+ initial: 0
9
+ - alias: humidity
10
+ format: float
11
+ initial: 0
@@ -0,0 +1,14 @@
1
+ ---
2
+ resources:
3
+ - alias: state
4
+ format: integer
5
+ initial: 0
6
+ - alias: temperature
7
+ format: float
8
+ initial: 0
9
+ - alias: uptime
10
+ format: integer
11
+ initial: 0
12
+ - alias: humidity
13
+ format: float
14
+ initial: 0
@@ -0,0 +1,11 @@
1
+ ---
2
+ - role_id: guest
3
+ parameter:
4
+ - name: did
5
+ - role_id: admin
6
+ parameter:
7
+ - name: enabled
8
+ - role_id: owns
9
+ parameter:
10
+ - name: did
11
+
File without changes
@@ -0,0 +1,58 @@
1
+ -- luacheck: ignore 122/table (This is all about modifying the table)
2
+
3
+ ---
4
+ -- Dump a table as a string; recursively
5
+ -- \returns string
6
+ function table.dump(o)
7
+ if type(o) == 'table' then
8
+ local s = '{ '
9
+ for k,v in pairs(o) do
10
+ if type(k) ~= 'number' then k = '"'..k..'"' end
11
+ s = s .. '['..k..'] = ' .. table.dump(v) .. ','
12
+ end
13
+ return s .. '} '
14
+ else
15
+ return tostring(o)
16
+ end
17
+ end
18
+
19
+ ---
20
+ -- Does table have item?
21
+ function table.contains(table, element)
22
+ for _, value in pairs(table) do
23
+ if value == element then
24
+ return true
25
+ end
26
+ end
27
+ return false
28
+ end
29
+
30
+
31
+ ---
32
+ -- Find a table in a list of tables.
33
+ -- \returns idx, table found; nil if not found
34
+ function table.find(tbl, key, value)
35
+ if type(key) == 'nil' then return nil, nil end
36
+ for i,v in ipairs(tbl) do
37
+ if type(v) == 'table' then
38
+ if v[key] == value then
39
+ return i, v
40
+ end
41
+ end
42
+ end
43
+ return nil, nil
44
+ end
45
+
46
+ ---
47
+ -- Replace a table
48
+ function table.replacingAdd(tbl, key, newitem)
49
+ local idx, _ = table.find(tbl, key, newitem[key])
50
+ if idx == nil then
51
+ table.insert(tbl, newitem)
52
+ else
53
+ table.remove(tbl, idx)
54
+ table.insert(tbl, idx, newitem)
55
+ end
56
+ end
57
+
58
+ -- vim: set ai sw=2 ts=2 :
@@ -0,0 +1,11 @@
1
+ --#ENDPOINT post /api/fire
2
+ -- luacheck: globals request response (magic variables from Murano)
3
+ response.code = 403
4
+
5
+ --#ENDPOINT put /api/fire/{code}
6
+ response.code = 500
7
+
8
+ --#ENDPOINT delete /api/fire/{code}
9
+ return 'ok'
10
+
11
+ -- vim: set ai sw=2 ts=2 :
@@ -0,0 +1,5 @@
1
+ --#ENDPOINT get /api/onfire
2
+ -- luacheck: globals request response (magic variables from Murano)
3
+
4
+ return 'no'
5
+ -- vim: set ai sw=2 ts=2 :
@@ -0,0 +1,18 @@
1
+ --#EVENT device datapoint
2
+ -- luacheck: globals data (magic variable from Murano)
3
+
4
+ -- Get the timestamp for this data if a record action.
5
+ -- Otherwise use default (now)
6
+ local stamped = nil
7
+ if data.api == "record" then
8
+ stamped = tostring(data.value[1]) .. 's'
9
+ end
10
+
11
+ -- Save it to timeseries database.
12
+ Tsdb.write{
13
+ tags = {sn=data.device_sn},
14
+ metrics = {[data.alias] = tonumber(data.value[2])},
15
+ ts = stamped
16
+ }
17
+
18
+ -- vim: set et ai sw=2 ts=2 :
@@ -0,0 +1,4 @@
1
+ --#EVENT timer timer
2
+ -- Nothing here.
3
+
4
+ -- vim: set ai sw=2 ts=2 :
@@ -0,0 +1,119 @@
1
+ # This file was generated by the `rspec --init` command. Conventionally, all
2
+ # specs live under a `spec` directory, which RSpec adds to the `$LOAD_PATH`.
3
+ # The generated `.rspec` file contains `--require spec_helper` which will cause
4
+ # this file to always be loaded, without a need to explicitly require it in any
5
+ # files.
6
+ #
7
+ # Given that it is always loaded, you are encouraged to keep this file as
8
+ # light-weight as possible. Requiring heavyweight dependencies from this file
9
+ # will add to the boot time of your test suite on EVERY test run, even for an
10
+ # individual file that may not need all of that loaded. Instead, consider making
11
+ # a separate helper file that requires the additional dependencies and performs
12
+ # the additional setup, and require it from the spec files that actually need
13
+ # it.
14
+ #
15
+ # The `.rspec` file also contains a few flags that are not defaults but that
16
+ # users commonly want.
17
+ #
18
+ require 'simplecov'
19
+ SimpleCov.start do
20
+ add_group "Specs", "spec/.*"
21
+ add_group "Solution", "lib/MrMurano/Solution.*"
22
+ add_group "Product", "lib/MrMurano/Product.*"
23
+
24
+ track_files "lib/MrMurano/*.rb"
25
+ end
26
+
27
+ require 'webmock/rspec'
28
+
29
+ # See http://rubydoc.info/gems/rspec-core/RSpec/Core/Configuration
30
+ RSpec.configure do |config|
31
+
32
+ if ENV['MURANO_PASSWORD'].nil? then
33
+ config.filter_run_excluding :needs_password
34
+ end
35
+
36
+ # rspec-expectations config goes here. You can use an alternate
37
+ # assertion/expectation library such as wrong or the stdlib/minitest
38
+ # assertions if you prefer.
39
+ config.expect_with :rspec do |expectations|
40
+ # This option will default to `true` in RSpec 4. It makes the `description`
41
+ # and `failure_message` of custom matchers include text for helper methods
42
+ # defined using `chain`, e.g.:
43
+ # be_bigger_than(2).and_smaller_than(4).description
44
+ # # => "be bigger than 2 and smaller than 4"
45
+ # ...rather than:
46
+ # # => "be bigger than 2"
47
+ expectations.include_chain_clauses_in_custom_matcher_descriptions = true
48
+ end
49
+
50
+ # rspec-mocks config goes here. You can use an alternate test double
51
+ # library (such as bogus or mocha) by changing the `mock_with` option here.
52
+ config.mock_with :rspec do |mocks|
53
+ # Prevents you from mocking or stubbing a method that does not exist on
54
+ # a real object. This is generally recommended, and will default to
55
+ # `true` in RSpec 4.
56
+ mocks.verify_partial_doubles = true
57
+ end
58
+
59
+ # This option will default to `:apply_to_host_groups` in RSpec 4 (and will
60
+ # have no way to turn it off -- the option exists only for backwards
61
+ # compatibility in RSpec 3). It causes shared context metadata to be
62
+ # inherited by the metadata hash of host groups and examples, rather than
63
+ # triggering implicit auto-inclusion in groups with matching metadata.
64
+ config.shared_context_metadata_behavior = :apply_to_host_groups
65
+
66
+ # The settings below are suggested to provide a good initial experience
67
+ # with RSpec, but feel free to customize to your heart's content.
68
+
69
+ # This allows you to limit a spec run to individual examples or groups
70
+ # you care about by tagging them with `:focus` metadata. When nothing
71
+ # is tagged with `:focus`, all examples get run. RSpec also provides
72
+ # aliases for `it`, `describe`, and `context` that include `:focus`
73
+ # metadata: `fit`, `fdescribe` and `fcontext`, respectively.
74
+ #config.filter_run_when_matching :focus
75
+
76
+ # Allows RSpec to persist some state between runs in order to support
77
+ # the `--only-failures` and `--next-failure` CLI options. We recommend
78
+ # you configure your source control system to ignore this file.
79
+ #config.example_status_persistence_file_path = "spec/examples.txt"
80
+
81
+ # Limits the available syntax to the non-monkey patched syntax that is
82
+ # recommended. For more details, see:
83
+ # - http://rspec.info/blog/2012/06/rspecs-new-expectation-syntax/
84
+ # - http://www.teaisaweso.me/blog/2013/05/27/rspecs-new-message-expectation-syntax/
85
+ # - http://rspec.info/blog/2014/05/notable-changes-in-rspec-3/#zero-monkey-patching-mode
86
+ config.disable_monkey_patching!
87
+
88
+ # This setting enables warnings. It's recommended, but in some cases may
89
+ # be too noisy due to issues in dependencies.
90
+ config.warnings = true
91
+
92
+ # Many RSpec users commonly either run the entire suite or an individual
93
+ # file, and it's useful to allow more verbose output when running an
94
+ # individual spec file.
95
+ if config.files_to_run.one?
96
+ # Use the documentation formatter for detailed output,
97
+ # unless a formatter has already been configured
98
+ # (e.g. via a command-line flag).
99
+ config.default_formatter = 'doc'
100
+ end
101
+
102
+ # Print the 10 slowest examples and example groups at the
103
+ # end of the spec run, to help surface which specs are running
104
+ # particularly slow.
105
+ config.profile_examples = 10
106
+
107
+ # Run specs in random order to surface order dependencies. If you find an
108
+ # order dependency and want to debug it, you can fix the order by providing
109
+ # the seed, which is printed after each run.
110
+ # --seed 1234
111
+ config.order = :random
112
+
113
+ # Seed global randomization in this process using the `--seed` CLI option.
114
+ # Setting this allows you to use `--seed` to deterministically reproduce
115
+ # test failures related to randomization by passing the same `--seed` value
116
+ # as the one that triggered the failure.
117
+ Kernel.srand config.seed
118
+
119
+ end
metadata ADDED
@@ -0,0 +1,498 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: MuranoCLI
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Michael Conrad Tadpol Tilstra
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2017-03-08 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: commander
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ~>
18
+ - !ruby/object:Gem::Version
19
+ version: 4.4.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ~>
25
+ - !ruby/object:Gem::Version
26
+ version: 4.4.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: certified
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '='
32
+ - !ruby/object:Gem::Version
33
+ version: 1.0.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '='
39
+ - !ruby/object:Gem::Version
40
+ version: 1.0.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: dotenv
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 2.1.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 2.1.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: highline
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ~>
60
+ - !ruby/object:Gem::Version
61
+ version: 1.7.8
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ~>
67
+ - !ruby/object:Gem::Version
68
+ version: 1.7.8
69
+ - !ruby/object:Gem::Dependency
70
+ name: http-form_data
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: 1.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: 1.0.1
83
+ - !ruby/object:Gem::Dependency
84
+ name: inifile
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '3.0'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '3.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: json-schema
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ~>
102
+ - !ruby/object:Gem::Version
103
+ version: 2.7.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ~>
109
+ - !ruby/object:Gem::Version
110
+ version: 2.7.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: mime-types
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ~>
116
+ - !ruby/object:Gem::Version
117
+ version: '3.1'
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ~>
123
+ - !ruby/object:Gem::Version
124
+ version: '3.1'
125
+ - !ruby/object:Gem::Dependency
126
+ name: mime-types-data
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ~>
130
+ - !ruby/object:Gem::Version
131
+ version: 3.2016.0521
132
+ type: :runtime
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ~>
137
+ - !ruby/object:Gem::Version
138
+ version: 3.2016.0521
139
+ - !ruby/object:Gem::Dependency
140
+ name: terminal-table
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ~>
144
+ - !ruby/object:Gem::Version
145
+ version: 1.4.5
146
+ type: :runtime
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ~>
151
+ - !ruby/object:Gem::Version
152
+ version: 1.4.5
153
+ - !ruby/object:Gem::Dependency
154
+ name: bundler
155
+ requirement: !ruby/object:Gem::Requirement
156
+ requirements:
157
+ - - ~>
158
+ - !ruby/object:Gem::Version
159
+ version: 1.7.6
160
+ type: :development
161
+ prerelease: false
162
+ version_requirements: !ruby/object:Gem::Requirement
163
+ requirements:
164
+ - - ~>
165
+ - !ruby/object:Gem::Version
166
+ version: 1.7.6
167
+ - !ruby/object:Gem::Dependency
168
+ name: ocra
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ~>
172
+ - !ruby/object:Gem::Version
173
+ version: 1.3.8
174
+ type: :development
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ~>
179
+ - !ruby/object:Gem::Version
180
+ version: 1.3.8
181
+ - !ruby/object:Gem::Dependency
182
+ name: rake
183
+ requirement: !ruby/object:Gem::Requirement
184
+ requirements:
185
+ - - ~>
186
+ - !ruby/object:Gem::Version
187
+ version: 10.1.1
188
+ type: :development
189
+ prerelease: false
190
+ version_requirements: !ruby/object:Gem::Requirement
191
+ requirements:
192
+ - - ~>
193
+ - !ruby/object:Gem::Version
194
+ version: 10.1.1
195
+ - !ruby/object:Gem::Dependency
196
+ name: rspec
197
+ requirement: !ruby/object:Gem::Requirement
198
+ requirements:
199
+ - - ~>
200
+ - !ruby/object:Gem::Version
201
+ version: '3.5'
202
+ type: :development
203
+ prerelease: false
204
+ version_requirements: !ruby/object:Gem::Requirement
205
+ requirements:
206
+ - - ~>
207
+ - !ruby/object:Gem::Version
208
+ version: '3.5'
209
+ - !ruby/object:Gem::Dependency
210
+ name: simplecov
211
+ requirement: !ruby/object:Gem::Requirement
212
+ requirements:
213
+ - - '>='
214
+ - !ruby/object:Gem::Version
215
+ version: '0'
216
+ type: :development
217
+ prerelease: false
218
+ version_requirements: !ruby/object:Gem::Requirement
219
+ requirements:
220
+ - - '>='
221
+ - !ruby/object:Gem::Version
222
+ version: '0'
223
+ - !ruby/object:Gem::Dependency
224
+ name: webmock
225
+ requirement: !ruby/object:Gem::Requirement
226
+ requirements:
227
+ - - ~>
228
+ - !ruby/object:Gem::Version
229
+ version: 2.1.0
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ requirements:
234
+ - - ~>
235
+ - !ruby/object:Gem::Version
236
+ version: 2.1.0
237
+ description: "Do more from the command line with Murano\n\n Push and pull data from
238
+ Murano.\n Get status on what things have changed.\n See a diff of the changes
239
+ before you push.\n\n and so much more.\n\n This gem was formerly known as MrMurano.\n
240
+ \ "
241
+ email:
242
+ - miketilstra@exosite.com
243
+ executables:
244
+ - mr
245
+ - murano
246
+ extensions: []
247
+ extra_rdoc_files: []
248
+ files:
249
+ - .gitignore
250
+ - .rspec
251
+ - .travis.yml
252
+ - Gemfile
253
+ - LICENSE.txt
254
+ - MuranoCLI.gemspec
255
+ - MuranoCLI.iss
256
+ - README.markdown
257
+ - Rakefile
258
+ - TODO.taskpaper
259
+ - bin/mr
260
+ - bin/murano
261
+ - docs/demo.md
262
+ - lib/MrMurano.rb
263
+ - lib/MrMurano/Account.rb
264
+ - lib/MrMurano/Config-Migrate.rb
265
+ - lib/MrMurano/Config.rb
266
+ - lib/MrMurano/Mock.rb
267
+ - lib/MrMurano/Product-1P-Device.rb
268
+ - lib/MrMurano/Product-Resources.rb
269
+ - lib/MrMurano/Product.rb
270
+ - lib/MrMurano/ProjectFile.rb
271
+ - lib/MrMurano/Solution-Cors.rb
272
+ - lib/MrMurano/Solution-Endpoint.rb
273
+ - lib/MrMurano/Solution-File.rb
274
+ - lib/MrMurano/Solution-ServiceConfig.rb
275
+ - lib/MrMurano/Solution-Services.rb
276
+ - lib/MrMurano/Solution-Users.rb
277
+ - lib/MrMurano/Solution.rb
278
+ - lib/MrMurano/SubCmdGroupContext.rb
279
+ - lib/MrMurano/SyncUpDown.rb
280
+ - lib/MrMurano/commands.rb
281
+ - lib/MrMurano/commands/assign.rb
282
+ - lib/MrMurano/commands/businessList.rb
283
+ - lib/MrMurano/commands/completion.rb
284
+ - lib/MrMurano/commands/config.rb
285
+ - lib/MrMurano/commands/content.rb
286
+ - lib/MrMurano/commands/cors.rb
287
+ - lib/MrMurano/commands/domain.rb
288
+ - lib/MrMurano/commands/gb.rb
289
+ - lib/MrMurano/commands/init.rb
290
+ - lib/MrMurano/commands/keystore.rb
291
+ - lib/MrMurano/commands/logs.rb
292
+ - lib/MrMurano/commands/mock.rb
293
+ - lib/MrMurano/commands/password.rb
294
+ - lib/MrMurano/commands/postgresql.rb
295
+ - lib/MrMurano/commands/product.rb
296
+ - lib/MrMurano/commands/productCreate.rb
297
+ - lib/MrMurano/commands/productDelete.rb
298
+ - lib/MrMurano/commands/productDevice.rb
299
+ - lib/MrMurano/commands/productDeviceIdCmds.rb
300
+ - lib/MrMurano/commands/productList.rb
301
+ - lib/MrMurano/commands/productWrite.rb
302
+ - lib/MrMurano/commands/show.rb
303
+ - lib/MrMurano/commands/solution.rb
304
+ - lib/MrMurano/commands/solutionCreate.rb
305
+ - lib/MrMurano/commands/solutionDelete.rb
306
+ - lib/MrMurano/commands/solutionList.rb
307
+ - lib/MrMurano/commands/status.rb
308
+ - lib/MrMurano/commands/sync.rb
309
+ - lib/MrMurano/commands/timeseries.rb
310
+ - lib/MrMurano/commands/tsdb.rb
311
+ - lib/MrMurano/commands/usage.rb
312
+ - lib/MrMurano/commands/zshcomplete.erb
313
+ - lib/MrMurano/hash.rb
314
+ - lib/MrMurano/http.rb
315
+ - lib/MrMurano/makePretty.rb
316
+ - lib/MrMurano/schema/pf-v1.0.0.yaml
317
+ - lib/MrMurano/schema/sf-v0.2.0.yaml
318
+ - lib/MrMurano/schema/sf-v0.3.0.yaml
319
+ - lib/MrMurano/template/mock.erb
320
+ - lib/MrMurano/template/projectFile.murano.erb
321
+ - lib/MrMurano/verbosing.rb
322
+ - lib/MrMurano/version.rb
323
+ - spec/Account-Passwords_spec.rb
324
+ - spec/Account_spec.rb
325
+ - spec/ConfigFile_spec.rb
326
+ - spec/ConfigMigrate_spec.rb
327
+ - spec/Config_spec.rb
328
+ - spec/Http_spec.rb
329
+ - spec/MakePretties_spec.rb
330
+ - spec/Mock_spec.rb
331
+ - spec/ProductBase_spec.rb
332
+ - spec/ProductContent_spec.rb
333
+ - spec/ProductResources_spec.rb
334
+ - spec/Product_1P_Device_spec.rb
335
+ - spec/Product_1P_RPC_spec.rb
336
+ - spec/Product_spec.rb
337
+ - spec/ProjectFile_spec.rb
338
+ - spec/Solution-Cors_spec.rb
339
+ - spec/Solution-Endpoint_spec.rb
340
+ - spec/Solution-File_spec.rb
341
+ - spec/Solution-ServiceConfig_spec.rb
342
+ - spec/Solution-ServiceDevice_spec.rb
343
+ - spec/Solution-ServiceEventHandler_spec.rb
344
+ - spec/Solution-ServiceModules_spec.rb
345
+ - spec/Solution-UsersRoles_spec.rb
346
+ - spec/Solution_spec.rb
347
+ - spec/SyncRoot_spec.rb
348
+ - spec/SyncUpDown_spec.rb
349
+ - spec/Verbosing_spec.rb
350
+ - spec/_workspace.rb
351
+ - spec/cmd_assign_spec.rb
352
+ - spec/cmd_business_spec.rb
353
+ - spec/cmd_common.rb
354
+ - spec/cmd_config_spec.rb
355
+ - spec/cmd_content_spec.rb
356
+ - spec/cmd_cors_spec.rb
357
+ - spec/cmd_device_spec.rb
358
+ - spec/cmd_domain_spec.rb
359
+ - spec/cmd_init_spec.rb
360
+ - spec/cmd_keystore_spec.rb
361
+ - spec/cmd_password_spec.rb
362
+ - spec/cmd_status_spec.rb
363
+ - spec/cmd_syncdown_spec.rb
364
+ - spec/cmd_syncup_spec.rb
365
+ - spec/cmd_usage_spec.rb
366
+ - spec/fixtures/.mrmuranorc
367
+ - spec/fixtures/ProjectFiles/invalid.yaml
368
+ - spec/fixtures/ProjectFiles/only_meta.yaml
369
+ - spec/fixtures/ProjectFiles/with_routes.yaml
370
+ - spec/fixtures/SolutionFiles/0.2.0.json
371
+ - spec/fixtures/SolutionFiles/0.2.0_invalid.json
372
+ - spec/fixtures/SolutionFiles/0.2.json
373
+ - spec/fixtures/SolutionFiles/0.3.0.json
374
+ - spec/fixtures/SolutionFiles/0.3.0_invalid.json
375
+ - spec/fixtures/SolutionFiles/0.3.json
376
+ - spec/fixtures/SolutionFiles/basic.json
377
+ - spec/fixtures/SolutionFiles/secret.json
378
+ - spec/fixtures/configfile
379
+ - spec/fixtures/dumped_config
380
+ - spec/fixtures/mrmuranorc_deleted_bob
381
+ - spec/fixtures/mrmuranorc_tool_bob
382
+ - spec/fixtures/product_spec_files/example.exoline.spec.yaml
383
+ - spec/fixtures/product_spec_files/example.murano.spec.yaml
384
+ - spec/fixtures/product_spec_files/gwe.exoline.spec.yaml
385
+ - spec/fixtures/product_spec_files/gwe.murano.spec.yaml
386
+ - spec/fixtures/product_spec_files/lightbulb-no-state.yaml
387
+ - spec/fixtures/product_spec_files/lightbulb.yaml
388
+ - spec/fixtures/roles-three.yaml
389
+ - spec/fixtures/syncable_content/assets/icon.png
390
+ - spec/fixtures/syncable_content/assets/index.html
391
+ - spec/fixtures/syncable_content/assets/js/script.js
392
+ - spec/fixtures/syncable_content/modules/table_util.lua
393
+ - spec/fixtures/syncable_content/routes/manyRoutes.lua
394
+ - spec/fixtures/syncable_content/routes/singleRoute.lua
395
+ - spec/fixtures/syncable_content/services/devdata.lua
396
+ - spec/fixtures/syncable_content/services/timers.lua
397
+ - spec/spec_helper.rb
398
+ homepage: https://github.com/exosite/MuranoCLI
399
+ licenses:
400
+ - MIT
401
+ metadata: {}
402
+ post_install_message:
403
+ rdoc_options: []
404
+ require_paths:
405
+ - lib
406
+ required_ruby_version: !ruby/object:Gem::Requirement
407
+ requirements:
408
+ - - ~>
409
+ - !ruby/object:Gem::Version
410
+ version: '2.0'
411
+ required_rubygems_version: !ruby/object:Gem::Requirement
412
+ requirements:
413
+ - - '>='
414
+ - !ruby/object:Gem::Version
415
+ version: '0'
416
+ requirements: []
417
+ rubyforge_project:
418
+ rubygems_version: 2.0.14.1
419
+ signing_key:
420
+ specification_version: 4
421
+ summary: Do more from the command line with Murano
422
+ test_files:
423
+ - spec/Account-Passwords_spec.rb
424
+ - spec/Account_spec.rb
425
+ - spec/ConfigFile_spec.rb
426
+ - spec/ConfigMigrate_spec.rb
427
+ - spec/Config_spec.rb
428
+ - spec/Http_spec.rb
429
+ - spec/MakePretties_spec.rb
430
+ - spec/Mock_spec.rb
431
+ - spec/ProductBase_spec.rb
432
+ - spec/ProductContent_spec.rb
433
+ - spec/ProductResources_spec.rb
434
+ - spec/Product_1P_Device_spec.rb
435
+ - spec/Product_1P_RPC_spec.rb
436
+ - spec/Product_spec.rb
437
+ - spec/ProjectFile_spec.rb
438
+ - spec/Solution-Cors_spec.rb
439
+ - spec/Solution-Endpoint_spec.rb
440
+ - spec/Solution-File_spec.rb
441
+ - spec/Solution-ServiceConfig_spec.rb
442
+ - spec/Solution-ServiceDevice_spec.rb
443
+ - spec/Solution-ServiceEventHandler_spec.rb
444
+ - spec/Solution-ServiceModules_spec.rb
445
+ - spec/Solution-UsersRoles_spec.rb
446
+ - spec/Solution_spec.rb
447
+ - spec/SyncRoot_spec.rb
448
+ - spec/SyncUpDown_spec.rb
449
+ - spec/Verbosing_spec.rb
450
+ - spec/_workspace.rb
451
+ - spec/cmd_assign_spec.rb
452
+ - spec/cmd_business_spec.rb
453
+ - spec/cmd_common.rb
454
+ - spec/cmd_config_spec.rb
455
+ - spec/cmd_content_spec.rb
456
+ - spec/cmd_cors_spec.rb
457
+ - spec/cmd_device_spec.rb
458
+ - spec/cmd_domain_spec.rb
459
+ - spec/cmd_init_spec.rb
460
+ - spec/cmd_keystore_spec.rb
461
+ - spec/cmd_password_spec.rb
462
+ - spec/cmd_status_spec.rb
463
+ - spec/cmd_syncdown_spec.rb
464
+ - spec/cmd_syncup_spec.rb
465
+ - spec/cmd_usage_spec.rb
466
+ - spec/fixtures/.mrmuranorc
467
+ - spec/fixtures/ProjectFiles/invalid.yaml
468
+ - spec/fixtures/ProjectFiles/only_meta.yaml
469
+ - spec/fixtures/ProjectFiles/with_routes.yaml
470
+ - spec/fixtures/SolutionFiles/0.2.0.json
471
+ - spec/fixtures/SolutionFiles/0.2.0_invalid.json
472
+ - spec/fixtures/SolutionFiles/0.2.json
473
+ - spec/fixtures/SolutionFiles/0.3.0.json
474
+ - spec/fixtures/SolutionFiles/0.3.0_invalid.json
475
+ - spec/fixtures/SolutionFiles/0.3.json
476
+ - spec/fixtures/SolutionFiles/basic.json
477
+ - spec/fixtures/SolutionFiles/secret.json
478
+ - spec/fixtures/configfile
479
+ - spec/fixtures/dumped_config
480
+ - spec/fixtures/mrmuranorc_deleted_bob
481
+ - spec/fixtures/mrmuranorc_tool_bob
482
+ - spec/fixtures/product_spec_files/example.exoline.spec.yaml
483
+ - spec/fixtures/product_spec_files/example.murano.spec.yaml
484
+ - spec/fixtures/product_spec_files/gwe.exoline.spec.yaml
485
+ - spec/fixtures/product_spec_files/gwe.murano.spec.yaml
486
+ - spec/fixtures/product_spec_files/lightbulb-no-state.yaml
487
+ - spec/fixtures/product_spec_files/lightbulb.yaml
488
+ - spec/fixtures/roles-three.yaml
489
+ - spec/fixtures/syncable_content/assets/icon.png
490
+ - spec/fixtures/syncable_content/assets/index.html
491
+ - spec/fixtures/syncable_content/assets/js/script.js
492
+ - spec/fixtures/syncable_content/modules/table_util.lua
493
+ - spec/fixtures/syncable_content/routes/manyRoutes.lua
494
+ - spec/fixtures/syncable_content/routes/singleRoute.lua
495
+ - spec/fixtures/syncable_content/services/devdata.lua
496
+ - spec/fixtures/syncable_content/services/timers.lua
497
+ - spec/spec_helper.rb
498
+ has_rdoc: