gloo 1.4.2 → 2.0.0

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 (131) hide show
  1. checksums.yaml +4 -4
  2. data/.DS_Store +0 -0
  3. data/.gitignore +1 -0
  4. data/gloo.gemspec +0 -2
  5. data/lib/VERSION +1 -1
  6. data/lib/dependencies.rb +4 -4
  7. data/lib/gloo/app/args.rb +112 -0
  8. data/lib/gloo/app/engine.rb +247 -0
  9. data/lib/gloo/app/engine_context.rb +25 -0
  10. data/lib/gloo/app/info.rb +20 -3
  11. data/lib/gloo/app/log.rb +73 -1
  12. data/lib/gloo/app/mode.rb +27 -0
  13. data/lib/gloo/app/platform.rb +8 -1
  14. data/lib/gloo/app/settings.rb +202 -0
  15. data/lib/gloo/convert/converter.rb +42 -0
  16. data/lib/gloo/convert/string_to_date.rb +21 -0
  17. data/lib/gloo/convert/string_to_datetime.rb +21 -0
  18. data/lib/gloo/convert/string_to_decimal.rb +20 -0
  19. data/lib/gloo/convert/string_to_integer.rb +20 -0
  20. data/lib/gloo/convert/string_to_time.rb +21 -0
  21. data/lib/gloo/core/baseo.rb +31 -0
  22. data/lib/gloo/core/dictionary.rb +245 -0
  23. data/lib/gloo/core/error.rb +61 -0
  24. data/lib/gloo/core/event_manager.rb +45 -0
  25. data/lib/gloo/core/factory.rb +211 -0
  26. data/lib/gloo/core/gloo_system.rb +267 -0
  27. data/lib/gloo/core/heap.rb +53 -0
  28. data/lib/gloo/core/here.rb +36 -0
  29. data/lib/gloo/core/it.rb +36 -0
  30. data/lib/gloo/core/literal.rb +30 -0
  31. data/lib/gloo/core/obj.rb +318 -0
  32. data/lib/gloo/core/obj_finder.rb +30 -0
  33. data/lib/gloo/core/op.rb +40 -0
  34. data/lib/gloo/core/parser.rb +60 -0
  35. data/lib/gloo/core/pn.rb +212 -0
  36. data/lib/gloo/core/tokens.rb +165 -0
  37. data/lib/gloo/core/verb.rb +87 -0
  38. data/lib/gloo/exec/action.rb +48 -0
  39. data/lib/gloo/exec/dispatch.rb +40 -0
  40. data/lib/gloo/exec/exec_env.rb +75 -0
  41. data/lib/gloo/exec/runner.rb +45 -0
  42. data/lib/gloo/exec/script.rb +50 -0
  43. data/lib/gloo/exec/stack.rb +79 -0
  44. data/lib/gloo/expr/expression.rb +119 -0
  45. data/lib/gloo/expr/l_boolean.rb +36 -0
  46. data/lib/gloo/expr/l_decimal.rb +39 -0
  47. data/lib/gloo/expr/l_integer.rb +37 -0
  48. data/lib/gloo/expr/l_string.rb +58 -0
  49. data/lib/gloo/expr/op_div.rb +22 -0
  50. data/lib/gloo/expr/op_minus.rb +22 -0
  51. data/lib/gloo/expr/op_mult.rb +22 -0
  52. data/lib/gloo/expr/op_plus.rb +24 -0
  53. data/lib/gloo/objs/basic/alias.rb +78 -0
  54. data/lib/gloo/objs/basic/boolean.rb +120 -0
  55. data/lib/gloo/objs/basic/container.rb +65 -0
  56. data/lib/gloo/objs/basic/decimal.rb +76 -0
  57. data/lib/gloo/objs/basic/integer.rb +73 -0
  58. data/lib/gloo/objs/basic/script.rb +99 -0
  59. data/lib/gloo/objs/basic/string.rb +77 -0
  60. data/lib/gloo/objs/basic/text.rb +79 -0
  61. data/lib/gloo/objs/basic/untyped.rb +41 -0
  62. data/lib/gloo/objs/cli/banner.rb +1 -1
  63. data/lib/gloo/objs/cli/bar.rb +3 -3
  64. data/lib/gloo/objs/cli/colorize.rb +1 -1
  65. data/lib/gloo/objs/cli/confirm.rb +1 -1
  66. data/lib/gloo/objs/cli/menu.rb +6 -6
  67. data/lib/gloo/objs/cli/menu_item.rb +1 -1
  68. data/lib/gloo/objs/cli/pastel.rb +1 -1
  69. data/lib/gloo/objs/cli/prompt.rb +1 -1
  70. data/lib/gloo/objs/cli/select.rb +2 -2
  71. data/lib/gloo/objs/ctrl/each.rb +279 -0
  72. data/lib/gloo/objs/ctrl/repeat.rb +108 -0
  73. data/lib/gloo/objs/data/markdown.rb +79 -0
  74. data/lib/gloo/objs/data/mysql.rb +5 -5
  75. data/lib/gloo/objs/data/query.rb +4 -4
  76. data/lib/gloo/objs/data/sqlite.rb +1 -1
  77. data/lib/gloo/objs/data/table.rb +112 -0
  78. data/lib/gloo/objs/dev/git.rb +2 -2
  79. data/lib/gloo/objs/dev/stats.rb +4 -4
  80. data/lib/gloo/objs/dt/date.rb +65 -0
  81. data/lib/gloo/objs/dt/datetime.rb +120 -0
  82. data/lib/gloo/objs/dt/dt_tools.rb +100 -0
  83. data/lib/gloo/objs/dt/time.rb +65 -0
  84. data/lib/gloo/objs/ror/erb.rb +116 -0
  85. data/lib/gloo/objs/ror/eval.rb +107 -0
  86. data/lib/gloo/objs/snd/play.rb +1 -1
  87. data/lib/gloo/objs/snd/say.rb +1 -1
  88. data/lib/gloo/objs/system/file_handle.rb +4 -4
  89. data/lib/gloo/objs/system/ssh_exec.rb +1 -1
  90. data/lib/gloo/objs/system/system.rb +1 -1
  91. data/lib/gloo/objs/web/http_get.rb +159 -0
  92. data/lib/gloo/objs/web/http_post.rb +183 -0
  93. data/lib/gloo/objs/web/json.rb +135 -0
  94. data/lib/gloo/objs/web/slack.rb +130 -0
  95. data/lib/gloo/objs/web/teams.rb +117 -0
  96. data/lib/gloo/objs/web/uri.rb +148 -0
  97. data/lib/gloo/persist/disc_mech.rb +87 -0
  98. data/lib/gloo/persist/file_loader.rb +193 -0
  99. data/lib/gloo/persist/file_saver.rb +51 -0
  100. data/lib/gloo/persist/file_storage.rb +46 -0
  101. data/lib/gloo/persist/line_splitter.rb +81 -0
  102. data/lib/gloo/persist/persist_man.rb +153 -0
  103. data/lib/gloo/utils/format.rb +21 -0
  104. data/lib/gloo/utils/stats.rb +206 -0
  105. data/lib/gloo/utils/words.rb +19 -0
  106. data/lib/gloo/verbs/alert.rb +2 -2
  107. data/lib/gloo/verbs/beep.rb +1 -1
  108. data/lib/gloo/verbs/cls.rb +1 -1
  109. data/lib/gloo/verbs/context.rb +62 -0
  110. data/lib/gloo/verbs/create.rb +68 -0
  111. data/lib/gloo/verbs/execute.rb +56 -0
  112. data/lib/gloo/verbs/files.rb +49 -0
  113. data/lib/gloo/verbs/help.rb +1 -1
  114. data/lib/gloo/verbs/if.rb +92 -0
  115. data/lib/gloo/verbs/list.rb +98 -0
  116. data/lib/gloo/verbs/load.rb +45 -0
  117. data/lib/gloo/verbs/move.rb +89 -0
  118. data/lib/gloo/verbs/put.rb +94 -0
  119. data/lib/gloo/verbs/quit.rb +40 -0
  120. data/lib/gloo/verbs/reload.rb +43 -0
  121. data/lib/gloo/verbs/run.rb +75 -0
  122. data/lib/gloo/verbs/save.rb +39 -0
  123. data/lib/gloo/verbs/show.rb +63 -0
  124. data/lib/gloo/verbs/tell.rb +80 -0
  125. data/lib/gloo/verbs/unless.rb +92 -0
  126. data/lib/gloo/verbs/unload.rb +46 -0
  127. data/lib/gloo/verbs/version.rb +3 -3
  128. data/lib/gloo/verbs/wait.rb +42 -0
  129. data/lib/gloo.rb +2 -2
  130. data/lib/run.rb +2 -2
  131. metadata +97 -22
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6591892e28f187a9d4a9423b73cad883ce4e82727b1766c7e2479cfda45c6eb5
4
- data.tar.gz: '0849baf49b9e3f5badea735a10e7681bed0e5aa6844077acb08b60cdd8686ed6'
3
+ metadata.gz: 9b19e54f7dd61af964351d823b146fdd04506784a31c6a146461cd608f34c879
4
+ data.tar.gz: 6d5cbb60e6de73b127a1156bcbd37a1711c3d39ae5da76c280d4893f327e65da
5
5
  SHA512:
