mysh 0.6.9 → 0.6.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +25 -5
  3. data/lib/mysh.rb +19 -9
  4. data/lib/mysh/{internal/action.rb → action.rb} +8 -8
  5. data/lib/mysh/{internal/action_pool.rb → action_pool.rb} +8 -8
  6. data/lib/mysh/{internal/actions/command_line.rb → command_line.rb} +10 -10
  7. data/lib/mysh/{internal/actions/command_line → command_line}/debug.rb +9 -11
  8. data/lib/mysh/command_line/history.rb +61 -0
  9. data/lib/mysh/{internal/actions/command_line → command_line}/init.rb +8 -8
  10. data/lib/mysh/{internal/actions/command_line → command_line}/load.rb +5 -5
  11. data/lib/mysh/{internal/actions/command_line → command_line}/pause.rb +6 -8
  12. data/lib/mysh/{internal/actions/command_line → command_line}/post_prompt.rb +10 -12
  13. data/lib/mysh/{internal/actions/command_line → command_line}/pre_prompt.rb +10 -12
  14. data/lib/mysh/{internal/actions/command_line → command_line}/prompt.rb +9 -10
  15. data/lib/mysh/command_line/quit.rb +19 -0
  16. data/lib/mysh/{internal/actions/command_line → command_line}/usage.rb +4 -4
  17. data/lib/mysh/expression.rb +11 -31
  18. data/lib/mysh/external.rb +4 -5
  19. data/lib/mysh/globalize.rb +14 -10
  20. data/lib/mysh/handlebars.rb +10 -13
  21. data/lib/mysh/handlebars/eval_handlebars.rb +38 -0
  22. data/lib/mysh/{internal/actions/help → help}/env.txt +0 -0
  23. data/lib/mysh/{internal/actions/help → help}/expr.txt +0 -0
  24. data/lib/mysh/{internal/actions/help → help}/gem.txt +0 -0
  25. data/lib/mysh/{internal/actions/help → help}/gls.txt +0 -0
  26. data/lib/mysh/{internal/actions/help → help}/h_o_h.txt +1 -1
  27. data/lib/mysh/{internal/actions/help → help}/hbar.txt +11 -0
  28. data/lib/mysh/{internal/actions/help → help}/help.txt +0 -0
  29. data/lib/mysh/{internal/actions/help → help}/history.txt +7 -0
  30. data/lib/mysh/{internal/actions/help → help}/init.txt +0 -0
  31. data/lib/mysh/{internal/actions/help → help}/kbd.txt +0 -0
  32. data/lib/mysh/{internal/actions/help → help}/math.txt +0 -0
  33. data/lib/mysh/{internal/actions/help → help}/mls.txt +0 -0
  34. data/lib/mysh/{internal/actions/help → help}/quick.txt +0 -0
  35. data/lib/mysh/{internal/actions/help → help}/ruby.txt +0 -0
  36. data/lib/mysh/{internal/actions/help → help}/show.txt +0 -0
  37. data/lib/mysh/{internal/actions/help → help}/term.txt +0 -0
  38. data/lib/mysh/{internal/actions/help → help}/timed.txt +0 -0
  39. data/lib/mysh/help/type.txt +28 -0
  40. data/lib/mysh/{internal/actions/help → help}/types.txt +0 -0
  41. data/lib/mysh/{internal/actions/help → help}/usage.txt +0 -0
  42. data/lib/mysh/{internal/actions/help → help}/vars.txt +4 -4
  43. data/lib/mysh/input_wrapper.rb +13 -13
  44. data/lib/mysh/internal.rb +20 -8
  45. data/lib/mysh/internal/{actions/cancel.rb → cancel.rb} +0 -0
  46. data/lib/mysh/internal/{actions/cd.rb → cd.rb} +2 -2
  47. data/lib/mysh/internal/{actions/comment.rb → comment.rb} +2 -2
  48. data/lib/mysh/internal/{actions/elapsed.rb → elapsed.rb} +2 -2
  49. data/lib/mysh/internal/{actions/exit.rb → exit.rb} +0 -0
  50. data/lib/mysh/internal/{actions/gls.rb → gls.rb} +6 -7
  51. data/lib/mysh/internal/{actions/help.rb → help.rb} +7 -9
  52. data/lib/mysh/internal/{actions/history.rb → history.rb} +10 -9
  53. data/lib/mysh/internal/load.rb +45 -0
  54. data/lib/mysh/internal/{actions/mls.rb → mls.rb} +2 -2
  55. data/lib/mysh/internal/{actions/pwd.rb → pwd.rb} +1 -1
  56. data/lib/mysh/internal/{actions/say.rb → say.rb} +1 -1
  57. data/lib/mysh/internal/{actions/show.rb → show.rb} +7 -6
  58. data/lib/mysh/internal/{actions/help → support}/sub_help.rb +9 -7
  59. data/lib/mysh/internal/type.rb +38 -0
  60. data/lib/mysh/internal/{actions/vars.rb → vars.rb} +8 -8
  61. data/lib/mysh/{init.rb → load_init_file.rb} +3 -3
  62. data/lib/mysh/process.rb +7 -7
  63. data/lib/mysh/quick.rb +10 -4
  64. data/lib/mysh/shell_variables.rb +9 -4
  65. data/lib/mysh/shell_variables/evaluate.rb +2 -11
  66. data/lib/mysh/shell_variables/shell_variable_keeper.rb +6 -7
  67. data/lib/mysh/shell_variables/shell_variable_store.rb +13 -14
  68. data/lib/mysh/{internal/actions/show → show}/env.rb +3 -5
  69. data/lib/mysh/{internal/actions/show → show}/gem.rb +3 -16
  70. data/lib/mysh/{internal/actions/show → show}/ruby.rb +0 -0
  71. data/lib/mysh/{internal/actions/show → show}/term.rb +5 -7
  72. data/lib/mysh/sources/console.rb +11 -7
  73. data/lib/mysh/sources/parse.rb +7 -10
  74. data/lib/mysh/sources/smart_auto_complete.rb +5 -5
  75. data/lib/mysh/sources/string.rb +6 -6
  76. data/lib/mysh/string_helpers.rb +37 -0
  77. data/lib/mysh/system.rb +2 -2
  78. data/lib/mysh/user_input.rb +5 -9
  79. data/lib/mysh/version.rb +4 -4
  80. data/mysh.gemspec +4 -3
  81. data/samples/show.txt +2 -0
  82. data/tests/my_shell_tests.rb +18 -6
  83. metadata +77 -65
  84. data/lib/mysh/binding_wrapper.rb +0 -21
  85. data/lib/mysh/handlebars/string.rb +0 -22
  86. data/lib/mysh/internal/actions/actions_path.rb +0 -15
  87. data/lib/mysh/internal/actions/command_line/quit.rb +0 -19
  88. data/lib/mysh/internal/actions/load.rb +0 -36
  89. data/lib/mysh/internal/actions/type.rb +0 -22
  90. data/lib/mysh/internal/manage.rb +0 -20
  91. data/lib/mysh/internal/to_file_spec.rb +0 -26
  92. data/lib/mysh/pre_processor.rb +0 -11
