script-runner 0.0.2 → 0.0.4

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 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