6
- metadata.gz: 27430e48100e1b2d983c75978104e164f5a5aaca69223df0e765515e1f596c77fcca75828afe7e3e17c2ceef3bef54c1b3333a80282acadc226aea972a45ba82
7
- data.tar.gz: '068f43c3a736319df51dad920cad68322543326ea41b8713b06d5f88daaa757c6c5da8d5b20189b0de4f08c5d706a104601df0a3baf05a2ad92b1159d0f44b9c'
6
+ metadata.gz: cc2f6254760735dd87fa7d42aa8c9698d6a162afc322478e76b49cab1b52305a3d833fc85c202169f5b7e1df69ba567eaeb85fda4174e7daff451296ec1a4661
7
+ data.tar.gz: 63a96da42cd2d21cc5e27489c7161c20e3a58e1b3b72534766bf4d48c6ac469e7168b7de975e7731bd566b3698566890b568e99441899b0061b61c45fde2c2a5
data/.DS_Store CHANGED
Binary file
data/.gitignore CHANGED
@@ -11,3 +11,4 @@
11
11
  test/gloo/debug/*
12
12
  Gemfile.lock
13
13
  *.DS_Store
14
+ .DS_Store
data/gloo.gemspec CHANGED
@@ -37,8 +37,6 @@ Gem::Specification.new do |spec|
37
37
  # spec.add_development_dependency 'rake', '~> 10.0'
38
38
  spec.add_development_dependency "rake", '~> 13.0', '>= 13.0.1'
39
39
 
40
- spec.add_dependency "gloo-lang", '~> 1.2', ">= 1.4.3"
41
-
42
40
  spec.add_dependency "activesupport", '~> 6.1', ">= 6.1.5"
43
41
  # spec.add_dependency "activesupport", '~> 6.1', ">= 6.1.4.6"
44
42
  # spec.add_dependency "activesupport", '~> 5.2', ">= 5.2.4.3"
data/lib/VERSION CHANGED
@@ -1 +1 @@
1
- 1.4.2
1
+ 2.0.0
data/lib/dependencies.rb CHANGED
@@ -2,8 +2,8 @@
2
2
  # Script to build a list of dependencies
3
3
  #
4
4
 
5
- require 'gloo_lang/core/baseo'
6
- require 'gloo_lang/core/obj'
5
+ # require 'gloo_lang/core/baseo'
6
+ # require 'gloo_lang/core/obj'
7
7
 
8
8
  path = File.dirname( File.absolute_path( __FILE__ ) )
9
9
 
@@ -11,8 +11,8 @@ files = []
11
11
  #
12
12
  # We want to start with these to avoid dependency errors later on.
13
13
  #
14
- # files << File.join( path, 'gloo_lang', 'core', 'baseo.rb' )
15
- # files << File.join( path, 'gloo_lang', 'core', 'obj.rb' )
14
+ files << File.join( path, 'gloo', 'core', 'baseo.rb' )
15
+ files << File.join( path, 'gloo', 'core', 'obj.rb' )
16
16
 
17
17
  root = File.join( path, 'gloo', '**/*.rb' )
