computer 0.0.1 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +1 -1
- data/Manifest.txt +4 -0
- data/README.md +3 -3
- data/Rakefile +2 -2
- data/lib/computer.rb +29 -3
- data/lib/computer/shell.rb +57 -0
- data/lib/computer/version.rb +21 -0
- data/test/helper.rb +9 -0
- data/test/test_shell.rb +33 -0
- metadata +8 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5607ed6cb5688ad020b7c5f3908e12f88a828084
|
4
|
+
data.tar.gz: 2746b122b2e927f729b26d28af7b27bc7729a13b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 53be4c3d03aaf38bda90fbb482c4862be247e037503a3ef35e72ed8b767d43de52cd605831fb161a8374d22eaa41c66057814a99142aa7f0ab2ed470d46191b1
|
7
|
+
data.tar.gz: 8ea309ab1de096aafb509f6722031dd87172f572ba491cf64f7424cb99e08dc6abf33f27e8366fced3a18271a6e71347631dda408a7f06c00e351a3521c0ea97
|
data/CHANGELOG.md
CHANGED
data/Manifest.txt
CHANGED
data/README.md
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
# computer
|
2
2
|
|
3
|
-
computer gem
|
3
|
+
computer gem - shell command line helper / wrapper 'n' more for your computer
|
4
4
|
|
5
5
|
* home :: [github.com/rubycoco/git](https://github.com/rubycoco/git)
|
6
6
|
* bugs :: [github.com/rubycoco/git/issues](https://github.com/rubycoco/git/issues)
|
7
|
-
* gem :: [rubygems.org/gems/
|
8
|
-
* rdoc :: [rubydoc.info/gems/
|
7
|
+
* gem :: [rubygems.org/gems/computer](https://rubygems.org/gems/computer)
|
8
|
+
* rdoc :: [rubydoc.info/gems/computer](http://rubydoc.info/gems/computer)
|
9
9
|
|
10
10
|
|
11
11
|
|
data/Rakefile
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
require 'hoe'
|
2
|
-
require './lib/computer.rb'
|
2
|
+
require './lib/computer/version.rb'
|
3
3
|
|
4
4
|
Hoe.spec 'computer' do
|
5
5
|
|
6
6
|
self.version = Computer::VERSION
|
7
7
|
|
8
|
-
self.summary = "computer gem
|
8
|
+
self.summary = "computer gem - shell command line helper / wrapper 'n' more for your computer"
|
9
9
|
self.description = summary
|
10
10
|
|
11
11
|
self.urls = { home: 'https://github.com/rubycoco/git' }
|
data/lib/computer.rb
CHANGED
@@ -1,4 +1,30 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
1
|
+
require 'pp'
|
2
|
+
require 'time'
|
3
|
+
require 'date' ## e.g. Date.today etc.
|
4
|
+
require 'yaml'
|
5
|
+
require 'json'
|
6
|
+
require 'uri'
|
7
|
+
require 'net/http'
|
8
|
+
require "net/https"
|
9
|
+
require 'open3'
|
10
|
+
require 'fileutils' ## e.g. FileUtils.mkdir_p etc.
|
4
11
|
|
12
|
+
##########################
|
13
|
+
# more defaults ("prolog/prelude") always pre-loaded
|
14
|
+
require 'optparse'
|
15
|
+
|
16
|
+
|
17
|
+
#####################
|
18
|
+
# our own code
|
19
|
+
require 'computer/version' # note: let version always go first
|
20
|
+
require 'computer/shell'
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
######################
|
25
|
+
# add convenience shortcuts - why? why not?
|
26
|
+
Compu = Computer
|
27
|
+
|
28
|
+
|
29
|
+
# say hello
|
30
|
+
puts Computer.banner
|
@@ -0,0 +1,57 @@
|
|
1
|
+
module Computer
|
2
|
+
|
3
|
+
|
4
|
+
## raised / thrown by Shell.run if exit status non-zero
|
5
|
+
## todo/check: (re)use an already existing error - why? why not?
|
6
|
+
class ShellError < StandardError
|
7
|
+
end
|
8
|
+
|
9
|
+
|
10
|
+
###
|
11
|
+
# use nested class for "base" for running commands - why? why not?
|
12
|
+
class Shell
|
13
|
+
|
14
|
+
## use call for the "to-the-metal" command execution
|
15
|
+
def self.call( cmd )
|
16
|
+
stdout, stderr, status = Open3.capture3( cmd )
|
17
|
+
[stdout, stderr, status]
|
18
|
+
end
|
19
|
+
|
20
|
+
|
21
|
+
## use run for "porcelain / high-level" command execution
|
22
|
+
def self.run( cmd )
|
23
|
+
## add pwd (print working directory to output?) - why? why not?
|
24
|
+
print "---> (shell run) >#{cmd}<..."
|
25
|
+
stdout, stderr, status = Open3.capture3( cmd )
|
26
|
+
|
27
|
+
## todo: add colors (red, green) - why? why not?
|
28
|
+
if status.success?
|
29
|
+
print " OK" ## todo/check: use OK (0) - why? why not?
|
30
|
+
print "\n"
|
31
|
+
else
|
32
|
+
print " FAIL (#{status.exitstatus})"
|
33
|
+
print "\n"
|
34
|
+
end
|
35
|
+
|
36
|
+
unless stdout.empty?
|
37
|
+
puts stdout
|
38
|
+
end
|
39
|
+
|
40
|
+
unless stderr.empty?
|
41
|
+
## todo/check: or use >2: or &2: or such
|
42
|
+
## stderr output not always an error (that is, exit status might be 0)
|
43
|
+
STDERR.puts "2>"
|
44
|
+
STDERR.puts stderr
|
45
|
+
end
|
46
|
+
|
47
|
+
if status.success?
|
48
|
+
stdout # return stdout string
|
49
|
+
else
|
50
|
+
STDERR.puts "!! ERROR: Shell.run >#{cmd}< failed with exit status #{status.exitstatus}:"
|
51
|
+
STDERR.puts stderr
|
52
|
+
|
53
|
+
raise ShellError, "Shell.run >#{cmd}< failed with exit status #{status.exitstatus}<: #{stderr}"
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end # class Shell
|
57
|
+
end # module Computer
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Computer
|
2
|
+
|
3
|
+
MAJOR = 0 ## todo: namespace inside version or something - why? why not??
|
4
|
+
MINOR = 1
|
5
|
+
PATCH = 0
|
6
|
+
VERSION = [MAJOR,MINOR,PATCH].join('.')
|
7
|
+
|
8
|
+
def self.version
|
9
|
+
VERSION
|
10
|
+
end
|
11
|
+
|
12
|
+
def self.banner
|
13
|
+
"computer/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}]"
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.root
|
17
|
+
File.expand_path( File.dirname(File.dirname(File.dirname(__FILE__))) )
|
18
|
+
end
|
19
|
+
|
20
|
+
end # module Computer
|
21
|
+
|
data/test/helper.rb
ADDED
data/test/test_shell.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
###
|
2
|
+
# to run use
|
3
|
+
# ruby -I ./lib -I ./test test/test_shell.rb
|
4
|
+
|
5
|
+
require 'helper'
|
6
|
+
|
7
|
+
class TestShell < MiniTest::Test
|
8
|
+
|
9
|
+
Shell = Computer::Shell
|
10
|
+
|
11
|
+
def test_run
|
12
|
+
Shell.run( 'git config user.name' )
|
13
|
+
Shell.run( 'git config --show-origin user.name' )
|
14
|
+
# Shell.run( 'git config xxxx' )
|
15
|
+
# Shell.run( 'xxxx' )
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_call
|
19
|
+
stdout1, stderr1, status1 = Shell.call( 'git config user.name' )
|
20
|
+
stdout2, stderr2, status2 = Shell.call( 'git config --show-origin user.name' )
|
21
|
+
# stdout3, stderr3, status3 = Shell.call( 'xxxx' )
|
22
|
+
|
23
|
+
pp stdout1
|
24
|
+
pp stderr1
|
25
|
+
pp status1
|
26
|
+
puts "---"
|
27
|
+
pp stdout2
|
28
|
+
pp stderr2
|
29
|
+
pp status2
|
30
|
+
end
|
31
|
+
|
32
|
+
end # class TestShell
|
33
|
+
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: computer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gerald Bauer
|
@@ -44,7 +44,8 @@ dependencies:
|
|
44
44
|
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '3.22'
|
47
|
-
description: computer gem
|
47
|
+
description: computer gem - shell command line helper / wrapper 'n' more for your
|
48
|
+
computer
|
48
49
|
email: ruby-talk@ruby-lang.org
|
49
50
|
executables: []
|
50
51
|
extensions: []
|
@@ -58,6 +59,10 @@ files:
|
|
58
59
|
- README.md
|
59
60
|
- Rakefile
|
60
61
|
- lib/computer.rb
|
62
|
+
- lib/computer/shell.rb
|
63
|
+
- lib/computer/version.rb
|
64
|
+
- test/helper.rb
|
65
|
+
- test/test_shell.rb
|
61
66
|
homepage: https://github.com/rubycoco/git
|
62
67
|
licenses:
|
63
68
|
- Public Domain
|
@@ -83,5 +88,5 @@ rubyforge_project:
|
|
83
88
|
rubygems_version: 2.5.2
|
84
89
|
signing_key:
|
85
90
|
specification_version: 4
|
86
|
-
summary: computer gem
|
91
|
+
summary: computer gem - shell command line helper / wrapper 'n' more for your computer
|
87
92
|
test_files: []
|