script_executor 1.7.7 → 1.7.8

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: 1be5a0eeb327694f114c24aaa57f2aaad17d6f4a
4
- data.tar.gz: 285a57a5dcfe003a5c16d5a6ba1a01c61573eb66
3
+ metadata.gz: 9260fd1ef57e6a779709400660f5592a17588a7d
4
+ data.tar.gz: 848028cef518620b0976c483c6b1fd5f459910d5
5
5
  SHA512:
6
- metadata.gz: dd8637488c7465b21ff900bab3a99bf3d215948b3c2f63eb3d4c97d858e39293bd0d0d032e24923c75e62f4afce92934e1c8e0c1504d7513fca3fd538307b17d
7
- data.tar.gz: 92816769d91c33e43a80ceb3637c8aa4bd9d1b1552404101eb5f4e3fe96d0029ea78f41112614ebc80408d85c700af239cc98587eff2d4c9fd7efa8a3567d73a
6
+ metadata.gz: '00274576926648bbb93503ce623d26fc83c1e91b8c9e2db55c1214091263a98a80ddfd707f6d1854d3cb6b4c99559ee4afa01ff58209aa5dd1d81c16572661de'
7
+ data.tar.gz: 24789ca514387eb737d4477b95b20fecd74b25651f5b77a03aedcb4349162db3ab7b904e7fcfefaca8f5624621a5df991c7be54d96e3476fdee8c066c52fef6e
@@ -1 +1 @@
1
- 2.2.3
1
+ 2.4.1
data/Gemfile CHANGED
@@ -1,27 +1,21 @@
1
- source "https://rubygems.org"
1
+ source 'https://rubygems.org'
2
2
 
3
3
  group :default do
4
- gem "highline", "~> 1.6"
5
- gem "net-ssh", "~> 2.9"
6
- gem "text-interpolator", "~> 1.1"
7
- gem "json_pure", "~> 1.8"
8
- gem "parslet", "~> 1.7"
9
- gem 'thor', "~> 0.19"
4
+ gem 'highline', '1.7.8'
5
+ gem 'net-ssh', '4.1.0'
6
+ gem 'text-interpolator', '1.1.9'
7
+ gem 'json_pure', '2.1.0'
8
+ gem 'parslet', '1.8.0'
9
+ gem 'thor', '0.19.4'
10
10
  end
11
11
 
12
12
  group :development do
13
- gem "gemspec_deps_gen", "~> 1.1"
14
- gem "gemcutter", "~> 0.7"
15
- gem 'awesome_print', "~> 1.6"
13
+ gem 'gemspec_deps_gen', '1.1.2'
14
+ gem 'gemcutter', '0.7.1'
15
+ gem 'awesome_print', '1.8.0'
16
16
  end
17
17
 
18
- group :test do
19
- gem "rspec", "~> 3.3"
18
+ group :test, :default do
19
+ gem 'rspec', '3.6.0'
20
20
  end
21
21
 
22
- # group :debug do
23
- # gem "ruby-debug-base19x", "0.11.30.pre12"
24
- # gem "ruby-debug-ide", "0.4.17"
25
- # end
26
-
27
-
@@ -1,49 +1,47 @@
1
1
  GEM
2
2
  remote: https://rubygems.org/
3
3
  specs:
4
- awesome_print (1.6.1)
5
- blankslate (3.1.3)
6
- diff-lcs (1.2.5)
4
+ awesome_print (1.8.0)
5
+ diff-lcs (1.3)
7
6
  file_utils (1.1.2)
8
7
  gemcutter (0.7.1)
9
8
  gemspec_deps_gen (1.1.2)
10
9
  bundler
11
10
  file_utils
12
11
  highline (1.7.8)
13
- json_pure (1.8.3)
14
- net-ssh (2.9.2)
15
- parslet (1.7.1)
16
- blankslate (>= 2.0, <= 4.0)
17
- rspec (3.3.0)
18
- rspec-core (~> 3.3.0)
19
- rspec-expectations (~> 3.3.0)
20
- rspec-mocks (~> 3.3.0)
21
- rspec-core (3.3.2)
22
- rspec-support (~> 3.3.0)
23
- rspec-expectations (3.3.1)
12
+ json_pure (2.1.0)
13
+ net-ssh (4.1.0)
14
+ parslet (1.8.0)
15
+ rspec (3.6.0)
16
+ rspec-core (~> 3.6.0)
17
+ rspec-expectations (~> 3.6.0)
18
+ rspec-mocks (~> 3.6.0)
19
+ rspec-core (3.6.0)
20
+ rspec-support (~> 3.6.0)
21
+ rspec-expectations (3.6.0)
24
22
  diff-lcs (>= 1.2.0, < 2.0)