18
18
  Dir.glob( root ).each do |ruby_file|
@@ -0,0 +1,112 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
3
+ #
4
+ # Arguments (parameters) used to specify functionality.
5
+ # These might have come from the CLI or as parameters
6
+ # in the constructor.
7
+ #
8
+ require 'active_support'
9
+
10
+ module Gloo
11
+ module App
12
+ class Args
13
+
14
+ QUIET = 'quiet'.freeze
15
+ GLOO_ENV = 'GLOO_ENV'.freeze
16
+
17
+ attr_reader :switches, :files
18
+
19
+ #
20
+ # Create arguments and setup.
21
+ #
22
+ def initialize( engine, params = [] )
23
+ @engine = engine
24
+ @switches = []
25
+ @files = []
26
+
27
+ params.each { |o| process_one_arg( o ) }
28
+ ARGV.each { |o| process_one_arg( o ) }
29
+ end
30
+
31
+ #
32
+ # Was the --quiet arg passed?
33
+ #
34
+ def quiet?
35
+ return @switches.include?( QUIET )
36
+ end
37
+
38
+ #
39
+ # Is the version switch set?
40
+ #
41
+ def version?
42
+ @switches.include?( Gloo::App::Mode::VERSION.to_s )
43
+ end
44
+
45
+ #
46
+ # Is the help switch set?
47
+ #
48
+ def help?
49
+ @switches.include?( Gloo::App::Mode::HELP.to_s )
50
+ end
51
+
52
+ #
53
+ # Is the cli switch set?
54
+ #
55
+ def cli?
56
+ @switches.include?( Gloo::App::Mode::CLI.to_s )
57
+ end
58
+
59
+ #
60
+ # Is the embed switch set?
61
+ #
62
+ def embed?
63
+ @switches.include?( Gloo::App::Mode::EMBED.to_s )
64
+ end
65
+
66
+ #
67
+ # Detect the mode to be run in.
68
+ # Start by seeing if a mode is specified.
69
+ # Then look for the presence of files.
70
+ # Then finally use the default: embedded mode.
71
+ #
72
+ def detect_mode
73
+ mode = if ENV[ GLOO_ENV ] == Gloo::App::Mode::TEST.to_s
74
+ Mode::TEST
75
+ elsif version?
76
+ Mode::VERSION
77
+ elsif help?
78
+ Mode::HELP
79
+ elsif cli?
80
+ Mode::CLI
81
+ elsif embed?
82
+ Mode::EMBED
83
+ elsif @files.count.positive?
84
+ Mode::SCRIPT
85
+ else
86
+ Mode.default_mode
87
+ end
88
+ @engine.log.debug "running in #{mode} mode"
89
+
90
+ return mode
91
+ end
92
+
93
+ # ---------------------------------------------------------------------
94
+ # Private
95
+ # ---------------------------------------------------------------------
96
+
97
+ private
98
+
99
+ #
100
+ # Process one argument or parameter.
101
+ #
102
+ def process_one_arg( arg )
103
+ if arg.start_with? '--'
104
+ switches << arg[ 2..-1 ]
105
+ else
106
+ files << arg
107
+ end
108
+ end
109
+
110
+ end
111
+ end
112
+ end
@@ -0,0 +1,247 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
3
+ #
4
+ # The Gloo Script Engine.
5
+ # The Engine aggregates all the elements needed to run gloo.
6
+ # The Engine runs the main event loop and delegates processing
7
+ # to the relevant element.
8
+ #
9
+
10
+ module Gloo
11
+ module App
12
+ class Engine
13
+
14
+ attr_reader :settings, :log
15
+ attr_reader :args, :mode, :running, :platform,
16
+ :dictionary, :parser, :heap, :factory
17
+ attr_accessor :last_cmd, :persist_man, :event_manager,
18
+ :exec_env, :converter
19
+
20
+ #
21
+ # Set up the engine with basic elements.
22
+ #
23
+ def initialize( context )
24
+ @args = Args.new( self, context.params )
25
+ @settings = Settings.new( self, context.user_root )
26
+
27
+ @log = context.log.new( self, @args.quiet? )
28
+ @log.debug "log (class: #{@log.class.name}) in use ..."
29
+
30
+ @platform = context.platform
31
+ @log.debug "platform (class: #{@platform.class.name}) in use ..."
32
+
33
+ @log.debug 'engine intialized...'
34
+ end
35
+
36
+ #
37
+ # Start the engine.
38
+ # Load object and verb definitions and setup engine elements.
39
+ #
40
+ def start
41
+ @log.debug 'starting the engine...'
42
+ @log.debug Gloo::App::Info.display_title
43
+ @mode = @args.detect_mode
44
+ @running = true
45
+
46
+ @dictionary = Gloo::Core::Dictionary.get
47
+
48
+ @parser = Gloo::Core::Parser.new( self )
49
+ @heap = Gloo::Core::Heap.new( self )
50
+ @factory = Gloo::Core::Factory.new( self )
51
+ @persist_man = Gloo::Persist::PersistMan.new( self )
52
+ @event_manager = Gloo::Core::EventManager.new( self )
53
+
54
+ @exec_env = Gloo::Exec::ExecEnv.new( self )
55
+ @converter = Gloo::Convert::Converter.new( self )
56
+
57
+ @log.debug 'the engine has started'
58
+ run_mode
59
+ end
60
+
61
+ # ---------------------------------------------------------------------
62
+ # Serialization
63
+ # ---------------------------------------------------------------------
64
+
65
+ #
66
+ # Prepare for serialization by removing any file references.
67
+ # Without this, the engine cannot be serialized.
68
+ #
69
+ def prep_serialize
70
+ @log.prep_serialize
71
+ end
72
+
73
+ #
74
+ # Get the serialized version of this Engine.
75
+ #
76
+ def serialize
77
+ prep_serialize
78
+ Marshal::dump( self )
79
+ end
80
+
81
+ #
82
+ # Deserialize the Engine data.
83
+ #
84
+ def self.deserialize data
85
+ e = Marshal::load( data )
86
+ e.restore_after_deserialization
87
+ return e
88
+ end
89
+
90
+ #
91
+ # Restore the engine after deserialization.
92
+ #
93
+ def restore_after_deserialization
94
+ @log.restore_after_deserialization
95
+ end
96
+
97
+ # ---------------------------------------------------------------------
98
+ # Run
99
+ # ---------------------------------------------------------------------
100
+
101
+ #
102
+ # Run gloo in the selected mode.
103
+ #
104
+ def run_mode
105
+ @log.debug "running gloo in #{@mode} mode"
106
+
107
+ if @mode == Mode::VERSION
108
+ run_version
109
+ elsif @mode == Mode::SCRIPT
110
+ run_files
111
+ elsif @mode == Mode::EMBED
112
+ run_keep_alive
113
+ else
114
+ run
115
+ end
116
+ end
117
+
118
+ #
119
+ # Run files specified on the CLI.
120
+ # Then quit.
121
+ #
122
+ def run_files
123
+ load_files
124
+ quit
125
+ end
126
+
127
+ #
128
+ # Load all file specified in the CLI.
129
+ #
130
+ def load_files
131
+ @args.files.each { |f| @persist_man.load( f ) }
132
+ end
133
+
134
+ #
135
+ # Run in interactive mode.
136
+ #
137
+ def run
138
+ # Open default file(s)
139
+ self.open_start_file
140
+
141
+ # Open any files specifed in args
142
+ load_files
143
+
144
+ unless @mode == Mode::SCRIPT || @args.quiet?
145
+ self.loop
146
+ end
147
+
148
+ quit
149
+ end
150
+
151
+ #
152
+ # Run in Embedded mode, which means we'll
153
+ # start the engine, but wait for external inputs.
154
+ #
155
+ def run_keep_alive
156
+ @log.debug 'Running in Embedded mode...'
157
+ end
158
+
159
+ #
160
+ # Get the setting for the start_with file and open it.
161
+ #
162
+ def open_start_file
163
+ name = @settings.start_with
164
+ @persist_man.load( name ) if name
165
+ end
166
+
167
+ #
168
+ # Is the last command entered blank?
169
+ #
170
+ def last_cmd_blank?
171
+ return true if @last_cmd.nil?
172
+ return true if @last_cmd.strip.empty?
173
+
174
+ return false
175
+ end
176
+
177
+ #
178
+ # Prompt, Get input, process.
179
+ #
180
+ def loop
181
+ while @running
182
+ @last_cmd = @platform.prompt_cmd
183
+ process_cmd
184
+ end
185
+ end
186
+
187
+ #
188
+ # Process the command.
189
+ #
190
+ def process_cmd
191
+ if last_cmd_blank?
192
+ @platform.clear_screen
193
+ return
194
+ end
195
+
196
+ @parser.run @last_cmd
197
+ end
198
+
199
+ #
200
+ # Request the engine to stop running.
201
+ #
202
+ def stop_running
203
+ @running = false
204
+ end
205
+
206
+ #
207
+ # Do any clean up and quit.
208
+ #
209
+ def quit
210
+ @log.debug 'quitting...'
211
+ end
212
+
213
+ # ---------------------------------------------------------------------
214
+ # Helpers
215
+ # ---------------------------------------------------------------------
216
+
217
+ #
218
+ # Show the version information and then quit.
219
+ #
220
+ def run_version
221
+ @platform.show Info.full_version unless @args.quiet?
222
+ quit
223
+ end
224
+
225
+ # ---------------------------------------------------------------------
226
+ # Error Handling
227
+ # ---------------------------------------------------------------------
228
+
229
+ #
230
+ # Did the last command result in an error?
231
+ #
232
+ def error?
233
+ return !@heap.error.value.nil?
234
+ end
235
+
236
+ #
237
+ # Report an error.
238
+ # Write it to the log and set the heap error value.
239
+ #
240
+ def err( msg )
241
+ @log.error msg
242
+ @heap.error.set_to msg
243
+ end
244
+
245
+ end
246
+ end
247
+ end
@@ -0,0 +1,25 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2022 Eric Crane. All rights reserved.
3
+ #
4
+ # The context (parameters) for the Gloo Script Engine.
5
+ #
6
+
7
+ module Gloo
8
+ module App
9
+ class EngineContext
10
+
11
+ attr_accessor :params, :platform, :log, :user_root
12
+
13
+ #
14
+ # Create the context, supplying defaults where relevant.
15
+ #
16
+ def initialize( params = [], platform=nil, log=nil, user_root=nil )
17
+ @params = params
18
+ @platform = platform ? platform : Gloo::App::Platform.new
19
+ @log = log ? log : Gloo::App::Log
20
+ @user_root = user_root
21
+ end
22
+
23
+ end
24
+ end
25
+ end
data/lib/gloo/app/info.rb CHANGED
@@ -4,11 +4,11 @@
4
4
  # Application information such as Version and public name.
