MuranoCLI 3.0.7 → 3.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/.ignore +1 -1
- data/.rubocop.yml +10 -5
- data/.trustme.sh +272 -106
- data/.trustme.vim +20 -1
- data/Gemfile +7 -5
- data/LICENSE.txt +14 -15
- data/MuranoCLI.gemspec +7 -5
- data/Rakefile +5 -5
- data/bin/murano +4 -4
- data/lib/MrMurano/Account.rb +13 -8
- data/lib/MrMurano/Business.rb +6 -7
- data/lib/MrMurano/Commander-Entry.rb +5 -5
- data/lib/MrMurano/Config-Migrate.rb +4 -4
- data/lib/MrMurano/Config.rb +27 -6
- data/lib/MrMurano/Content.rb +5 -5
- data/lib/MrMurano/Exchange-Element.rb +4 -4
- data/lib/MrMurano/Exchange.rb +4 -4
- data/lib/MrMurano/Gateway.rb +22 -11
- data/lib/MrMurano/Keystore.rb +4 -4
- data/lib/MrMurano/Logs.rb +87 -0
- data/lib/MrMurano/Mock.rb +5 -4
- data/lib/MrMurano/Passwords.rb +4 -5
- data/lib/MrMurano/ProjectFile.rb +4 -4
- data/lib/MrMurano/ReCommander.rb +4 -4
- data/lib/MrMurano/Setting.rb +5 -5
- data/lib/MrMurano/Settings-HttpService.rb +9 -6
- data/lib/MrMurano/Solution-ServiceConfig.rb +5 -5
- data/lib/MrMurano/Solution-Services.rb +76 -50
- data/lib/MrMurano/Solution-Users.rb +5 -4
- data/lib/MrMurano/Solution.rb +6 -6
- data/lib/MrMurano/SolutionId.rb +4 -4
- data/lib/MrMurano/SubCmdGroupContext.rb +4 -4
- data/lib/MrMurano/SyncAllowed.rb +4 -4
- data/lib/MrMurano/SyncRoot.rb +5 -5
- data/lib/MrMurano/SyncUpDown-Core.rb +515 -0
- data/lib/MrMurano/SyncUpDown-Item.rb +159 -0
- data/lib/MrMurano/SyncUpDown.rb +120 -688
- data/lib/MrMurano/Webservice-Cors.rb +4 -4
- data/lib/MrMurano/Webservice-Endpoint.rb +9 -6
- data/lib/MrMurano/Webservice-File.rb +5 -4
- data/lib/MrMurano/Webservice.rb +5 -5
- data/lib/MrMurano/commands/business.rb +4 -4
- data/lib/MrMurano/commands/completion.rb +6 -6
- data/lib/MrMurano/commands/config.rb +7 -5
- data/lib/MrMurano/commands/content.rb +5 -4
- data/lib/MrMurano/commands/cors.rb +4 -4
- data/lib/MrMurano/commands/devices.rb +6 -6
- data/lib/MrMurano/commands/domain.rb +4 -4
- data/lib/MrMurano/commands/exchange.rb +4 -4
- data/lib/MrMurano/commands/gb.rb +4 -4
- data/lib/MrMurano/commands/globals.rb +12 -4
- data/lib/MrMurano/commands/init.rb +5 -4
- data/lib/MrMurano/commands/keystore.rb +4 -4
- data/lib/MrMurano/commands/link.rb +4 -4
- data/lib/MrMurano/commands/login.rb +4 -4
- data/lib/MrMurano/commands/logs.rb +229 -76
- data/lib/MrMurano/commands/mock.rb +4 -4
- data/lib/MrMurano/commands/password.rb +4 -4
- data/lib/MrMurano/commands/postgresql.rb +4 -4
- data/lib/MrMurano/commands/settings.rb +4 -4
- data/lib/MrMurano/commands/show.rb +4 -4
- data/lib/MrMurano/commands/solution.rb +4 -4
- data/lib/MrMurano/commands/solution_picker.rb +4 -4
- data/lib/MrMurano/commands/status.rb +12 -4
- data/lib/MrMurano/commands/sync.rb +4 -4
- data/lib/MrMurano/commands/timeseries.rb +4 -4
- data/lib/MrMurano/commands/tsdb.rb +6 -7
- data/lib/MrMurano/commands/usage.rb +4 -4
- data/lib/MrMurano/commands.rb +4 -4
- data/lib/MrMurano/hash.rb +5 -5
- data/lib/MrMurano/http.rb +26 -22
- data/lib/MrMurano/makePretty.rb +194 -10
- data/lib/MrMurano/optparse.rb +1 -1
- data/lib/MrMurano/orderedhash.rb +1 -1
- data/lib/MrMurano/progress.rb +4 -4
- data/lib/MrMurano/verbosing.rb +6 -6
- data/lib/MrMurano/version.rb +5 -5
- data/lib/MrMurano.rb +7 -4
- data/spec/Account-Passwords_spec.rb +4 -4
- data/spec/Account_spec.rb +4 -4
- data/spec/Business_spec.rb +4 -4
- data/spec/ConfigFile_spec.rb +4 -4
- data/spec/ConfigMigrate_spec.rb +5 -4
- data/spec/Config_spec.rb +5 -4
- data/spec/Content_spec.rb +5 -4
- data/spec/GatewayBase_spec.rb +4 -4
- data/spec/GatewayDevice_spec.rb +4 -4
- data/spec/GatewayResource_spec.rb +5 -4
- data/spec/GatewaySettings_spec.rb +4 -4
- data/spec/Http_spec.rb +4 -4
- data/spec/MakePretties_spec.rb +20 -20
- data/spec/Mock_spec.rb +4 -4
- data/spec/ProjectFile_spec.rb +4 -4
- data/spec/Setting_spec.rb +4 -4
- data/spec/Solution-ServiceConfig_spec.rb +4 -4
- data/spec/Solution-ServiceEventHandler_spec.rb +5 -4
- data/spec/Solution-ServiceModules_spec.rb +5 -4
- data/spec/Solution-UsersRoles_spec.rb +5 -4
- data/spec/Solution_spec.rb +4 -4
- data/spec/SyncRoot_spec.rb +4 -4
- data/spec/SyncUpDown_spec.rb +67 -21
- data/spec/Verbosing_spec.rb +12 -10
- data/spec/Webservice-Cors_spec.rb +4 -4
- data/spec/Webservice-Endpoint_spec.rb +5 -4
- data/spec/Webservice-File_spec.rb +5 -4
- data/spec/Webservice-Setting_spec.rb +4 -4
- data/spec/_workspace.rb +4 -4
- data/spec/cmd_business_spec.rb +4 -5
- data/spec/cmd_common.rb +51 -20
- data/spec/cmd_config_spec.rb +4 -5
- data/spec/cmd_content_spec.rb +4 -5
- data/spec/cmd_cors_spec.rb +4 -5
- data/spec/cmd_device_spec.rb +5 -6
- data/spec/cmd_domain_spec.rb +4 -5
- data/spec/cmd_exchange_spec.rb +4 -5
- data/spec/cmd_help_spec.rb +4 -5
- data/spec/cmd_init_spec.rb +16 -35
- data/spec/cmd_keystore_spec.rb +4 -5
- data/spec/cmd_link_spec.rb +11 -12
- data/spec/cmd_logs_spec.rb +162 -0
- data/spec/cmd_password_spec.rb +4 -5
- data/spec/cmd_setting_application_spec.rb +4 -5
- data/spec/cmd_setting_product_spec.rb +4 -5
- data/spec/cmd_status_spec.rb +44 -81
- data/spec/cmd_syncdown_application_spec.rb +7 -10
- data/spec/cmd_syncdown_both_spec.rb +10 -25
- data/spec/cmd_syncup_spec.rb +31 -37
- data/spec/cmd_usage_spec.rb +4 -5
- data/spec/fixtures/dumped_config +1 -0
- data/spec/fixtures/websocket/logs_blather.rb +27 -0
- data/spec/fixtures/websocket/logs_faker.rb +153 -0
- data/spec/fixtures/websocket/simple_connection.rb +45 -0
- data/spec/fixtures/websocket/simple_options.rb +77 -0
- data/spec/fixtures/websocket/simple_server.rb +69 -0
- data/spec/fixtures/websocket/wss-echo.rb +48 -0
- data/spec/fixtures/websocket/wss-fake-logs.rb +20 -0
- metadata +55 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3724b5391071776bfe44190b14ad244788ff94b7
|
4
|
+
data.tar.gz: f7a7825838b2143194871519fd109b00701ac361
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e92ac9179d3a3444d9a8a283ab94f85e576d88e5bcae6f7b947d2401b588bb8fd4ca67cd7d31817a7cdadec1488aefc6ae0b966afe45aaba944a611571f8b8d2
|
7
|
+
data.tar.gz: 9fba7a0956161da7105417580bd9aa79c0372b61e3883318a184dd8a17ea01aeafc4e9c2f89e299cc4cf1f68b9c92ca89c1fd8013380a458a9e9c45dd1ee92bd
|
data/.gitignore
CHANGED
data/.ignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -1,7 +1,8 @@
|
|
1
|
-
#
|
2
|
-
#
|
3
|
-
#
|
4
|
-
#
|
1
|
+
# Copyright © 2016-2017 Exosite LLC. All Rights Reserved
|
2
|
+
# License: PROPRIETARY. See LICENSE.txt.
|
3
|
+
# Unauthorized copying of this file is strictly prohibited.
|
4
|
+
# frozen_string_literal: true
|
5
|
+
# vim:tw=0:ts=2:sw=2:et:ai
|
5
6
|
|
6
7
|
# USAGE:
|
7
8
|
#
|
@@ -110,7 +111,7 @@ Style/EmptyMethod:
|
|
110
111
|
Enabled: false
|
111
112
|
|
112
113
|
# "The name of this source file (Xxxxxxx.rb) should use snake_case."
|
113
|
-
|
114
|
+
Naming/FileName:
|
114
115
|
Exclude:
|
115
116
|
- 'Gemfile'
|
116
117
|
- 'MuranoCLI.gemspec'
|
@@ -127,11 +128,13 @@ Style/FileName:
|
|
127
128
|
- 'lib/MrMurano/Exchange-Element.rb'
|
128
129
|
- 'lib/MrMurano/Gateway.rb'
|
129
130
|
- 'lib/MrMurano/Keystore.rb'
|
131
|
+
- 'lib/MrMurano/Logs.rb'
|
130
132
|
- 'lib/MrMurano/Mock.rb'
|
131
133
|
- 'lib/MrMurano/Passwords.rb'
|
132
134
|
- 'lib/MrMurano/ProjectFile.rb'
|
133
135
|
- 'lib/MrMurano/ReCommander.rb'
|
134
136
|
- 'lib/MrMurano/Setting.rb'
|
137
|
+
- 'lib/MrMurano/Settings-HttpService.rb'
|
135
138
|
- 'lib/MrMurano/Solution-ServiceConfig.rb'
|
136
139
|
- 'lib/MrMurano/Solution-Services.rb'
|
137
140
|
- 'lib/MrMurano/Solution-Users.rb'
|
@@ -141,6 +144,8 @@ Style/FileName:
|
|
141
144
|
- 'lib/MrMurano/SyncAllowed.rb'
|
142
145
|
- 'lib/MrMurano/SyncRoot.rb'
|
143
146
|
- 'lib/MrMurano/SyncUpDown.rb'
|
147
|
+
- 'lib/MrMurano/SyncUpDown-Core.rb'
|
148
|
+
- 'lib/MrMurano/SyncUpDown-Item.rb'
|
144
149
|
- 'lib/MrMurano/Webservice-Cors.rb'
|
145
150
|
- 'lib/MrMurano/Webservice-Endpoint.rb'
|
146
151
|
- 'lib/MrMurano/Webservice-File.rb'
|
data/.trustme.sh
CHANGED
@@ -1,5 +1,4 @@
|
|
1
1
|
#!/bin/bash
|
2
|
-
# Last Modified: 2017.09.20
|
3
2
|
# vim:tw=0:ts=2:sw=2:et:norl:spell
|
4
3
|
|
5
4
|
# WHAT: A Continuous Integration (CI) script for kicking the build
|
@@ -40,159 +39,326 @@
|
|
40
39
|
#
|
41
40
|
# MONITOR: All script output gets writ to a file. Use a terminal to tail it:
|
42
41
|
#
|
43
|
-
# tail -F .
|
42
|
+
# tail -F .trustme.log
|
44
43
|
|
45
44
|
# MEH: Need to enable errexit?
|
46
45
|
#set +x
|
47
46
|
|
48
|
-
OUT_FILE=".
|
47
|
+
OUT_FILE=".trustme.log"
|
49
48
|
|
50
49
|
#local DONE_FILE=".trustme.done"
|
51
50
|
LOCK_DIR=".trustme.lock"
|
52
|
-
|
53
|
-
|
51
|
+
KILL_DIR=".trustme.kill"
|
52
|
+
PID_FILE=".trustme.pid"
|
53
|
+
# Hrm. The bang might not work without
|
54
|
+
KILL_BIN=".trustme.kill!"
|
54
55
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
56
|
+
# 2017-10-03: Don't build immediately after every save. If you like to
|
57
|
+
# code a little, save, code a little save, repeat, then always running
|
58
|
+
# the builder (a) gets annoying to see constantly churning, if you keep
|
59
|
+
# a terminal on it; and (b) runs the CPU hot, because eslint. So avoid
|
60
|
+
# building too frequently.
|
61
|
+
# LATER/2017-10-03: CLI options for this script? It keeps growing!
|
62
|
+
# For now, hardcode.
|
63
|
+
#BUILD_DELAY_SECS=300
|
64
|
+
#BUILD_DELAY_SECS=90
|
65
|
+
#BUILD_DELAY_SECS=13
|
66
|
+
#BUILD_DELAY_SECS=5
|
67
|
+
#BUILD_DELAY_SECS=1
|
68
|
+
BUILD_DELAY_SECS=0
|
69
|
+
|
70
|
+
# This script is run relative to Vim's working directory, so be deliberate about paths.
|
71
|
+
# ${BASH_SOURCE[0]} should be the absolute path to this script.
|
72
|
+
TRUSTME_DIR=$(dirname -- "${BASH_SOURCE[0]}")
|
73
|
+
OUT_FILE="${TRUSTME_DIR}/${OUT_FILE}"
|
62
74
|
|
63
|
-
|
75
|
+
say() {
|
76
|
+
echo "$1" >> "${OUT_FILE}"
|
77
|
+
}
|
64
78
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
79
|
+
announcement() {
|
80
|
+
say
|
81
|
+
say "###################################################################"
|
82
|
+
say "$1"
|
83
|
+
say "###################################################################"
|
84
|
+
[[ "$2" != '' ]] && say "$2"
|
85
|
+
say
|
71
86
|
}
|
72
87
|
|
73
|
-
|
74
|
-
|
75
|
-
|
88
|
+
death() {
|
89
|
+
if [[ -n ${WAIT_PID} ]]; then
|
90
|
+
say "Sub-killing ‘${WAIT_PID}’"
|
91
|
+
kill -s 9 ${WAIT_PID}
|
92
|
+
fi
|
93
|
+
# The other script waits for us to cleanup the PID file.
|
94
|
+
remove_pid_files
|
95
|
+
# Note that output gets interleaved with the killing process,
|
96
|
+
# so keep this to one line (don't use `announcement`).
|
97
|
+
say "☠☠☠ DEATH! ☠☠☠ ‘$$’ is now dead"
|
76
98
|
exit 1
|
77
99
|
}
|
78
100
|
|
79
|
-
|
101
|
+
# FIXME/2017-09-28: Move this and other common fcns. to home-fries?
|
102
|
+
lock_kill_die() {
|
103
|
+
say "Desperately Seeking Lock on $(date)..."
|
104
|
+
[[ "$1" == true ]] && local AFTER_WAIT=true || local AFTER_WAIT=false
|
80
105
|
local build_it=false
|
81
106
|
# mkdir is atomic. Isn't that nice.
|
82
|
-
if $(mkdir ${LOCK_DIR} 2> /dev/null); then
|
83
|
-
|
84
|
-
|
85
|
-
elif [[ -d ${LOCK_DIR} ]]; then
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
107
|
+
if $(mkdir "${LOCK_DIR}" 2> /dev/null); then
|
108
|
+
say "Scored the lock!"
|
109
|
+
kill_other ${AFTER_WAIT} true
|
110
|
+
elif [[ -d "${LOCK_DIR}" ]]; then
|
111
|
+
if ! ${AFTER_WAIT}; then
|
112
|
+
# There's another script waiting to build, or a build going on.
|
113
|
+
# Kill it if you can.
|
114
|
+
say "Could not lock, but can still kill!"
|
115
|
+
kill_other ${AFTER_WAIT} false
|
116
|
+
else
|
117
|
+
# This script got the lock earlier, released it, and slept, and now
|
118
|
+
# it cannot get the lock...
|
119
|
+
say "i waited for you but you locked me out"
|
120
|
+
exit
|
121
|
+
fi
|
122
|
+
else
|
123
|
+
announcement "WARNING: could not mkdir ‘${LOCK_DIR}’ and it does not exist, later!"
|
124
|
+
exit
|
125
|
+
fi
|
126
|
+
}
|
127
|
+
|
128
|
+
kill_other() {
|
129
|
+
[[ "$1" == true ]] && local AFTER_WAIT=true || local AFTER_WAIT=false
|
130
|
+
[[ "$2" == true ]] && local OUR_LOCK=true || local OUR_LOCK=false
|
131
|
+
if $(mkdir "${KILL_DIR}" 2> /dev/null); then
|
132
|
+
if [[ -f "${PID_FILE}" ]]; then
|
133
|
+
local build_pid=$(cat "${PID_FILE}")
|
134
|
+
if ${AFTER_WAIT}; then
|
135
|
+
if [[ "$$" != "${build_pid}" ]]; then
|
136
|
+
echo "Panic, jerks! The build_pid is not our PID! ${build_pid} != $$"
|
137
|
+
exit
|
138
|
+
fi
|
139
|
+
elif [[ "${build_pid}" != '' ]]; then
|
140
|
+
#say "Locked the kill directory! time for mischiefs"
|
141
|
+
say "Killing ‘${build_pid}’"
|
142
|
+
# Process, your time has come.
|
143
|
+
kill -s SIGUSR1 "${build_pid}" &>> "${OUT_FILE}"
|
144
|
+
if [[ $? -ne 0 ]]; then
|
145
|
+
say "Kill failed! On PID ‘${build_pid}’"
|
146
|
+
# So, what happened? Did the build complete?
|
147
|
+
# Should we just move along? Probably...
|
148
|
+
# Get the name of the process. If it still exists, die.
|
149
|
+
if [[ $(ps -p "${build_pid}" -o comm=) != '' ]]; then
|
150
|
+
say "Said process still exists!"
|
151
|
+
exit
|
104
152
|
fi
|
153
|
+
# The process is a ghost.
|
154
|
+
remove_pid_files
|
105
155
|
else
|
106
|
-
|
156
|
+
# Wait for the other trustme to clean up.
|
157
|
+
WAIT_PATIENCE=10
|
158
|
+
sleep 0.1
|
159
|
+
while [[ -f "${PID_FILE}" ]]; do
|
160
|
+
say "Waiting on PID ${build_pid} to cleanup..."
|
161
|
+
sleep 0.5
|
162
|
+
WAIT_PATIENCE=$((WAIT_PATIENCE - 1))
|
163
|
+
[[ ${WAIT_PATIENCE} -eq 0 ]] && echo "Done waiting!" && exit
|
164
|
+
done
|
107
165
|
fi
|
108
166
|
else
|
109
|
-
|
110
|
-
exit
|
167
|
+
say "WARNING: Empty PID file? Whatever, we'll take it!"
|
111
168
|
fi
|
112
|
-
|
113
|
-
|
169
|
+
elif ! ${OUR_LOCK}; then
|
170
|
+
# This is after waiting, which seems weird, eh.
|
171
|
+
say "Kill okay without build lock, but no PID file. Is someone tinkering?"
|
114
172
|
exit
|
173
|
+
else
|
174
|
+
say "Got the build lock and kill lock, and there's no PID. Fresh powder!"
|
115
175
|
fi
|
116
176
|
else
|
117
|
-
|
177
|
+
say "Someone else has the kill lock. We're boned!"
|
118
178
|
exit
|
119
179
|
fi
|
120
180
|
}
|
121
|
-
lock_kill_or_die
|
122
181
|
|
123
|
-
|
124
|
-
|
125
|
-
|
182
|
+
lock_or_die() {
|
183
|
+
lock_kill_die false
|
184
|
+
}
|
185
|
+
|
186
|
+
lock_kill_or_die() {
|
187
|
+
lock_kill_die true
|
188
|
+
}
|
189
|
+
|
190
|
+
prepare_to_build() {
|
191
|
+
rmdir "${KILL_DIR}"
|
192
|
+
say
|
193
|
+
say "See you on the other side!"
|
194
|
+
touch "${OUT_FILE}"
|
195
|
+
truncate -s 0 "${OUT_FILE}"
|
196
|
+
}
|
197
|
+
|
198
|
+
init_it() {
|
199
|
+
if [[ -f ${HOME}/.fries/lib/ruby_util.sh ]]; then
|
200
|
+
source ${HOME}/.fries/lib/ruby_util.sh
|
201
|
+
else
|
202
|
+
echo 'Missing ruby_util.sh and chruby' >> ${OUT_FILE}
|
203
|
+
exit 1
|
204
|
+
fi
|
205
|
+
chruby 2.3.3
|
206
|
+
}
|
126
207
|
|
127
|
-
|
128
|
-
|
129
|
-
touch ${OUT_FILE}
|
130
|
-
truncate -s 0 ${OUT_FILE}
|
208
|
+
lang_it() {
|
209
|
+
announcement "LANG IT"
|
131
210
|
}
|
132
|
-
prepare_to_build
|
133
211
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
echo "
|
138
|
-
echo "
|
139
|
-
echo "-
|
140
|
-
echo "- rubocop
|
141
|
-
#echo "- cmd rubocop: $(command -v rubocop)" >> ${OUT_FILE}
|
212
|
+
build_it() {
|
213
|
+
announcement "BUILD IT"
|
214
|
+
|
215
|
+
echo "cwd: $(pwd)" >> ${OUT_FILE}
|
216
|
+
echo "- ruby -v: $(ruby -v)" >> ${OUT_FILE}
|
217
|
+
echo "- rubocop -v: $(rubocop -v)" >> ${OUT_FILE}
|
218
|
+
#echo "- cmd rubocop: $(command -v rubocop)" >> ${OUT_FILE}
|
142
219
|
|
143
|
-
function build_it() {
|
144
|
-
annoucement "BUILD IT"
|
145
220
|
rake build &>> ${OUT_FILE} && \
|
146
221
|
gem install -i $(ruby -rubygems -e 'puts Gem.dir') \
|
147
222
|
pkg/MuranoCLI-$(ruby -e 'require "/exo/clients/exosite/MuranoCLI/lib/MrMurano/version.rb"; puts MrMurano::VERSION').gem \
|
148
223
|
&>> ${OUT_FILE}
|
149
224
|
}
|
150
|
-
build_it
|
151
225
|
|
152
|
-
|
153
|
-
|
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"
|
226
|
+
lint_it() {
|
227
|
+
announcement "LINT IT"
|
161
228
|
rubocop -D -c .rubocop.yml &>> ${OUT_FILE}
|
162
229
|
}
|
163
|
-
lint_it
|
164
230
|
|
165
|
-
|
166
|
-
|
231
|
+
rspec_it() {
|
232
|
+
announcement "RSPEC IT"
|
167
233
|
rake rspec &>> ${OUT_FILE}
|
168
234
|
}
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
235
|
+
|
236
|
+
ctags_it() {
|
237
|
+
announcement "CTAGS IT"
|
238
|
+
local ctags_out=$( { \
|
239
|
+
ctags -R \
|
240
|
+
--exclude=coverage \
|
241
|
+
--exclude=docs \
|
242
|
+
--exclude=pkg \
|
243
|
+
--exclude=report \
|
244
|
+
--verbose=yes \
|
245
|
+
; \
|
246
|
+
} 2>&1 )
|
247
|
+
if [[ $? -ne 0 ]]; then
|
248
|
+
say
|
249
|
+
say 'ctags FAILED!'
|
250
|
+
say ' '
|
251
|
+
say
|
252
|
+
say "${ctags_out}"
|
253
|
+
say
|
254
|
+
say ' '
|
255
|
+
say
|
256
|
+
fi
|
183
257
|
/bin/ls -la tags >> ${OUT_FILE}
|
184
258
|
}
|
185
|
-
ctags_it
|
186
259
|
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
260
|
+
drop_locks() {
|
261
|
+
rmdir "${LOCK_DIR}" "${KILL_DIR}"
|
262
|
+
}
|
263
|
+
|
264
|
+
remove_pid_files() {
|
265
|
+
/bin/rm "${PID_FILE}"
|
266
|
+
/bin/rm "${KILL_BIN}"
|
267
|
+
}
|
268
|
+
|
269
|
+
main() {
|
270
|
+
# We're called on both save, and on simple buffer enter.
|
271
|
+
if [[ ${DUBS_TRUST_ME_ON_SAVE} != 1 ]]; then
|
272
|
+
# We've got nothing to do on simple buffer enter...
|
273
|
+
announcement "DUBS_TRUST_ME_ON_FILE: ${DUBS_TRUST_ME_ON_FILE}"
|
274
|
+
say "Nothing to do on open"
|
275
|
+
exit 1
|
276
|
+
fi
|
277
|
+
|
278
|
+
trap death SIGUSR1
|
279
|
+
|
280
|
+
say
|
281
|
+
say " 🚷 🐧 🐨 🐫 🐬 🐰 🐳 🐎 "
|
282
|
+
announcement " ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎ ❎"
|
283
|
+
|
284
|
+
init_it
|
285
|
+
|
286
|
+
# Get the lock.
|
287
|
+
lock_or_die
|
288
|
+
|
289
|
+
say "‘$$’ has the lock"
|
290
|
+
echo "$$" > "${PID_FILE}"
|
291
|
+
echo "kill -s SIGUSR1 $$" > "${KILL_BIN}"
|
292
|
+
chmod 755 "${KILL_BIN}"
|
293
|
+
|
294
|
+
# Always build tags.
|
295
|
+
ctags_it
|
296
|
+
|
297
|
+
announcement "WAITING ON BUILD" "Countdown: ${BUILD_DELAY_SECS} secs..."
|
298
|
+
|
299
|
+
# Defer the build!
|
300
|
+
# FIXME/2017-10-03: Riddle me this: is a two-fer rmdir atomic?
|
301
|
+
drop_locks
|
302
|
+
# The trap on SIGUSR1 only fires when this script is active and
|
303
|
+
# not blocked on a subshell. And sleep is it's own command, so we
|
304
|
+
# background it.
|
305
|
+
sleep ${BUILD_DELAY_SECS} &
|
306
|
+
# Fortunately, we can use the Bash wait command, which does not
|
307
|
+
# block signals.
|
308
|
+
# Get the process ID of the last command.
|
309
|
+
# LPID=$!
|
310
|
+
# wait ${LPID}
|
311
|
+
# Or just wait.
|
312
|
+
wait
|
191
313
|
|
192
|
-
|
314
|
+
say "Ready to build..."
|
315
|
+
say
|
193
316
|
|
194
|
-
|
317
|
+
# Get the lock.
|
318
|
+
lock_kill_or_die
|
319
|
+
|
320
|
+
if ${TESTING:-false}; then
|
321
|
+
drop_locks
|
322
|
+
remove_pid_files
|
323
|
+
say "DONE! (ONLY TESTING)"
|
324
|
+
exit
|
325
|
+
fi
|
326
|
+
|
327
|
+
prepare_to_build
|
328
|
+
|
329
|
+
time_0=$(date +%s.%N)
|
330
|
+
#say # Put newline after "tail: .rake_build.out: file truncated"
|
331
|
+
announcement "WARMING UP"
|
332
|
+
say "Build started at $(date '+%Y-%m-%d_%H-%M-%S')"
|
333
|
+
say "cwd: $(pwd)"
|
334
|
+
|
335
|
+
#lang_it
|
336
|
+
|
337
|
+
build_it
|
338
|
+
function test_concurrency() {
|
339
|
+
for i in $(seq 1 5); do build_it; done
|
340
|
+
}
|
341
|
+
# DEVs: Wanna test CTRL-C more easily by keeping the script alive longer?
|
342
|
+
# Then uncomment this.
|
343
|
+
#test_concurrency
|
344
|
+
|
345
|
+
lint_it
|
346
|
+
|
347
|
+
# MEH/2017-12-06: The tests take a number of seconds to run, so skipping.
|
348
|
+
#test_it
|
349
|
+
|
350
|
+
time_n=$(date +%s.%N)
|
351
|
+
time_elapsed=$(echo "$time_n - $time_0" | bc -l)
|
352
|
+
announcement "DONE!"
|
353
|
+
say "Build finished at $(date '+%H:%M:%S') on $(date '+%Y-%m-%d') in ${time_elapsed} secs."
|
354
|
+
|
355
|
+
#touch "${DONE_FILE}"
|
356
|
+
|
357
|
+
trap - SIGUSR1
|
358
|
+
|
359
|
+
remove_pid_files
|
360
|
+
rmdir "${LOCK_DIR}"
|
361
|
+
}
|
195
362
|
|
196
|
-
|
197
|
-
rmdir ${LOCK_DIR}
|
363
|
+
main "$@"
|
198
364
|
|