drydocker 0.1.10 → 0.1.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Gemfile +1 -0
- data/Gemfile.lock +5 -2
- data/README.md +2 -0
- data/VERSION +1 -1
- data/bin/drydocker +20 -3
- data/lib/drydocker.rb +22 -20
- data/spec/spec_helper.rb +3 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e515536ab04252f04c92cadb6b76e99ab0b1a7b3
|
4
|
+
data.tar.gz: dfb2a251084eaa6ebee891b52c1943d06938b08b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 86942d938f939875ab39bb10c506f9818cb2c7971e7b5ead9a90f034aff785fa4e260632a91de548a355c177faa1a0541d334a360b8dbe0ab7cc65bac379084b
|
7
|
+
data.tar.gz: dd27b38e29a2b4539910289155295526d160846d540863c6307fd9c3b0079cb81016595af162be0466781ac6f7b57a90c757959a7e920f7cdc7650c92d93f65b
|
data/Gemfile
CHANGED
@@ -9,6 +9,7 @@ gem 'ptools', '~> 1.3'
|
|
9
9
|
# Add dependencies to develop your gem here.
|
10
10
|
# Include everything needed to run rake, tests, features, etc.
|
11
11
|
group :development do
|
12
|
+
gem 'codeclimate-test-reporter'
|
12
13
|
gem 'shoulda', '~> 3.5'
|
13
14
|
gem 'rdoc', '~> 3.12'
|
14
15
|
gem 'bundler', '~> 1.0'
|
data/Gemfile.lock
CHANGED
@@ -11,6 +11,8 @@ GEM
|
|
11
11
|
builder (3.2.2)
|
12
12
|
celluloid (0.16.0)
|
13
13
|
timers (~> 4.0.0)
|
14
|
+
codeclimate-test-reporter (0.4.6)
|
15
|
+
simplecov (>= 0.7.1, < 1.0.0)
|
14
16
|
descendants_tracker (0.0.4)
|
15
17
|
thread_safe (~> 0.3, >= 0.3.1)
|
16
18
|
diff-lcs (1.2.5)
|
@@ -44,7 +46,7 @@ GEM
|
|
44
46
|
rake
|
45
47
|
rdoc
|
46
48
|
json (1.8.2)
|
47
|
-
jwt (1.2.
|
49
|
+
jwt (1.2.1)
|
48
50
|
listen (2.8.5)
|
49
51
|
celluloid (>= 0.15.2)
|
50
52
|
rb-fsevent (>= 0.9.3)
|
@@ -54,7 +56,7 @@ GEM
|
|
54
56
|
multi_json (1.10.1)
|
55
57
|
multi_xml (0.5.5)
|
56
58
|
multipart-post (2.0.0)
|
57
|
-
nokogiri (1.6.6.
|
59
|
+
nokogiri (1.6.6.2)
|
58
60
|
mini_portile (~> 0.6.0)
|
59
61
|
oauth2 (1.0.0)
|
60
62
|
faraday (>= 0.8, < 0.10)
|
@@ -105,6 +107,7 @@ PLATFORMS
|
|
105
107
|
|
106
108
|
DEPENDENCIES
|
107
109
|
bundler (~> 1.0)
|
110
|
+
codeclimate-test-reporter
|
108
111
|
fuubar (~> 2.0)
|
109
112
|
jeweler (~> 2.0)
|
110
113
|
listen (~> 2.8)
|
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# drydocker
|
2
2
|
|
3
3
|
[](https://app.wercker.com/project/bykey/b00d4339862ef12b880f0022b6d20b2a)
|
4
|
+
[](https://codeclimate.com/github/silarsis/drydocker)
|
5
|
+
[](https://codeclimate.com/github/silarsis/drydocker)
|
4
6
|
|
5
7
|
Drydocker provides a simple wrapper to run tests inside a container every
|
6
8
|
time you make a change to your code. It listens to filesystem changes on your
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.1.
|
1
|
+
0.1.11
|
data/bin/drydocker
CHANGED
@@ -22,6 +22,10 @@ def parse(args)
|
|
22
22
|
options[:name] = name
|
23
23
|
end
|
24
24
|
|
25
|
+
opts.on("-C", "--clean", "clean old container before running") do |clean|
|
26
|
+
options[:clean] = clean
|
27
|
+
end
|
28
|
+
|
25
29
|
opts.on("-c", "--command [COMMAND]",
|
26
30
|
"command to run, default '#{options[:command]}'") do |cmd|
|
27
31
|
options[:command] = cmd
|
@@ -42,9 +46,18 @@ def parse(args)
|
|
42
46
|
options[:path] = path
|
43
47
|
end
|
44
48
|
|
49
|
+
opts.on("-o", "--[no-]once", "run once and exit") do |once|
|
50
|
+
options[:once] = once
|
51
|
+
end
|
52
|
+
|
45
53
|
opts.on("-v", "--[no-]verbose", "verbose output") do |verbose|
|
46
54
|
options[:verbose] = verbose
|
47
55
|
end
|
56
|
+
|
57
|
+
opts.on("--version", "Show version") do
|
58
|
+
puts File.exist?("VERSION") ? File.read("VERSION").strip : ""
|
59
|
+
exit
|
60
|
+
end
|
48
61
|
end
|
49
62
|
opt_parser.parse!(args)
|
50
63
|
options
|
@@ -53,6 +66,10 @@ end
|
|
53
66
|
options = parse(ARGV)
|
54
67
|
config = Drydocker::Config.new(options)
|
55
68
|
monitor = Drydocker::Monitor.new(config)
|
56
|
-
monitor.clean_containers
|
57
|
-
|
58
|
-
|
69
|
+
monitor.clean_containers if options[:clean]
|
70
|
+
if options[:once]
|
71
|
+
monitor.run_or_start
|
72
|
+
else
|
73
|
+
monitor.listen
|
74
|
+
sleep
|
75
|
+
end
|
data/lib/drydocker.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
require
|
4
|
-
require
|
1
|
+
require "listen"
|
2
|
+
require "ptools"
|
3
|
+
require "logger"
|
4
|
+
require "shellwords"
|
5
5
|
|
6
6
|
module Drydocker
|
7
7
|
# Configuration file reader
|
@@ -11,8 +11,8 @@ module Drydocker
|
|
11
11
|
def self.default_config
|
12
12
|
{
|
13
13
|
name: nil,
|
14
|
-
image:
|
15
|
-
command:
|
14
|
+
image: "silarsis/drydocker",
|
15
|
+
command: "rspec spec",
|
16
16
|
entrypoint: nil,
|
17
17
|
path: `pwd`.strip,
|
18
18
|
verbose: false
|
@@ -33,7 +33,7 @@ module Drydocker
|
|
33
33
|
private
|
34
34
|
|
35
35
|
def name_from_image
|
36
|
-
"#{image.gsub(/[\/:]/,
|
36
|
+
"#{image.gsub(/[\/:]/, "-")}-test"
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
@@ -52,24 +52,29 @@ module Drydocker
|
|
52
52
|
run_or_start
|
53
53
|
end
|
54
54
|
listener.start # not blocking
|
55
|
-
config.logger.info(
|
55
|
+
config.logger.info("now listening")
|
56
56
|
end
|
57
57
|
|
58
58
|
def clean_containers
|
59
|
-
fail
|
59
|
+
fail "No docker found" if File.which("docker").nil?
|
60
60
|
return unless system(docker_check_cmd)
|
61
|
-
config.logger.debug(
|
61
|
+
config.logger.debug("cleaning up previous containers")
|
62
62
|
`docker kill #{config.name}`
|
63
63
|
`docker rm #{config.name}`
|
64
64
|
end
|
65
65
|
|
66
|
+
def run_or_start
|
67
|
+
system(docker_check_cmd) ? start : run
|
68
|
+
end
|
69
|
+
|
66
70
|
private
|
67
71
|
|
68
72
|
def docker_run_cmd
|
69
73
|
%W(
|
70
|
-
#{docker_cmd}
|
71
|
-
|
72
|
-
|
74
|
+
#{docker_cmd}
|
75
|
+
#{env_flags} #{name_opt} #{path_opt} #{entrypoint_opt}
|
76
|
+
#{config.image} sh -c #{command}
|
77
|
+
).reject { |x| x == "" }.join(" ")
|
73
78
|
end
|
74
79
|
|
75
80
|
def env_flags
|
@@ -85,7 +90,7 @@ module Drydocker
|
|
85
90
|
end
|
86
91
|
|
87
92
|
def docker_cmd
|
88
|
-
|
93
|
+
"docker run -it -w /app"
|
89
94
|
end
|
90
95
|
|
91
96
|
def name_opt
|
@@ -93,7 +98,8 @@ module Drydocker
|
|
93
98
|
end
|
94
99
|
|
95
100
|
def entrypoint_opt
|
96
|
-
|
101
|
+
return "" if config.entrypoint.nil?
|
102
|
+
"--entrypoint #{config.entrypoint.shellescape}"
|
97
103
|
end
|
98
104
|
|
99
105
|
def path_opt
|
@@ -101,7 +107,7 @@ module Drydocker
|
|
101
107
|
end
|
102
108
|
|
103
109
|
def command
|
104
|
-
config.command.nil? ?
|
110
|
+
config.command.nil? ? "" : config.command
|
105
111
|
end
|
106
112
|
|
107
113
|
def run
|
@@ -113,9 +119,5 @@ module Drydocker
|
|
113
119
|
config.logger.debug(docker_start_cmd)
|
114
120
|
system(docker_start_cmd)
|
115
121
|
end
|
116
|
-
|
117
|
-
def run_or_start
|
118
|
-
system(docker_check_cmd) ? start : run
|
119
|
-
end
|
120
122
|
end
|
121
123
|
end
|
data/spec/spec_helper.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: drydocker
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kevin Littlejohn
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: listen
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.3'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: codeclimate-test-reporter
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: shoulda
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|