5
5
  #
6
6
 
7
- require 'gloo-lang'
7
+ # require 'gloo-lang'
8
8
 
9
9
  module Gloo
10
10
  module App
11
- class Info < GlooLang::App::Info
11
+ class Info
12
12
 
13
13
  #
14
14
  # Load the version from the VERSION file.
@@ -30,6 +30,23 @@ module Gloo
30
30
  return "#{APP_NAME}, version #{VERSION}"
31
31
  end
32
32
 
33
+
34
+ #
35
+ # Get the full application version information,
36
+ # including engine version.
37
+ #
38
+ def self.full_version
39
+ return "#{display_title}\n#{ruby_info}"
40
+ return str
41
+ end
42
+
43
+ #
44
+ # Get the version of Ruby.
45
+ #
46
+ def self.ruby_info
47
+ return "Ruby version: #{RUBY_VERSION}"
48
+ end
49
+
33
50
  end
34
51
  end
35
- end
52
+ end
data/lib/gloo/app/log.rb CHANGED
@@ -9,7 +9,60 @@ require 'colorized_string'
9
9
 
10
10
  module Gloo
11
11
  module App
12
- class Log < GlooLang::App::Log
12
+ class Log
13
+
14
+ attr_accessor :quiet
15
+ attr_reader :logger
16
+
17
+ # ---------------------------------------------------------------------
18
+ # Initialization
19
+ # ---------------------------------------------------------------------
20
+
21
+ #
22
+ # Set up a logger.
23
+ # If quiet is true, then message are written to the log
24
+ # but not to the console.
25
+ #
26
+ def initialize( engine, quiet=true )
27
+ @engine = engine
28
+ @quite = quiet
29
+
30
+ create_logger
31
+
32
+ debug 'log intialized...'
33
+ end
34
+
35
+ #
36
+ # Create the default [file] logger.
37
+ #
38
+ def create_logger
39
+ f = File.join( @engine.settings.log_path, 'gloo.log' )
40
+ @logger = Logger.new( f )
41
+ @logger.level = Logger::DEBUG
42
+ end
43
+
44
+ # ---------------------------------------------------------------------
45
+ # Standard Output
46
+ # ---------------------------------------------------------------------
47
+
48
+ #
49
+ # Show a message unless we're in quite mode.
50
+ #
51
+ def show( msg )
52
+ puts msg unless @quiet
53
+ end
54
+
55
+ # ---------------------------------------------------------------------
56
+ # Logging functions
57
+ # ---------------------------------------------------------------------
58
+
59
+ #
60
+ # Write a debug message to the log.
61
+ #
62
+ def debug( msg )
63
+ @logger.debug msg
64
+ end
65
+
13
66
 
