dockman 0.1.3

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 (41) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +233 -0
  3. data/.gitlab-ci.yml +40 -0
  4. data/.rspec +3 -0
  5. data/.travis.yml +7 -0
  6. data/CODE_OF_CONDUCT.md +74 -0
  7. data/Gemfile +6 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +43 -0
  10. data/Rakefile +12 -0
  11. data/VERSION +1 -0
  12. data/bin/console +15 -0
  13. data/bin/setup +8 -0
  14. data/dockman.gemspec +54 -0
  15. data/exe/dockman +9 -0
  16. data/lib/dockman/cli/entry.rb +32 -0
  17. data/lib/dockman/config.rb +5 -0
  18. data/lib/dockman/extensions/pathname.rb +21 -0
  19. data/lib/dockman/version.rb +3 -0
  20. data/lib/dockman.rb +18 -0
  21. data/lib/generators/dockman/dockify/setup/USAGE +12 -0
  22. data/lib/generators/dockman/dockify/setup/setup_generator.rb +29 -0
  23. data/lib/generators/dockman/dockify/setup/templates/.keep +0 -0
  24. data/lib/generators/dockman/dockify/skeleton/USAGE +15 -0
  25. data/lib/generators/dockman/dockify/skeleton/skeleton_generator.rb +45 -0
  26. data/lib/generators/dockman/dockify/skeleton/templates/.dockerignore +54 -0
  27. data/lib/generators/dockman/dockify/skeleton/templates/.keep +0 -0
  28. data/lib/generators/dockman/dockify/skeleton/templates/Dockerfile +48 -0
  29. data/lib/generators/dockman/dockify/skeleton/templates/config/database.yml +89 -0
  30. data/lib/generators/dockman/dockify/skeleton/templates/docker-compose.dbs.yml +71 -0
  31. data/lib/generators/dockman/dockify/skeleton/templates/docker-compose.yml +65 -0
  32. data/lib/generators/dockman/dockify/skeleton/templates/docker-sync.yml +7 -0
  33. data/lib/generators/dockman/dockify/skeleton/templates/envrc.erb +27 -0
  34. data/lib/generators/dockman/dockify/skeleton/templates/infra/scripts/create_db_user.sh +10 -0
  35. data/lib/generators/dockman/dockify/skeleton/templates/infra/scripts/init-user-db.sh +9 -0
  36. data/lib/generators/dockman/dockify/skeleton/templates/infra/scripts/start-dev.sh +22 -0
  37. data/lib/generators/dockman/dockify/skeleton/templates/infra/scripts/validate-migrated +7 -0
  38. data/lib/generators/dockman/dockify/skeleton/templates/infra/scripts/wait-for +79 -0
  39. data/lib/generators/dockman/dockify/skeleton/templates/infra/scripts/wait-for-it.sh +178 -0
  40. data/vendor/.keep +0 -0
  41. metadata +296 -0
