drydocker 0.1.10 → 0.1.11

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5d56d9a43969a8ecb6a8d21beba4748f77919f7f
4
- data.tar.gz: f21d164b82a9673bba353aba4715bbad82c23e3a
3
+ metadata.gz: e515536ab04252f04c92cadb6b76e99ab0b1a7b3
4
+ data.tar.gz: dfb2a251084eaa6ebee891b52c1943d06938b08b
5
5
  SHA512:
6
- metadata.gz: 65b6cc8827a12ef41b4d4eeb14e3ce3bf35282ab022baba039a8a53e8c4b5ceae6d13507fa8eed1f73cd05387889aeb2f1991583778cd939f4d0e78ccbd886c0
7
- data.tar.gz: d919d88b8e89fe948335e39a339b600cb2c3de5a3321fadd5b2f764385d931c2d525850e27462ba02fed6905a880ae90b64821b2f8122ac54cc4d6ba05deea5e
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'
@@ -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.0)
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.1)
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
  [![wercker status](https://app.wercker.com/status/b00d4339862ef12b880f0022b6d20b2a/m "wercker status")](https://app.wercker.com/project/bykey/b00d4339862ef12b880f0022b6d20b2a)
4
+ [![Code Climate](https://codeclimate.com/github/silarsis/drydocker/badges/gpa.svg)](https://codeclimate.com/github/silarsis/drydocker)
5
+ [![Test Coverage](https://codeclimate.com/github/silarsis/drydocker/badges/coverage.svg)](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.10
1
+ 0.1.11
@@ -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
- monitor.listen
58
- sleep
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
@@ -1,7 +1,7 @@
1
- require 'listen'
2
- require 'ptools'
3
- require 'logger'
4
- require 'shellwords'
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: 'silarsis/drydocker',
15
- command: 'rspec spec',
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(/[\/:]/, '-')}-test"
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('now listening')
55
+ config.logger.info("now listening")
56
56
  end
57
57
 
58
58
  def clean_containers
59
- fail 'No docker found' if File.which('docker').nil?
59
+ fail "No docker found" if File.which("docker").nil?
60
60
  return unless system(docker_check_cmd)
61
- config.logger.debug('cleaning up previous containers')
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} #{env_flags} #{name_opt} #{path_opt} #{entrypoint_opt} #{config.image}
71
- sh -c #{command}
72
- ).reject { |x| x == '' }.join(' ')
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
- 'docker run -it -w /app'
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
- config.entrypoint.nil? ? '' : "--entrypoint #{config.entrypoint.shellescape}"
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? ? '' : config.command
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
@@ -1,3 +1,6 @@
1
+ require 'codeclimate-test-reporter'
2
+ CodeClimate::TestReporter.start
3
+
1
4
  $LOAD_PATH << File.expand_path('./lib')
2
5
 
3
6
  RSpec.configure do |config|
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.10
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-23 00:00:00.000000000 Z
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