script-runner 0.0.2 → 0.0.4

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: 57dfbe9b4d71ef02fa67c714ec4b0271c05b58a8
4
- data.tar.gz: 555ed1d812cca0a64a5afaf509069a5a22d971b8
3
+ metadata.gz: 5adc86a5ade412404f97da960195285a5cd9c9d5
4
+ data.tar.gz: b4ce5c7742f04412fb7df809b1d6a676547b9d3b
5
5
  SHA512:
6
- metadata.gz: 013670bbf854cf1a7b850df883a1a778e7e59ef445a2825a461136277bb8afde2bac3eca66f7838c1643e1119d03a8f36105576ce43e0afcb0d976d7e341b5eb
7
- data.tar.gz: 4c46070e38cfa92c4301a0cd3b4bdc254198eb7e3d7c308daea36c0caee66570d7c3d0ac034abb3da548255e7d6da1a7688758d03dfd03eb63961a5d9abd7a28
6
+ metadata.gz: 1cffb8d33edaa322fb331e1b91cc73bb2b47cd6fd15e2ccfa6fedad39bfa26d7ac2bf2911e062f0bd69101eb0e9b14e14fbcf0d903fcbf224e5068648bea88b2
7
+ data.tar.gz: db92f171a17303b7bddb6a679bafbc5f621ea27a677331863c42caddd045a27373f7dc58574f468f4f9559251e1ca54b8036f3be625b522295d37d4c314562a4
data/Gemfile.lock CHANGED
@@ -1,13 +1,18 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- script-runner (0.0.1)
4
+ script-runner (0.0.2)
5
5
  thor
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
10
  diff-lcs (1.2.4)
11
+ little-plugger (1.1.3)
12
+ logging (1.8.1)
13
+ little-plugger (>= 1.1.3)
14
+ multi_json (>= 1.3.6)
15
+ multi_json (1.7.9)
11
16
  rake (10.1.0)
12
17
  rspec (2.14.1)
13
18
  rspec-core (~> 2.14.0)
@@ -23,6 +28,7 @@ PLATFORMS
23
28
  ruby
24
29
 
25
30
  DEPENDENCIES
31
+ logging (~> 1.8.1)
26
32
  rake (~> 10.1.0)
27
33
  rspec (~> 2.6)
28
34
  script-runner!
data/README.md CHANGED
@@ -6,11 +6,11 @@ A very simple library for running scripts on a file system.
6
6
 
7
7
  require 'script-runner'
8
8
  ScriptRunner.run( array_of_paths, array_of_env_paths, error_handler, &handle_script_output )
9
-
9
+
10
10
  ## Example
11
11
 
12
12
  If we have the following file structure
13
-
13
+
14
14
 
15
15
  path-one/
16
16
  script.sh
@@ -20,7 +20,7 @@ If we have the following file structure
20
20
  script.sh
21
21
  env-one/
22
22
  one.properties
23
-
23
+
24
24
  The following:
25
25
 
26
26
  require 'script-runner'
@@ -46,5 +46,7 @@ Note: for each root_path, all files under are invoked in alphabetical order
46
46
 
47
47
 
48
48
  ### Changelog
49
+ 0.0.4 - fixed dependency on logging
50
+ 0.0.3 - Added logging
49
51
  0.0.2 - Added mit license
50
52
  0.0.1 - First version
data/lib/script-runner.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require 'logging'
1
2
  require 'script-runner/main'
2
3
 
3
4
  module ScriptRunner
@@ -8,10 +9,22 @@ module ScriptRunner
8
9
  #
9
10
  # @paths - an array of paths with scripts to invoke
10
11
  # @env_vars - an array of paths that contains .properties files
11
- # @error_handler - a callback if a non-zero exit code occured
12
+ # @options -
13
+ # -- :error_handler - a lambda that gets passed the script file path that exited with a non zero value
14
+ # -- :log_level - one of :debug, :info, :warn, :errror
12
15
  # @block - a block to handle the output of the script if non is given it is sent to the console
13
- def self.run( paths, env_vars, error_handler = nil, &block)
14
- runner = ScriptRunner::Main.new
16
+ def self.run( paths, env_vars, options = {}, &block)
17
+
18
+ Logging.appenders.stdout(
19
+ :layout => Logging.layouts.pattern(:pattern => '[%c][%-5l] %m\n'),
20
+ :color_scheme => 'bright')
21
+
22
+ logger = Logging.logger['script-runner']
23
+ logger.add_appenders(Logging.appenders.stdout)
24
+ logger.level = options[:log_level] || :warn
25
+
26
+ runner = ScriptRunner::Main.new(logger)
27
+ error_handler = options[:error_handler]
15
28
  runner.run(paths, env_vars, error_handler, &block)
16
29
  end
17
30
 
@@ -1,7 +1,14 @@
1
+ require 'logging'
2
+
1
3
  module ScriptRunner
2
4
 
3
5
  class Main
4
6
 
7
+ def initialize(logger)
8
+ @logger = logger
9
+ end
10
+
11
+
5
12
  # Run a set of scripts
6
13
  #
7
14
  # Note: non executable files are skipped and a warning is sent to the console
@@ -11,16 +18,19 @@ module ScriptRunner
11
18
  # @error_handler - a callback if a non-zero exit code occured
12
19
  # @block - a block to handle the output of the script if non is given it is sent to the console
13
20
  def run( paths, env_vars, error_handler = nil, &block)
21
+
14
22
  set_env(env_vars)
15
23
  all_paths = all_files(paths).select{ |p| File.file? p }
24
+ @logger.debug all_paths
16
25
  runnable = all_paths.select{ |p| File.executable? p }
17
26
  non_runnable = all_paths - runnable
