gloo-lang 0.9.3 → 0.9.6

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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/gloo-lang.gemspec +1 -0
  4. data/lib/VERSION +1 -1
  5. data/lib/gloo_lang/app/args.rb +0 -1
  6. data/lib/gloo_lang/app/engine.rb +10 -37
  7. data/lib/gloo_lang/app/help.rb +2 -41
  8. data/lib/gloo_lang/app/info.rb +34 -0
  9. data/lib/gloo_lang/app/log.rb +8 -10
  10. data/lib/gloo_lang/app/platform.rb +75 -0
  11. data/lib/gloo_lang/app/settings.rb +36 -13
  12. data/lib/gloo_lang/objs/basic/container.rb +1 -12
  13. data/lib/gloo_lang/objs/basic/text.rb +2 -10
  14. data/lib/gloo_lang/objs/data/markdown.rb +2 -7
  15. data/lib/gloo_lang/objs/data/table.rb +1 -29
  16. data/lib/gloo_lang/verbs/show.rb +3 -2
  17. metadata +23 -21
  18. data/lib/gloo_lang/objs/cli/banner.rb +0 -108
  19. data/lib/gloo_lang/objs/cli/bar.rb +0 -133
  20. data/lib/gloo_lang/objs/cli/colorize.rb +0 -73
  21. data/lib/gloo_lang/objs/cli/confirm.rb +0 -96
  22. data/lib/gloo_lang/objs/cli/menu.rb +0 -206
  23. data/lib/gloo_lang/objs/cli/menu_item.rb +0 -95
  24. data/lib/gloo_lang/objs/cli/pastel.rb +0 -97
  25. data/lib/gloo_lang/objs/cli/prompt.rb +0 -110
  26. data/lib/gloo_lang/objs/cli/select.rb +0 -126
  27. data/lib/gloo_lang/objs/dev/git.rb +0 -140
  28. data/lib/gloo_lang/objs/dev/stats.rb +0 -120
  29. data/lib/gloo_lang/objs/snd/play.rb +0 -48
  30. data/lib/gloo_lang/objs/snd/say.rb +0 -98
  31. data/lib/gloo_lang/objs/system/file_handle.rb +0 -138
  32. data/lib/gloo_lang/objs/system/ssh_exec.rb +0 -126
  33. data/lib/gloo_lang/objs/system/system.rb +0 -136
  34. data/lib/gloo_lang/verbs/alert.rb +0 -79
  35. data/lib/gloo_lang/verbs/beep.rb +0 -40
  36. data/lib/gloo_lang/verbs/cls.rb +0 -37
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a97b50f311067cb36399d283816c85ab0ca4756ffbd1e9c90c06776be38cf5fa
4
- data.tar.gz: c5bdb27db5edcb57fab3ec8bd0e50a4a2e6a2cd7f6c1b46001741da96c5b68c6
3
+ metadata.gz: 42b1ca8c03074ae64ac797bfcdc72b17479cabead579fb94dd8232cbeef3fc6a
4
+ data.tar.gz: 34c0a1d8d4aabfd76f8d34d170de91760030ce15f49cdbceacad202cd43dfa55
5
5
  SHA512:
6
- metadata.gz: bc547e429ebe3ee5cc948d7647ef6a5226fa4d499adb467b832a276d1d9b83fb2f3ad56f91d1bc2033df46c3241f02257e05ea02369ad41f90a74897bbeab105
7
- data.tar.gz: c415a1953ceb79b38e6b445cecf566547fa5d1fcac4cd6b8b93f980dcdf087d4ecb4ed31b317b8cb2354c560905329e3e9e9473691b19dc68fe8fa1a2af6bdd6
6
+ metadata.gz: 8578816796520b92afdc8671fd914d2612dd5a512b6cc03bff9602ea3f9851902fe61753a59c58526e2aedafbe4f00eb6647c25df49cfbbf046d4c02545ad5b8
7
+ data.tar.gz: 132b981e50798bfdada690d892ddb67677d001036b08faa058c705317bf995006c2d40e022ca79269d45610e0535f9b0f2422f77f6b48b79b03c04f95ec67958
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- gloo-lang (0.9.0)
4
+ gloo-lang (0.9.4)
5
5
  chronic (~> 0.10, >= 0.10.2)