@@ -0,0 +1,178 @@
1
+ #!/usr/bin/env bash
2
+ # Use this script to test if a given TCP host/port are available
3
+
4
+ WAITFORIT_cmdname=${0##*/}
5
+
6
+ echoerr() { if [[ $WAITFORIT_QUIET -ne 1 ]]; then echo "$@" 1>&2; fi }
7
+
8
+ usage()
9
+ {
10
+ cat << USAGE >&2
11
+ Usage:
12
+ $WAITFORIT_cmdname host:port [-s] [-t timeout] [-- command args]
13
+ -h HOST | --host=HOST Host or IP under test
14
+ -p PORT | --port=PORT TCP port under test
15
+ Alternatively, you specify the host and port as host:port
16
+ -s | --strict Only execute subcommand if the test succeeds
17
+ -q | --quiet Don't output any status messages
18
+ -t TIMEOUT | --timeout=TIMEOUT
19
+ Timeout in seconds, zero for no timeout
20
+ -- COMMAND ARGS Execute command with args after the test finishes
21
+ USAGE
22
+ exit 1
23
+ }
24
+
25
+ wait_for()
26
+ {
27
+ if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
28
+ echoerr "$WAITFORIT_cmdname: waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT"
29
+ else
30
+ echoerr "$WAITFORIT_cmdname: waiting for $WAITFORIT_HOST:$WAITFORIT_PORT without a timeout"
31
+ fi
32
+ WAITFORIT_start_ts=$(date +%s)
33
+ while :
34
+ do
35
+ if [[ $WAITFORIT_ISBUSY -eq 1 ]]; then
36
+ nc -z $WAITFORIT_HOST $WAITFORIT_PORT
37
+ WAITFORIT_result=$?
38
+ else
39
+ (echo > /dev/tcp/$WAITFORIT_HOST/$WAITFORIT_PORT) >/dev/null 2>&1
40
+ WAITFORIT_result=$?
41
+ fi
42
+ if [[ $WAITFORIT_result -eq 0 ]]; then
43
+ WAITFORIT_end_ts=$(date +%s)
44
+ echoerr "$WAITFORIT_cmdname: $WAITFORIT_HOST:$WAITFORIT_PORT is available after $((WAITFORIT_end_ts - WAITFORIT_start_ts)) seconds"
45
+ break
46
+ fi
47
+ sleep 1
48
+ done
49
+ return $WAITFORIT_result
50
+ }
51
+
52
+ wait_for_wrapper()
53
+ {
54
+ # In order to support SIGINT during timeout: http://unix.stackexchange.com/a/57692
55
+ if [[ $WAITFORIT_QUIET -eq 1 ]]; then
56
+ timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --quiet --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &
57
+ else
58
+ timeout $WAITFORIT_BUSYTIMEFLAG $WAITFORIT_TIMEOUT $0 --child --host=$WAITFORIT_HOST --port=$WAITFORIT_PORT --timeout=$WAITFORIT_TIMEOUT &
59
+ fi
60
+ WAITFORIT_PID=$!
61
+ trap "kill -INT -$WAITFORIT_PID" INT
62
+ wait $WAITFORIT_PID
63
+ WAITFORIT_RESULT=$?
64
+ if [[ $WAITFORIT_RESULT -ne 0 ]]; then
65
+ echoerr "$WAITFORIT_cmdname: timeout occurred after waiting $WAITFORIT_TIMEOUT seconds for $WAITFORIT_HOST:$WAITFORIT_PORT"
66
+ fi
67
+ return $WAITFORIT_RESULT
68
+ }
69
+
70
+ # process arguments
71
+ while [[ $# -gt 0 ]]
72
+ do
73
+ case "$1" in
74
+ *:* )
75
+ WAITFORIT_hostport=(${1//:/ })
76
+ WAITFORIT_HOST=${WAITFORIT_hostport[0]}
77
+ WAITFORIT_PORT=${WAITFORIT_hostport[1]}
78
+ shift 1
79
+ ;;
80
+ --child)
81
+ WAITFORIT_CHILD=1
82
+ shift 1
83
+ ;;
84
+ -q | --quiet)
85
+ WAITFORIT_QUIET=1
86
+ shift 1
87
+ ;;
88
+ -s | --strict)
89
+ WAITFORIT_STRICT=1
90
+ shift 1
91
+ ;;
92
+ -h)
93
+ WAITFORIT_HOST="$2"
94
+ if [[ $WAITFORIT_HOST == "" ]]; then break; fi
95
+ shift 2
96
+ ;;
97
+ --host=*)
98
+ WAITFORIT_HOST="${1#*=}"
99
+ shift 1
100
+ ;;
101
+ -p)
102
+ WAITFORIT_PORT="$2"
103
+ if [[ $WAITFORIT_PORT == "" ]]; then break; fi
104
+ shift 2
105
+ ;;
106
+ --port=*)
107
+ WAITFORIT_PORT="${1#*=}"
108
+ shift 1
109
+ ;;
110
+ -t)
111
+ WAITFORIT_TIMEOUT="$2"
112
+ if [[ $WAITFORIT_TIMEOUT == "" ]]; then break; fi
113
+ shift 2
114
+ ;;
115
+ --timeout=*)
116
+ WAITFORIT_TIMEOUT="${1#*=}"
117
+ shift 1
118
+ ;;
119
+ --)
120
+ shift
121
+ WAITFORIT_CLI=("$@")
122
+ break
123
+ ;;
124
+ --help)
125
+ usage
126
+ ;;
127
+ *)
128
+ echoerr "Unknown argument: $1"
129
+ usage
130
+ ;;
131
+ esac
132
+ done
133
+
134
+ if [[ "$WAITFORIT_HOST" == "" || "$WAITFORIT_PORT" == "" ]]; then
135
+ echoerr "Error: you need to provide a host and port to test."
136
+ usage
137
+ fi
138
+
139
+ WAITFORIT_TIMEOUT=${WAITFORIT_TIMEOUT:-15}
140
+ WAITFORIT_STRICT=${WAITFORIT_STRICT:-0}
141
+ WAITFORIT_CHILD=${WAITFORIT_CHILD:-0}
142
+ WAITFORIT_QUIET=${WAITFORIT_QUIET:-0}
143
+
144
+ # check to see if timeout is from busybox?
145
+ WAITFORIT_TIMEOUT_PATH=$(type -p timeout)
146
+ WAITFORIT_TIMEOUT_PATH=$(realpath $WAITFORIT_TIMEOUT_PATH 2>/dev/null || readlink -f $WAITFORIT_TIMEOUT_PATH)
147
+ if [[ $WAITFORIT_TIMEOUT_PATH =~ "busybox" ]]; then
148
+ WAITFORIT_ISBUSY=1
149
+ WAITFORIT_BUSYTIMEFLAG="-t"
150
+
151
+ else
152
+ WAITFORIT_ISBUSY=0
153
+ WAITFORIT_BUSYTIMEFLAG=""
154
+ fi
155
+
156
+ if [[ $WAITFORIT_CHILD -gt 0 ]]; then
157
+ wait_for
158
+ WAITFORIT_RESULT=$?
159
+ exit $WAITFORIT_RESULT
160
+ else
161
+ if [[ $WAITFORIT_TIMEOUT -gt 0 ]]; then
162
+ wait_for_wrapper
163
+ WAITFORIT_RESULT=$?
164
+ else
165
+ wait_for
166
+ WAITFORIT_RESULT=$?
167
+ fi
168
+ fi
169
+
170
+ if [[ $WAITFORIT_CLI != "" ]]; then
171
+ if [[ $WAITFORIT_RESULT -ne 0 && $WAITFORIT_STRICT -eq 1 ]]; then
172
+ echoerr "$WAITFORIT_cmdname: strict mode, refusing to execute subprocess"
173
+ exit $WAITFORIT_RESULT
174
+ fi
175
+ exec "${WAITFORIT_CLI[@]}"
176
+ else
177
+ exit $WAITFORIT_RESULT
178
+ fi
data/vendor/.keep ADDED
File without changes
metadata ADDED
@@ -0,0 +1,296 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: dockman
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.3
5
+ platform: ruby
6
+ authors:
7
+ - Petros Papadopoulos
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2018-11-28 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: actionpack
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '4.1'
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '6'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: '4.1'
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '6'
33
+ - !ruby/object:Gem::Dependency
34
+ name: activesupport
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '4.1'
40
+ - - "<"
41
+ - !ruby/object:Gem::Version
42
+ version: '6'
43
+ type: :runtime
44
+ prerelease: false
45
+ version_requirements: !ruby/object:Gem::Requirement
46
+ requirements:
47
+ - - ">="
48
+ - !ruby/object:Gem::Version
49
+ version: '4.1'
50
+ - - "<"
51
+ - !ruby/object:Gem::Version
52
+ version: '6'
53
+ - !ruby/object:Gem::Dependency
54
+ name: thor
55
+ requirement: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - ">="
58
+ - !ruby/object:Gem::Version
59
+ version: '0'
60
+ type: :runtime
61
+ prerelease: false
62
+ version_requirements: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - ">="
65
+ - !ruby/object:Gem::Version
66
+ version: '0'
67
+ - !ruby/object:Gem::Dependency
68
+ name: awesome_print
69
+ requirement: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: 1.8.0
74
+ type: :runtime
75
+ prerelease: false
76
+ version_requirements: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: 1.8.0
81
+ - !ruby/object:Gem::Dependency
82
+ name: anyway_config
83
+ requirement: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: '1.0'
88
+ type: :runtime
89
+ prerelease: false
90
+ version_requirements: !ruby/object:Gem::Requirement
91
+ requirements:
92
+ - - "~>"
93
+ - !ruby/object:Gem::Version
94
+ version: '1.0'
95
+ - !ruby/object:Gem::Dependency
96
+ name: tty-tree
97
+ requirement: !ruby/object:Gem::Requirement
98
+ requirements:
99
+ - - ">="
100
+ - !ruby/object:Gem::Version
101
+ version: '0'
102
+ type: :runtime
103
+ prerelease: false
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ requirements:
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ - !ruby/object:Gem::Dependency
110
+ name: tty-table
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ type: :runtime
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ - !ruby/object:Gem::Dependency
124
+ name: docker-compose
125
+ requirement: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '0'
130
+ type: :runtime
131
+ prerelease: false
132
+ version_requirements: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ - !ruby/object:Gem::Dependency
138
+ name: rake
139
+ requirement: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - "~>"
142
+ - !ruby/object:Gem::Version
143
+ version: '12.3'
144
+ type: :development
145
+ prerelease: false
146
+ version_requirements: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - "~>"
149
+ - !ruby/object:Gem::Version
150
+ version: '12.3'
151
+ - !ruby/object:Gem::Dependency
152
+ name: rubygems-tasks
153
+ requirement: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: '0.2'
158
+ type: :development
159
+ prerelease: false
160
+ version_requirements: !ruby/object:Gem::Requirement
161
+ requirements:
162
+ - - "~>"
163
+ - !ruby/object:Gem::Version
164
+ version: '0.2'
165
+ - !ruby/object:Gem::Dependency
166
+ name: bundler
167
+ requirement: !ruby/object:Gem::Requirement
168
+ requirements:
169
+ - - "~>"
170
+ - !ruby/object:Gem::Version
171
+ version: '1.17'
172
+ type: :development
173
+ prerelease: false
174
+ version_requirements: !ruby/object:Gem::Requirement
175
+ requirements:
176
+ - - "~>"
177
+ - !ruby/object:Gem::Version
178
+ version: '1.17'
179
+ - !ruby/object:Gem::Dependency
180
+ name: version
181
+ requirement: !ruby/object:Gem::Requirement
182
+ requirements:
183
+ - - ">="
184
+ - !ruby/object:Gem::Version
185
+ version: '0'
186
+ type: :development
187
+ prerelease: false
188
+ version_requirements: !ruby/object:Gem::Requirement
189
+ requirements:
190
+ - - ">="
191
+ - !ruby/object:Gem::Version
192
+ version: '0'
193
+ - !ruby/object:Gem::Dependency
194
+ name: rspec
195
+ requirement: !ruby/object:Gem::Requirement
196
+ requirements:
197
+ - - "~>"
198
+ - !ruby/object:Gem::Version
199
+ version: '3.5'
200
+ type: :development
201
+ prerelease: false
202
+ version_requirements: !ruby/object:Gem::Requirement
203
+ requirements:
204
+ - - "~>"
205
+ - !ruby/object:Gem::Version
206
+ version: '3.5'
207
+ - !ruby/object:Gem::Dependency
208
+ name: pry
209
+ requirement: !ruby/object:Gem::Requirement
210
+ requirements:
211
+ - - ">="
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ requirements:
218
+ - - ">="
219
+ - !ruby/object:Gem::Version
220
+ version: '0'
221
+ description: Dockman reads partial docker-compose configurations and concatenates
222
+ them in a single master file.
223
+ email:
224
+ - petros@rolling.space
225
+ executables:
226
+ - dockman
227
+ extensions: []
228
+ extra_rdoc_files: []
229
+ files:
230
+ - ".gitignore"
231
+ - ".gitlab-ci.yml"
232
+ - ".rspec"
233
+ - ".travis.yml"
234
+ - CODE_OF_CONDUCT.md
235
+ - Gemfile
236
+ - LICENSE.txt
237
+ - README.md
238
+ - Rakefile
239
+ - VERSION
240
+ - bin/console
241
+ - bin/setup
242
+ - dockman.gemspec
243
+ - exe/dockman
244
+ - lib/dockman.rb
245
+ - lib/dockman/cli/entry.rb
246
+ - lib/dockman/config.rb
247
+ - lib/dockman/extensions/pathname.rb
248
+ - lib/dockman/version.rb
249
+ - lib/generators/dockman/dockify/setup/USAGE
250
+ - lib/generators/dockman/dockify/setup/setup_generator.rb
251
+ - lib/generators/dockman/dockify/setup/templates/.keep
252
+ - lib/generators/dockman/dockify/skeleton/USAGE
253
+ - lib/generators/dockman/dockify/skeleton/skeleton_generator.rb
254
+ - lib/generators/dockman/dockify/skeleton/templates/.dockerignore
255
+ - lib/generators/dockman/dockify/skeleton/templates/.keep
256
+ - lib/generators/dockman/dockify/skeleton/templates/Dockerfile
257
+ - lib/generators/dockman/dockify/skeleton/templates/config/database.yml
258
+ - lib/generators/dockman/dockify/skeleton/templates/docker-compose.dbs.yml
259
+ - lib/generators/dockman/dockify/skeleton/templates/docker-compose.yml
260
+ - lib/generators/dockman/dockify/skeleton/templates/docker-sync.yml
261
+ - lib/generators/dockman/dockify/skeleton/templates/envrc.erb
262
+ - lib/generators/dockman/dockify/skeleton/templates/infra/scripts/create_db_user.sh
263
+ - lib/generators/dockman/dockify/skeleton/templates/infra/scripts/init-user-db.sh
264
+ - lib/generators/dockman/dockify/skeleton/templates/infra/scripts/start-dev.sh
265
+ - lib/generators/dockman/dockify/skeleton/templates/infra/scripts/validate-migrated
266
+ - lib/generators/dockman/dockify/skeleton/templates/infra/scripts/wait-for
267
+ - lib/generators/dockman/dockify/skeleton/templates/infra/scripts/wait-for-it.sh
268
+ - vendor/.keep
269
+ homepage: https://gitlab.com/petrosp/dockman
270
+ licenses:
271
+ - MIT
272
+ metadata:
273
+ homepage_uri: https://gitlab.com/petrosp/dockman
274
+ source_code_uri: https://gitlab.com/petrosp/dockman
275
+ changelog_uri: https://gitlab.com/petrosp/dockman
276
+ post_install_message:
277
+ rdoc_options: []
278
+ require_paths:
279
+ - lib
280
+ required_ruby_version: !ruby/object:Gem::Requirement
281
+ requirements:
282
+ - - ">="
283
+ - !ruby/object:Gem::Version
284
+ version: '0'
285
+ required_rubygems_version: !ruby/object:Gem::Requirement
286
+ requirements:
287
+ - - ">="
288
+ - !ruby/object:Gem::Version
289
+ version: '0'
290
+ requirements: []
291
+ rubyforge_project:
292
+ rubygems_version: 2.7.7
293
+ signing_key:
294
+ specification_version: 4
295
+ summary: Dockman manages docker-compose files for your server needs
296
+ test_files: []