mysh 0.1.9 → 0.1.11
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/README.md +132 -24
- data/lib/mysh.rb +2 -1
- data/lib/mysh/commands/cd.rb +7 -5
- data/lib/mysh/commands/exit.rb +2 -2
- data/lib/mysh/commands/help.rb +7 -10
- data/lib/mysh/commands/help_head.txt +8 -0
- data/lib/mysh/commands/help_math.txt +8 -3
- data/lib/mysh/commands/help_ruby.txt +10 -9
- data/lib/mysh/commands/help_tail.txt +20 -0
- data/lib/mysh/commands/history.rb +2 -2
- data/lib/mysh/expression.rb +19 -22
- data/lib/mysh/internal.rb +6 -5
- data/lib/mysh/ruby.rb +4 -7
- data/lib/mysh/{internal → support}/decorate.rb +1 -1
- data/lib/mysh/support/format.rb +41 -0
- data/lib/mysh/{internal/instance.rb → support/frame.rb} +2 -4
- data/lib/mysh/{internal/klass.rb → support/manage.rb} +3 -8
- data/lib/mysh/{internal → support}/parse.rb +1 -1
- data/lib/mysh/version.rb +1 -1
- data/mysh.gemspec +1 -0
- metadata +23 -8
- data/lib/mysh/commands/help.txt +0 -17
- data/lib/mysh/commands/help_internal.txt +0 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 78a7e5a670f53f7cdfb9ede87c31216f1e596a20
|
4
|
+
data.tar.gz: 2c2a24ad4aebe2b5c430d647dacccd6cb1b046d7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3678b1a241def34b14cc123e19bba3ac080d7b0d95e2f7de3d92dacdda96106df6adae9b1b8fc73d0aea7b840638020f1e9a29225edb3d9833c6abfc70bdc010
|
7
|
+
data.tar.gz: 56666cd89ba7ea004e2ff507e29f8401c35704b80028eec2e199e074f836f5b225430f665f3d3d20f25ad1f7c075bfaf9518ab8761c9efc0caf722467d34bb3e
|
data/README.md
CHANGED
@@ -47,44 +47,83 @@ This prompt can be used to execute three sorts of commands:
|
|
47
47
|
|
48
48
|
* Internal commands that are processed directly by mysh
|
49
49
|
* Ruby expressions, which are preceded by the equal (=) sign.
|
50
|
-
* External commands that are passed on to the standard command shell
|
50
|
+
* External commands that are passed on to the standard command shell or the
|
51
|
+
Ruby interpreter.
|
51
52
|
|
52
53
|
From the mysh help:
|
53
54
|
|
54
55
|
mysh> ?
|
55
|
-
mysh (MY SHell) version: 0.1.
|
56
|
+
mysh (MY ruby SHell) version: 0.1.11
|
56
57
|
|
57
|
-
Internal mysh commands:
|
58
|
+
1) Internal mysh commands:
|
58
59
|
- executed by mysh directly.
|
59
|
-
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
?
|
66
|
-
cd <dir>
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
60
|
+
- supports the following set of commands.
|
61
|
+
|
62
|
+
Internal Commands
|
63
|
+
===================
|
64
|
+
|
65
|
+
! Display the mysh command history.
|
66
|
+
? Display help information for mysh.
|
67
|
+
cd <dir> Change directory to the optional <dir> parameter.
|
68
|
+
Then display the current working directory.
|
69
|
+
exit Exit mysh.
|
70
|
+
help Display help information for mysh.
|
71
|
+
history Display the mysh command history.
|
72
|
+
pwd Display the current working directory.
|
73
|
+
quit Exit mysh.
|
74
|
+
|
75
|
+
2) Ruby Expression support:
|
76
|
+
- any line beginning with an equals "=" sign will be evaluated as a Ruby
|
77
|
+
expression. This allows the mysh command line to serve as a programming,
|
78
|
+
debugging and super-calculator environment.
|
79
|
+
- for more info use the 'help ruby' command.
|
80
|
+
|
81
|
+
3) Math support:
|
74
82
|
- the execution environment includes the Math module.
|
75
|
-
- for more info use the help math command.
|
83
|
+
- for more info use the 'help math' command.
|
76
84
|
|
77
|
-
External commands:
|
85
|
+
4) External commands:
|
78
86
|
- executed by the system using the standard shell.
|
79
|
-
- use
|
87
|
+
- to force the use of the external shell, add a leading space to the command.
|
88
|
+
|
89
|
+
Note: If the command has a '.rb' extension it is executed by Ruby.
|
90
|
+
So the command "myfile.rb" is executed as "ruby myfile.rb"
|
91
|
+
|
92
|
+
and
|
93
|
+
|
94
|
+
mysh> ? ruby
|
95
|
+
mysh (MY ruby SHell) version: 0.1.11
|
96
|
+
|
97
|
+
mysh Ruby expression support summary
|
98
|
+
|
99
|
+
- All command lines that begin with an equals "=" sign are evaluated as Ruby
|
100
|
+
expressions.
|
101
|
+
- Expressions ending with a backslash character "\" are continued on the next
|
102
|
+
line. The prompt changes to "mysh\" to indicate that this is going on.
|
103
|
+
- The results are displayed using the pretty-print facility.
|
104
|
+
- Auto-complete always places any file names in quotes so they can be used
|
105
|
+
as string parameters.
|
106
|
+
|
107
|
+
A few noteworthy methods exist that facilitate use of Ruby expressions:
|
108
|
+
|
109
|
+
reset Reset the execution environment to the default state.
|
110
|
+
result Returns the result of the previous expression.
|
111
|
+
vls <mask> List modules with version info. The optional mask string value
|
112
|
+
is used to filter for modules containing that string.
|
80
113
|
|
81
114
|
and
|
82
115
|
|
83
116
|
mysh> ? math
|
84
|
-
mysh (MY SHell) version: 0.1.
|
117
|
+
mysh (MY ruby SHell) version: 0.1.11
|
85
118
|
|
86
119
|
mysh Math support summary
|
87
120
|
|
121
|
+
The Ruby expression execution environment has direct access to many advanced
|
122
|
+
Math functions. For example, to compute the cosine of 3.141592653589793 use:
|
123
|
+
|
124
|
+
mysh> =cos(PI)
|
125
|
+
-1.0
|
126
|
+
|
88
127
|
Method Returns Description
|
89
128
|
======= ======= ================================================
|
90
129
|
acos(x) Float Computes the arc cosine of x. Returns 0..PI.
|
@@ -110,8 +149,8 @@ and
|
|
110
149
|
ldexp(f,e) Float Returns the value of f*(2**e).
|
111
150
|
lgamma(x) Array Returns a two-element array containing the log of the
|
112
151
|
gamma of x and the sign of gamma of x.
|
113
|
-
log(x) Float Computes the natural log of
|
114
|
-
log(x,B) Float Computes the base B log of
|
152
|
+
log(x) Float Computes the natural log of x.
|
153
|
+
log(x,B) Float Computes the base B log of x.
|
115
154
|
log10(x) Float Returns the base 10 logarithm of x.
|
116
155
|
log2(x) Float Returns the base 2 logarithm of x.
|
117
156
|
sin(x) Float Computes the sine of x (expressed in radians).
|
@@ -121,6 +160,8 @@ and
|
|
121
160
|
tan(x) Float Computes the tangent of x (expressed in radians).
|
122
161
|
tanh(x) Float Computes the hyperbolic tangent of x (expressed in radians).
|
123
162
|
|
163
|
+
PI Float The value 3.141592653589793
|
164
|
+
E Float The value 2.718281828459045
|
124
165
|
|
125
166
|
The mysh can also be used from within a Ruby application:
|
126
167
|
|
@@ -128,6 +169,73 @@ The mysh can also be used from within a Ruby application:
|
|
128
169
|
Mysh.run
|
129
170
|
```
|
130
171
|
|
172
|
+
## Adding New Commands
|
173
|
+
|
174
|
+
It is possible to add new internal commands to the mysh CLI. This is done by
|
175
|
+
depositing the appropriate ruby file in the commands folder located at:
|
176
|
+
|
177
|
+
/mysh/lib/mysh/commands
|
178
|
+
|
179
|
+
As an example, the file cd.rb is shown to illustrate the responsibilities of
|
180
|
+
a typical command plug-in:
|
181
|
+
|
182
|
+
```ruby
|
183
|
+
# coding: utf-8
|
184
|
+
|
185
|
+
#* commands/cd.rb -- The mysh internal cd command.
|
186
|
+
module Mysh
|
187
|
+
|
188
|
+
#* cd.rb -- The mysh internal cd command.
|
189
|
+
class InternalCommand
|
190
|
+
#Add the cd command to the library.
|
191
|
+
desc = ['Change directory to the optional <dir> parameter.',
|
192
|
+
'Then display the current working directory.']
|
193
|
+
|
194
|
+
add('cd <dir>', desc) do |args|
|
195
|
+
begin
|
196
|
+
Dir.chdir(args[0]) unless args.empty?
|
197
|
+
puts decorate(Dir.pwd)
|
198
|
+
rescue => err
|
199
|
+
puts "Error: #{err}"
|
200
|
+
end
|
201
|
+
end
|
202
|
+
|
203
|
+
#Add the pwd command to the library.
|
204
|
+
add('pwd', 'Display the current working directory.') do |args|
|
205
|
+
begin
|
206
|
+
puts decorate(Dir.pwd)
|
207
|
+
rescue => err
|
208
|
+
puts "Error: #{err}"
|
209
|
+
end
|
210
|
+
end
|
211
|
+
|
212
|
+
end
|
213
|
+
end
|
214
|
+
```
|
215
|
+
|
216
|
+
Note that the plug in code is contained within the InternalCommand class under
|
217
|
+
the Mysh module umbrella. The principle method used to create internal commands
|
218
|
+
is the add method:
|
219
|
+
|
220
|
+
```ruby
|
221
|
+
add(command_name, command_description) do |args|
|
222
|
+
# Action block goes here
|
223
|
+
end
|
224
|
+
```
|
225
|
+
Where:
|
226
|
+
* command_name is the name of the command with optional argument descriptions
|
227
|
+
seperated with spaces. The command is the first word of this string.
|
228
|
+
* command_description is a string or an array of strings that describe the
|
229
|
+
command.
|
230
|
+
* args is an array of zero or more arguments that were entered with the command.
|
231
|
+
|
232
|
+
Commands sometimes have more than one possible name. This is supported with:
|
233
|
+
|
234
|
+
```ruby
|
235
|
+
add_alias(new_name, old_name)
|
236
|
+
```
|
237
|
+
|
238
|
+
|
131
239
|
## Contributing
|
132
240
|
|
133
241
|
#### Plan A
|
data/lib/mysh.rb
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
require 'English'
|
6
6
|
require 'mini_readline'
|
7
7
|
require 'vls'
|
8
|
+
require 'in_array'
|
8
9
|
|
9
10
|
require_relative 'mysh/smart_source'
|
10
11
|
require_relative 'mysh/expression'
|
@@ -27,7 +28,7 @@ module Mysh
|
|
27
28
|
init_run
|
28
29
|
|
29
30
|
loop do
|
30
|
-
input = @input.readline(prompt: 'mysh>
|
31
|
+
input = @input.readline(prompt: 'mysh>')
|
31
32
|
|
32
33
|
begin
|
33
34
|
@exec_host.execute(input) ||
|
data/lib/mysh/commands/cd.rb
CHANGED
@@ -6,24 +6,26 @@ module Mysh
|
|
6
6
|
#* cd.rb -- The mysh internal cd command.
|
7
7
|
class InternalCommand
|
8
8
|
#Add the cd command to the library.
|
9
|
-
desc = 'Change directory to <dir>
|
10
|
-
|
9
|
+
desc = ['Change directory to the optional <dir> parameter.',
|
10
|
+
'Then display the current working directory.']
|
11
|
+
|
12
|
+
add('cd <dir>', desc) do |args|
|
11
13
|
begin
|
12
14
|
Dir.chdir(args[0]) unless args.empty?
|
13
15
|
puts decorate(Dir.pwd)
|
14
16
|
rescue => err
|
15
17
|
puts "Error: #{err}"
|
16
18
|
end
|
17
|
-
end
|
19
|
+
end
|
18
20
|
|
19
21
|
#Add the pwd command to the library.
|
20
|
-
add(
|
22
|
+
add('pwd', 'Display the current working directory.') do |args|
|
21
23
|
begin
|
22
24
|
puts decorate(Dir.pwd)
|
23
25
|
rescue => err
|
24
26
|
puts "Error: #{err}"
|
25
27
|
end
|
26
|
-
end
|
28
|
+
end
|
27
29
|
|
28
30
|
end
|
29
31
|
end
|
data/lib/mysh/commands/exit.rb
CHANGED
@@ -6,9 +6,9 @@ module Mysh
|
|
6
6
|
#* exit.rb -- The mysh internal exit command.
|
7
7
|
class InternalCommand
|
8
8
|
#Add the exit command to the library.
|
9
|
-
add(
|
9
|
+
add('exit', 'Exit mysh.') do |args|
|
10
10
|
raise MiniReadlineEOI
|
11
|
-
end
|
11
|
+
end
|
12
12
|
|
13
13
|
add_alias('quit', 'exit')
|
14
14
|
end
|
data/lib/mysh/commands/help.rb
CHANGED
@@ -6,19 +6,14 @@ module Mysh
|
|
6
6
|
#* exit.rb -- The mysh internal exit command.
|
7
7
|
class InternalCommand
|
8
8
|
#Add the exit command to the library.
|
9
|
-
add(
|
9
|
+
add('help', 'Display help information for mysh.') do |args|
|
10
10
|
puts "mysh (MY ruby SHell) version: #{Mysh::VERSION}"
|
11
11
|
puts
|
12
12
|
|
13
13
|
if args.empty?
|
14
|
-
puts IO.read(File.dirname(__FILE__) + '/
|
15
|
-
|
16
|
-
|
17
|
-
.info
|
18
|
-
.sort {|first, second | first[0] <=> second[0] }
|
19
|
-
.each {|info| puts "#{info[0].ljust(10)} #{info[1]}" }
|
20
|
-
puts
|
21
|
-
puts IO.read(File.dirname(__FILE__) + '/help.txt')
|
14
|
+
puts IO.read(File.dirname(__FILE__) + '/help_head.txt')
|
15
|
+
InternalCommand.display_items(info)
|
16
|
+
puts IO.read(File.dirname(__FILE__) + '/help_tail.txt')
|
22
17
|
elsif args[0] == 'math'
|
23
18
|
puts IO.read(File.dirname(__FILE__) + '/help_math.txt')
|
24
19
|
elsif args[0] == 'ruby'
|
@@ -27,9 +22,11 @@ module Mysh
|
|
27
22
|
puts "help #{args[0]} ???"
|
28
23
|
end
|
29
24
|
|
30
|
-
end
|
25
|
+
end
|
31
26
|
|
32
27
|
add_alias('?', 'help')
|
28
|
+
|
33
29
|
end
|
30
|
+
|
34
31
|
end
|
35
32
|
|
@@ -1,8 +1,10 @@
|
|
1
1
|
mysh Math support summary
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
3
|
+
The Ruby expression execution environment has direct access to many advanced
|
4
|
+
Math functions. For example, to compute the cosine of 3.141592653589793 use:
|
5
|
+
|
6
|
+
mysh> =cos(PI)
|
7
|
+
-1.0
|
6
8
|
|
7
9
|
Method Returns Description
|
8
10
|
======= ======= ================================================
|
@@ -40,3 +42,6 @@ sqrt(x) Float Returns the non-negative square root of x.
|
|
40
42
|
tan(x) Float Computes the tangent of x (expressed in radians).
|
41
43
|
tanh(x) Float Computes the hyperbolic tangent of x (expressed in radians).
|
42
44
|
|
45
|
+
PI Float The value 3.141592653589793
|
46
|
+
E Float The value 2.718281828459045
|
47
|
+
|
@@ -1,16 +1,17 @@
|
|
1
1
|
mysh Ruby expression support summary
|
2
2
|
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
3
|
+
- All command lines that begin with an equals "=" sign are evaluated as Ruby
|
4
|
+
expressions.
|
5
|
+
- Expressions ending with a backslash character "\" are continued on the next
|
6
|
+
line. The prompt changes to "mysh\" to indicate that this is going on.
|
7
|
+
- The results are displayed using the pretty-print facility.
|
8
|
+
- Auto-complete always places any file names in quotes so they can be used
|
9
|
+
as string parameters.
|
10
10
|
|
11
11
|
A few noteworthy methods exist that facilitate use of Ruby expressions:
|
12
12
|
|
13
13
|
reset Reset the execution environment to the default state.
|
14
14
|
result Returns the result of the previous expression.
|
15
|
-
vls
|
16
|
-
|
15
|
+
vls "mask" List modules with version info. The optional mask string value is
|
16
|
+
used to filter for modules containing that string.
|
17
|
+
|
@@ -0,0 +1,20 @@
|
|
1
|
+
2) Ruby Expression support:
|
2
|
+
|
3
|
+
- Any line beginning with an equals "=" sign will be evaluated as a Ruby
|
4
|
+
expression. This allows the mysh command line to serve as a programming,
|
5
|
+
debugging and super-calculator environment.
|
6
|
+
- For more info use the 'help ruby' command.
|
7
|
+
|
8
|
+
3) Math support:
|
9
|
+
|
10
|
+
- The execution environment includes the Math module.
|
11
|
+
- For more info use the 'help math' command.
|
12
|
+
|
13
|
+
4) External commands:
|
14
|
+
|
15
|
+
- Executed by the system using the standard shell.
|
16
|
+
- To force the use of the external shell, add a leading space to the command.
|
17
|
+
|
18
|
+
Note: If the command has a '.rb' extension it is executed by Ruby.
|
19
|
+
So the command "myfile.rb" is executed as "ruby myfile.rb"
|
20
|
+
|
@@ -6,14 +6,14 @@ module Mysh
|
|
6
6
|
#* exit.rb -- The mysh internal history command.
|
7
7
|
class InternalCommand
|
8
8
|
#Add the exit command to the library.
|
9
|
-
add(
|
9
|
+
add('history', 'Display the mysh command history.') do |args|
|
10
10
|
history = Mysh.input.history
|
11
11
|
|
12
12
|
#The history command should not be part of the history.
|
13
13
|
history.pop
|
14
14
|
|
15
15
|
puts history
|
16
|
-
end
|
16
|
+
end
|
17
17
|
|
18
18
|
add_alias('!', 'history')
|
19
19
|
end
|
data/lib/mysh/expression.rb
CHANGED
@@ -17,7 +17,7 @@ module Mysh
|
|
17
17
|
#Process an expression.
|
18
18
|
def execute(str)
|
19
19
|
if str.start_with?('=')
|
20
|
-
do_execute(str)
|
20
|
+
do_execute(do_build(str))
|
21
21
|
else
|
22
22
|
false
|
23
23
|
end
|
@@ -32,33 +32,30 @@ module Mysh
|
|
32
32
|
end
|
33
33
|
|
34
34
|
private
|
35
|
-
|
35
|
+
|
36
|
+
#Gather up the full string of the expression to evaluate.
|
36
37
|
#<br>Endemic Code Smells
|
37
38
|
#* :reek:TooManyStatements
|
38
|
-
def
|
39
|
+
def do_build(str)
|
39
40
|
if /\\\s*$/ =~ str
|
40
|
-
parms = {
|
41
|
-
|
42
|
-
auto_source: MiniReadline::QuotedFileFolderSource
|
43
|
-
}
|
41
|
+
parms = {prompt: 'mysh\\',
|
42
|
+
auto_source: MiniReadline::QuotedFileFolderSource}
|
44
43
|
|
45
|
-
|
44
|
+
do_build($PREMATCH + "\n" + Mysh.input.readline(parms))
|
46
45
|
else
|
47
|
-
|
48
|
-
eval("@result" + str)
|
49
|
-
|
50
|
-
if @result
|
51
|
-
pp @result
|
52
|
-
else
|
53
|
-
puts @result
|
54
|
-
end
|
55
|
-
|
56
|
-
rescue StandardError, ScriptError => err
|
57
|
-
puts "Error: #{err}"
|
58
|
-
end
|
59
|
-
|
60
|
-
:expression
|
46
|
+
str
|
61
47
|
end
|
62
48
|
end
|
49
|
+
|
50
|
+
#Execute the string
|
51
|
+
def do_execute(str)
|
52
|
+
instance_eval("@result" + str)
|
53
|
+
send(@result ? :pp : :puts, @result)
|
54
|
+
rescue StandardError, ScriptError => err
|
55
|
+
puts "Error: #{err}"
|
56
|
+
ensure
|
57
|
+
return :expression
|
58
|
+
end
|
63
59
|
end
|
60
|
+
|
64
61
|
end
|
data/lib/mysh/internal.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
|
-
require_relative '
|
4
|
-
require_relative '
|
5
|
-
require_relative '
|
6
|
-
require_relative '
|
3
|
+
require_relative 'support/manage'
|
4
|
+
require_relative 'support/parse'
|
5
|
+
require_relative 'support/format'
|
6
|
+
require_relative 'support/frame'
|
7
|
+
require_relative 'support/decorate'
|
7
8
|
|
8
|
-
#Load up the commands!
|
9
|
+
#Load up the internal commands!
|
9
10
|
Dir[File.dirname(__FILE__) + '/commands/*.rb'].each {|file| require file }
|
data/lib/mysh/ruby.rb
CHANGED
@@ -1,19 +1,16 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
|
+
#* ruby.rb -- Support for executing Ruby files with the ruby interpreter.
|
3
4
|
module Mysh
|
4
5
|
|
5
6
|
#Try to execute as a Ruby program.
|
6
7
|
def self.ruby_execute(str)
|
7
|
-
if
|
8
|
-
new_command = "ruby #{str}"
|
9
|
-
|
10
|
-
puts "=> #{new_command}"
|
11
|
-
puts
|
12
|
-
|
8
|
+
if (command = str.split[0]) && File.extname(command) == '.rb'
|
9
|
+
puts "=> #{new_command = "ruby #{str}"}\n\n"
|
13
10
|
system(new_command)
|
14
11
|
:ruby_exec
|
15
12
|
end
|
16
13
|
|
17
14
|
end
|
18
15
|
|
19
|
-
end
|
16
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
#* support/format.rb -- Format mysh internal reports.
|
4
|
+
module Mysh
|
5
|
+
|
6
|
+
#The mysh internal command class level report formatting.
|
7
|
+
class InternalCommand
|
8
|
+
|
9
|
+
#Get information on all commands.
|
10
|
+
def self.info
|
11
|
+
@commands
|
12
|
+
.values
|
13
|
+
.map {|command| command.info }
|
14
|
+
.sort {|first, second| first[0] <=> second[0] }
|
15
|
+
end
|
16
|
+
|
17
|
+
#Display an array of items.
|
18
|
+
def self.display_items(items)
|
19
|
+
#Determine the width of the tag area.
|
20
|
+
tag_width = items.max_by {|item| item[0].length}[0].length + 1
|
21
|
+
|
22
|
+
#Display the information.
|
23
|
+
items.each {|item| display_item(item, tag_width) }
|
24
|
+
|
25
|
+
puts
|
26
|
+
end
|
27
|
+
|
28
|
+
#Display one item.
|
29
|
+
def self.display_item(item, tag_width=nil)
|
30
|
+
tag = item[0]
|
31
|
+
tag_width ||= tag.length + 1
|
32
|
+
|
33
|
+
item[1].each do |detail|
|
34
|
+
puts "#{tag.ljust(tag_width)} #{detail}"
|
35
|
+
tag = ""
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
40
|
+
end
|
41
|
+
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
|
-
#*
|
3
|
+
#* support/frame.rb -- The abstract frame of mysh internal commands.
|
4
4
|
module Mysh
|
5
5
|
|
6
6
|
#The mysh internal command instance data and methods.
|
@@ -16,9 +16,7 @@ module Mysh
|
|
16
16
|
|
17
17
|
#Setup an internal command
|
18
18
|
def initialize(name, description, &action)
|
19
|
-
@name
|
20
|
-
@description = description
|
21
|
-
@action = action
|
19
|
+
@name, @description, @action = name, description.in_array, action
|
22
20
|
end
|
23
21
|
|
24
22
|
#Execute the command.
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
|
3
|
-
#*
|
3
|
+
#* support/manage.rb -- Manage mysh internal commands.
|
4
4
|
module Mysh
|
5
5
|
|
6
6
|
#The mysh internal command class level data and methods.
|
@@ -15,8 +15,8 @@ module Mysh
|
|
15
15
|
end
|
16
16
|
|
17
17
|
#Add a command to the command library.
|
18
|
-
def self.add(
|
19
|
-
@commands[
|
18
|
+
def self.add(name, description, &action)
|
19
|
+
@commands[name.split[0]] = new(name, description, &action)
|
20
20
|
end
|
21
21
|
|
22
22
|
#Add an alias for an existing command.
|
@@ -42,11 +42,6 @@ module Mysh
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
-
#Get information on all commands.
|
46
|
-
def self.info
|
47
|
-
@commands.values.map { |command| command.info }
|
48
|
-
end
|
49
|
-
|
50
45
|
end
|
51
46
|
end
|
52
47
|
|
data/lib/mysh/version.rb
CHANGED
data/mysh.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mysh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Camilleri
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-09-
|
11
|
+
date: 2016-09-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -122,6 +122,20 @@ dependencies:
|
|
122
122
|
- - ">="
|
123
123
|
- !ruby/object:Gem::Version
|
124
124
|
version: 0.3.9
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: in_array
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :runtime
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
125
139
|
description: mysh -- a Ruby inspired command shell for CLI and application use.
|
126
140
|
email:
|
127
141
|
- peter.c.camilleri@gmail.com
|
@@ -140,19 +154,20 @@ files:
|
|
140
154
|
- lib/mysh/commands/cd.rb
|
141
155
|
- lib/mysh/commands/exit.rb
|
142
156
|
- lib/mysh/commands/help.rb
|
143
|
-
- lib/mysh/commands/
|
144
|
-
- lib/mysh/commands/help_internal.txt
|
157
|
+
- lib/mysh/commands/help_head.txt
|
145
158
|
- lib/mysh/commands/help_math.txt
|
146
159
|
- lib/mysh/commands/help_ruby.txt
|
160
|
+
- lib/mysh/commands/help_tail.txt
|
147
161
|
- lib/mysh/commands/history.rb
|
148
162
|
- lib/mysh/expression.rb
|
149
163
|
- lib/mysh/internal.rb
|
150
|
-
- lib/mysh/internal/decorate.rb
|
151
|
-
- lib/mysh/internal/instance.rb
|
152
|
-
- lib/mysh/internal/klass.rb
|
153
|
-
- lib/mysh/internal/parse.rb
|
154
164
|
- lib/mysh/ruby.rb
|
155
165
|
- lib/mysh/smart_source.rb
|
166
|
+
- lib/mysh/support/decorate.rb
|
167
|
+
- lib/mysh/support/format.rb
|
168
|
+
- lib/mysh/support/frame.rb
|
169
|
+
- lib/mysh/support/manage.rb
|
170
|
+
- lib/mysh/support/parse.rb
|
156
171
|
- lib/mysh/version.rb
|
157
172
|
- mysh.gemspec
|
158
173
|
- rakefile.rb
|
data/lib/mysh/commands/help.txt
DELETED
@@ -1,17 +0,0 @@
|
|
1
|
-
2) Ruby Expression support:
|
2
|
-
- any line beginning with an equals "=" sign will be evaluated as a Ruby
|
3
|
-
expression. This allows the mysh command line to serve as a programming,
|
4
|
-
debugging and super-calculator environment.
|
5
|
-
- for more info use the 'help ruby' command.
|
6
|
-
|
7
|
-
3) Math support:
|
8
|
-
- the execution environment includes the Math module.
|
9
|
-
- for more info use the 'help math' command.
|
10
|
-
|
11
|
-
4) External commands:"
|
12
|
-
- executed by the system using the standard shell.
|
13
|
-
- to force the use of the external shell, add a leading space to the command.
|
14
|
-
|
15
|
-
Note: If the command has a '.rb' extension it is executed by Ruby.
|
16
|
-
So the command "myfile.rb" is executed as "ruby myfile.rb"
|
17
|
-
|