25
- rspec-support (~> 3.3.0)
26
- rspec-mocks (3.3.2)
23
+ rspec-support (~> 3.6.0)
24
+ rspec-mocks (3.6.0)
27
25
  diff-lcs (>= 1.2.0, < 2.0)
28
- rspec-support (~> 3.3.0)
29
- rspec-support (3.3.0)
26
+ rspec-support (~> 3.6.0)
27
+ rspec-support (3.6.0)
30
28
  text-interpolator (1.1.9)
31
- thor (0.19.1)
29
+ thor (0.19.4)
32
30
 
33
31
  PLATFORMS
34
32
  ruby
35
33
 
36
34
  DEPENDENCIES
37
- awesome_print (~> 1.6)
38
- gemcutter (~> 0.7)
39
- gemspec_deps_gen (~> 1.1)
40
- highline (~> 1.6)
41
- json_pure (~> 1.8)
42
- net-ssh (~> 2.9)
43
- parslet (~> 1.7)
44
- rspec (~> 3.3)
45
- text-interpolator (~> 1.1)
46
- thor (~> 0.19)
35
+ awesome_print (= 1.8.0)
36
+ gemcutter (= 0.7.1)
37
+ gemspec_deps_gen (= 1.1.2)
38
+ highline (= 1.7.8)
39
+ json_pure (= 2.1.0)
40
+ net-ssh (= 4.1.0)
41
+ parslet (= 1.8.0)
42
+ rspec (= 3.6.0)
43
+ text-interpolator (= 1.1.9)
44
+ thor (= 0.19.4)
47
45
 
48
46
  BUNDLED WITH
49
- 1.10.6
47
+ 1.15.1
@@ -0,0 +1,58 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $LOAD_PATH.unshift File.expand_path("lib", File.dirname(__FILE__))
4
+
5
+ require "thor"
6
+ require "script_executor/version"
7
+ require "gemspec_deps_gen/gemspec_deps_gen"
8
+
9
+ class GemCommands < Thor
10
+
11
+ def initialize *params
12
+ super
13
+
14
+ @version = ScriptExecutor::VERSION
15
+ @project_name = File.basename(Dir.pwd)
16
+ end
17
+
18
+ no_commands do
19
+ def generate
20
+ generator = GemspecDepsGen.new
21
+
22
+ generator.generate_dependencies "spec", "#{@project_name}.gemspec.erb", "#{@project_name}.gemspec"
23
+ end
24
+ end
25
+
26
+ desc "build", "build"
27
+ def build
28
+ generate
29
+
30
+ system "gem build #{@project_name}.gemspec"
31
+ end
32
+
33
+ desc "install", "install"
34
+ def install
35
+ system "gem install #{@project_name}-#{@version}.gem"
36
+ end
37
+
38
+ desc "uninstall", "uninstall"
39
+ def uninstall
40
+ system "gem uninstall #{@project_name}"
41
+ end
42
+
43
+ desc "release", "release"
44
+ def release
45
+ invoke :build
46
+ system "gem push #{@project_name}-#{@version}.gem"
47
+ end
48
+
49
+ desc "rspec", "rspec"
50
+ def rspec *args
51
+ system "`which rspec` #{args.join(' ')}"
52
+ end
53
+
54
+ end
55
+
56
+ if File.basename($0) != 'thor'
57
+ GemCommands.start
58
+ end
@@ -1,5 +1,5 @@
1
1
  require 'json'
2
- require "highline"
2
+ require 'highline'
3
3
 
4
4
  require 'text_interpolator'
5
5
  require 'script_executor/executable'
@@ -10,7 +10,7 @@ class BaseProvision
10
10
 
11
11
  attr_reader :interpolator, :env, :script_list, :server_info
12
12
 
13
- def initialize config_file_name, scripts_file_names
13
+ def initialize(config_file_name, scripts_file_names)
14
14
  @terminal = HighLine.new
15
15
  @interpolator = TextInterpolator.new
16
16
 
@@ -27,17 +27,17 @@ class BaseProvision
27
27
  create_script_methods
28
28
  end
29
29
 
30
- def run script_name, type=:string, env={}
30
+ def run(script_name, type=:string, env={})
31
31
  execute(server_info) do
32
32
  evaluate_script_body(script_list[script_name.to_sym][:code], env, type)
33
33
  end
34
34
  end
35
35
 
36
- def ask_password message
37
- @terminal.ask(message) { |q| q.echo = "*" }
36
+ def ask_password(message)
37
+ @terminal.ask(message) {|q| q.echo = '*'}
38
38
  end
39
39
 
40
- def read_config config_file_name
40
+ def read_config(config_file_name)
41
41
  hash = JSON.parse(File.read(config_file_name), :symbolize_names => true)
42
42
 
43
43
  result = interpolator.interpolate hash
@@ -55,7 +55,7 @@ class BaseProvision
55
55
  end