6
6
  json (~> 2.1, >= 2.1.0)
7
7
  net-ssh (~> 6.1, >= 6.1.0)
data/gloo-lang.gemspec CHANGED
@@ -32,6 +32,7 @@ Gem::Specification.new do |spec|
32
32
  spec.add_dependency 'json', '~> 2.1', '>= 2.1.0'
33
33
  spec.add_dependency 'openssl', '~> 2.1', '>= 2.1.0'
34
34
  spec.add_dependency 'net-ssh', '~> 6.1', '>= 6.1.0'
35
+ spec.add_dependency 'tty-platform', '~> 0.3', '>= 0.3.0'
35
36
  # spec.add_dependency 'mysql2', '~> 0.5', '>= 0.5.3'
36
37
  # spec.add_dependency 'sqlite3', '~> 1.4', '>= 1.4.2'
37
38
  end
data/lib/VERSION CHANGED
@@ -1 +1 @@
1
- 0.9.3
1
+ 0.9.6
@@ -6,7 +6,6 @@
6
6
  # in the constructor.
7
7
  #
8
8
  require 'active_support'
9
- require 'colorize'
10
9
 
11
10
  module GlooLang
12
11
  module App
@@ -7,15 +7,11 @@
7
7
  # to the relevant element.
8
8
  #
9
9
 
10
- require 'tty-prompt'
11
- require 'tty-cursor'
12
- require 'colorize'
13
-
14
10
  module GlooLang
15
11
  module App
16
12
  class Engine
17
13
 
18
- attr_reader :args, :mode, :running,
14
+ attr_reader :args, :mode, :running, :platform,
19
15
  :dictionary, :parser, :heap, :factory
20
16
  attr_accessor :last_cmd, :persist_man, :event_manager,
21
17
  :exec_env, :help, :converter
@@ -23,12 +19,15 @@ module GlooLang
23
19
  #
24
20
  # Set up the engine with basic elements.
25
21
  #
26
- def initialize( params = [] )
22
+ def initialize( params = [], platform=nil, log=nil )
27
23
  $engine = self
28
24
  @args = Args.new( params )
29
25
  $settings = Settings.new( ENV[ 'GLOO_ENV' ] )
30
- $log = Log.new( @args.quiet? )
31
- $prompt = TTY::Prompt.new
26
+
27
+ $log = log ? log : Log.new
28
+ $log.quiet = @args.quiet?
29
+
30
+ @platform = platform ? platform : Platform.new
32
31
  $log.debug 'engine intialized...'
33
32
  end
34
33
 
@@ -113,23 +112,6 @@ module GlooLang
113
112
  @persist_man.load( name ) if name
114
113
  end
115
114
 
116
- #
117
- # Prompt for the next command.
118
- #
119
- def prompt_cmd
120
- @last_cmd = $prompt.ask( default_prompt )
121
- end
122
-
123
- #
124
- # Get the default prompt text.
125
- #
126
- def default_prompt
127
- dt = DateTime.now
128
- d = dt.strftime( '%Y.%m.%d' )
129
- t = dt.strftime( '%I:%M:%S' )
130
- return "#{'gloo'.blue} #{d.yellow} #{t.white} >"
131
- end
132
-
133
115
  #
134
116
  # Is the last command entered blank?
135
117
  #
@@ -145,7 +127,7 @@ module GlooLang
145
127
  #
146
128
  def loop
147
129
  while @running
148
- prompt_cmd
130
+ @last_cmd = @platform.prompt_cmd
149
131
  process_cmd
150
132
  end
151
133
  end
@@ -155,7 +137,7 @@ module GlooLang
155
137
  #
156
138
  def process_cmd
157
139
  if last_cmd_blank?
158
- clear_screen
140
+ @platform.clear_screen
159
141
  return
160
142
  end
161
143
 
@@ -184,7 +166,7 @@ module GlooLang
184
166
  # Show the version information and then quit.
185
167
  #
186
168
  def run_version
