computer 0.0.1 → 0.1.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 +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: []
|