56
56
  end
57
57
 
58
- def create_thor_methods parent_class, type=:string
58
+ def create_thor_methods(parent_class, type=:string)
59
59
  if parent_class.ancestors.collect(&:to_s).include?('Thor')
60
60
  provision = self
61
61
 
@@ -3,7 +3,7 @@ require 'script_executor/remote_command'
3
3
 
4
4
  module Executable
5
5
 
6
- def execute params={}, &code
6
+ def execute(params={}, &code)
7
7
  params = params.clone # try not to destroy external hash
8
8
 
9
9
  if params.class != Hash
@@ -17,7 +17,7 @@ module Executable
17
17
  commands = locate_commands script, &code
18
18
 
19
19
  if commands.nil?
20
- output.puts "No command was provided!"
20
+ output.puts 'No command was provided!'
21
21
  else
22
22
  commands = sudo(commands) if params[:sudo]
23
23
 
@@ -38,7 +38,7 @@ module Executable
38
38
 
39
39
  private
40
40
 
41
- def locate_commands script, &code
41
+ def locate_commands(script, &code)
42
42
  if block_given?
43
43
  commands_from_block &code
44
44
  elsif script
@@ -48,7 +48,7 @@ module Executable
48
48
  end
49
49
  end
50
50
 
51
- def commands_from_block &code
51
+ def commands_from_block(&code)
52
52
  s1 = code.call.split(/\n/)
53
53
  s2 = s1.reject {|el| el.strip.size == 0 || el.empty?}
54
54
  s3 = s2.collect {|el| el.strip}
@@ -56,7 +56,7 @@ module Executable
56
56
  s3.join("\n")
57
57
  end
58
58
 
59
- def commands_from_object object
59
+ def commands_from_object(object)
60
60
  if object.class == String
61
61
  object
62
62
  elsif object.class == Array
@@ -66,7 +66,7 @@ module Executable
66
66
  end
67
67
  end
68
68
 
69
- def sudo commands
69
+ def sudo(commands)
70
70
  "sudo -S -p 'sudo password: ' -s -- '#{commands}'"
71
71
  end
72
72
 
@@ -6,7 +6,7 @@ class LocalCommand
6
6
 
7
7
  attr_reader :password, :suppress_output, :capture_output, :output_stream, :simulate
8
8
 
9
- def initialize params
9
+ def initialize(params)
10
10
  params = sanitize_parameters params
11
11
 
12
12
  @password = params[:password]
@@ -16,16 +16,16 @@ class LocalCommand
16
16
  @output_stream = params[:output_stream]
17
17
  end
18
18
 
19
- def execute commands, line_action
19
+ def execute(commands, line_action)
20
20
  print_commands commands, $stdout
21
21
 
22
22
  unless simulate
23
23
  storage = capture_output ? OutputBuffer.new : nil
24
24
  output = if output_stream
25
- output_stream
26
- else
27
- suppress_output ? nil : $stdout
28
- end
25
+ output_stream
26
+ else
27
+ suppress_output ? nil : $stdout
28
+ end
29
29
 
30
30
  commands = commands + inline_password(password) if password
31
31
 
@@ -50,10 +50,10 @@ class LocalCommand
50
50
 
51
51
  private
52
52
 
53
- def print_commands commands, output
53
+ def print_commands(commands, output)
54
54
  if simulate
55
- output.puts "Script:"
56
- output.puts "-------"
55
+ output.puts 'Script:'
56
+ output.puts '-------'
57
57
 
58
58
  lines = StringIO.new commands
59
59
 
@@ -61,10 +61,10 @@ class LocalCommand
61
61
  output.puts line
62
62
  end
63
63
 
64
- output.puts "-------"
64
+ output.puts '-------'
65
65
  else
66
- output.puts "Local execution:"
67
- output.puts "-------"
66
+ output.puts 'Local execution:'
67
+ output.puts '-------'
68
68
 
69
69
  lines = StringIO.new commands
70
70
 
@@ -72,15 +72,15 @@ class LocalCommand
72
72
  output.puts line
73
73
  end
74
74
 
75
- output.puts "-------"
75
+ output.puts '-------'
76
76
  end
77
77
  end
78
78
 
79
- def inline_password password
80
- password ? "<<EOF\n#{password}\nEOF" : ""
79
+ def inline_password(password)
80
+ password ? "<<EOF\n#{password}\nEOF" : ''
81
81
  end
82
82
 
83
- def sanitize_parameters params
83
+ def sanitize_parameters(params)
84
84
  params.each do |key, _|
85
85
  params.delete(key) unless permitted_params.include? key.to_sym
86
86
  end
@@ -5,7 +5,7 @@ class OutputBuffer
5
5
  @buffer = []
6
6
  end
7
7
 
