abstract_command 0.0.6 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/abstract_command.rb +37 -6
- metadata +5 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9ba889bea5d22de45ed1a51494769807bc332b09cda2db7548eb375f5b5c7d4d
|
4
|
+
data.tar.gz: 138147f976e27b00925e9fe5627ff895400931b6924dc64473880ba81a53e937
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8e121b83d22e0ccd997dd0ca53e0f25c68a6466dc2e2e16cca2fa8ef1bdfbd70bb453149ab4476d82bff9472c5dfaff9fcd1bbaa97b59026ed2d33767d09a2b9
|
7
|
+
data.tar.gz: 6325953eb38c30498e6d5af206191bcdef03228959936d673fb9c4e0c6681c20733055e9141aacb7e80768c88c5f10e20ce9db15a39b514da55d4321f3bd7f8c
|
data/lib/abstract_command.rb
CHANGED
@@ -4,18 +4,41 @@ require 'shellwords'
|
|
4
4
|
# Shell Command Abstraction.
|
5
5
|
#
|
6
6
|
# Hides away all the details to generate a command.
|
7
|
-
# And
|
7
|
+
# And provides an easy interface to interact with shell commands as if
|
8
8
|
# they were objects.
|
9
9
|
#
|
10
10
|
# This is good for the following reasons:
|
11
11
|
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
12
|
+
# - Enforces standardization.
|
13
|
+
# - Enforces separation of command definition and consumption.
|
14
|
+
# - Enforces configuration over code.
|
15
|
+
# - Enforces configuration over refactoring.
|
16
|
+
# - Enforces simple shell-command definition.
|
17
|
+
# - Enforces automatic sanitization of variables that get interpolated.
|
18
|
+
# - Provides a simple Object Oriented Interface.
|
19
|
+
# - Provides a scope for variables that belong to the command.
|
20
|
+
# - Provides getters and setter for every interpolation in command.
|
21
|
+
# - Provides a neat interface that plugs to data structures transparently.
|
22
|
+
# - Avoids methods with many arguments.
|
23
|
+
# - Avoids changes in the standared libarary: system, backtick, etc.
|
24
|
+
#
|
17
25
|
class AbstractCommand
|
18
26
|
|
27
|
+
# before ruby 1.9.1 the format method does not support
|
28
|
+
# the syntax we want, so we have a simplified version of
|
29
|
+
# format for older versions of ruby.
|
30
|
+
# its placed in the AbstractCommand class because we want
|
31
|
+
# to avoid possible collisions for people requiring our code.
|
32
|
+
# It can live on a better place though..
|
33
|
+
class Formatter
|
34
|
+
REGEXP = /(%<)(\S+)(>\w)/
|
35
|
+
def self.format(template, params)
|
36
|
+
template.gsub(REGEXP) do
|
37
|
+
params[$2.to_sym]
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
19
42
|
# '%<name>s'.scan(/(%<)(\w+)(>)/)
|
20
43
|
# => [["%<", "name", ">"]]
|
21
44
|
VARIABLE_REGEX = /(%<)(\w+)(>)/
|
@@ -51,6 +74,14 @@ class AbstractCommand
|
|
51
74
|
format(template, bindings)
|
52
75
|
end
|
53
76
|
|
77
|
+
def format(template, bindings)
|
78
|
+
if RUBY_VERSION <= '1.9.1'
|
79
|
+
Formatter.format(template, bindings)
|
80
|
+
else
|
81
|
+
super(template, bindings)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
54
85
|
def system
|
55
86
|
super(to_s)
|
56
87
|
end
|
metadata
CHANGED
@@ -1,11 +1,11 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: abstract_command
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kazuyoshi Tlacaelel
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
date: 2018-10-22 00:00:00.000000000 Z
|
@@ -21,7 +21,7 @@ homepage: http://rubygems.org/gems/abstract_command
|
|
21
21
|
licenses:
|
22
22
|
- MIT
|
23
23
|
metadata: {}
|
24
|
-
post_install_message:
|
24
|
+
post_install_message:
|
25
25
|
rdoc_options: []
|
26
26
|
require_paths:
|
27
27
|
- lib
|
@@ -36,9 +36,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
36
36
|
- !ruby/object:Gem::Version
|
37
37
|
version: '0'
|
38
38
|
requirements: []
|
39
|
-
|
40
|
-
|
41
|
-
signing_key:
|
39
|
+
rubygems_version: 3.3.7
|
40
|
+
signing_key:
|
42
41
|
specification_version: 4
|
43
42
|
summary: Shell Command Abstraction
|
44
43
|
test_files: []
|