envandle 0.2.0 → 0.6.0

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: ff69392778f46788da2d586a57395dd909d84936
4
- data.tar.gz: 601ea8bffd72c9460f953b6356702cda831f1ec3
3
+ metadata.gz: ac9db50e7977e1c07ba3f2a2f882d2dd00fa41e7
4
+ data.tar.gz: b570ef35b12e02cb3a47993a8676710563c32ef9
5
5
  SHA512:
6
- metadata.gz: 70fe6bade653580f5351ebd44ab4bb8ddd476dcd2ccd0a3f85efc05c0f5ef95894d98eb3990c973f6a9d397ea122db4d0559221f13ed739560677c5a194461e6
7
- data.tar.gz: 1794974ec6611b2e511e599939da7c9c03a7cea7064f241f45a08b8f1a281587bf90c2034f0eb858e8ceb0026a6a622e7a3171aa6fdc4c7db747d3c71d05ef38
6
+ metadata.gz: 802b941c80adf4b48a74c5ede5fb4e41f2f5da36c364518df007a0b286f3ae49ff95f87aa91e71cdcef6931c5ed0bf5644035e18f5d5b8ae7ded5e67efbd0600
7
+ data.tar.gz: 5c2185eecac33db45da7fefa71399ca0866372b810c50024a0ae63213d63d4bbcf836c55095bad39d086a7af118753464eef067f23c2e77b84a37ed99fd16a2e
data/README.md CHANGED
@@ -20,7 +20,7 @@ require "envandle"
20
20
  binding.envandle do
21
21
  source "https://rubygems.org"
22
22
 
23
- bundle.gem "mygem", "~> 1.0"
23
+ gem "mygem", "~> 1.0"
24
24
  end
25
25
  ```
26
26
 
@@ -163,3 +163,29 @@ is evaluated as:
163
163
  gem "a", path: "/path/to/a"
164
164
  gem "b", path: "/path/to/b"
165
165
  ```