8
- def save line
8
+ def save(line)
9
9
  buffer << line
10
10
  end
11
11
  end
@@ -1,11 +1,11 @@
1
1
  require 'script_executor/output_buffer'
2
2
  require 'net/ssh'
3
- require "highline"
3
+ require 'highline'
4
4
 
5
5
  class RemoteCommand
6
6
  attr_reader :host, :user, :options, :suppress_output, :capture_output, :output_stream, :simulate
7
7
 
8
- def initialize params
8
+ def initialize(params)
9
9
  params = sanitize_parameters params
10
10
 
11
11
  @host = params.delete(:domain)
@@ -20,8 +20,8 @@ class RemoteCommand
20
20
  @options = params
21
21
  end
22
22
 
23
- def execute commands, line_action
24
- options[:password] = HighLine.new.ask("Enter password for #{user}: ") { |q| q.echo = '*' } if options[:password].nil?
23
+ def execute(commands, line_action)
24
+ options[:password] = HighLine.new.ask("Enter password for #{user}: ") {|q| q.echo = '*'} if options[:password].nil?
25
25
  options[:user] = user
26
26
 
27
27
  print commands, $stdout
@@ -29,10 +29,10 @@ class RemoteCommand
29
29
  unless simulate
30
30
  storage = capture_output ? OutputBuffer.new : nil
31
31
  output = if output_stream
32
- output_stream
33
- else
34
- suppress_output ? nil : $stdout
35
- end
32
+ output_stream
33
+ else
34
+ suppress_output ? nil : $stdout
35
+ end
36
36
 
37
37
  Net::SSH.start(host, user, options) do |session|
38
38
  session.exec(commands) do |channel, _, line|
@@ -62,12 +62,12 @@ class RemoteCommand
62
62
 
63
63
  private
64
64
 
65
- def print commands, output
65
+ def print(commands, output)
66
66
  ssh_command = ssh_command(user, host, options[:port], options[:identity_file])
67
67
 
68
68
  if simulate
69
69
  output.puts "Remote script: '#{ssh_command}'"
70
- output.puts "-------"
70
+ output.puts '-------'
71
71
 
72
72
  lines = StringIO.new commands
73
73
 
@@ -75,10 +75,10 @@ class RemoteCommand
75
75
  output.puts line
76
76
  end
77
77
 
78
- output.puts "-------"
78
+ output.puts '-------'
79
79
  else
80
80
  output.puts "Remote execution on: '#{ssh_command}'"
81
- output.puts "-------"
81
+ output.puts '-------'
82
82
 
83
83
  lines = StringIO.new commands
84
84
 
@@ -86,11 +86,11 @@ class RemoteCommand
86
86
  output.puts line
87
87
  end
88
88
 
89
- output.puts "-------"
89
+ output.puts '-------'
90
90
  end
91
91
  end
92
92
 
93
- def ssh_command user, host, port, identity_file
93
+ def ssh_command(user, host, port, identity_file)
94
94
  cmd = user ? host : "#{user}@#{host}"
95
95
 
96
96
  cmd << " -i #{identity_file}" if identity_file
@@ -102,11 +102,11 @@ class RemoteCommand
102
102
  "ssh #{cmd}"
103
103
  end
104
104
 
105
- def ask_password? line
105
+ def ask_password?(line)
106
106
  line =~ /^\[sudo\] password for user:/ || line =~ /sudo password:/ || line =~ /Password:/
107
107
  end
108
108
 
109
- def sanitize_parameters params
109
+ def sanitize_parameters(params)
110
110
  params.each do |key, _|
111
111
  params.delete(key) unless permitted_params.include? key.to_sym
112
112
  end
@@ -10,7 +10,7 @@ module ScriptLocator
10
10
  @errors ||= []
11
11
  end
12
12
 
13
- def scripts file
13
+ def scripts(file)
14
14
  data = extract_data file
15
15
 
16
16
  begin
@@ -24,7 +24,7 @@ module ScriptLocator
24
24
  end
25
25
  end
26
26
 
27
- def evaluate_script_body content, env, type=:erb
27
+ def evaluate_script_body(content, env, type=:erb)
28
28
  content = content.join("\n") if content.kind_of? Array
29
29
 
30
30
  case type
@@ -48,7 +48,7 @@ module ScriptLocator
48
48
 
49
49
  private
50
50
 
51
- def extract_data file
51
+ def extract_data(file)
52
52
  content = File.read(file)
53
53
 
54
54
  index = content.index("__END__\n")
@@ -1,3 +1,3 @@
1
1
  class ScriptExecutor
2
- VERSION = "1.7.7"
2
+ VERSION = "1.7.8"
3
3
  end
