gloo-lang 0.9.3 → 0.9.6

Sign up to get free protection for your applications and to get access to all the features.
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
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gloo-lang
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.3
4
+ version: 0.9.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Crane
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-16 00:00:00.000000000 Z
11
+ date: 2022-03-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -138,6 +138,26 @@ dependencies:
138
138
  - - ">="
139
139
  - !ruby/object:Gem::Version
140
140
  version: 6.1.0
141
+ - !ruby/object:Gem::Dependency
142
+ name: tty-platform
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - "~>"
146
+ - !ruby/object:Gem::Version
147
+ version: '0.3'
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: 0.3.0
151
+ type: :runtime
152
+ prerelease: false
153
+ version_requirements: !ruby/object:Gem::Requirement
154
+ requirements:
155
+ - - "~>"
156
+ - !ruby/object:Gem::Version
157
+ version: '0.3'
158
+ - - ">="
159
+ - !ruby/object:Gem::Version
160
+ version: 0.3.0
141
161
  description: A scripting languge to keep it all together.
142
162
  email:
143
163
  - eric.crane@mac.com
@@ -164,6 +184,7 @@ files:
164
184
  - lib/gloo_lang/app/info.rb
165
185
  - lib/gloo_lang/app/log.rb
166
186
  - lib/gloo_lang/app/mode.rb
187
+ - lib/gloo_lang/app/platform.rb
167
188
  - lib/gloo_lang/app/settings.rb
168
189
  - lib/gloo_lang/convert/converter.rb
169
190
  - lib/gloo_lang/convert/string_to_datetime.rb
@@ -285,15 +306,6 @@ files:
285
306
  - lib/gloo_lang/objs/basic/string.rb
286
307
  - lib/gloo_lang/objs/basic/text.rb
287
308
  - lib/gloo_lang/objs/basic/untyped.rb
288
- - lib/gloo_lang/objs/cli/banner.rb
289
- - lib/gloo_lang/objs/cli/bar.rb
290
- - lib/gloo_lang/objs/cli/colorize.rb
291
- - lib/gloo_lang/objs/cli/confirm.rb
292
- - lib/gloo_lang/objs/cli/menu.rb
293
- - lib/gloo_lang/objs/cli/menu_item.rb
294
- - lib/gloo_lang/objs/cli/pastel.rb
295
- - lib/gloo_lang/objs/cli/prompt.rb
296
- - lib/gloo_lang/objs/cli/select.rb
297
309
  - lib/gloo_lang/objs/ctrl/each.rb
298
310
  - lib/gloo_lang/objs/ctrl/repeat.rb
299
311
  - lib/gloo_lang/objs/data/markdown.rb
@@ -301,18 +313,11 @@ files:
301
313
  - lib/gloo_lang/objs/data/query.rb
302
314
  - lib/gloo_lang/objs/data/sqlite.rb
303
315
  - lib/gloo_lang/objs/data/table.rb
304
- - lib/gloo_lang/objs/dev/git.rb
305
- - lib/gloo_lang/objs/dev/stats.rb
306
316
  - lib/gloo_lang/objs/dt/date.rb
307
317
  - lib/gloo_lang/objs/dt/datetime.rb
308
318
  - lib/gloo_lang/objs/dt/time.rb
309
319
  - lib/gloo_lang/objs/ror/erb.rb
310
320
  - lib/gloo_lang/objs/ror/eval.rb
311
- - lib/gloo_lang/objs/snd/play.rb
312
- - lib/gloo_lang/objs/snd/say.rb
313
- - lib/gloo_lang/objs/system/file_handle.rb
314
- - lib/gloo_lang/objs/system/ssh_exec.rb
315
- - lib/gloo_lang/objs/system/system.rb
316
321
  - lib/gloo_lang/objs/web/http_get.rb
317
322
  - lib/gloo_lang/objs/web/http_post.rb
318
323
  - lib/gloo_lang/objs/web/json.rb
@@ -327,9 +332,6 @@ files:
327
332
  - lib/gloo_lang/utils/format.rb
328
333
  - lib/gloo_lang/utils/stats.rb
