run-command 0.1 → 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
  SHA256:
3
- metadata.gz: a98764c775cf0417c45f4d2b652263d792aefc30624759f7cccef5d114d43490
4
- data.tar.gz: 07ea9656757fb971759ce719df8229820956ca691030353e1bd8ff031cb9347d
3
+ metadata.gz: a97d559632d69814b3d64b79c0dab60d63bab697dcd39c74c53e546d7c0a2570
4
+ data.tar.gz: a62840eddfbc10e49930576852813d72724b45371738e1f56ea07b785d634bff
5
5
  SHA512:
6
- metadata.gz: 959caa28c1446bae0a6b909f93a3dedeb481c11de97c43329f9f9eb2dd93740fa3ac3f8faf5e7e9a9ff91aa13dcc0dd493ee475d3f007690a261ad864d8d0f5c
7
- data.tar.gz: 47633e6c3484daf8ebdb0318bc1367c9dce62ee1a0f694603c2e9d0366c424a6176469d36cfb16900f2e63153c1871e932aad9267e88e80760cf34a091511d88
6
+ metadata.gz: 44649150f3cd9f2f7ba7a3e1d6ec4d6ac198ab3601ebca29c070107c209a171949464ea52f50107ae93e22cbc70954e6c67d2b274cb63244d9e29f05a104083e
7
+ data.tar.gz: 8b2f7156eff5e19ba84ce7a85edce15edc82735c4bcee71e2f2eb1f7b1f3704adeaf8d61af1ffae9b1fe941e959ed35cf16f932feaf3deeda30a035d7fed4d4d
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/Gemfile.lock ADDED
@@ -0,0 +1,27 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ run-command (0.4)
5
+
6
+ GEM
7
+ remote: https://rubygems.org/
8
+ specs:
9
+ minitest (5.14.4)
10
+ minitest-power_assert (0.3.1)
11
+ minitest
12
+ power_assert (>= 1.1)
13
+ power_assert (2.0.0)
14
+ rake (13.0.3)
15
+
16
+ PLATFORMS
17
+ arm64-darwin-20
18
+
19
+ DEPENDENCIES
20
+ bundler (~> 2.2)
21
+ minitest (~> 5.14)
22
+ minitest-power_assert (~> 0.3)
23
+ rake (~> 13.0)
24
+ run-command!
25
+
26
+ BUNDLED WITH
27
+ 2.2.20
data/Rakefile CHANGED
@@ -1,3 +1,9 @@
1
- require 'rubygems/tasks'
1
+ require 'bundler/gem_tasks'
2
+ Bundler.require
3
+ require 'rake/testtask'
2
4
 
3
- Gem::Tasks.new
5
+ Rake::TestTask.new do |t|
6
+ t.test_files = FileList['test/test.rb']
7
+ end
8
+
9
+ task :default => :test
data/lib/run-command.rb CHANGED
@@ -1,22 +1,17 @@
1
1
  require 'shellwords'
2
2
 
3
- class RunCommand
3
+ module Kernel
4
4
 
5
- class Error < Exception; end
5
+ class RunCommandFailed < Exception; end
6
6
 
7
- def self.run_command(command, *args)
8
- new.run_command(command, *args)
9
- end
10
-
11
- def run_command(command, *args)
12
- command = command.to_s
13
- options = args.last.kind_of?(Hash) ? args.pop.dup : {}
14
- options[:exception] = true
7
+ def run_command(*args, **options)
8
+ command = args.shift
15
9
  args = args.flatten.compact.map(&:to_s)
16
10
  env = options.delete(:env) || {}
17
11
  verbose = options.delete(:verbose) || false
18
12
  pretend = options.delete(:pretend) || false
19
13
  argv0 = options.delete(:argv0)
14
+ input = options.delete(:input)
20
15
  if verbose
21
16
  warn "$ %s%s" % [
22
17
  env.empty? ? nil : env.map { |kv| kv.join('=') }.join(' ') + ' ',
@@ -24,22 +19,14 @@ class RunCommand
24
19
  ]
25
20
  end
26
21
  unless pretend
27
- data = ''
28
- IO.popen(env, [argv0 ? [command, argv0] : command, *args], 'r', options) do |io|
29
- data += io.read
22
+ output = IO.popen(env, [argv0 ? [command, argv0] : command, *args], 'r+', options) do |io|
23
+ io.write(input.to_s) if input
24
+ io.close_write
25
+ io.read
30
26
  end
31
- data
27
+ raise RunCommandFailed, "Command #{command.to_s.inspect} failed: #{$?}" if $? != 0
28
+ output
32
29
  end
33
30
  end
34
31
 
35
- end
36
-
37
- if $0 == __FILE__
38
-
39
- RunCommand.run_command('echo', %w{a b}, verbose: true)
40
- RunCommand.run_command('echo', %w{a b}, verbose: true, env: { 'FOO' => 'bar' })
41
- RunCommand.run_command('echo', %w{a b}, verbose: true, env: { 'FOO' => 'bar' }, argv0: 'DATE')
42
- RunCommand.run_command('echo', %w{a b}, verbose: true, pretend: true)
43
- RunCommand.run_command('echo', ['a', 'b', [1, :foo]], verbose: true)
44
-
45
32
  end
