fulmar-shell 1.5.2 → 1.6.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/fulmar/shell.rb +29 -7
  3. metadata +3 -3
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 02faa56b011ad6bd33e19a36970e2cbdf237bfc2
4
- data.tar.gz: eb4d109c408c27a0b40ab85c2555be092ac3fca4
3
+ metadata.gz: 3fc5bb14a5ba3fd7793238ee0e27c9e5261d958f
4
+ data.tar.gz: e4266432900391b2580dcc65609f38daebf9f3b1
5
5
  SHA512:
6
- metadata.gz: 4370dc0fea4ea5f87e3b39c6a05f0e739196845f9fcd1a7ccaad81f3c380f9329499fba750839e933a53ec849fd70833d57a62ff984803d5012566a28cb0e57c
7
- data.tar.gz: 7e7c0a719ef02c1470d927e57ef33fd4822b0a9a81986feb618c456f86e8953072756c143630cf7fe3f99e653ef7d7d69d70329128ae65d7ff01383b2f79828c
6
+ metadata.gz: 96cb5b258fdb9c2187bee07ab4b86c9fa65930acec3132a0eda2fa6507d535b60c15a1fbc392e1efe37140c85fad8fec1a4c63ebd4b33beb27c0b30f8ff0d3ef
7
+ data.tar.gz: 3b37acc54f5b39c6118dd1293b4d71ce2ad15890126eb25263f883e02a1a636876c14fe6e6de683f32d1890496f29440e23e0fdba91e86a7f9ba068b584c340b
data/lib/fulmar/shell.rb CHANGED
@@ -5,11 +5,16 @@ require 'open3'
5
5
  module Fulmar
6
6
  # Implements simple access to shell commands
7
7
  class Shell
8
- VERSION = '1.5.2'
8
+ VERSION = '1.6.0'
9
9
 
10
10
  attr_accessor :debug, :last_output, :last_error, :quiet, :strict
11
11
  attr_reader :path
12
12
 
13
+ DEFAULT_OPTIONS = {
14
+ login: false,
15
+ bundler: true #
16
+ }
17
+
13
18
  def initialize(path = '.', host = 'localhost')
14
19
  @host = host
15
20
  @path = (path.nil? || path.empty?) ? '.' : path
@@ -18,11 +23,11 @@ module Fulmar
18
23
  @last_error = []
19
24
  @debug = false
20
25
  @quiet = false
21
- @environment = {}
22
26
  @strict = false
27
+ @clean_environment = [] # list of things to clean from environment variables
23
28
  end
24
29
 
25
- def run(command, options = {})
30
+ def run(command, options = DEFAULT_OPTIONS)
26
31
  command = [command] if command.class == String
27
32
 
28
33
  # is a custom path given?
@@ -38,7 +43,9 @@ module Fulmar
38
43
  command.unshift "cd #{path}"
39
44
 
40
45
  # invoke a login shell?
41
- shell_command = options[:login] ? clean_environment : 'bash -c'
46
+ shell_command = shell_command(options[:login])
47
+
48
+ @clean_environment << 'bundler' if options[:escape_bundler]
42
49
 
43
50
  if local?
44
51
  execute("#{shell_command} '#{escape_for_sh(command.join(' && '))}'", options[:error_message])
@@ -58,8 +65,23 @@ module Fulmar
58
65
 
59
66
  protected
60
67
 
61
- def clean_environment
62
- "env -i HOME=\"#{ENV['HOME']}\" LANG=\"#{ENV['LANG']}\" bash -lc"
68
+ def shell_command(login)
69
+ login ? "env -i HOME=\"#{ENV['HOME']}\" LANG=\"#{ENV['LANG']}\" bash -lc" : 'bash -c'
70
+ end
71
+
72
+ def environment
73
+ env = ENV.clone
74
+ if @clean_environment.include? 'bundler'
75
+ bundler_variable_parts = %w(ruby gem_ bundle)
76
+ # Remove any variables which contain the words above
77
+ env.delete_if { |key| bundler_variable_parts.select { |part| key.downcase.include?(part) }.any? }
78
+ env['PATH'] = path_without_bundler
79
+ end
80
+ env
81
+ end
82
+
83
+ def path_without_bundler
84
+ ENV['PATH'].split(':').reject { |path| path.include?('ruby') || path.include?('gems') }.join(':')
63
85
  end
64
86
 
65
87
  # Run the command and capture the output
@@ -67,7 +89,7 @@ module Fulmar
67
89
  # Ladies and gentleman: More debug, please!
68
90
  puts command if @debug
69
91
 
70
- stdin, stdout, stderr, wait_thr = Open3.popen3(command)
92
+ stdin, stdout, stderr, wait_thr = Open3.popen3(environment, command)
71
93
 
72
94
  # Remove annoying newlines at the end
73
95
  @last_output = stdout.readlines.collect(&:chomp)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fulmar-shell
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.2
4
+ version: 1.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gerrit Visscher
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-08-13 00:00:00.000000000 Z
11
+ date: 2015-11-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -73,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
73
73
  version: '0'
74
74
  requirements: []
75
75
  rubyforge_project:
76
- rubygems_version: 2.4.5
76
+ rubygems_version: 2.4.5.1
77
77
  signing_key:
78
78
  specification_version: 4
79
79
  summary: Small service to run shell commands on a local or remote shell