@@ -1,24 +1,24 @@
1
1
  # coding: utf-8
2
2
 
3
- #* mysh/internal/actions/command_line/load.rb -- The mysh load command.
3
+ # The mysh load command.
4
4
  module Mysh
5
5
 
6
- #* mysh/internal/actions/command_line/load.rb -- The mysh load command.
6
+ # The mysh load command.
7
7
  class LoadOption < CommandOption
8
8
 
9
- #Skip over the argument for pre_boot.
9
+ # Skip over the argument for pre_boot.
10
10
  def pre_boot(read_point)
11
11
  get_arg(read_point)
12
12
  end
13
13
 
14
- #Execute the load command line option.
14
+ # Execute the load command line option.
15
15
  def post_boot(read_point)
16
16
  mysh "load #{get_arg(read_point).to_host_spec}"
17
17
  end
18
18
 
19
19
  end
20
20
 
21
- #Add the load command line option to the library.
21
+ # Add the load command line option to the library.
22
22
  desc = 'Load the specified file into the mysh.'
23
23
  COMMAND_LINE.add_action(LoadOption.new('--load filename', desc))
24
24
  COMMAND_LINE.add_action(LoadOption.new('-l filename', desc))
@@ -5,9 +5,8 @@ module Mysh
5
5
  # The page pause option.
