gloo 1.4.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
  # ---------------------------------------------------------------------