329
334
  - lib/gloo_lang/utils/words.rb
330
- - lib/gloo_lang/verbs/alert.rb
331
- - lib/gloo_lang/verbs/beep.rb
332
- - lib/gloo_lang/verbs/cls.rb
333
335
  - lib/gloo_lang/verbs/context.rb
334
336
  - lib/gloo_lang/verbs/create.rb
335
337
  - lib/gloo_lang/verbs/execute.rb
@@ -1,108 +0,0 @@
1
- # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
- # Copyright:: Copyright (c) 2020 Eric Crane. All rights reserved.
3
- #
4
- # Show a large-text banner.
5
- #
6
- require 'tty-font'
7
- require 'pastel'
8
-
9
- module GlooLang
10
- module Objs
11
- class Banner < GlooLang::Core::Obj
12
-
13
- KEYWORD = 'banner'.freeze
14
- KEYWORD_SHORT = 'ban'.freeze
15
- TEXT = 'text'.freeze
16
- STYLE = 'style'.freeze
17
- COLOR = 'color'.freeze
18
-
19
- #
20
- # The name of the object type.
21
- #
22
- def self.typename
23
- return KEYWORD
24
- end
25
-
26
- #
27
- # The short name of the object type.
28
- #
29
- def self.short_typename
30
- return KEYWORD_SHORT
31
- end
32
-
33
- #
34
- # Get the banner text from the child object.
35
- #
36
- def text_value
37
- o = find_child TEXT
38
- return '' unless o
39
-
40
- return o.value
41
- end
42
-
43
- #
44
- # Get the banner style from the child object.
45
- #
46
- def style_value
47
- o = find_child STYLE
48
- return '' unless o
49
-
50
- return o.value
51
- end
52
-
53
- #
54
- # Get the banner color from the child object.
55
- #
56
- def color_value
57
- o = find_child COLOR
58
- return '' unless o
59
-
60
- return o.value
61
- end
62
-
63
- # ---------------------------------------------------------------------
64
- # Children
65
- # ---------------------------------------------------------------------
66
-
67
- # Does this object have children to add when an object
68
- # is created in interactive mode?
69
- # This does not apply during obj load, etc.
70
- def add_children_on_create?
71
- return true
72
- end
73
-
74
- # Add children to this object.
75
- # This is used by containers to add children needed
76
- # for default configurations.
77
- def add_default_children
78
- fac = $engine.factory
79
- fac.create_string TEXT, '', self
80
- fac.create_string STYLE, '', self
81
- fac.create_string COLOR, '', self
82
- end
83
-
84
- # ---------------------------------------------------------------------
85
- # Messages
86
- # ---------------------------------------------------------------------
87
-
88
- #
89
- # Get a list of message names that this object receives.
90
- #
91
- def self.messages
92
- return super + %w[show]
93
- end
94
-
95
- #
96
- # Show the banner bar
97
- #
98
- def msg_show
99
- font = TTY::Font.new self.style_value
100
- t = font.write( self.text_value )
101
- pastel = ::Pastel.new
102
- c = self.color_value.split( ' ' ).map( &:to_sym )
103
- puts pastel.decorate( t, *c )
104
- end
105
-
106
- end
107
- end
108
- end
@@ -1,133 +0,0 @@
1
- # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
- # Copyright:: Copyright (c) 2020 Eric Crane. All rights reserved.
3
- #
4
- # Show a CLI progress bar.
5
- #
6
- require 'tty-progressbar'
7
-
8
- module GlooLang
9
- module Objs
10
- class Bar < GlooLang::Core::Obj
11
-
12
- KEYWORD = 'bar'.freeze
13
- KEYWORD_SHORT = 'bar'.freeze
14
- NAME = 'name'.freeze
15
- TOTAL = 'total'.freeze
16
-
17
- #
18
- # The name of the object type.
19
- #
20
- def self.typename
21
- return KEYWORD
22
- end
23
-
24
- #
25
- # The short name of the object type.
26
- #
27
- def self.short_typename
28
- return KEYWORD_SHORT
29
- end
30
-
31
- #
32
- # Get the bar's name from the child object.
33
- #
34
- def name_value
35
- o = find_child NAME
36
- return '' unless o
37
-
38
- return o.value
39
- end
40
-
41
- #
42
- # Get the bar's total from the child object.
43
- #
44
- def total_value
45
- o = find_child TOTAL
46
- return 100 unless o
47
-
48
- return o.value
49
- end
50
-
51
- # ---------------------------------------------------------------------
52
- # Children
53
- # ---------------------------------------------------------------------
54
-
55
- # Does this object have children to add when an object
56
- # is created in interactive mode?
57
- # This does not apply during obj load, etc.
58
- def add_children_on_create?
59
- return true
60
- end
61
-
62
- # Add children to this object.
63
- # This is used by containers to add children needed
64
- # for default configurations.
65
- def add_default_children
66
- fac = $engine.factory
67
- fac.create_string NAME, '', self
68
- fac.create_int TOTAL, 100, self
69
- end
70
-
71
- # ---------------------------------------------------------------------
72
- # Messages
73
- # ---------------------------------------------------------------------
74
-
75
- #
76
- # Get a list of message names that this object receives.
77
- #
78
- def self.messages
79
- return super + %w[start advance stop run]
80
- end
81
-
82
- #
83
- # Start the progress bar.
84
- #
85
- def msg_start
86
- msg = "#{name_value} [:bar] :percent"
87
- @bar = TTY::ProgressBar.new( msg, total: total_value )
88
- end
89
-
90
- #
91
- # Finish the progress bar.
92
- #
93
- def msg_stop
94
- @bar.finish
95
- end
96
-
97
- #
98
- # Advance the progress bar.
99
- #
100
- def msg_advance
101
- x = 1
102
- if @params&.token_count&.positive?
103
- expr = GlooLang::Expr::Expression.new( @params.tokens )
104
- x = expr.evaluate.to_i
105
- end
106
-
107
- @bar.advance x
108
- end
109
-
110
- #
111
- # Run for the given number of seconds advancing
112
- # the bar to the end.
113
- #
114
- def msg_run
115
- msg_start
116
-
117
- x = 1
118
- if @params&.token_count&.positive?
119
- expr = GlooLang::Expr::Expression.new( @params.tokens )
120
- x = expr.evaluate.to_i
121
- end
122
-
123
- 100.times do
124
- sleep ( 0.0 + x ) / 100.0
125
- @bar.advance 1
126
- end
127
-
128
- msg_stop
129
- end
130
-
131
- end
132
- end
133
- end
@@ -1,73 +0,0 @@
1
- # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
- # Copyright:: Copyright (c) 2020 Eric Crane. All rights reserved.
3
- #
4
- # Show colorized output.
5
- #
6
- require 'colorized_string'
7
-
8
- module GlooLang
9
- module Objs
10
- class Colorize < GlooLang::Core::Obj
11
-
12
- KEYWORD = 'colorize'.freeze
13
- KEYWORD_SHORT = 'color'.freeze
14
-
15
- #
16
- # The name of the object type.
17
- #
18
- def self.typename
19
- return KEYWORD
20
- end
21
-
22
- #
23
- # The short name of the object type.
24
- #
25
- def self.short_typename
26
- return KEYWORD_SHORT
27
- end
28
-
29
- # ---------------------------------------------------------------------
30
- # Children
31
- # ---------------------------------------------------------------------
32
-
33
- # Does this object have children to add when an object
34
- # is created in interactive mode?
35
- # This does not apply during obj load, etc.
36
- def add_children_on_create?
37
- return true
38
- end
39
-
40
- # Add children to this object.
41
- # This is used by containers to add children needed
42
- # for default configurations.
43
- def add_default_children
44
- fac = $engine.factory
45
- fac.create_string 'white', '', self
46
- end
47
-
48
- # ---------------------------------------------------------------------
49
- # Messages
50
- # ---------------------------------------------------------------------
51
-
52
- #
53
- # Get a list of message names that this object receives.
54
- #
55
- def self.messages
56
- return super + [ 'run' ]
57
- end
58
-
59
- #
60
- # Run the colorize command.
61
- #
62
- def msg_run
63
- msg = ''
64
- children.each do |o|
65
- msg += ColorizedString[ o.value_display ].colorize( o.name.to_sym )
66
- end
67
- $log.show msg
68
- $engine.heap.it.set_to msg.to_s
69
- end
70
-
71
- end
72
- end
73
- end
@@ -1,96 +0,0 @@
1
- # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
- # Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
3
- #
4
- # Show a CLI confirmation prompt.
5
- #
6
-
7
- module GlooLang
8
- module Objs
9
- class Confirm < GlooLang::Core::Obj
10
-
11
- KEYWORD = 'confirm'.freeze
12
- KEYWORD_SHORT = 'confirm'.freeze
13
- PROMPT = 'prompt'.freeze
14
- DEFAULT_PROMPT = '> '.freeze
15
- RESULT = 'result'.freeze
16
-
17
- #
18
- # The name of the object type.
19
- #
20
- def self.typename
21
- return KEYWORD
22
- end
23
-
24
- #
25
- # The short name of the object type.
26
- #
27
- def self.short_typename
28
- return KEYWORD_SHORT
29
- end
30
-
31
- #
32
- # Get the URI from the child object.
33
- # Returns nil if there is none.
34
- #
35
- def prompt_value
36
- o = find_child PROMPT
37
- return nil unless o
38
-
39
- return o.value
40
- end
41
-
42
- #
43
- # Set the result of the system call.
44
- #
45
- def set_result( data )
46
- r = find_child RESULT
47
- return nil unless r
48
-
49
- r.set_value data
50
- end
51
-
52
- # ---------------------------------------------------------------------
53
- # Children
54
- # ---------------------------------------------------------------------
55
-
56
- # Does this object have children to add when an object
57
- # is created in interactive mode?
58
- # This does not apply during obj load, etc.
59
- def add_children_on_create?
60
- return true
61
- end
62
-
63
- # Add children to this object.
64
- # This is used by containers to add children needed
65
- # for default configurations.
66
- def add_default_children
67
- fac = $engine.factory
68
- fac.create_string PROMPT, DEFAULT_PROMPT, self
69
- fac.create_bool RESULT, nil, self
70
- end
71
-
72
- # ---------------------------------------------------------------------
73
- # Messages
74
- # ---------------------------------------------------------------------
75
-
76
- #
77
- # Get a list of message names that this object receives.
78
- #
79
- def self.messages
80
- return super + [ 'run' ]
81
- end
82
-
83
- #
84
- # Run the confirmation command.
85
- #
86
- def msg_run
87
- prompt = prompt_value
88
- return unless prompt
89
-
90
- result = $prompt.yes?( prompt )
91
- set_result result
92
- end
93
-
94
- end
95
- end
96
- end
@@ -1,206 +0,0 @@
1
- # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
- # Copyright:: Copyright (c) 2020 Eric Crane. All rights reserved.
3
- #
4
- # A CLI menu.
5
- # The menu contains a collection of menu items, a prompt
6
- # and an option to loop until done.
7
- #
8
-
9
- module GlooLang
10
- module Objs
11
- class Menu < GlooLang::Core::Obj
12
-
13
- KEYWORD = 'menu'.freeze
14
- KEYWORD_SHORT = 'menu'.freeze
15
- PROMPT = 'prompt'.freeze
16
- ITEMS = 'items'.freeze
17
- LOOP = 'loop'.freeze
18
- HIDE_ITEMS = 'hide_items'.freeze
19
- BEFORE_MENU = 'before_menu'.freeze
20
- DEFAULT = 'default'.freeze
21
-
22
- #
23
- # The name of the object type.
24
- #
25
- def self.typename
26
- return KEYWORD
27
- end
28
-
29
- #
30
- # The short name of the object type.
31
- #
32
- def self.short_typename
33
- return KEYWORD_SHORT
34
- end
35
-
36
- #
37
- # Get the value of the prompt child object.
38
- # Returns nil if there is none.
39
- #
40
- def prompt_value
41
- o = find_child PROMPT
42
- return '' unless o
43
-
44
- return o.value
45
- end
46
-
47
- #
48
- # Get the value of the loop child object.
49
- # Should we keep looping or should we stop?
50
- #
51
- def loop?
52
- o = find_child LOOP
53
- return false unless o
54
-
55
- return o.value
56
- end
57
-
58
- # ---------------------------------------------------------------------
59
- # Children
60
- # ---------------------------------------------------------------------
61
-
62
- #
63
- # Does this object have children to add when an object
64
- # is created in interactive mode?
65
- # This does not apply during obj load, etc.
66
- #
67
- def add_children_on_create?
68
- return true
69
- end
70
-
71
- #
72
- # Add children to this object.
73
- # This is used by containers to add children needed
74
- # for default configurations.
75
- #
76
- def add_default_children
77
- fac = $engine.factory
78
- fac.create_string PROMPT, '> ', self
79
- fac.create_can ITEMS, self
80
- fac.create_bool LOOP, true, self
81
- fac.create_script DEFAULT, '', self
82
- end
83
-
84
- # ---------------------------------------------------------------------
85
- # Messages
86
- # ---------------------------------------------------------------------
87
-
88
- #
89
- # Get a list of message names that this object receives.
90
- #
91
- def self.messages
92
- return super + [ 'run' ]
93
- end
94
-
95
- #
96
- # Show the menu options, and prompt for user input.
97
- #
98
- def msg_run
99
- loop do
100
- begin_menu
101
- if prompt_value.empty?
102
- dt = DateTime.now
103
- d = dt.strftime( '%Y.%m.%d' )
104
- t = dt.strftime( '%I:%M:%S' )
105
- cmd = $prompt.ask( "#{d.yellow} #{t.white} >" )
106
- else
107
- cmd = $prompt.ask( prompt_value )
108
- end
109
- cmd ? run_command( cmd ) : run_default
110
- break unless loop?
111
- end
112
- end
113
-
114
- # ---------------------------------------------------------------------
115
- # Menu actions
116
- # ---------------------------------------------------------------------
117
-
118
- #
119
- # Begin the menu execution.
120
- # Run the before menu script if there is one,
121
- # then show options unless we are hiding them by default.
122
- #
123
- def begin_menu
124
- run_before_menu
125
-
126
- # Check to see if we should show items at all.
127
- o = find_child HIDE_ITEMS
128
- return if o && o.value == true
129
-
130
- show_options
131
- end
132
-
133
- #
134
- # If there is a before menu script, run it now.
135
- #
136
- def run_before_menu
137
- o = find_child BEFORE_MENU
138
- return unless o
139
-
140
- GlooLang::Exec::Dispatch.message 'run', o
141
- end
142
-
143
- #
144
- # Show the list of menu options.
145
- #
146
- def show_options
147
- o = find_child ITEMS
148
- return unless o
149
-
150
- o.children.each do |mitem|
151
- mitem = GlooLang::Objs::Alias.resolve_alias( mitem )
152
- puts " #{mitem.shortcut_value} - #{mitem.description_value}"
153
- end
154
- end
155
-
156
- #
157
- # Find the command matching user input.
158
- #
159
- def find_cmd( cmd )
160
- o = find_child ITEMS
161
- return nil unless o
162
-
163
- o.children.each do |mitem|
164
- mitem = GlooLang::Objs::Alias.resolve_alias( mitem )
165
- return mitem if mitem.shortcut_value.downcase == cmd.downcase
166
- end
167
-
168
- return nil
169
- end
170
-
171
- #
172
- # Run the default option.
173
- #
174
- def run_default
175
- obj = find_child DEFAULT
176
- return unless obj
177
-
178
- s = GlooLang::Exec::Script.new obj
179
- s.run
180
- end
181
-
182
- #
183
- # Run the selected command.
184
- #
185
- def run_command( cmd )
186
- obj = find_cmd cmd
187
-
188
- unless obj
189
- if cmd == '?'
190
- show_options
191
- else
192
- puts "#{cmd} is not a valid option"
193
- end
194
- return
195
- end
196
-
197
- script = obj.do_script
198
- return unless script
199
-
200
- s = GlooLang::Exec::Script.new script
201
- s.run
202
- end
203
-
204
- end
205
- end
206
- end