6
6
  class PauseOption < CommandOption
7
7
 
8
- #Execute the help command line option.
9
- #<br>Endemic Code Smells
10
- #* :reek:UtilityFunction
8
+ # Execute the help command line option.
9
+ # Endemic Code Smells :reek:UtilityFunction
11
10
  def post_boot(_args)
12
11
  MNV[:page_pause] = "on"
13
12
  end
@@ -18,16 +17,15 @@ module Mysh
18
17
 
19
18
  end
20
19
 
21
- #Add the pause command line option to the library.
20
+ # Add the pause command line option to the library.
22
21
  desc = 'Turn on page pauses.'
23
22
  COMMAND_LINE.add_action(PauseOption.new('--pause', desc))
24
23
 
25
24
  # The no page pause option.
26
25
  class NoPauseOption < CommandOption
27
26
 
28
- #Execute the help command line option.
29
- #<br>Endemic Code Smells
30
- #* :reek:UtilityFunction
27
+ # Execute the help command line option.
28
+ # Endemic Code Smells :reek:UtilityFunction
31
29
  def post_boot(_args)
32
30
  MNV[:page_pause] = "off"
33
31
  end
@@ -38,7 +36,7 @@ module Mysh
38
36
 
39
37
  end
40
38
 
41
- #Add the no pause command line option to the library.
39
+ # Add the no pause command line option to the library.
42
40
  desc = 'Turn off page pauses.'
43
41
  COMMAND_LINE.add_action(NoPauseOption.new('--no-pause', desc))
44
42
  end
@@ -1,43 +1,41 @@
1
1
  # coding: utf-8
2
2
 
3
- #* mysh/internal/actions/command_line/prompt.rb -- The mysh post prompt command.
3
+ # The mysh post prompt command.
4
4
  module Mysh
5
5
 
6
- #* mysh/internal/actions/command_line/post_prompt.rb -- The mysh post prompt command.
6
+ # The mysh post prompt command.
7
7
  class PostpromptOption < CommandOption
8
8
 
9
- #Skip over the argument for pre_boot.
9
+ # Skip over the argument for pre_boot.
10
10
  def pre_boot(read_point)
11
11
  get_arg(read_point)
12
12
  end
13
13
 
14
- #Execute the prompt command line option.
15
- #<br>Endemic Code Smells
16
- #* :reek:UtilityFunction
14
+ # Execute the prompt command line option.
15
+ # Endemic Code Smells :reek:UtilityFunction
17
16
  def post_boot(read_point)
18
17
  MNV[:post_prompt] = get_arg(read_point)
19
18
  end
20
19
 
21
20
  end
22
21
 
23
- #Add the post prompt command line option to the library.
22
+ # Add the post prompt command line option to the library.
24
23
  desc = 'Set the mysh line continuation prompt to "str".'
25
24
  COMMAND_LINE.add_action(PostpromptOption.new('--post-prompt "str"', desc))
26
25
  COMMAND_LINE.add_action(PostpromptOption.new('-pp "str"', desc))
27
26
 
28
- #* mysh/internal/actions/command_line/post_prompt.rb -- The mysh command no post prompt.
27
+ # The mysh command no post prompt.
29
28
  class NoPostpromptOption < CommandOption
30
29
 
31
- #Execute the no post prompt command line option.
32
- #<br>Endemic Code Smells
33
- #* :reek:UtilityFunction
30
+ # Execute the no post prompt command line option.
31
+ # Endemic Code Smells :reek:UtilityFunction
34
32
  def post_boot(_args)
35
33
  MNV[:post_prompt] = ""
36
34
  end
37
35
 
38
36
  end
39
37
 
40
- #Add the prompt command line option to the library.
38
+ # Add the prompt command line option to the library.
41
39
  desc = 'Turn off mysh post prompting.'
42
40
  COMMAND_LINE.add_action(NoPostpromptOption.new('--no-post-prompt', desc))
43
41
  COMMAND_LINE.add_action(NoPostpromptOption.new('-npp', desc))
@@ -1,43 +1,41 @@
1
1
  # coding: utf-8
2
2
 