187
- puts Info.display_title unless @args.quiet?
169
+ @platform.show Info.display_title unless @args.quiet?
188
170
  quit
189
171
  end
190
172
 
@@ -196,15 +178,6 @@ module GlooLang
196
178
  quit
197
179
  end
198
180
 
199
- #
200
- # Clear the screen.
201
- #
202
- def clear_screen
203
- @cursor ||= TTY::Cursor
204
- print @cursor.clear_screen
205
- print @cursor.move_to( 0, 0 )
206
- end
207
-
208
181
  # ---------------------------------------------------------------------
209
182
  # Error Handling
210
183
  # ---------------------------------------------------------------------
@@ -4,9 +4,6 @@
4
4
  # Help system.
5
5
  #
6
6
 
7
- require 'tty-markdown'
8
- require 'tty-pager'
9
-
10
7
  module GlooLang
11
8
  module App
12
9
  class Help
@@ -61,11 +58,7 @@ module GlooLang
61
58
 
62
59
  data = self.get_topic_data( topic )
63
60
  page = data.lines.count > Settings.page_size
64
- if topic_is_md?( topic )
65
- show_markdown_data( data, page )
66
- else
67
- show_text_data( data, page )
68
- end
61
+ $engine.platform.show( data, topic_is_md?( topic ), page )
69
62
  end
70
63
 
71
64
  #
@@ -75,39 +68,7 @@ module GlooLang
75
68
  return if $engine.args.quiet?
76
69
 
77
70
  data = self.get_topic_data( topic )
78
- if topic_is_md?( topic )
79
- show_markdown_data data
80
- else
81
- show_text_data data
82
- end
83
- end
84
-
85
- #
86
- # Show the markdown data.
87
- #
88
- def show_text_data( data, page = false )
89
- if page
90
- pager = TTY::Pager.new
91
- pager.page( data )
92
- else
93
- puts data.white
94
- puts
95
- end
96
- end
97
-
98
- #
99
- # Show the markdown data.
100
- #
101
- def show_markdown_data( data, page = false )
102
- md = TTY::Markdown.parse data
103
-
104
- if page
105
- pager = TTY::Pager.new
106
- pager.page( md )
107
- else
108
- puts md
109
- puts
110
- end
71
+ $engine.platform.show( data, topic_is_md?( topic ), false )
111
72
  end
112
73
 
113
74
  #
@@ -8,6 +8,14 @@ module GlooLang
8
8
  module App
9
9
  class Info
10
10
 
11
+ #
12
+ # Register other Info classes when they are loaded.
13
+ #
14
+ def self.inherited( subclass )
15
+ $infos = [] unless $infos
16
+ $infos << subclass
17
+ end
18
+
11
19
  #
12
20
  # Load the version from the VERSION file.
13
21
  #
@@ -28,6 +36,32 @@ module GlooLang
28
36
  return "#{APP_NAME}, version #{VERSION}"
29
37
  end
30
38
 
39
+ #
40
+ # Get the full application version information,
41
+ # including engine version.
42
+ #
43
+ def self.full_version
44
+ str = "#{display_title}"
45
+ if $infos
46
+ $infos.each do |o|
47
+ str << "\n#{o.display_title}"
48
+ end
49
+ end
50
+ return str
51
+ end
52
+
31
53
  end
54
+
55
+ #
56
+ # Add the ruby version information.
57
+ #
58
+ class RubyInfo < Info
59
+
60
+ def self.display_title
61
+ return "Ruby version: #{RUBY_VERSION}"
62
+ end
63
+
64
+ end
65
+
32
66
  end
33
67
  end
@@ -4,25 +4,23 @@
4
4
  # Application Logging wrapper.
5
5
  #
6
6
  require 'active_support'
7
- require 'colorize'
8
- require 'colorized_string'
9
7
 
10
8
  module GlooLang
11
9
  module App
12
10
  class Log
13
11
 
14
- attr_reader :logger, :quiet
12
+ attr_reader :logger
13
+ attr_accessor :quiet
15
14
 
16
15
  #
17
16
  # Set up a logger.
18
17
  # If quiet is true, then message are written to the log