@@ -5,7 +5,7 @@ require File.expand_path(File.dirname(__FILE__) + '/lib/script_executor/version'
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "script_executor"
7
7
  spec.summary = %q{This library helps to execute code, locally or remote over ssh}
8
- spec.description = %q{This library helps to execute code, locally or remote over ssh}
8
+ spec.description = %q{This library helps to execute code, locally or remote over ssh.}
9
9
  spec.email = "alexander.shvets@gmail.com"
10
10
  spec.authors = ["Alexander Shvets"]
11
11
  spec.homepage = "http://github.com/shvets/script_executor"
@@ -17,15 +17,16 @@ Gem::Specification.new do |spec|
17
17
  spec.license = "MIT"
18
18
 
19
19
 
20
- spec.add_runtime_dependency "highline", ["~> 1.6"]
21
- spec.add_runtime_dependency "net-ssh", ["~> 2.9"]
22
- spec.add_runtime_dependency "text-interpolator", ["~> 1.1"]
23
- spec.add_runtime_dependency "json_pure", ["~> 1.8"]
24
- spec.add_runtime_dependency "parslet", ["~> 1.7"]
25
- spec.add_runtime_dependency "thor", ["~> 0.19"]
26
- spec.add_development_dependency "gemspec_deps_gen", ["~> 1.1"]
27
- spec.add_development_dependency "gemcutter", ["~> 0.7"]
28
- spec.add_development_dependency "awesome_print", ["~> 1.6"]
20
+ spec.add_runtime_dependency "highline", ["= 1.7.8"]
21
+ spec.add_runtime_dependency "net-ssh", ["= 4.1.0"]
22
+ spec.add_runtime_dependency "text-interpolator", ["= 1.1.9"]
23
+ spec.add_runtime_dependency "json_pure", ["= 2.1.0"]
24
+ spec.add_runtime_dependency "parslet", ["= 1.8.0"]
25
+ spec.add_runtime_dependency "thor", ["= 0.19.4"]
26
+ spec.add_runtime_dependency "rspec", ["= 3.6.0"]
27
+ spec.add_development_dependency "gemspec_deps_gen", ["= 1.1.2"]
28
+ spec.add_development_dependency "gemcutter", ["= 0.7.1"]
29
+ spec.add_development_dependency "awesome_print", ["= 1.8.0"]
29
30
 
30
31
  end
31
32
 
@@ -5,7 +5,7 @@ require File.expand_path(File.dirname(__FILE__) + '/lib/script_executor/version'
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "script_executor"
7
7
  spec.summary = %q{This library helps to execute code, locally or remote over ssh}
8
- spec.description = %q{This library helps to execute code, locally or remote over ssh}
8
+ spec.description = %q{This library helps to execute code, locally or remote over ssh.}
9
9
  spec.email = "alexander.shvets@gmail.com"
10
10
  spec.authors = ["Alexander Shvets"]
11
11
  spec.homepage = "http://github.com/shvets/script_executor"
@@ -2,18 +2,18 @@ require 'spec_helper'
2
2
 
3
3
  require 'script_executor/base_provision'
4
4
 
5
- describe BaseProvision do
5
+ RSpec.describe BaseProvision do
6
6
  subject { BaseProvision.new 'spec/support/base.conf.json', ['spec/support/script0.sh'] }
7
7
 
8
- describe "#initialize" do
9
- it "parses content from file" do
8
+ describe '#initialize' do
9
+ it 'parses content from file' do
10
10
  expect(subject.script_list.size).to equal(3)
11
11
  end
12
12
  end
13
13
 
14
- describe "#run" do
15
- it "executes command with :erb type" do
16
- params = OpenStruct.new({name: 'some name', "project": {"home": 'root'}})
14
+ describe '#run' do
15
+ it 'executes command with :erb type' do
16
+ params = OpenStruct.new({name: 'some name', 'project': {'home': 'root'}})
17
17
 
18
18
  b = params.instance_eval { binding }
19
19
 
@@ -22,7 +22,7 @@ describe BaseProvision do
22
22
  ap result
23
23
  end
24
24
 
25
- it "executes command with :string type" do
25
+ it 'executes command with :string type' do
26
26
  params = {name: 'other name'}
27
27
 
28
28
  result = subject.run 'test2', :string, subject.env.merge(params)
@@ -3,27 +3,27 @@ require 'rspec/mocks'
3
3
 
4
4
  require 'executable'
5
5
 
6
- describe Executable do
6
+ RSpec.describe Executable do
7
7
  subject { Object.new.extend Executable }
8
8
 
9
9
  before :all do
10
10
  @password ||= HighLine.new.ask("Enter password for #{ENV['USER']}: ") { |q| q.echo = '*' }
11
11
  end
12
12
 
13
- describe "local execution" do
13
+ describe 'local execution' do
14
14
  before :all do
15
15
  @local_info = {
16
16
  :capture_output => true
17
17
  }
18
18
  end
19
19
 
20
- it "executes commands from :script parameter" do
21
- result = subject.execute @local_info.merge(:script => "whoami")
20
+ it 'executes commands from :script parameter' do
21
+ result = subject.execute @local_info.merge(:script => 'whoami')
22
22
 
23
23
  expect(result).to eq ENV['USER']
24
24
  end
25
25
 
26
- it "executes commands from the block of code" do
26
+ it 'executes commands from the block of code' do
27
27
  result = subject.execute @local_info do
28
28
  %Q(
29
29
  whoami
@@ -34,23 +34,22 @@ describe Executable do
34
34
  expect(result).to eq "#{ENV['USER']}\n#{ENV['USER']}"
35
35
  end
36
36
 
37
- it "executes commands from the block of code as sudo" do
37
+ it 'executes commands from the block of code as sudo' do
38
38
  result = subject.execute @local_info.merge(:sudo => true, :password => @password) do
39
39
  %Q(
40
40
  whoami
41
- whoami
42
41
  )
43
42
  end
44
43
 
45
- expect(result).to eq "root\nroot"
44
+ expect(result).to match "root"
46
45
  end
47
46
  end
48
47
 
49
- describe "remote execution" do
48
+ describe 'remote execution' do
50
49
  before :all do
51
50
  @remote_info = {
52
51
  :simulate => false,
53
- :domain => "localhost",
52
+ :domain => 'localhost',
54
53
  :user => ENV['USER'],
55
54
  :password => @password,
56
55
  :remote => true,
@@ -58,35 +57,35 @@ describe Executable do
58
57
  }
59
58
  end
60
59
 
61
- it "executes commands from :script parameter" do
62
- result = subject.execute @remote_info.merge(:script => "whoami")
60
+ it 'executes commands from :script parameter' do
61
+ result = subject.execute @remote_info.merge(:script => 'whoami')
63
62
 
64
- expect(result).to eq ENV['USER']
63
+ expect(result).to match ENV['USER']
65
64
  end
66
65
 
67
- it "executes commands from the block of code" do
66
+ it 'executes commands from the block of code' do
68
67
  result = subject.execute @remote_info do
69
68
  %Q(
70
69
  whoami
71
70
  )
72
71
  end
73
72
 
74
- expect(result).to eq ENV['USER']
73
+ expect(result).to match ENV['USER']
75
74
  end
76
75
 
77
- it "executes commands with :host parameter instead of :domain parameter" do
78
- result = subject.execute @remote_info.merge(:script => "whoami", :host => 'localhost', :domain => nil)
76
+ it 'executes commands with :host parameter instead of :domain parameter' do
77
+ result = subject.execute @remote_info.merge(:script => 'whoami', :host => 'localhost', :domain => nil)
79
78
 
80
- expect(result).to eq ENV['USER']
79
+ expect(result).to match ENV['USER']
81
80
  end
82
81
 
83
- it "executes commands with :host parameter instead of :domain parameter" do
84
- result = subject.execute @remote_info.merge(:script => "whoami", :home => 'some_home')
82
+ it 'executes commands with :host parameter instead of :domain parameter' do
83
+ result = subject.execute @remote_info.merge(:script => 'whoami', home: 'some_home')
85
84
 
86
- expect(result).to eq ENV['USER']
85
+ expect(result).to match ENV['USER']
87
86
  end
88
87
 
89
- #it "should execute sudo command" do
88
+ #it "executes sudo command" do
90
89
  # result = subject.execute @remote_info.merge(:sudo => true, :password => @password, :suppress_output => false) do
91
90
  # %Q(
92
91
  # ~/apache-tomcat-7.0.34/bin/shutdown.sh
@@ -97,24 +96,24 @@ describe Executable do
97
96
  #end
98
97
  end
99
98
 
100
- describe "vagrant" do
99
+ describe 'vagrant' do
101
100
  before :all do
102
101
  @remote_info = {
103
- :domain => "22.22.22.22",
104
- :user => "vagrant",
105
- :password => "vagrant",
102
+ :domain => '22.22.22.22',
103
+ :user => 'vagrant',
104
+ :password => 'vagrant',
106
105
  :port => 2222,
107
106
  :remote => true,
108
107
  :capture_output => true
109
108
  }
110
109
  end
111
110
 
112
- it "should execute commands from :script parameter" do
111
+ it 'executes commands from :script parameter' do
113
112
  expect_any_instance_of(RemoteCommand).to receive(:execute).and_return 'vagrant'
114
113
 
115
- result = subject.execute @remote_info.merge(:script => "whoami")
114
+ result = subject.execute @remote_info.merge(:script => 'whoami')
116
115
 
117
- expect(result).to eq "vagrant"
116
+ expect(result).to eq 'vagrant'
118
117
  end
119
118
  end
120
119
 
@@ -2,12 +2,12 @@ require 'spec_helper'
2
2
 
3
3
  require 'script_locator'
4
4
 
5
- describe ScriptLocator do
5
+ RSpec.describe ScriptLocator do
6
6
 
7
7
  subject { Object.new.extend ScriptLocator }
8
8
 
9
- describe "#scripts" do
10
- it "reads after __END__" do
9
+ describe '#scripts' do
10
+ it 'reads after __END__' do
11
11
  file = __FILE__
12
12
 
13
13
  scripts = subject.scripts(file)
@@ -15,7 +15,7 @@ describe ScriptLocator do
15
15
  expect(scripts).not_to be_nil
16
16
  end
17
17
 
18
- it "reads from file completely if it does not have __END__ tag" do
18
+ it 'reads from file completely if it does not have __END__ tag' do
19
19
  file = File.expand_path('support/script4.sh', File.dirname(__FILE__))
20
20
 
21
21
  scripts = subject.scripts(file)
@@ -24,25 +24,25 @@ describe ScriptLocator do
24
24
  end
25
25
  end
26
26
 
27
- describe "#evaluate_script_body" do
28
- it "locates script inside current file" do
27
+ describe '#evaluate_script_body' do
28
+ it 'locates script inside current file' do
29
29
  scripts = subject.scripts(__FILE__)
30
30
 
31
- name = "alisa"
31
+ name = 'alisa'
32
32
 
33
33
  result = subject.evaluate_script_body(scripts[:test1][:code], binding)
34
34
 
35
35
  expect(result).to match /#{name}/
36
36
 
37
- expect(scripts[:test1][:comment]).to eq "Some description"
37
+ expect(scripts[:test1][:comment]).to eq 'Some description'
38
38
  end
39
39
 
40
- it "locates script inside external file and evaluates it as string" do
40
+ it 'locates script inside external file and evaluates it as string' do
41
41
  file = File.expand_path('support/script4.sh', File.dirname(__FILE__))
42
42
 
43
43
  scripts = subject.scripts(file)
44
44
 
45
- env = {:name => "alisa"}
45
+ env = {:name => 'alisa'}
46
46
 
47
47
  result = subject.evaluate_script_body(scripts[:test1][:code], env, :string)
48
48
 
@@ -3,10 +3,10 @@ require 'spec_helper'
3
3
  require 'script_executor/scripts_parser'
4
4
  require 'script_executor/scripts_transform'
5
5
 
6
- describe ScriptsParser do
6
+ RSpec.describe ScriptsParser do
7
7
 
8
- describe "#parse" do
9
- it "parses content from file 1" do
8
+ describe '#parse' do
9
+ it 'parses content from file 1' do
10
10
  content = File.read('spec/support/script1.sh')
11
11
 
12
12
  parsed_content = subject.parse(content)
@@ -16,7 +16,7 @@ describe ScriptsParser do
16
16
  ap transform parsed_content
17
17
  end
18
18
 
19
- it "parses content from file 2" do
19
+ it 'parses content from file 2' do
20
20
  content = File.read('spec/support/script2.sh')
21
21
 
22
22
  parsed_content = subject.parse(content)
@@ -26,7 +26,7 @@ describe ScriptsParser do
26
26
  ap transform parsed_content
27
27
  end
28
28
 
29
- it "parses content from file 3" do
29
+ it 'parses content from file 3' do
30
30
  content = File.read('spec/support/script3.sh')
31
31
 
32
32
  parsed_content = subject.parse(content)
@@ -36,7 +36,7 @@ describe ScriptsParser do
36
36
  ap transform parsed_content
37
37
  end
38
38
 
39
- it "parses content from file 4" do
39
+ it 'parses content from file 4' do
40
40
  content = File.read('spec/support/script4.sh')
41
41
 
42
42
  parsed_content = subject.parse(content)
@@ -46,7 +46,7 @@ describe ScriptsParser do
46
46
  ap transform parsed_content
47
47
  end
48
48
 
49
- it "parses content from file 5" do
49
+ it 'parses content from file 5' do
50
50
  content = File.read('spec/support/script5.sh')
51
51
 
52
52
  parsed_content = subject.parse(content)
@@ -78,7 +78,7 @@ describe ScriptsParser do
78
78
  # end
79
79
  end
80
80
 
81
- def transform content
81
+ def transform(content)
82
82
  script_transform = ScriptsTransform.new
83
83
 
84
84
  script_transform.transform content
@@ -10,7 +10,7 @@
10
10
 
11
11
  "project": {
12
12
  "home": "#{node.home}/acceptance_demo",
13
- "ruby_version": "2.2.3",
13
+ "ruby_version": "2.4.1",
14
14
  "gemset": "acceptance_demo"
15
15
  }
16
16
  }
@@ -14,7 +14,7 @@ class ThorSpec < Thor
14
14
  end
15
15
 
16
16
  describe ThorSpec do
17
- describe "#invoke" do
17
+ describe '#invoke' do
18
18
  it "executes thor without parameters" do
19
19
  ThorSpec.provision.env[:name] = 'name'
20
20
 
@@ -23,7 +23,7 @@ describe ThorSpec do
23
23
  expect(ThorSpec.provision.errors).to be_empty
24
24
  end
25
25
 
26
- it "executes thor with parameters" do
26
+ it 'executes thor with parameters' do
27
27
  ThorSpec.provision.env[:name] = 'name'
28
28
 
29
29
  subject.invoke :test3, ['a', 'b','c']
metadata CHANGED
@@ -1,142 +1,156 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: script_executor
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.7
4
+ version: 1.7.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexander Shvets
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-06 00:00:00.000000000 Z
11
+ date: 2017-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: highline
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
17
+ - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: '1.6'
19
+ version: 1.7.8
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - "~>"
24
+ - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: '1.6'
26
+ version: 1.7.8
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: net-ssh
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - "~>"
31
+ - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: '2.9'
33
+ version: 4.1.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: '2.9'
40
+ version: 4.1.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: text-interpolator
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - '='
46
46
  - !ruby/object:Gem::Version
47
- version: '1.1'
47
+ version: 1.1.9
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - '='
53
53
  - !ruby/object:Gem::Version
54
- version: '1.1'
54
+ version: 1.1.9
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: json_pure
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - "~>"
59
+ - - '='
60
60
  - !ruby/object:Gem::Version
61
- version: '1.8'
61
+ version: 2.1.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - "~>"
66
+ - - '='
67
67
  - !ruby/object:Gem::Version
68
- version: '1.8'
68
+ version: 2.1.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: parslet
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - "~>"
73
+ - - '='
74
74
  - !ruby/object:Gem::Version
75
- version: '1.7'
75
+ version: 1.8.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - "~>"
80
+ - - '='
81
81
  - !ruby/object:Gem::Version
82
- version: '1.7'
82
+ version: 1.8.0
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: thor
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - '='
88
88
  - !ruby/object:Gem::Version
89
- version: '0.19'
89
+ version: 0.19.4
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - '='
95
95
  - !ruby/object:Gem::Version
96
- version: '0.19'
96
+ version: 0.19.4
97
+ - !ruby/object:Gem::Dependency
98
+ name: rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '='
102
+ - !ruby/object:Gem::Version
103
+ version: 3.6.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '='
109
+ - !ruby/object:Gem::Version
110
+ version: 3.6.0
97
111
  - !ruby/object:Gem::Dependency
98
112
  name: gemspec_deps_gen
99
113
  requirement: !ruby/object:Gem::Requirement
100
114
  requirements:
101
- - - "~>"
115
+ - - '='
102
116
  - !ruby/object:Gem::Version
103
- version: '1.1'
117
+ version: 1.1.2
104
118
  type: :development
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
107
121
  requirements:
108
- - - "~>"
122
+ - - '='
109
123
  - !ruby/object:Gem::Version
110
- version: '1.1'
124
+ version: 1.1.2
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: gemcutter
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
- - - "~>"
129
+ - - '='
116
130
  - !ruby/object:Gem::Version
117
- version: '0.7'
131
+ version: 0.7.1
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
- - - "~>"
136
+ - - '='
123
137
  - !ruby/object:Gem::Version
124
- version: '0.7'
138
+ version: 0.7.1
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: awesome_print
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
- - - "~>"
143
+ - - '='
130
144
  - !ruby/object:Gem::Version
131
- version: '1.6'
145
+ version: 1.8.0
132
146
  type: :development
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
- - - "~>"
150
+ - - '='
137
151
  - !ruby/object:Gem::Version
138
- version: '1.6'
139
- description: This library helps to execute code, locally or remote over ssh
152
+ version: 1.8.0
153
+ description: This library helps to execute code, locally or remote over ssh.
140
154
  email: alexander.shvets@gmail.com
141
155
  executables: []
142
156
  extensions: []
@@ -151,6 +165,7 @@ files:
151
165
  - LICENSE
152
166
  - README.md
153
167
  - Rakefile
168
+ - gem_commands.thor
154
169
  - lib/executable.rb
155
170
  - lib/script_executor.rb
156
171
  - lib/script_executor/base_provision.rb
@@ -199,7 +214,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
199
214
  version: '0'
200
215
  requirements: []
201
216
  rubyforge_project:
202
- rubygems_version: 2.4.8
217
+ rubygems_version: 2.6.11
203
218
  signing_key:
204
219
  specification_version: 4
205
220
  summary: This library helps to execute code, locally or remote over ssh