14
67
  #
15
68
  # Write an information message to the log.
@@ -48,6 +101,25 @@ module Gloo
48
101
  end
49
102
  end
50
103
 
104
+ # ---------------------------------------------------------------------
105
+ # Serialization
106
+ # ---------------------------------------------------------------------
107
+
108
+ #
109
+ # Prepare for serialization by removing the file reference.
110
+ # Without this, the engine cannot be serialized.
111
+ #
112
+ def prep_serialize
113
+ @logger = nil
114
+ end
115
+
116
+ #
117
+ # Restore the logger after deserialization.
118
+ #
119
+ def restore_after_deserialization
120
+ create_logger
121
+ end
122
+
51
123
  end
52
124
  end
53
125
  end
@@ -0,0 +1,27 @@
1
+ # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
+ # Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
3
+ #
4
+ # Mode the Application is running in.
5
+ #
6
+
7
+ module Gloo
8
+ module App
9
+ class Mode
10
+
11
+ EMBED = :embed # Run as embedded script processor
12
+ CLI = :cli # Run in interactive (CLI) mode
13
+ SCRIPT = :script # Run a script
14
+ VERSION = :version # Show version information
15
+ HELP = :help # Show the help screen
16
+ TEST = :test # Running in Unit Test mode.
17
+
18
+ #
19
+ # Get the default mode.
20
+ #
21
+ def self.default_mode
22
+ return EMBED
23
+ end
24
+
25
+ end
26
+ end
27
+ end
@@ -17,7 +17,7 @@ require 'pastel'
17
17
 
18
18
  module Gloo
19
19
  module App
20
- class Platform < GlooLang::App::Platform
20
+ class Platform
21
21
 
22
22
  DEFAULT_TMP_FILE = 'tmp.txt'.freeze
23
23
 
@@ -73,6 +73,13 @@ module Gloo
73
73
  return File.read( tmp )
74
74
  end
75
75
 
76
+ #
77
+ # Get the file mechanism for this platform.
78
+ #
79
+ def getFileMech( engine )
80
+ return Gloo::Persist::DiscMech.new( engine )
81
+ end
82
+
76
83
  # ---------------------------------------------------------------------
77
84
  # Color helper
78
85
  # ---------------------------------------------------------------------