19
18
  # but not to the console.
20
19
  #
21
- def initialize( quiet )
20
+ def initialize( quiet=true )
22
21
  f = File.join( $settings.log_path, 'gloo.log' )
23
22
  @logger = Logger.new( f )
24
23
  @logger.level = Logger::DEBUG
25
- @quiet = quiet
26
24
  end
27
25
 
28
26
  #
@@ -45,7 +43,7 @@ module GlooLang
45
43
  #
46
44
  def info( msg )
47
45
  @logger.info msg
48
- puts msg.blue unless @quiet
46
+ puts msg unless @quiet
49
47
  end
50
48
 
51
49
  #
@@ -54,7 +52,7 @@ module GlooLang
54
52
  #
55
53
  def warn( msg )
56
54
  @logger.warn msg
57
- puts msg.yellow unless @quiet
55
+ puts msg unless @quiet
58
56
  end
59
57
 
60
58
  #
@@ -68,11 +66,11 @@ module GlooLang
68
66
  if ex
69
67
  @logger.error ex.message
70
68
  @logger.error ex.backtrace
71
- puts msg.red unless @quiet
72
- puts ex.message.red unless @quiet
69
+ puts msg unless @quiet
70
+ puts ex.message unless @quiet
73
71
  puts ex.backtrace unless @quiet
74
72
  else
75
- puts msg.red unless @quiet
73
+ puts msg unless @quiet
76
74
  end
77
75
  end
78
76
 
@@ -0,0 +1,75 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2022 Eric Crane. All rights reserved.
3
+ #
4
+ # Handle input and output for the current platform.
5
+ #
6
+ # This is an abstract base class and minimal implementation
7
+ # is only to facilitate testing.
8
+ #
9
+
10
+ module GlooLang
11
+ module App
12
+ class Platform
13
+
14
+ #
15
+ # Set up Platform.
16
+ #
17
+ def initialize
18
+ end
19
+
20
+ #
21
+ # Show a message.
22
+ # Abstract--implment in subclass.
23
+ #
24
+ def show( msg, md=false, page=false )
25
+ puts msg
26
+ end
27
+
28
+ #
29
+ # Prompt for the next command.
30
+ # Abstract--implment in subclass.
31
+ #
32
+ def prompt_cmd
33
+ return ''
34
+ end
35
+
36
+ #
37
+ # Clear the screen.
38
+ # Abstract--implment in subclass.
39
+ #
40
+ def clear_screen
41
+ end
42
+
43
+ #
44
+ # Edit some temporary text and return the edited text.
45
+ # Abstract--implment in subclass.
46
+ #
47
+ def edit initial_value
48
+ return initial_value
49
+ end
50
+
51
+ #
52
+ # Show the given table data.
53
+ # Abstract--implment in subclass.
54
+ #
55
+ def show_table( headers, data, title = nil )
56
+ end
57
+
58
+ #
59
+ # Get the number of vertical lines on screen.
60
+ # Abstract--implment in subclass.
61
+ #
62
+ def lines
63
+ return 40
64
+ end
65
+
66
+ #
67
+ # Get the number of horizontal columns on screen.
68
+ # Abstract--implment in subclass.
69
+ #
70
+ def cols
71
+ return 80
72
+ end
73
+ end
74
+ end
75
+ end
@@ -5,8 +5,6 @@
5
5
  #
6
6
 
7
7
  require 'yaml'
8
- require 'tty-screen'
9
- require 'colorize'
10
8
 
11
9
  module GlooLang
12
10
  module App
@@ -48,11 +46,11 @@ module GlooLang
48
46
  # Can be seen in app with 'help settings'
49
47
  #
50
48
  def show
51
- puts "\nApplication Settings:".blue
52
- puts ' Startup with: '.yellow + @start_with.white
53
- puts ' Indent in Listing: '.yellow + @list_indent.to_s.white
54
- puts ' Screen Lines: '.yellow + GlooLang::App::Settings.lines.to_s.white
55
- puts ' Page Size: '.yellow + GlooLang::App::Settings.page_size.to_s.white
49
+ puts "\nApplication Settings:"
50
+ puts ' Startup with: ' + @start_with
51
+ puts ' Indent in Listing: ' + @list_indent.to_s
52
+ puts ' Screen Lines: ' + GlooLang::App::Settings.lines.to_s
53
+ puts ' Page Size: ' + GlooLang::App::Settings.page_size.to_s
56
54
  puts ''
