MuranoCLI 2.2.4 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.agignore +3 -0
- data/.gitignore +18 -1
- data/.rubocop.yml +222 -0
- data/.trustme.sh +185 -0
- data/.trustme.vim +24 -0
- data/Gemfile +23 -4
- data/LICENSE.txt +1 -1
- data/MuranoCLI.gemspec +43 -8
- data/README.markdown +9 -11
- data/Rakefile +187 -143
- data/TODO.taskpaper +2 -2
- data/bin/murano +51 -52
- data/docs/basic_example.rst +436 -0
- data/docs/completions/murano_completion-bash +3484 -0
- data/docs/demo.md +32 -32
- data/docs/develop.rst +391 -0
- data/lib/MrMurano.rb +21 -7
- data/lib/MrMurano/Account.rb +159 -174
- data/lib/MrMurano/Business.rb +381 -0
- data/lib/MrMurano/Config-Migrate.rb +32 -26
- data/lib/MrMurano/Config.rb +407 -128
- data/lib/MrMurano/Content.rb +191 -0
- data/lib/MrMurano/Gateway.rb +489 -0
- data/lib/MrMurano/Keystore.rb +48 -0
- data/lib/MrMurano/Passwords.rb +103 -0
- data/lib/MrMurano/ProjectFile.rb +121 -79
- data/lib/MrMurano/ReCommander.rb +114 -10
- data/lib/MrMurano/Setting.rb +90 -0
- data/lib/MrMurano/Solution-ServiceConfig.rb +89 -45
- data/lib/MrMurano/Solution-Services.rb +461 -166
- data/lib/MrMurano/Solution-Users.rb +70 -31
- data/lib/MrMurano/Solution.rb +372 -13
- data/lib/MrMurano/SolutionId.rb +73 -0
- data/lib/MrMurano/SyncRoot.rb +137 -0
- data/lib/MrMurano/SyncUpDown.rb +594 -284
- data/lib/MrMurano/Webservice-Cors.rb +71 -0
- data/lib/MrMurano/Webservice-Endpoint.rb +234 -0
- data/lib/MrMurano/Webservice-File.rb +193 -0
- data/lib/MrMurano/Webservice.rb +51 -0
- data/lib/MrMurano/commands.rb +18 -15
- data/lib/MrMurano/commands/business.rb +300 -6
- data/lib/MrMurano/commands/completion-bash.erb +166 -0
- data/lib/MrMurano/commands/{zshcomplete.erb → completion-zsh.erb} +0 -0
- data/lib/MrMurano/commands/completion.rb +76 -39
- data/lib/MrMurano/commands/config.rb +108 -44
- data/lib/MrMurano/commands/content.rb +115 -72
- data/lib/MrMurano/commands/cors.rb +29 -14
- data/lib/MrMurano/commands/devices.rb +286 -0
- data/lib/MrMurano/commands/domain.rb +52 -12
- data/lib/MrMurano/commands/gb.rb +24 -9
- data/lib/MrMurano/commands/globals.rb +64 -0
- data/lib/MrMurano/commands/init.rb +377 -155
- data/lib/MrMurano/commands/keystore.rb +92 -82
- data/lib/MrMurano/commands/link.rb +300 -0
- data/lib/MrMurano/commands/login.rb +74 -11
- data/lib/MrMurano/commands/logs.rb +63 -32
- data/lib/MrMurano/commands/mock.rb +57 -29
- data/lib/MrMurano/commands/password.rb +57 -39
- data/lib/MrMurano/commands/postgresql.rb +127 -94
- data/lib/MrMurano/commands/settings.rb +203 -0
- data/lib/MrMurano/commands/show.rb +79 -38
- data/lib/MrMurano/commands/solution.rb +423 -5
- data/lib/MrMurano/commands/solution_picker.rb +547 -0
- data/lib/MrMurano/commands/status.rb +195 -61
- data/lib/MrMurano/commands/sync.rb +78 -39
- data/lib/MrMurano/commands/timeseries.rb +71 -55
- data/lib/MrMurano/commands/tsdb.rb +113 -87
- data/lib/MrMurano/commands/usage.rb +57 -15
- data/lib/MrMurano/hash.rb +100 -10
- data/lib/MrMurano/http.rb +187 -43
- data/lib/MrMurano/makePretty.rb +16 -14
- data/lib/MrMurano/optparse.rb +2178 -0
- data/lib/MrMurano/progress.rb +138 -0
- data/lib/MrMurano/schema/resource-v1.0.0.yaml +32 -0
- data/lib/MrMurano/template/projectFile.murano.erb +16 -13
- data/lib/MrMurano/verbosing.rb +166 -29
- data/lib/MrMurano/version.rb +30 -1
- data/spec/Account-Passwords_spec.rb +21 -4
- data/spec/Account_spec.rb +69 -146
- data/spec/Business_spec.rb +290 -0
- data/spec/ConfigFile_spec.rb +1 -0
- data/spec/ConfigMigrate_spec.rb +12 -8
- data/spec/Config_spec.rb +40 -34
- data/spec/Content_spec.rb +363 -0
- data/spec/GatewayBase_spec.rb +54 -0
- data/spec/GatewayDevice_spec.rb +321 -0
- data/spec/GatewayResource_spec.rb +266 -0
- data/spec/GatewaySettings_spec.rb +120 -0
- data/spec/Http_spec.rb +18 -8
- data/spec/Mock_spec.rb +2 -2
- data/spec/ProjectFile_spec.rb +25 -14
- data/spec/Setting_spec.rb +110 -0
- data/spec/Solution-ServiceConfig_spec.rb +44 -5
- data/spec/Solution-ServiceEventHandler_spec.rb +23 -14
- data/spec/Solution-ServiceModules_spec.rb +47 -37
- data/spec/Solution-UsersRoles_spec.rb +10 -8
- data/spec/Solution_spec.rb +17 -8
- data/spec/SyncRoot_spec.rb +46 -20
- data/spec/SyncUpDown_spec.rb +437 -201
- data/spec/Verbosing_spec.rb +12 -4
- data/spec/{Solution-Cors_spec.rb → Webservice-Cors_spec.rb} +23 -20
- data/spec/{Solution-Endpoint_spec.rb → Webservice-Endpoint_spec.rb} +43 -41
- data/spec/{Solution-File_spec.rb → Webservice-File_spec.rb} +44 -33
- data/spec/Webservice-Setting_spec.rb +89 -0
- data/spec/_workspace.rb +4 -4
- data/spec/cmd_business_spec.rb +9 -4
- data/spec/cmd_common.rb +44 -1
- data/spec/cmd_content_spec.rb +43 -17
- data/spec/cmd_cors_spec.rb +4 -4
- data/spec/cmd_device_spec.rb +61 -16
- data/spec/cmd_domain_spec.rb +29 -6
- data/spec/cmd_init_spec.rb +281 -126
- data/spec/cmd_keystore_spec.rb +3 -3
- data/spec/cmd_link_spec.rb +98 -0
- data/spec/cmd_password_spec.rb +1 -1
- data/spec/cmd_setting_application_spec.rb +260 -0
- data/spec/cmd_setting_product_spec.rb +220 -0
- data/spec/cmd_status_spec.rb +223 -114
- data/spec/cmd_syncdown_spec.rb +115 -35
- data/spec/cmd_syncup_spec.rb +68 -15
- data/spec/cmd_usage_spec.rb +35 -8
- data/spec/fixtures/dumped_config +6 -4
- data/spec/fixtures/gateway_resource_files/resources.notyaml +12 -0
- data/spec/fixtures/gateway_resource_files/resources.yaml +13 -0
- data/spec/fixtures/gateway_resource_files/resources_invalid.yaml +13 -0
- data/spec/fixtures/mrmuranorc_deleted_bob +0 -2
- data/spec/fixtures/product_spec_files/lightbulb.yaml +20 -13
- data/spec/fixtures/{syncable_content → syncable_conflict}/services/devdata.lua +1 -1
- data/spec/fixtures/{syncable_content → syncable_conflict}/services/timers.lua +0 -0
- data/spec/spec_helper.rb +5 -0
- metadata +262 -171
- data/bin/mr +0 -8
- data/lib/MrMurano/Product-1P-Device.rb +0 -145
- data/lib/MrMurano/Product-Resources.rb +0 -205
- data/lib/MrMurano/Product.rb +0 -358
- data/lib/MrMurano/Solution-Cors.rb +0 -47
- data/lib/MrMurano/Solution-Endpoint.rb +0 -191
- data/lib/MrMurano/Solution-File.rb +0 -166
- data/lib/MrMurano/commands/assign.rb +0 -57
- data/lib/MrMurano/commands/businessList.rb +0 -45
- data/lib/MrMurano/commands/product.rb +0 -14
- data/lib/MrMurano/commands/productCreate.rb +0 -39
- data/lib/MrMurano/commands/productDelete.rb +0 -33
- data/lib/MrMurano/commands/productDevice.rb +0 -87
- data/lib/MrMurano/commands/productDeviceIdCmds.rb +0 -89
- data/lib/MrMurano/commands/productList.rb +0 -45
- data/lib/MrMurano/commands/productWrite.rb +0 -27
- data/lib/MrMurano/commands/solutionCreate.rb +0 -41
- data/lib/MrMurano/commands/solutionDelete.rb +0 -34
- data/lib/MrMurano/commands/solutionList.rb +0 -45
- data/spec/ProductBase_spec.rb +0 -113
- data/spec/ProductContent_spec.rb +0 -162
- data/spec/ProductResources_spec.rb +0 -329
- data/spec/Product_1P_Device_spec.rb +0 -202
- data/spec/Product_1P_RPC_spec.rb +0 -175
- data/spec/Product_spec.rb +0 -153
- data/spec/Solution-ServiceDevice_spec.rb +0 -176
- data/spec/cmd_assign_spec.rb +0 -51
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f5b5bb74dbabc6127f0fe9e054b41b218b64964d
|
4
|
+
data.tar.gz: c2e188788986effcfd60c676d3950df224ee6935
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e309c8cb7301754d9e58b8ad007a1d3bef23167dbf9370002a9d76874539da9028199ac004f80b84afa2ccb61026836bdc3368579d4e0a2f1d411fe20a7ab087
|
7
|
+
data.tar.gz: 059dcf12cc97380afa732316ba860dc96f2c814cb85fd30533ecf3d31c781d05cfce8a80b7b6324ffa65272721b0fe0fa01c683aa4771c9d690526054923cb06
|
data/.agignore
CHANGED
data/.gitignore
CHANGED
@@ -7,7 +7,6 @@ cookies
|
|
7
7
|
.jiramulerc
|
8
8
|
.yardoc/
|
9
9
|
tags
|
10
|
-
mr.exe
|
11
10
|
|
12
11
|
xcuserdata
|
13
12
|
Pods/
|
@@ -30,3 +29,21 @@ test.*
|
|
30
29
|
.Trashes
|
31
30
|
|
32
31
|
Gemfile.lock
|
32
|
+
|
33
|
+
# For "Debugging in Ruby 2"
|
34
|
+
# https://github.com/deivid-rodriguez/byebug
|
35
|
+
.byebug_history
|
36
|
+
|
37
|
+
# For `chruby` and `rvm` Ruby versioning
|
38
|
+
# .ruby-version
|
39
|
+
.ruby-version
|
40
|
+
.bundle/
|
41
|
+
|
42
|
+
# For `rake test` using a test .murano config
|
43
|
+
.murano.test
|
44
|
+
|
45
|
+
.rake_tasks~
|
46
|
+
|
47
|
+
# Output from .trustme.vim and .trustme.sh
|
48
|
+
.rake_build.out
|
49
|
+
|
data/.rubocop.yml
ADDED
@@ -0,0 +1,222 @@
|
|
1
|
+
# Last Modified: 2017.08.17 /coding: utf-8
|
2
|
+
# Copyright © 2016-2017 Exosite LLC.
|
3
|
+
# License: MIT. See LICENSE.txt.
|
4
|
+
# vim:tw=0:ts=2:sw=2:et:ai
|
5
|
+
|
6
|
+
# USAGE:
|
7
|
+
#
|
8
|
+
# cd /exo/clients/exosite/MuranoCLI
|
9
|
+
# rubocop -D -c .rubocop.yml
|
10
|
+
|
11
|
+
# "Incorrect indentation detected (column X instead of Y)."
|
12
|
+
Layout/CommentIndentation:
|
13
|
+
Enabled: false
|
14
|
+
|
15
|
+
# "Missing space after #."
|
16
|
+
Layout/LeadingCommentSpace:
|
17
|
+
Enabled: false
|
18
|
+
|
19
|
+
# "Surrounding space missing in default value assignment."
|
20
|
+
Layout/SpaceAroundEqualsInParameterDefault:
|
21
|
+
EnforcedStyle: no_space
|
22
|
+
|
23
|
+
# "1 trailing blank lines detected."
|
24
|
+
Layout/TrailingBlankLines:
|
25
|
+
Enabled: false
|
26
|
+
|
27
|
+
# "Script file murano doesn't have execute permission."
|
28
|
+
Lint/ScriptPermission:
|
29
|
+
Exclude:
|
30
|
+
- 'bin/murano'
|
31
|
+
|
32
|
+
# "Assignment Branch Condition size for XXX is too high."
|
33
|
+
# http://wiki.c2.com/?AbcMetric
|
34
|
+
Metrics/AbcSize:
|
35
|
+
Enabled: false
|
36
|
+
|
37
|
+
# Configuration parameters: CountComments, ExcludedMethods.
|
38
|
+
Metrics/BlockLength:
|
39
|
+
Enabled: false
|
40
|
+
#Max: 500
|
41
|
+
|
42
|
+
# "Avoid more than 3 levels of block nesting."
|
43
|
+
Metrics/BlockNesting:
|
44
|
+
Enabled: false
|
45
|
+
|
46
|
+
# "Class has too many lines."
|
47
|
+
Metrics/ClassLength:
|
48
|
+
Enabled: false
|
49
|
+
|
50
|
+
# "Cyclomatic complexity for XXX is too high."
|
51
|
+
Metrics/CyclomaticComplexity:
|
52
|
+
Enabled: false
|
53
|
+
|
54
|
+
Metrics/MethodLength:
|
55
|
+
Enabled: false
|
56
|
+
|
57
|
+
# "Module has too many lines."
|
58
|
+
Metrics/ModuleLength:
|
59
|
+
Enabled: false
|
60
|
+
|
61
|
+
# "Avoid parameter lists longer than 5 parameters."
|
62
|
+
Metrics/ParameterLists:
|
63
|
+
Enabled: false
|
64
|
+
|
65
|
+
# Perceived complexity for XXXX is too high."
|
66
|
+
Metrics/PerceivedComplexity:
|
67
|
+
Enabled: false
|
68
|
+
|
69
|
+
# Configuration parameters: AllowHeredoc, AllowURI, URISchemes, IgnoreCopDirectives, IgnoredPatterns.
|
70
|
+
# URISchemes: http, https
|
71
|
+
Metrics/LineLength:
|
72
|
+
Enabled: false
|
73
|
+
|
74
|
+
# "Use only ascii symbols in comments."
|
75
|
+
Style/AsciiComments:
|
76
|
+
Enabled: false
|
77
|
+
|
78
|
+
# "Missing top-level class documentation comment."
|
79
|
+
Style/Documentation:
|
80
|
+
Enabled: false
|
81
|
+
|
82
|
+
# "Use the return of the conditional for variable assignment and comparison."
|
83
|
+
# http://www.rubydoc.info/github/bbatsov/RuboCop/RuboCop/Cop/Style/ConditionalAssignment
|
84
|
+
Style/ConditionalAssignment:
|
85
|
+
EnforcedStyle: assign_inside_condition
|
86
|
+
|
87
|
+
# "Put empty method definitions on a single line."
|
88
|
+
# You can do, e.g.,
|
89
|
+
# def my_method(some_var) end
|
90
|
+
# except you cannot do
|
91
|
+
# def my_method end
|
92
|
+
# but instead have to do
|
93
|
+
# def my_method() end
|
94
|
+
# which then breaks another rule, Style/DefWithParentheses!
|
95
|
+
Style/EmptyMethod:
|
96
|
+
Enabled: false
|
97
|
+
|
98
|
+
# "The name of this source file (Xxxxxxx.rb) should use snake_case."
|
99
|
+
Style/FileName:
|
100
|
+
Exclude:
|
101
|
+
- 'Gemfile'
|
102
|
+
- 'MuranoCLI.gemspec'
|
103
|
+
- 'Rakefile'
|
104
|
+
- 'lib/MrMurano.rb'
|
105
|
+
- 'lib/MrMurano/Account.rb'
|
106
|
+
- 'lib/MrMurano/Business.rb'
|
107
|
+
- 'lib/MrMurano/Config-Migrate.rb'
|
108
|
+
- 'lib/MrMurano/Config.rb'
|
109
|
+
- 'lib/MrMurano/Content.rb'
|
110
|
+
- 'lib/MrMurano/Gateway.rb'
|
111
|
+
- 'lib/MrMurano/Keystore.rb'
|
112
|
+
- 'lib/MrMurano/Mock.rb'
|
113
|
+
- 'lib/MrMurano/Passwords.rb'
|
114
|
+
- 'lib/MrMurano/ProjectFile.rb'
|
115
|
+
- 'lib/MrMurano/ReCommander.rb'
|
116
|
+
- 'lib/MrMurano/Setting.rb'
|
117
|
+
- 'lib/MrMurano/Solution-ServiceConfig.rb'
|
118
|
+
- 'lib/MrMurano/Solution-Services.rb'
|
119
|
+
- 'lib/MrMurano/Solution-Users.rb'
|
120
|
+
- 'lib/MrMurano/Solution.rb'
|
121
|
+
- 'lib/MrMurano/SolutionId.rb'
|
122
|
+
- 'lib/MrMurano/SubCmdGroupContext.rb'
|
123
|
+
- 'lib/MrMurano/SyncRoot.rb'
|
124
|
+
- 'lib/MrMurano/SyncUpDown.rb'
|
125
|
+
- 'lib/MrMurano/Webservice-Cors.rb'
|
126
|
+
- 'lib/MrMurano/Webservice-Endpoint.rb'
|
127
|
+
- 'lib/MrMurano/Webservice-File.rb'
|
128
|
+
- 'lib/MrMurano/Webservice.rb'
|
129
|
+
|
130
|
+
# FIXME/2017-06-30: We should fix this one... put $cfg in MrMurano class.
|
131
|
+
# "Do not introduce global variables."
|
132
|
+
Style/GlobalVars:
|
133
|
+
Enabled: false
|
134
|
+
|
135
|
+
# "Use remaining.positive? instead of remaining > 0."
|
136
|
+
# However, Numeric.positive? does not exist in Ruby 2 or 2.2.
|
137
|
+
Style/NumericPredicate:
|
138
|
+
Enabled: false
|
139
|
+
|
140
|
+
# "Provide an exception class and message as arguments to raise."
|
141
|
+
Style/RaiseArgs:
|
142
|
+
EnforcedStyle: compact
|
143
|
+
|
144
|
+
# "Don't use parentheses around a literal."
|
145
|
+
# How else do you split long lines, eh? E.g.,
|
146
|
+
# unbelievably_long_variable_name = (
|
147
|
+
# "Some very long sentence about being a very long sentence."
|
148
|
+
# )
|
149
|
+
Style/RedundantParentheses:
|
150
|
+
Enabled: false
|
151
|
+
|
152
|
+
# "Use // around regular expression."
|
153
|
+
# "Use %r around regular expression."
|
154
|
+
#Style/RegexpLiteral:
|
155
|
+
# # If "slashes" or "mixed":
|
156
|
+
# # snake_case = /^[\dA-Z_]+$/
|
157
|
+
# # If "percent_r":
|
158
|
+
# # snake_case = %r{^[\dA-Z_]+$}
|
159
|
+
# #EnforcedStyle: percent_r
|
160
|
+
# EnforcedStyle: slashes
|
161
|
+
|
162
|
+
# "Avoid comma after the last parameter of a method call."
|
163
|
+
# FIXME/2017-06-30: Is this okay?
|
164
|
+
Style/TrailingCommaInArguments:
|
165
|
+
Enabled: false
|
166
|
+
|
167
|
+
# "Avoid comma after the last item of a hash."
|
168
|
+
Style/TrailingCommaInLiteral:
|
169
|
+
# Rather than disable, tweak for multiline lists, so Rubocop will
|
170
|
+
# still tell you not to use trailing comma in single-line list.
|
171
|
+
EnforcedStyleForMultiline: "consistent_comma"
|
172
|
+
|
173
|
+
# "Use safe navigation (&.) instead of checking if an object exists before
|
174
|
+
# calling the method."
|
175
|
+
#
|
176
|
+
# - "The Safe Navigation Operator (&.) in Ruby"
|
177
|
+
# http://mitrev.net/ruby/2015/11/13/the-operator-in-ruby/
|
178
|
+
#
|
179
|
+
# The safe nav op was only added in Ruby 2.3.0, and we support 2.0.
|
180
|
+
Style/SafeNavigation:
|
181
|
+
Enabled: false
|
182
|
+
|
183
|
+
AllCops:
|
184
|
+
Include:
|
185
|
+
- 'bin/murano'
|
186
|
+
# These are included by default:
|
187
|
+
#- '**/Gemfile'
|
188
|
+
- '**/Rakefile'
|
189
|
+
#- 'MuranoCLI.gemspec'
|
190
|
+
# FIXME/2017-07-25: Finishing linting all the files!
|
191
|
+
# These files have not been linted since Rubocop was adopted.
|
192
|
+
Exclude:
|
193
|
+
# HINT: You can use regexp in this list.
|
194
|
+
#- !ruby/regexp /old_and_unused\.rb$/
|
195
|
+
#
|
196
|
+
# 2017-07-25: It's probably not worth our time to lint the spec tests.
|
197
|
+
# 2017-07-31: 7735 offenses in the Spec tests -- not worth it to fix!!
|
198
|
+
- 'spec/**/*'
|
199
|
+
#
|
200
|
+
# Not sure if the templates are included by default or not, but ignore.
|
201
|
+
- 'lib/MrMurano/commands/completion-bash.erb'
|
202
|
+
- 'lib/MrMurano/commands/completion-zsh.erb'
|
203
|
+
#
|
204
|
+
# 2017-08-16: Ug.
|
205
|
+
- 'lib/MrMurano/optparse.rb'
|
206
|
+
#
|
207
|
+
# FIXME/2017-07-25: Finish linting these files, and delete from this list.
|
208
|
+
# ✗ 2017-07-31: 943 offenses herein these 26 files.
|
209
|
+
# ✓ 2017-08-16: 420 offenses herein these 15 files.
|
210
|
+
- 'lib/MrMurano/Content.rb'
|
211
|
+
- 'lib/MrMurano/Mock.rb'
|
212
|
+
- 'lib/MrMurano/Setting.rb'
|
213
|
+
- 'lib/MrMurano/SubCmdGroupContext.rb'
|
214
|
+
- 'lib/MrMurano/Webservice-Endpoint.rb'
|
215
|
+
- 'lib/MrMurano/Webservice-File.rb'
|
216
|
+
- 'lib/MrMurano/hash.rb'
|
217
|
+
- 'lib/MrMurano/http.rb'
|
218
|
+
- 'lib/MrMurano/makePretty.rb'
|
219
|
+
- 'lib/MrMurano/commands/business.rb'
|
220
|
+
- 'lib/MrMurano/commands/cors.rb'
|
221
|
+
- 'lib/MrMurano/commands/settings.rb'
|
222
|
+
|
data/.trustme.sh
ADDED
@@ -0,0 +1,185 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
# Last Modified: 2017.08.16
|
3
|
+
# vim:tw=0:ts=2:sw=2:et:norl:spell
|
4
|
+
|
5
|
+
# WHAT: A Continuous Integration (CI) script for kicking the build
|
6
|
+
# whenever a ruby file within the project is saved.
|
7
|
+
#
|
8
|
+
# It's Async-safe!
|
9
|
+
|
10
|
+
# USAGE: If you have Vim, check out the Dubsacks Vim plugin:
|
11
|
+
#
|
12
|
+
# https://github.com/landonb/dubs_edit_juice
|
13
|
+
#
|
14
|
+
# which automatically looks for a .trustme.vim above
|
15
|
+
# any file you load into a buffer.
|
16
|
+
#
|
17
|
+
# You can install the plugin or just copy the BufEnter
|
18
|
+
# autocmd that loads for the .trustme.vim file, from:
|
19
|
+
#
|
20
|
+
# plugin/dubs_edit_juice.vim
|
21
|
+
#
|
22
|
+
# Or, if you're not using Vim, wire this shell script
|
23
|
+
# to be called on file save however you are able to
|
24
|
+
# do that.
|
25
|
+
#
|
26
|
+
# Maybe check out inotifywait:
|
27
|
+
#
|
28
|
+
# https://linux.die.net/man/1/inotifywait
|
29
|
+
#
|
30
|
+
# NOTE: On Vim, if you're using the project.vim plugin, you'll need
|
31
|
+
# to add a reference to the script from the directory entry.
|
32
|
+
# Otherwise, when you double-click files in the project window
|
33
|
+
# to open them, the BufEnter event doesn't trigger properly.
|
34
|
+
# E.g.,
|
35
|
+
#
|
36
|
+
# MURANO_CLI=/exo/clients/exosite/MuranoCLI filter=".* *" in=".trustme.vim" {
|
37
|
+
# .agignore
|
38
|
+
# # ...
|
39
|
+
# }
|
40
|
+
#
|
41
|
+
# MONITOR: All script output gets writ to a file. Use a terminal to tail it:
|
42
|
+
#
|
43
|
+
# tail -F .rake_build.out
|
44
|
+
|
45
|
+
# MEH: Need to enable errexit?
|
46
|
+
#set +x
|
47
|
+
|
48
|
+
OUT_FILE=".rake_build.out"
|
49
|
+
|
50
|
+
#local DONE_FILE=".trustme.done"
|
51
|
+
LOCK_DIR=".trustme.lock"
|
52
|
+
PID_FILE="${LOCK_DIR}/.build.pid"
|
53
|
+
LOCK_KILL=".trustme.kill"
|
54
|
+
|
55
|
+
if [[ -f ${HOME}/.fries/lib/ruby_util.sh ]]; then
|
56
|
+
source ${HOME}/.fries/lib/ruby_util.sh
|
57
|
+
else
|
58
|
+
echo 'Missing ruby_util.sh and chruby' >> ${OUT_FILE}
|
59
|
+
exit 1
|
60
|
+
fi
|
61
|
+
chruby 2.3.3
|
62
|
+
|
63
|
+
trap death SIGINT
|
64
|
+
|
65
|
+
function annoucement() {
|
66
|
+
echo >> ${OUT_FILE}
|
67
|
+
echo "###################################################################" >> ${OUT_FILE}
|
68
|
+
echo $1 >> ${OUT_FILE}
|
69
|
+
echo "###################################################################" >> ${OUT_FILE}
|
70
|
+
echo >> ${OUT_FILE}
|
71
|
+
}
|
72
|
+
|
73
|
+
function death() {
|
74
|
+
echo "death!" >> ${OUT_FILE}
|
75
|
+
annoucement "DEATH! ☠☠☠"
|
76
|
+
exit 1
|
77
|
+
}
|
78
|
+
|
79
|
+
function lock_kill_or_die() {
|
80
|
+
local build_it=false
|
81
|
+
# mkdir is atomic. Isn't that nice.
|
82
|
+
if $(mkdir ${LOCK_DIR} 2> /dev/null); then
|
83
|
+
# The first, or only instance to be running. Run the build.
|
84
|
+
echo "first one here!" >> ${OUT_FILE}
|
85
|
+
elif [[ -d ${LOCK_DIR} ]]; then
|
86
|
+
# There's a build going on. Should we kill it?
|
87
|
+
if $(mkdir ${LOCK_KILL} 2> /dev/null); then
|
88
|
+
if [[ -f ${PID_FILE} ]]; then
|
89
|
+
local build_pid=$(cat ${PID_FILE})
|
90
|
+
if [[ ${build_pid} != '' ]]; then
|
91
|
+
echo "build locked, but not the kill! time for mischiefs" >> ${OUT_FILE}
|
92
|
+
# Yeah! We get to kill a process!
|
93
|
+
annoucement "Killing it!"
|
94
|
+
kill -s SIGINT ${build_pid} &>> ${OUT_FILE}
|
95
|
+
if [[ $? -ne 0 ]]; then
|
96
|
+
echo "Kill failed! on pid ‘${build_pid}’" >> ${OUT_FILE}
|
97
|
+
# So, what happened? Did the build complete?
|
98
|
+
# Should we just move along? Probably...
|
99
|
+
# Get the name of the process. If it still exists, die.
|
100
|
+
if [[ $(ps -p ${build_pid} -o comm=) != '' ]]; then
|
101
|
+
echo "WARNING: but process still exists!"
|
102
|
+
exit
|
103
|
+
fi
|
104
|
+
fi
|
105
|
+
else
|
106
|
+
echo "build locked, but not kill. but no pid? whatever, we'll take it!"
|
107
|
+
fi
|
108
|
+
else
|
109
|
+
echo "build locked, but not kill. but builder has not started, bye" >> ${OUT_FILE}
|
110
|
+
exit
|
111
|
+
fi
|
112
|
+
else
|
113
|
+
echo "all locked, party over, man!" >> ${OUT_FILE}
|
114
|
+
exit
|
115
|
+
fi
|
116
|
+
else
|
117
|
+
echo "WARNING: could not mkdir ‘${LOCK_DIR}’ and it does not exist, later!" >> ${OUT_FILE}
|
118
|
+
exit
|
119
|
+
fi
|
120
|
+
}
|
121
|
+
lock_kill_or_die
|
122
|
+
|
123
|
+
function prepare_to_build() {
|
124
|
+
echo "$$" > ${PID_FILE}
|
125
|
+
[[ -d ${LOCK_KILL} ]] && rmdir ${LOCK_KILL}
|
126
|
+
|
127
|
+
#/bin/rm ${DONE_FILE}
|
128
|
+
#/bin/rm ${OUT_FILE}
|
129
|
+
touch ${OUT_FILE}
|
130
|
+
truncate -s 0 ${OUT_FILE}
|
131
|
+
}
|
132
|
+
prepare_to_build
|
133
|
+
|
134
|
+
time_0=$(date +%s.%N)
|
135
|
+
#echo >> ${OUT_FILE} # Put newline after "tail: .rake_build.out: file truncated"
|
136
|
+
annoucement "WARMING UP"
|
137
|
+
echo "Build started at $(date '+%Y-%m-%d_%H-%M-%S')" >> ${OUT_FILE}
|
138
|
+
echo "cwd: $(pwd)" >> ${OUT_FILE}
|
139
|
+
echo "- ruby -v: $(ruby -v)" >> ${OUT_FILE}
|
140
|
+
echo "- rubocop -v: $(rubocop -v)" >> ${OUT_FILE}
|
141
|
+
#echo "- cmd rubocop: $(command -v rubocop)" >> ${OUT_FILE}
|
142
|
+
|
143
|
+
function build_it() {
|
144
|
+
annoucement "BUILD IT"
|
145
|
+
rake build &>> ${OUT_FILE} && \
|
146
|
+
gem install -i $(ruby -rubygems -e 'puts Gem.dir') \
|
147
|
+
pkg/MuranoCLI-$(ruby -e 'require "/exo/clients/exosite/MuranoCLI/lib/MrMurano/version.rb"; puts MrMurano::VERSION').gem \
|
148
|
+
&>> ${OUT_FILE}
|
149
|
+
}
|
150
|
+
build_it
|
151
|
+
|
152
|
+
function test_concurrency() {
|
153
|
+
for i in $(seq 1 5); do build_it; done
|
154
|
+
}
|
155
|
+
# DEVs: Wanna test CTRL-C more easily by keeping the script alive longer?
|
156
|
+
# Then uncomment this.
|
157
|
+
#test_concurrency
|
158
|
+
|
159
|
+
function lint_it() {
|
160
|
+
annoucement "LINT IT"
|
161
|
+
rubocop -D -c .rubocop.yml &>> ${OUT_FILE}
|
162
|
+
}
|
163
|
+
lint_it
|
164
|
+
|
165
|
+
function rspec_it() {
|
166
|
+
annoucement "RSPEC IT"
|
167
|
+
rake rspec &>> ${OUT_FILE}
|
168
|
+
}
|
169
|
+
# This is probably not the best idea,
|
170
|
+
# especially if your tests use the same
|
171
|
+
# business as you do when developing.
|
172
|
+
#rspec_it
|
173
|
+
|
174
|
+
time_n=$(date +%s.%N)
|
175
|
+
time_elapsed=$(echo "$time_n - $time_0" | bc -l)
|
176
|
+
annoucement "DONE!"
|
177
|
+
echo "Build finished at $(date '+%H:%M:%S') on $(date '+%Y-%m-%d') in $time_elapsed secs." >> ${OUT_FILE}
|
178
|
+
|
179
|
+
#touch ${DONE_FILE}
|
180
|
+
|
181
|
+
trap - SIGINT
|
182
|
+
|
183
|
+
/bin/rm ${PID_FILE}
|
184
|
+
rmdir ${LOCK_DIR}
|
185
|
+
|