3
- #* mysh/internal/actions/command_line/prompt.rb -- The mysh pre_prompt command.
3
+ # The mysh pre_prompt command.
4
4
  module Mysh
5
5
 
6
- #* mysh/internal/actions/command_line/pre_prompt.rb -- The mysh pre_prompt command.
6
+ # The mysh pre_prompt command.
7
7
  class PrepromptOption < CommandOption
8
8
 
9
- #Skip over the argument for pre_boot.
9
+ # Skip over the argument for pre_boot.
10
10
  def pre_boot(read_point)
11
11
  get_arg(read_point)
12
12
  end
13
13
 
14
- #Execute the prompt command line option.
15
- #<br>Endemic Code Smells
16
- #* :reek:UtilityFunction
14
+ # Execute the prompt command line option.
15
+ # Endemic Code Smells :reek:UtilityFunction
17
16
  def post_boot(read_point)
18
17
  MNV[:pre_prompt] = get_arg(read_point)
19
18
  end
20
19
 
21
20
  end
22
21
 
23
- #Add the pre prompt command line option to the library.
22
+ # Add the pre prompt command line option to the library.
24
23
  desc = 'Set the mysh pre prompt to "str".'
25
24
  COMMAND_LINE.add_action(PrepromptOption.new('--pre-prompt "str"', desc))
26
25
  COMMAND_LINE.add_action(PrepromptOption.new('-pr "str"', desc))
27
26
 
28
- #* mysh/internal/actions/command_line/pre_prompt.rb -- The mysh command no pre_prompt.
27
+ # The mysh command no pre_prompt.
29
28
  class NoPrepromptOption < CommandOption
30
29
 
31
- #Execute the no pre_prompt command line option.
32
- #<br>Endemic Code Smells
33
- #* :reek:UtilityFunction
30
+ # Execute the no pre_prompt command line option.
31
+ # Endemic Code Smells :reek:UtilityFunction
34
32
  def post_boot(_args)
35
33
  MNV[:pre_prompt] = ""
36
34
  end
37
35
 
38
36
  end
39
37
 
40
- #Add the prompt command line option to the library.
38
+ # Add the prompt command line option to the library.
41
39
  desc = 'Turn off mysh pre prompting.'
42
40
  COMMAND_LINE.add_action(NoPrepromptOption.new('--no-pre-prompt', desc))
43
41
  COMMAND_LINE.add_action(NoPrepromptOption.new('-npr', desc))
@@ -1,41 +1,40 @@
1
1
  # coding: utf-8
2
2
 
3
- #* mysh/internal/actions/command_line/prompt.rb -- The mysh prompt command.
3
+ # The mysh prompt command.
4
4
  module Mysh
5
5
 
6
- #* mysh/internal/actions/command_line/prompt.rb -- The mysh prompt command.
6
+ # The mysh prompt command.
7
7
  class PromptOption < CommandOption
8
8
 
9
- #Skip over the argument for pre_boot.
9
+ # Skip over the argument for pre_boot.
10
10
  def pre_boot(read_point)
11
11
  get_arg(read_point)
12
12
  end
13
13
 
14
- #Execute the prompt command line option.
14
+ # Execute the prompt command line option.
15
15
  def post_boot(read_point)
16
16
  MNV[:prompt] = get_arg(read_point)
17
17
  end
18
18
 
19
19
  end
20
20
 
21
- #Add the prompt command line option to the library.
21
+ # Add the prompt command line option to the library.
22
22
  desc = 'Set the mysh prompt to "str".'
23
23
  COMMAND_LINE.add_action(PromptOption.new('--prompt "str"', desc))
24
24
  COMMAND_LINE.add_action(PromptOption.new('-p "str"', desc))
25
25
 
26
- #* mysh/internal/actions/command_line/prompt.rb -- The mysh prompt command no prompt.
26
+ # The mysh prompt command no prompt.
27
27
  class NoPromptOption < CommandOption
28
28
 
29
- #Execute the no prompt command line option.
30
- #<br>Endemic Code Smells
31
- #* :reek:UtilityFunction
29
+ # Execute the no prompt command line option.
30
+ # Endemic Code Smells :reek:UtilityFunction
32
31
  def post_boot(_args)
33
32
  MNV[:prompt] = ""
34
33
  end