18
-
27
+ @logger.debug "non_runnable: #{non_runnable}"
28
+ @logger.debug "runnable: #{runnable}"
19
29
  non_runnable.each{ |nr|
20
- puts "warning: #{nr} is not runnable - skipping"
30
+ @logger.warn "#{nr} is not runnable - skipping"
21
31
  }
22
32
 
23
- all_paths.each{ |p|
33
+ runnable.each{ |p|
24
34
  exec(p, error_handler, &block)
25
35
  }
26
36
  end
@@ -33,7 +43,7 @@ module ScriptRunner
33
43
  if block_given?
34
44
  block.call(line.chomp)
35
45
  else
36
- puts line.chomp
46
+ @logger.info line.chomp
37
47
  end
38
48
  end
39
49
  io.close
@@ -53,8 +63,9 @@ module ScriptRunner
53
63
  env_files.each{ |p|
54
64
  File.readlines(p).each do |line|
55
65
  if line.include? "="
56
- values = line.split("=")
57
- ENV[values[0].chomp] = values[1].chomp
66
+ key, value = line.split("=")
67
+ @logger.debug "set: #{key} -> #{value}"
68
+ ENV[key.strip] = value.strip
58
69
  end
59
70
  end
60
71
  }
@@ -1,4 +1,4 @@
1
1
  module ScriptRunner
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.4"
3
3
  end
4
4
 
@@ -18,6 +18,7 @@ Gem::Specification.new do |gem|
18
18
  gem.version = ScriptRunner::VERSION
19
19
  gem.add_development_dependency "rspec", "~> 2.6"
20
20
  gem.add_development_dependency "rake", "~> 10.1.0"
21
+ gem.add_dependency "logging", "~> 1.8.1"
21
22
  gem.add_dependency "thor"
22
23
 
23
24
  end
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env bash
2
+ echo "$0"
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env bash
2
+ echo "$0"
data/spec/main_spec.rb CHANGED
@@ -27,19 +27,21 @@ describe ScriptRunner do
27
27
  end
28
28
 
29
29
  it "should allow errors to be handled" do
30
- error_handler = lambda{ |p| @error_files << p}
31
- p = ScriptRunner.run(scripts("one", "has_error"), env("one"), error_handler) { |output| @all_output << output }
30
+ options = {
31
+ :error_handler => lambda{ |p| @error_files << p},
32
+ :log_level => :debug
33
+ }
34
+
35
+ p = ScriptRunner.run(scripts("one", "has_error"), env("one"), options) { |output| @all_output << output }
32
36
  @error_files.length.should eql 1
33
37
  end
34
38
 
35
39
  it "should call nested in alphabetical order" do
36
- puts "before : #{@all_output}"
37
40
  p = ScriptRunner.run(scripts("nested"), env("one")) { |output| @all_output << output }
38
41
  @all_output.should eql ["spec/fixtures/nested/scripts/a/one.sh", "spec/fixtures/nested/scripts/one.sh"]
39
42
  end
40
43
 
41
44
  it "should call multiple nested in alphabetical order" do
42
- puts "before : #{@all_output}"
43
45
  p = ScriptRunner.run(scripts("one", "nested_two", "nested"), env("one")) { |output| @all_output << output }
44
46
  @all_output.should eql [
45
47
  "hello there custom var",
@@ -48,4 +50,9 @@ describe ScriptRunner do
48
50
  "spec/fixtures/nested/scripts/a/one.sh",
49
51
  "spec/fixtures/nested/scripts/one.sh"]
50
52
  end
53
+
54
+ it "should skip non runnable files" do
55
+ p = ScriptRunner.run(scripts("non_runnable"), env("one")) { |output| @all_output << output }
56
+ @error_files.length.should eql 0
57
+ end
51
58
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: script-runner
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - ed.eustace
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ~>
39
39
  - !ruby/object:Gem::Version
40
40
  version: 10.1.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: logging
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 1.8.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 1.8.1
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: thor
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -73,12 +87,14 @@ files:
73
87
  - script-runner.gemspec
74
88
  - spec/cmds_spec.rb
75
89
  - spec/fixtures/has_error/scripts/error.sh
90
+ - spec/fixtures/nested/one.sh
76
91
  - spec/fixtures/nested/scripts/a/one.sh
77
92
  - spec/fixtures/nested/scripts/one.sh
78
93
  - spec/fixtures/nested_two/nested/scripts/a/one.sh
79
94
  - spec/fixtures/nested_two/nested/scripts/one.sh
80
95
  - spec/fixtures/nested_two/scripts/a/one.sh
81
96
  - spec/fixtures/nested_two/scripts/one.sh
97
+ - spec/fixtures/non_runnable/scripts/one.sh
82
98
  - spec/fixtures/one/env/one.properties
83
99
  - spec/fixtures/one/scripts/one.sh
84
100
  - spec/main_spec.rb
@@ -109,12 +125,14 @@ summary: it just runs scripts
109
125
  test_files:
110
126
  - spec/cmds_spec.rb
111
127
  - spec/fixtures/has_error/scripts/error.sh
128
+ - spec/fixtures/nested/one.sh
112
129
  - spec/fixtures/nested/scripts/a/one.sh
113
130
  - spec/fixtures/nested/scripts/one.sh
114
131
  - spec/fixtures/nested_two/nested/scripts/a/one.sh
115
132
  - spec/fixtures/nested_two/nested/scripts/one.sh
116
133
  - spec/fixtures/nested_two/scripts/a/one.sh
117
134
  - spec/fixtures/nested_two/scripts/one.sh
135
+ - spec/fixtures/non_runnable/scripts/one.sh
118
136
  - spec/fixtures/one/env/one.properties
119
137
  - spec/fixtures/one/scripts/one.sh
120
138
  - spec/main_spec.rb