57
55
  self.show_paths
58
56
  puts ''
@@ -62,24 +60,49 @@ module GlooLang
62
60
  # Show path settings
63
61
  #
64
62
  def show_paths
65
- puts ' User Root Path is here: '.yellow + @user_root.white
66
- puts ' Projects Path: '.yellow + @project_path.white
67
- puts ' Tmp Path: '.yellow + @tmp_path.white
68
- puts ' Debug Path: '.yellow + @debug_path.white
63
+ puts ' User Root Path is here: ' + @user_root
64
+ puts ' Projects Path: ' + @project_path
65
+ puts ' Tmp Path: ' + @tmp_path
66
+ puts ' Debug Path: ' + @debug_path
69
67
  end
70
68
 
69
+ # #
70
+ # # Show the current application settings.
71
+ # # Can be seen in app with 'help settings'
72
+ # #
73
+ # def show
74
+ # puts "\nApplication Settings:".blue
75
+ # puts ' Startup with: '.yellow + @start_with.white
76
+ # puts ' Indent in Listing: '.yellow + @list_indent.to_s.white
77
+ # puts ' Screen Lines: '.yellow + GlooLang::App::Settings.lines.to_s.white
78
+ # puts ' Page Size: '.yellow + GlooLang::App::Settings.page_size.to_s.white
79
+ # puts ''
80
+ # self.show_paths
81
+ # puts ''
82
+ # end
83
+ #
84
+ # #
85
+ # # Show path settings
86
+ # #
87
+ # def show_paths
88
+ # puts ' User Root Path is here: '.yellow + @user_root.white
89
+ # puts ' Projects Path: '.yellow + @project_path.white
90
+ # puts ' Tmp Path: '.yellow + @tmp_path.white
91
+ # puts ' Debug Path: '.yellow + @debug_path.white
92
+ # end
93
+
71
94
  #
72
95
  # Get the number of vertical lines on screen.
73
96
  #
74
97
  def self.lines
75
- TTY::Screen.rows
98
+ $engine.platform.lines
76
99
  end
77
100
 
78
101
  #
79
102
  # Get the number of horizontal columns on screen.
80
103
  #
81
104
  def self.cols
82
- TTY::Screen.cols
105
+ $engine.platform.cols
83
106
  end
84
107
 
85
108
  #
@@ -3,8 +3,6 @@
3
3
  #
4
4
  # An object that contains a collection of other objects.
5
5
  #
6
- require 'tty-table'
7
- require 'pastel'
8
6
 
9
7
  module GlooLang
10
8
  module Objs
@@ -59,16 +57,7 @@ module GlooLang
59
57
  #
60
58
  def msg_show_key_value_table
61
59
  data = self.children.map { |o| [ o.name, o.value ] }
62
- pastel = ::Pastel.new
63
- table = TTY::Table.new rows: data
64
- pad = [ 0, 1, 0, 1 ]
65
- rendered = table.render( :ascii, indent: 2, padding: pad ) do |r|
66
- r.border.style = :blue
67
- r.filter = proc do |val, _row_index, col_index|
68
- col_index.zero? ? pastel.blue( val ) : pastel.white( val )
69
- end
70
- end
71
- puts "\n #{rendered}\n\n"
60
+ $engine.platform.show_table nil, data, title
72
61
  end
73
62
 
74
63
  end
@@ -3,8 +3,6 @@
3
3
  #
4
4
  # A [multiline] block of text.
5
5
  #
6
- require 'tty-editor'
7
- require 'tty-pager'
8
6
 
9
7
  module GlooLang
10
8
  module Objs
@@ -12,7 +10,6 @@ module GlooLang
12
10
 
13
11
  KEYWORD = 'text'.freeze
14
12
  KEYWORD_SHORT = 'txt'.freeze