166
+
167
+ ## install-envandle
168
+
169
+ The install-envandle command just installs Envandle itself with the `bundle install` command. It's useful for successfully loading Envandle in your Gemfile with the Bundler's --path option.
170
+
171
+ ```
172
+ $ install-envandle -h
173
+ install-envandle [OPTIONS]
174
+
175
+ Installs Envandle using Bundler.
176
+
177
+ Options:
178
+ --envandle-source gem source (default: https://rubygems.org)
179
+ --envandle-bundle-bin command path (default: bundle)
180
+
181
+ Additionally, you can specify all of the bundle-install's options.
182
+ ```
183
+
184
+ ### Usage Example
185
+
186
+ ```sh
187
+ $ gem install bundler
188
+ $ gem install envandle
189
+ $ install-envandle --path vendor/bundle
190
+ $ bundle install
191
+ ```
@@ -0,0 +1,50 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift File.expand_path("../../lib", __FILE__)
4
+ require "envandle"
5
+ require "tempfile"
6
+
7
+ gem_source = "https://rubygems.org"
8
+ bundle_bin = "bundle"
9
+
10
+ args = []
11
+ argv = ARGV.dup
12
+ while arg = argv.shift
13
+ if arg.start_with?("--gemfile")
14
+ abort "--gemfile option not allowed."
15
+ end
16
+ case arg
17
+ when "--envandle-source"
18
+ gem_source = argv.shift
19
+ when "--envandle-bundle-bin"
20
+ bundle_bin = argv.shift
21
+ when "-h", "--help"
22
+ print <<-EOS
23
+ install-envandle [OPTIONS]
24
+
25
+ Installs Envandle using Bundler.
26
+
27
+ Options:
28
+ --envandle-source gem source (default: https://rubygems.org)
29
+ --envandle-bundle-bin command path (default: bundle)
30
+
31
+ Additionally, you can specify all of the bundle-install's options.
32
+ EOS
33
+ exit
34
+ else
35
+ args << arg
36
+ end
37
+ end
38
+
39
+ abort "Invalid option: --envandle-source" unless gem_source
40
+ abort "Invalid option: --bundle-bin" unless bundle_bin
41
+
42
+ gemfile = Tempfile.new("install_envandle-Gemfile-", Dir.pwd)
43
+ gemfile << <<-EOS
44
+ source #{gem_source.inspect}
45
+ gem "envandle", "#{Envandle::VERSION}"
46
+ EOS
47
+ gemfile.close
48
+ code = system(bundle_bin, "install", "--gemfile", gemfile.path, *args) ? 0 : 1
49
+ File.delete "#{gemfile.path}.lock"
50
+ exit code
@@ -2,11 +2,7 @@ module Envandle
2
2
  module AsReference
3
3
  def self.extended(mod)
4
4
  mod.class_eval do
5
- attr_reader :group, :name
6
-
7
- def key
8
- @key ||= ::Envandle.reference_key(group, name)
9
- end
5
+ attr_reader :name
10
6
  end
11
7
  end
12
8
  end
@@ -1,5 +1,3 @@
1
- require "envandle/lib"
2
-
3
1
  class Binding
4
2
  def envandle(&block)
5
3
  ::Envandle::Elements::Gemfile.new(::Envandle.loc.file, self).draw &block
File without changes
@@ -0,0 +1,7 @@
1
+ module Envandle
2
+ class GemBlock < IllegalElement
3
+ def type
4
+ "gem with block"
5
+ end
6
+ end
7
+ end
@@ -33,6 +33,9 @@ module Envandle
33
33
  children.each do |child|
34
34
  child.exec receiver
35
35
  end
36
+ references.left.each do |k, v|
37
+ v.to_executable_argset(Argset.new(nil)).send_to receiver
38
+ end
36
39
  end
37
40
 
38
41
  def dir
@@ -51,6 +54,10 @@ module Envandle
51
54
  @references ||= ReferenceCache.new(self)
52
55
  end
53
56
 
57
+ def gem_keys
58
+ @gem_keys ||= {}
59
+ end
60
+
54
61
  def gemspecs
55
62
  @gemspecs ||= GemspecCache.new(File.join(config_dir, "cache", "gemspecs"))
56
63
  end
@@ -0,0 +1,7 @@
1
+ module Envandle
2
+ class GemspecBlock < IllegalElement
3
+ def type
4
+ "gemspec with block"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Envandle
2
+ class GitSource < IllegalElement
3
+ def type
4
+ "git_source without block"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Envandle
2
+ class Group < IllegalElement
3
+ def type
4
+ "group without block"
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,7 @@
1
+ module Envandle
2
+ class SourceBlock < UnsupportedElement
3
+ def type
4
+ "source with block"
5
+ end
6
+ end
7
+ end
@@ -1,10 +1,17 @@
1
- require "envandle/elements/element"
2
- require "envandle/elements/illegal_element"
3
- require "envandle/elements/unsupported_element"
4
- require "envandle/elements/gem"
5
- require "envandle/elements/gemfile"
6
- require "envandle/elements/gemspec"
7
- require "envandle/elements/git_source_block"
8
- require "envandle/elements/group_block"
9
- require "envandle/elements/illegals_and_unsupporteds"
10
- require "envandle/elements/source"
1
+ module Envandle
2
+ module Elements
3
+ autoload :GemBlock, "envandle/elements/gem_block"
4
+ autoload :Gem, "envandle/elements/gem"
5
+ autoload :Gemfile, "envandle/elements/gemfile"
6
+ autoload :GemspecBlock, "envandle/elements/gemspec_block"
7
+ autoload :Gemspec, "envandle/elements/gemspec"
8
+ autoload :GitSourceBlock, "envandle/elements/git_source_block"
9
+ autoload :GitSource, "envandle/elements/git_source"
10
+ autoload :GroupBlock, "envandle/elements/group_block"
11
+ autoload :Group, "envandle/elements/group"
12
+ autoload :IllegalElement, "envandle/elements/illegal_element"
13
+ autoload :SourceBlock, "envandle/elements/source_block"
14
+ autoload :Source, "envandle/elements/source"
15
+ autoload :UnsupportedElement, "envandle/elements/unsupported_element"
16
+ end
17
+ end
@@ -47,7 +47,7 @@ module Envandle
47
47
  class Reserved
48
48
  def initialize(cache_path)
49
49
  @cache_path = cache_path
50
- @path = Dir.mktmpdir(nil, cache_path)
50
+ @path = Envandle.tmpdir(nil, cache_path)
51
51
  end
52
52
 
53
53
  attr_reader :path
@@ -2,9 +2,8 @@ module Envandle
2
2
  class GitBranchReference
3
3
  extend AsGitReference
4
4
 
5
- def initialize(context, group, name, url, ref)
5
+ def initialize(context, name, url, ref)
6
6
  @context = context
7
- @group = group
8
7
  @name = name
9
8
  @url = url
10
9
  @ref = ref
@@ -13,16 +12,16 @@ module Envandle
13
12
  def spec
14
13
  @spec ||= begin
15
14
  cache = @context.gemfile.gemspecs
16
- shas = Envandle.git_init(nil, @url) do |dir|
17
- Envandle.git_ls_remote_sha(dir, "refs/heads/#{@ref}")
15
+ shas = Envandle::GitUtil.init(nil, @url) do |dir|
16
+ Envandle::GitUtil.ls_remote_sha(dir, "refs/heads/#{@ref}")
18
17
  end
19
18
  sha = shas[0]
20
19
  cache_url = "#{@url}##{sha}"
21
20
  raise "Can't get a git commit. (url: #{@url}, branch: #{@ref})" unless sha
22
21
  dir = cache.find(cache_url) || begin
23
22
  reserve = cache.reserve
24
- Envandle.git_init reserve.path, @url
25
- sha = Envandle.git_pull(reserve.path, @ref, "master")
23
+ Envandle::GitUtil.init reserve.path, @url
24
+ sha = Envandle::GitUtil.pull(reserve.path, @ref, "master")
26
25
  reserve.url = cache_url
27
26
  reserve.save
28
27
  reserve.path
@@ -34,6 +33,7 @@ module Envandle
34
33
  def to_executable_argset(base)
35
34
  args = base.dup
36
35
  args.clear_reference
36
+ args.args[0] = @name
37
37
  args.options[:git] = @url
38
38
  args.options[:branch] = @ref
39
39
  Argset.new(:gem, *args.args_and_options)
@@ -0,0 +1,53 @@
1
+ module Envandle
2
+ module GitUtil
3
+ BIN = `which git`.chomp
4
+
5
+ def self.raise_if_no_git_installed
6
+ raise "No git installed." if BIN.empty?
7
+ end
8
+
9
+ def self.init(dir, url, &block)
10
+ unless dir
11
+ Envandle.tmpdir do |tmpdir|
12
+ init tmpdir, url, &block
13
+ end
14
+ else
15
+ raise_if_no_git_installed
16
+ Dir.chdir(dir) do
17
+ Envandle.sh "#{BIN} init"
18
+ Envandle.sh "#{BIN} remote add origin #{url}"
19
+ yield dir if block_given?
20
+ end
21
+ end
22
+ end
23
+
24
+ def self.ls_remote_sha(dir, q)
25
+ Dir.chdir(dir) do
26
+ data = Envandle.sh("#{BIN} ls-remote origin #{q}").chomp
27
+ data = if data.empty?
28
+ []
29
+ else
30
+ data.split("\n").map{|i| i.split(/\s+/)[0] }
31
+ end
32
+ if block_given?
33
+ yield data
34
+ else
35
+ data
36
+ end
37
+ end
38
+ end
39
+
40
+ def self.pull(dir, ref, branch)
41
+ Dir.chdir(dir) do
42
+ Envandle.sh "#{BIN} checkout -b #{branch}"
43
+ Envandle.sh "#{BIN} pull origin #{ref}:#{branch}"
44
+ sha = Envandle.sh("#{BIN} rev-parse HEAD").chomp
45
+ if block_given?
46
+ yield sha
47
+ else
48
+ sha
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
@@ -19,4 +19,15 @@ module Envandle
19
19
  name
20
20
  end
21
21
  end
22
+
23
+ def self.sh(cmd)
24
+ output, error, status = Open3.capture3(cmd)
25
+ raise "Command error: #{cmd}" unless status.success?
26
+ output
27
+ end
28
+
29
+ def self.tmpdir(*args, &block)
30
+ require "tmpdir"
31
+ Dir.mktmpdir *args, &block
32
+ end
22
33
  end
@@ -2,9 +2,8 @@ module Envandle
2
2
  class PathReference
3
3
  extend AsReference
4
4
 
5
- def initialize(context, group, name, path)
5
+ def initialize(context, name, path)
6
6
  @context = context
7
- @group = group
8
7
  @name = name
9
8
  @path = path
10
9
  end
@@ -16,6 +15,7 @@ module Envandle
16
15
  def to_executable_argset(base)
17
16
  args = base.dup
18
17
  args.clear_reference
18
+ args.args[0] = @name
19
19
  args.options[:path] = @path
20
20
  Argset.new(:gem, *args.args_and_options)
21
21
  end
@@ -4,12 +4,11 @@ module Envandle
4
4
  @context = context
5
5
  end
6
6
 
7
- def find(group, name)
8
- key = Envandle.reference_key(group, name)
9
- paths[key] ||
10
- git_branches[key] ||
11
- paths[name] ||
12
- git_branches[name]
7
+ def use(name)
8
+ if ref = all[name]
9
+ left.delete name
10
+ ref
11
+ end
13
12
  end
14
13
 
15
14
  def paths
@@ -20,23 +19,28 @@ module Envandle
20
19
  @git_branches ||= parse(:git, GitBranchReference, "ENVANDLE_GEM_GIT_BRANCH")
21
20
  end
22
21
 
22
+ def all
23
+ @all ||= git_branches.merge(paths)
24
+ end
25
+
26
+ def left
27
+ @left ||= all.dup
28
+ end
29
+
23
30
  def parse(key, klass, env)
24
31
  {}.tap do |h|
25
32
  (ENV[env].to_s).split(";").each do |i|
26
33
  if v = __send__("parse_#{key}", klass, env, i)
27
- h[v.key] = v if v
34
+ h[v.name] = v if v
28
35
  end
29
36
  end
30
37
  end
31
38
  end
32
39
 
33
- def parse_group_and_name(env, v)
34
- name, group = v.to_s.strip.split("@")
35
- name = name.to_s.strip
36
- group = group.to_s.strip if group
37
- raise "No gem name (#{env}): #{ENV[env]}" if name.empty?
38
- raise "No group name (#{env}): #{ENV[env]}" if group && group.empty?
39
- [group, name]
40
+ def parse_name(env, v)
41
+ v = v.to_s.strip
42
+ raise "No gem name (#{env}): #{ENV[env]}" if v.empty?
43
+ v
40
44
  end
41
45
 
42
46
  def parse_path(klass, env, v)
@@ -46,30 +50,30 @@ module Envandle
46
50
  name = a[0].to_s.strip
47
51
  path = a[1..-1].join(":").to_s.strip
48
52
  raise "No gem path (#{env}): #{ENV[env]}" if path.empty?
49
- klass.new(@context, *parse_group_and_name(env, name), path)
53
+ klass.new(@context, parse_name(env, name), path)
50
54
  end
51
55
 
52
56
  def parse_git(klass, env, v)
53
57
  v = v.to_s.strip
54
58
  return if v.empty?
55
59
  a = v.split(":")
56
- name = a[0].to_s.strip
60
+ name = a[0]
57
61
  path = a[1..-1].join(":").to_s.strip
58
62
  url_and_ref = path.split('#')
59
63
  url = url_and_ref[0].to_s.strip
60
64
  ref = url_and_ref[1].to_s.strip
61
65
  raise "No gem git url (#{env}): #{ENV[env]}" if url.empty?
62
66
  raise "No gem git ref/branch/tag (#{env}): #{ENV[env]}" if ref.empty?
63
- klass.new(@context, *parse_group_and_name(env, name), url, ref)
67
+ klass.new(@context, parse_name(env, name), url, ref)
64
68
  end
65
69
 
66
70
  def extract_executable_argsets(base, group, name, argsets, found = {})
67
71
  key = Envandle.reference_key(group, name)
68
72
  return true if found.key?(key)
69
73
  found[key] = true
70
- if ref = find(group, name)
74
+ if ref = use(name)
71
75
  ref.spec.runtime_dependencies.each do |i|
72
- if ref2 = find(nil, i.name)
76
+ if ref2 = use(i.name)
73
77
  extract_executable_argsets base, nil, i.name, argsets, found
74
78
  end
75
79
  end
@@ -1,3 +1,3 @@
1
1
  module Envandle
2
- VERSION = "0.2.0"
2
+ VERSION = "0.6.0"
3
3
  end
data/lib/envandle.rb CHANGED
@@ -1 +1,25 @@
1
+ autoload :FileUtils, "fileutils" unless Object::const_defined?(:FileUtils) && !Object::autoload?(:FileUtils)
2
+ autoload :Mutex, "thread" unless Object::const_defined?(:Mutex) && !Object::autoload?(:Mutex)
3
+ autoload :Open3, "open3" unless Object::const_defined?(:Open3) && !Object::autoload?(:Open3)
4
+ autoload :YAML, "yaml" unless Object::const_defined?(:YAML) && !Object::autoload?(:YAML)
5
+ require "envandle/version"
6
+ require "envandle/exceptions"
7
+ require "envandle/helper"
1
8
  require "envandle/binding"
9
+
10
+ module Envandle
11
+ autoload :Argset, "envandle/argset"
12
+ autoload :AsContext, "envandle/as_context"
13
+ autoload :AsDsl, "envandle/as_dsl"
14
+ autoload :AsGitReference, "envandle/as_git_reference"
15
+ autoload :AsReference, "envandle/as_reference"
16
+ autoload :Element, "envandle/element"
17
+ autoload :Elements, "envandle/elements"
18
+ autoload :GemspecCache, "envandle/gemspec_cache"
19
+ autoload :Gemspec, "envandle/gemspec"
20
+ autoload :GitBranchReference, "envandle/git_branch_reference"
21
+ autoload :GitUtil, "envandle/git_util"
22
+ autoload :Location, "envandle/location"
23
+ autoload :PathReference, "envandle/path_reference"
24
+ autoload :ReferenceCache, "envandle/reference_cache"
25
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: envandle
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - mosop
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-01-15 00:00:00.000000000 Z
11
+ date: 2017-01-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -54,7 +54,8 @@ dependencies:
54
54
  version: '3.5'
55
55
  description:
56
56
  email:
57
- executables: []
57
+ executables:
58
+ - install-envandle
58
59
  extensions: []
59
60
  extra_rdoc_files: []
60
61
  files:
@@ -67,6 +68,7 @@ files:
67
68
  - bin/console
68
69
  - bin/setup
69
70
  - envandle.gemspec
71
+ - exe/install-envandle
70
72
  - lib/envandle.rb
71
73
  - lib/envandle/argset.rb
72
74
  - lib/envandle/as_context.rb
@@ -74,28 +76,30 @@ files:
74
76
  - lib/envandle/as_git_reference.rb
75
77
  - lib/envandle/as_reference.rb
76
78
  - lib/envandle/binding.rb
79
+ - lib/envandle/element.rb
77
80
  - lib/envandle/elements.rb
78
- - lib/envandle/elements/element.rb
79
81
  - lib/envandle/elements/gem.rb
82
+ - lib/envandle/elements/gem_block.rb
80
83
  - lib/envandle/elements/gemfile.rb
81
84
  - lib/envandle/elements/gemspec.rb
85
+ - lib/envandle/elements/gemspec_block.rb
86
+ - lib/envandle/elements/git_source.rb
82
87
  - lib/envandle/elements/git_source_block.rb
88
+ - lib/envandle/elements/group.rb
83
89
  - lib/envandle/elements/group_block.rb
84
90
  - lib/envandle/elements/illegal_element.rb
85
- - lib/envandle/elements/illegals_and_unsupporteds.rb
86
91
  - lib/envandle/elements/source.rb
92
+ - lib/envandle/elements/source_block.rb
87
93
  - lib/envandle/elements/unsupported_element.rb
88
94
  - lib/envandle/exceptions.rb
89
95
  - lib/envandle/gemspec.rb
90
96
  - lib/envandle/gemspec_cache.rb
91
- - lib/envandle/git.rb
92
97
  - lib/envandle/git_branch_reference.rb
98
+ - lib/envandle/git_util.rb
93
99
  - lib/envandle/helper.rb
94
- - lib/envandle/lib.rb
95
100
  - lib/envandle/location.rb
96
101
  - lib/envandle/path_reference.rb
97
102
  - lib/envandle/reference_cache.rb
98
- - lib/envandle/shell.rb
99
103
  - lib/envandle/version.rb
100
104
  homepage: https://github.com/mosop/envandle
101
105
  licenses: []
@@ -1,31 +0,0 @@
1
- module Envandle
2
- class GemBlock < IllegalElement
3
- def type
4
- "gem with block"
5
- end
6
- end
7
-
8
- class GemspecBlock < IllegalElement
9
- def type
10
- "gemspec with block"
11
- end
12
- end
13
-
14
- class GitSource < IllegalElement
15
- def type
16
- "git_source without block"
17
- end
18
- end
19
-
20
- class Group < IllegalElement
21
- def type
22
- "group without block"
23
- end
24
- end
25
-
26
- class SourceBlock < UnsupportedElement
27
- def type
28
- "source with block"
29
- end
30
- end
31
- end
data/lib/envandle/git.rb DELETED
@@ -1,51 +0,0 @@
1
- module Envandle
2
- GIT_BIN = `which git`.chomp
3
-
4
- def self.raise_if_no_git_installed
5
- raise "No git installed." if GIT_BIN.empty?
6
- end
7
-
8
- def self.git_init(dir, url, &block)
9
- unless dir
10
- Dir.mktmpdir do |tmpdir|
11
- git_init tmpdir, url, &block
12
- end
13
- else
14
- raise_if_no_git_installed
15
- Dir.chdir(dir) do
16
- sh "#{GIT_BIN} init"
17
- sh "#{GIT_BIN} remote add origin #{url}"
18
- yield dir if block_given?
19
- end
20
- end
21
- end
22
-
23
- def self.git_ls_remote_sha(dir, q)
24
- Dir.chdir(dir) do
25
- data = sh("#{GIT_BIN} ls-remote origin #{q}").chomp
26
- data = if data.empty?
27
- []
28
- else
29
- data.split("\n").map{|i| i.split(/\s+/)[0] }
30
- end
31
- if block_given?
32
- yield data
33
- else
34
- data
35
- end
36
- end
37
- end
38
-
39
- def self.git_pull(dir, ref, branch)
40
- Dir.chdir(dir) do
41
- sh "#{GIT_BIN} checkout -b #{branch}"
42
- sh "#{GIT_BIN} pull origin #{ref}:#{branch}"
43
- sha = sh("#{GIT_BIN} rev-parse HEAD").chomp
44
- if block_given?
45
- yield sha
46
- else
47
- sha
48
- end
49
- end
50
- end
51
- end
data/lib/envandle/lib.rb DELETED
@@ -1,21 +0,0 @@
1
- require "open3"
2
- require "thread"
3
- require "tmpdir"
4
- require "yaml"
5
- require "envandle/version"
6
- require "envandle/helper"
7
- require "envandle/exceptions"
8
- require "envandle/as_context"
9
- require "envandle/as_dsl"
10
- require "envandle/as_git_reference"
11
- require "envandle/as_reference"
12
- require "envandle/argset"
13
- require "envandle/elements"
14
- require "envandle/location"
15
- require "envandle/gemspec"
16
- require "envandle/gemspec_cache"
17
- require "envandle/git"
18
- require "envandle/git_branch_reference"
19
- require "envandle/path_reference"
20
- require "envandle/shell"
21
- require "envandle/reference_cache"
@@ -1,8 +0,0 @@
1
- module Envandle
2
- def self.sh(cmd)
3
- # output, status = Open3.capture2(cmd)
4
- output, error, status = Open3.capture3(cmd)
5
- raise "Command error: #{cmd}" unless status.success?
6
- output
7
- end
8
- end