35
34
 
36
35
  end
37
36
 
38
- #Add the prompt command line option to the library.
37
+ # Add the prompt command line option to the library.
39
38
  desc = 'Turn off mysh prompting.'
40
39
  COMMAND_LINE.add_action(NoPromptOption.new('--no-prompt', desc))
41
40
  COMMAND_LINE.add_action(NoPromptOption.new('-np', desc))
@@ -0,0 +1,19 @@
1
+ # coding: utf-8
2
+
3
+ # The mysh quit command.
4
+ module Mysh
5
+
6
+ # The mysh quit command.
7
+ class QuitOption < CommandOption
8
+
9
+ # Execute the quit command line option.
10
+ def post_boot(_args)
11
+ exit
12
+ end
13
+
14
+ end
15
+
16
+ # Add the quit command line option to the library.
17
+ desc = "Exit a nested mysh file or command."
18
+ COMMAND_LINE.add_action(QuitOption.new('--quit', desc))
19
+ end
@@ -1,19 +1,19 @@
1
1
  # coding: utf-8
2
2
 
3
- #* mysh/internal/actions/command_line/usage.rb -- The mysh help command usage.
3
+ # The mysh help command usage.
4
4
  module Mysh
5
5
 
6
- #* mysh/internal/actions/command_line/usage.rb -- The mysh help command usage.
6
+ # The mysh help command usage.
7
7
  class UsageOption < CommandOption
8
8
 
9
- #Execute the help command line option. (Punt to error handler with no msg)
9
+ # Execute the help command line option. (Punt to error handler with no msg)
10
10
  def pre_boot(_args)
11
11
  raise MyshUsage
12
12
  end
13
13
 
14
14
  end
15
15
 
16
- #Add the usage command line option to the library.
16
+ # Add the usage command line option to the library.
17
17
  desc = 'Display mysh usage info and exit.'
18
18
 
19
19
  USAGE = UsageOption.new('--help', desc)
@@ -1,66 +1,46 @@
1
1
  # coding: utf-8
2
2
 
3
- require 'pp'
4
3
  require_relative 'expression/lineage'
5
4
 
6
- #* mysh/expression.rb -- The mysh ruby expression processor.
7
- #<br>Endemic Code Smells
8
- #* :reek:ModuleInitialize -- False positive
5
+ # Endemic Code Smells :reek:ModuleInitialize -- False positive
9
6
  module Mysh
10
7
 
11
- #Set up some popular constants
8
+ # Set up some popular constants
12
9
  E = Math::E
13
10
  PI = Math::PI
14
11
 
15
- #Reset the state of the execution hosting environment.
16
- #<br>Endemic Code Smells
17
- # :reek:TooManyStatements -- False positive
12
+ $mysh_exec_result = nil
13
+
14
+ # Reset the state of the execution hosting environment.
15
+ # Endemic Code Smells :reek:TooManyStatements -- False positive
18
16
  def self.reset_host
19
17
  exec_class = Class.new do
20
18
 
21
19
  include Math
22
20
 
23
- #Set up a new execution environment
21
+ # Set up a new execution environment
24
22
  def initialize
25
- $mysh_exec_result = nil
26
- $mysh_exec_binding = mysh_binding
27
- end
28
-
29
- #Do the actual work of executing an expression.
30
- #<br>Note:
31
- #* The expression string always begins with an '=' character.
32
- def execute(expression)
33
- pp $mysh_exec_binding.eval("$mysh_exec_result" + expression)
34
- :expression
23
+ $mysh_exec_binding = binding
35
24
  end
36
25
 
37
- #Return a simple message for less convoluted error messages.
26
+ # Return a simple message for less convoluted error messages.
38
27
  def inspect
39
28
  "exec_host"
40
29
  end
41
30
 
42
- #Evaluate the string in the my shell context.
43
- def mysh_eval(str)
44
- $mysh_exec_binding.eval(str)
45
- end
46
-
47
31
  private
48
32
 
49
- #Get the previous result
33
+ # Get the previous result
50
34
  def result
51
35
  $mysh_exec_result
52
36
  end
53
37
 
54
- #Reset the state of the execution host.
38
+ # Reset the state of the execution host.
55
39
  def reset
56
40
  Mysh.reset_host