15
- DEFAULT_TMP_FILE = 'tmp.txt'.freeze
16
13
 
17
14
  #
18
15
  # The name of the object type.
@@ -67,19 +64,14 @@ module GlooLang
67
64
  def msg_page
68
65
  return unless value
69
66
 
70
- # pager = TTY::Pager::SystemPager.new command: 'less -R'
71
- pager = TTY::Pager.new
72
- pager.page( value )
67
+ $engine.platform.show( value, false, true )
73
68
  end
74
69
 
75
70
  #
76
71
  # Edit the text in the default editor.
77
72
  #
78
73
  def msg_edit
79
- tmp = File.join( $settings.tmp_path, DEFAULT_TMP_FILE )
80
- File.open( tmp, 'w' ) { |file| file.write( self.value ) }
81
- TTY::Editor.open( tmp )
82
- set_value File.read( tmp )
74
+ self.value = $engine.platform.edit( self.value )
83
75
  end
84
76
 
85
77
  end
@@ -3,8 +3,6 @@
3
3
  #
4
4
  # Markdown data.
5
5
  #
6
- require 'tty-markdown'
7
- require 'tty-pager'
8
6
 
9
7
  module GlooLang
10
8
  module Objs
@@ -64,7 +62,7 @@ module GlooLang
64
62
  # Show the markdown data in the terminal.
65
63
  #
66
64
  def msg_show
67
- puts TTY::Markdown.parse self.value
65
+ $engine.platform.show( self.value, true, false )
68
66
  end
69
67
 
70
68
  #
@@ -73,10 +71,7 @@ module GlooLang
73
71
  def msg_page
74
72
  return unless self.value
75
73
 
76
- md = TTY::Markdown.parse self.value
77
- # pager = TTY::Pager::SystemPager.new command: 'less -R'
78
- pager = TTY::Pager.new
79
- pager.page( md )
74
+ $engine.platform.show( md, true, true )
80
75
  end
81
76
 
82
77
  end
@@ -4,8 +4,6 @@
4
4
  # A data table.
5
5
  # The table container headers and data.
6
6
  #
7
- require 'tty-table'
8
- require 'pastel'
9
7
 
10
8
  module GlooLang
11
9
  module Objs
@@ -106,33 +104,7 @@ module GlooLang
106
104
  #
107
105
  def msg_show
108
106
  title = self.value
109
- GlooLang::Objs::Table.show headers, data, title
110
- end
111
-
112
- # ---------------------------------------------------------------------
113
- # Static table helper
114
- # ---------------------------------------------------------------------
115
-
116
- #
117
- # Show the given table data.
118
- #
119
- def self.show( headers, data, title = nil )
120
- pastel = ::Pastel.new
121
- table = TTY::Table.new headers, data
122
- pad = [ 0, 1, 0, 1 ]
123
- rendered = table.render( :ascii, indent: 2, padding: pad ) do |r|
124
- r.border.style = :blue
125
- r.filter = proc do |val, row_index, _col_index|
126
- # col_index % 2 == 1 ? pastel.red.on_green(val) : val
127
- if row_index.zero?
128
- pastel.blue( val )
129
- else
130
- row_index.odd? ? pastel.white( val ) : pastel.yellow( val )
131
- end
132
- end
133
- end
134
- puts "\n#{title.white}"
135
- puts "#{rendered}\n\n"
107
+ $engine.platform.show_table headers, data, title
136
108
  end
137
109
 
138
110
  end
@@ -3,7 +3,7 @@
3
3
  #
4
4
  # Show a single object's value.
5
5
  #
6
- require 'colorized_string'
6
+ # require 'colorized_string'
7
7
 
8
8
  module GlooLang
9
9
  module Verbs
@@ -54,7 +54,8 @@ module GlooLang
54
54
  expr = GlooLang::Expr::Expression.new( @params.tokens )
55
55
  val = expr.evaluate
56
56
  color = val.to_sym
57
- return ColorizedString[ str.to_s ].colorize( color )
57
+ # return ColorizedString[ str.to_s ].colorize( color )
58
+ return str.to_s
58
59
  end
59
60
  return str
60
61
  end