data/run-command.gemspec CHANGED
@@ -1,13 +1,11 @@
1
- require_relative 'lib/run-command/version'
2
-
3
1
  Gem::Specification.new do |s|
4
2
  s.name = 'run-command'
5
- s.version = RunCommand::VERSION
3
+ s.version = '0.4'
6
4
  s.summary = 'A friendlier system().'
7
5
  s.author = 'John Labovitz'
8
6
  s.email = 'johnl@johnlabovitz.com'
9
7
  s.description = %q{
10
- RunCommand provides a friendlier system().
8
+ A friendlier system().
11
9
  }
12
10
  s.license = 'MIT'
13
11
  s.homepage = 'http://github.com/jslabovitz/run-command'
@@ -16,6 +14,8 @@ Gem::Specification.new do |s|
16
14
  s.executables = `git ls-files -- bin/*`.split("\n").map { |f| File.basename(f) }
17
15
  s.require_path = 'lib'
18
16
 
19
- s.add_development_dependency 'rake', '~> 12.3'
20
- s.add_development_dependency 'rubygems-tasks', '~> 0.2'
17
+ s.add_development_dependency 'bundler', '~> 2.2'
18
+ s.add_development_dependency 'minitest', '~> 5.14'
19
+ s.add_development_dependency 'minitest-power_assert', '~> 0.3'
20
+ s.add_development_dependency 'rake', '~> 13.0'
21
21
  end
data/test/test.rb ADDED
@@ -0,0 +1,38 @@
1
+ require 'minitest/autorun'
2
+ require 'minitest/power_assert'
3
+
4
+ require 'run-command'
5
+
6
+ class Test < MiniTest::Test
7
+
8
+ def test_simple
9
+ assert_output {
10
+ run_command('echo', %w{a b}, verbose: true)
11
+ }
12
+ end
13
+
14
+ def test_env
15
+ assert_output {
16
+ run_command('echo', %w{a b}, verbose: true, env: { 'FOO' => 'bar' })
17
+ }
18
+ end
19
+
20
+ def test_env_argv0
21
+ assert_output {
22
+ run_command('echo', %w{a b}, verbose: true, env: { 'FOO' => 'bar' }, argv0: 'DATE')
23
+ }
24
+ end
25
+
26
+ def test_pretend
27
+ assert_output {
28
+ run_command('echo', %w{a b}, verbose: true, pretend: true)
29
+ }
30
+ end
31
+
32
+ def test_varied_args
33
+ assert_output {
34
+ run_command('echo', ['a', 'b', [1, :foo]], verbose: true)
35
+ }
36
+ end
37
+
38
+ end
metadata CHANGED
@@ -1,55 +1,85 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: run-command
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.1'
4
+ version: '0.4'
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Labovitz
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-12-31 00:00:00.000000000 Z
11
+ date: 2021-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: rake
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.2'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.2'
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
31
  - - "~>"
18
32
  - !ruby/object:Gem::Version
19
- version: '12.3'
33
+ version: '5.14'
20
34
  type: :development
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
38
  - - "~>"
25
39
  - !ruby/object:Gem::Version
26
- version: '12.3'
40
+ version: '5.14'
27
41
  - !ruby/object:Gem::Dependency
28
- name: rubygems-tasks
42
+ name: minitest-power_assert
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '0.3'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '0.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
29
57
  requirement: !ruby/object:Gem::Requirement
30
58
  requirements:
31
59
  - - "~>"
32
60
  - !ruby/object:Gem::Version
33
- version: '0.2'
61
+ version: '13.0'
34
62
  type: :development
35
63
  prerelease: false
36
64
  version_requirements: !ruby/object:Gem::Requirement
37
65
  requirements:
38
66
  - - "~>"
39
67
  - !ruby/object:Gem::Version
40
- version: '0.2'
41
- description: "\n RunCommand provides a friendlier system().\n "
68
+ version: '13.0'
69
+ description: "\n A friendlier system().\n "
42
70
  email: johnl@johnlabovitz.com
43
71
  executables: []
44
72
  extensions: []
45
73
  extra_rdoc_files: []
46
74
  files:
47
75
  - ".gitignore"
76
+ - Gemfile
77
+ - Gemfile.lock
48
78
  - README.md
49
79
  - Rakefile
50
80
  - lib/run-command.rb
51
- - lib/run-command/version.rb
52
81
  - run-command.gemspec
82
+ - test/test.rb
53
83
  homepage: http://github.com/jslabovitz/run-command
54
84
  licenses:
55
85
  - MIT
@@ -69,8 +99,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
69
99
  - !ruby/object:Gem::Version
70
100
  version: '0'
71
101
  requirements: []
72
- rubygems_version: 3.2.3
102
+ rubygems_version: 3.2.20
73
103
  signing_key:
74
104
  specification_version: 4
75
105
  summary: A friendlier system().
76
- test_files: []
106
+ test_files:
107
+ - test/test.rb
@@ -1,5 +0,0 @@
1
- class RunCommand
2
-
3
- VERSION = '0.1'
4
-
5
- end