57
41
  nil
58
42
  end
59
43
 
60
- #Create a binding for mysh to execute expressions in.
61
- def mysh_binding
62
- binding
63
- end
64
44
  end
65
45
 
66
46
  $mysh_exec_host = exec_class.new
@@ -1,11 +1,10 @@
1
1
  # coding: utf-8
2
2
 
3
- #* mysh/external.rb -- Support for executing external files.
3
+ # Support for executing external files.
4
4
  module Mysh
5
5
 
6
- #Try to execute an external file.
7
- #<br>Endemic Code Smells
8
- #* :reek:TooManyStatements
6
+ # Try to execute an external file.
7
+ # Endemic Code Smells :reek:TooManyStatements
9
8
  def self.try_execute_external(input)
10
9
  args = input.parsed
11
10
  file_name = args.shift
@@ -22,7 +21,7 @@ module Mysh
22
21
  Mysh.process_file(file_name)
23
22
  :mysh_script
24
23
  elsif ext == '.txt'
25
- show_handlebar_file(file_name, BindingWrapper.new(binding))
24
+ show_handlebar_file(file_name, binding)
26
25
  :internal
27
26
  end
28
27
  end
@@ -1,16 +1,15 @@
1
1
  # coding: utf-8
2
2
 
3
- #Monkey patches for mysh global entities.
3
+ # Monkey patches for mysh global entities.
4
4
  class Object
5
5
 
6
- #Make the environment variable store accessible everywhere.
6
+ # Make the environment variable store accessible everywhere.
7
7
  MNV = Mysh::MNV
8
8
 
9
9
  private
10
10
 
11
- #The mysh equivalent of the system method.
12
- #<br>Endemic Code Smells
13
- #* :reek:UtilityFunction
11
+ # The mysh equivalent of the system method.
12
+ # Endemic Code Smells :reek:UtilityFunction
14
13
  def mysh(str)
15
14
  Mysh.try_execute_command(str)
16
15
  end
@@ -20,11 +19,16 @@ class Object
20
19
  raise MyshExit
21
20
  end
22
21
 
23
- # Run some code with no wuccas.
24
- def insouciant
25
- yield
26
- rescue => err
27
- err.to_s
22
+ # Get the latest version for the named gem. Patched code.
23
+ def latest_version_for(name, fetcher=nil)
24
+ dependency = Gem::Dependency.new(name)
25
+ fetcher ||= Gem::SpecFetcher.new
26
+
27
+ if specs = fetcher.spec_for_dependency(dependency)[0][-1]
28
+ specs[0].version
29
+ else
30
+ "<Not found in repository>"
31
+ end
28
32
  end
29
33
 
30
34
  end
@@ -1,26 +1,23 @@
1
1
  # coding: utf-8
2
2
 
3
- require_relative 'handlebars/string'
3
+ require_relative 'handlebars/eval_handlebars'
4
4
 
5
- #* user_input/handlebars.rb -- Handlebar embedded ruby support.
5
+ # Handlebar embedded ruby support.
6
6
  class Object
7
7
 
8
- #Show a file with embedded ruby handlebars.
9
- #<br>Note:
10
- #The message receiver is the evaluation host for the handlebar code.
11
- def show_handlebar_file(name, evaluator = $mysh_exec_host)
8
+ private
9
+
10
+ # Show a file with embedded ruby handlebars.
11
+ # Note: The message receiver is the evaluation host for the handlebar code.
12
+ def show_handlebar_file(name, evaluator = $mysh_exec_binding)
12
13
  puts eval_handlebar_file(name, evaluator)
13
14
  end
14
15
 
15
- #Expand a file with embedded ruby handlebars.
16
- #<br>Note:
17
- #The message receiver is the evaluation host for the handlebar code.
18
- #<br>Endemic Code Smells
19
- #* :reek:UtilityFunction
16
+ # Expand a file with embedded ruby handlebars.
17
+ # Note: The message receiver is the evaluation host for the handlebar code.
18
+ # Endemic Code Smells :reek:UtilityFunction
20
19
  def eval_handlebar_file(name, evaluator)
21
20
  IO.read(name).preprocess(evaluator)
22
21
  end
23
22
 
24
23
  end
25
-
26
-