gloo 0.8.0 → 1.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.
- checksums.yaml +4 -4
- data/.DS_Store +0 -0
- data/Gemfile.lock +32 -28
- data/LICENSE.txt +1 -1
- data/gloo.gemspec +11 -6
- data/lib/VERSION +1 -1
- data/lib/dependencies.rb +4 -4
- data/lib/gloo/app/info.rb +3 -1
- data/lib/gloo/app/log.rb +1 -29
- data/lib/gloo/app/platform.rb +142 -0
- data/lib/gloo/objs/cli/banner.rb +2 -2
- data/lib/gloo/objs/cli/bar.rb +4 -4
- data/lib/gloo/objs/cli/colorize.rb +3 -3
- data/lib/gloo/objs/cli/confirm.rb +3 -3
- data/lib/gloo/objs/cli/menu.rb +9 -9
- data/lib/gloo/objs/cli/menu_item.rb +2 -2
- data/lib/gloo/objs/cli/pastel.rb +2 -2
- data/lib/gloo/objs/cli/prompt.rb +4 -4
- data/lib/gloo/objs/cli/select.rb +4 -4
- data/lib/gloo/objs/dev/git.rb +7 -7
- data/lib/gloo/objs/dev/stats.rb +8 -5
- data/lib/gloo/objs/snd/play.rb +1 -1
- data/lib/gloo/objs/snd/say.rb +2 -2
- data/lib/gloo/objs/system/file_handle.rb +9 -9
- data/lib/gloo/objs/system/ssh_exec.rb +3 -3
- data/lib/gloo/objs/system/system.rb +2 -2
- data/lib/gloo/verbs/alert.rb +7 -7
- data/lib/gloo/verbs/beep.rb +1 -1
- data/lib/gloo/verbs/cls.rb +2 -2
- data/lib/gloo.rb +5 -1
- data/lib/run.rb +5 -1
- metadata +39 -145
- data/lib/gloo/app/args.rb +0 -112
- data/lib/gloo/app/engine.rb +0 -230
- data/lib/gloo/app/help.rb +0 -156
- data/lib/gloo/app/mode.rb +0 -27
- data/lib/gloo/app/settings.rb +0 -186
- data/lib/gloo/convert/converter.rb +0 -35
- data/lib/gloo/convert/string_to_datetime.rb +0 -21
- data/lib/gloo/convert/string_to_decimal.rb +0 -20
- data/lib/gloo/convert/string_to_integer.rb +0 -20
- data/lib/gloo/core/baseo.rb +0 -30
- data/lib/gloo/core/dictionary.rb +0 -181
- data/lib/gloo/core/error.rb +0 -61
- data/lib/gloo/core/event_manager.rb +0 -44
- data/lib/gloo/core/factory.rb +0 -210
- data/lib/gloo/core/gloo_system.rb +0 -266
- data/lib/gloo/core/heap.rb +0 -52
- data/lib/gloo/core/here.rb +0 -36
- data/lib/gloo/core/it.rb +0 -36
- data/lib/gloo/core/literal.rb +0 -30
- data/lib/gloo/core/obj.rb +0 -303
- data/lib/gloo/core/obj_finder.rb +0 -30
- data/lib/gloo/core/op.rb +0 -40
- data/lib/gloo/core/parser.rb +0 -59
- data/lib/gloo/core/pn.rb +0 -188
- data/lib/gloo/core/tokens.rb +0 -165
- data/lib/gloo/core/verb.rb +0 -86
- data/lib/gloo/exec/action.rb +0 -48
- data/lib/gloo/exec/dispatch.rb +0 -40
- data/lib/gloo/exec/exec_env.rb +0 -74
- data/lib/gloo/exec/runner.rb +0 -45
- data/lib/gloo/exec/script.rb +0 -49
- data/lib/gloo/exec/stack.rb +0 -78
- data/lib/gloo/expr/expression.rb +0 -118
- data/lib/gloo/expr/l_boolean.rb +0 -36
- data/lib/gloo/expr/l_decimal.rb +0 -39
- data/lib/gloo/expr/l_integer.rb +0 -37
- data/lib/gloo/expr/l_string.rb +0 -58
- data/lib/gloo/expr/op_div.rb +0 -22
- data/lib/gloo/expr/op_minus.rb +0 -22
- data/lib/gloo/expr/op_mult.rb +0 -22
- data/lib/gloo/expr/op_plus.rb +0 -24
- data/lib/gloo/objs/basic/alias.rb +0 -78
- data/lib/gloo/objs/basic/boolean.rb +0 -120
- data/lib/gloo/objs/basic/container.rb +0 -76
- data/lib/gloo/objs/basic/decimal.rb +0 -76
- data/lib/gloo/objs/basic/integer.rb +0 -73
- data/lib/gloo/objs/basic/script.rb +0 -99
- data/lib/gloo/objs/basic/string.rb +0 -77
- data/lib/gloo/objs/basic/text.rb +0 -87
- data/lib/gloo/objs/basic/untyped.rb +0 -41
- data/lib/gloo/objs/ctrl/each.rb +0 -279
- data/lib/gloo/objs/ctrl/repeat.rb +0 -108
- data/lib/gloo/objs/data/markdown.rb +0 -84
- data/lib/gloo/objs/data/mysql.rb +0 -192
- data/lib/gloo/objs/data/query.rb +0 -176
- data/lib/gloo/objs/data/sqlite.rb +0 -159
- data/lib/gloo/objs/data/table.rb +0 -140
- data/lib/gloo/objs/dt/date.rb +0 -50
- data/lib/gloo/objs/dt/datetime.rb +0 -62
- data/lib/gloo/objs/dt/time.rb +0 -50
- data/lib/gloo/objs/ror/erb.rb +0 -116
- data/lib/gloo/objs/ror/eval.rb +0 -107
- data/lib/gloo/objs/web/http_get.rb +0 -159
- data/lib/gloo/objs/web/http_post.rb +0 -183
- data/lib/gloo/objs/web/json.rb +0 -135
- data/lib/gloo/objs/web/slack.rb +0 -130
- data/lib/gloo/objs/web/teams.rb +0 -117
- data/lib/gloo/objs/web/uri.rb +0 -148
- data/lib/gloo/persist/file_loader.rb +0 -191
- data/lib/gloo/persist/file_saver.rb +0 -49
- data/lib/gloo/persist/file_storage.rb +0 -45
- data/lib/gloo/persist/line_splitter.rb +0 -81
- data/lib/gloo/persist/persist_man.rb +0 -120
- data/lib/gloo/utils/format.rb +0 -21
- data/lib/gloo/utils/stats.rb +0 -205
- data/lib/gloo/utils/words.rb +0 -19
- data/lib/gloo/verbs/context.rb +0 -62
- data/lib/gloo/verbs/create.rb +0 -68
- data/lib/gloo/verbs/execute.rb +0 -56
- data/lib/gloo/verbs/help.rb +0 -264
- data/lib/gloo/verbs/if.rb +0 -92
- data/lib/gloo/verbs/list.rb +0 -98
- data/lib/gloo/verbs/load.rb +0 -45
- data/lib/gloo/verbs/move.rb +0 -89
- data/lib/gloo/verbs/put.rb +0 -94
- data/lib/gloo/verbs/quit.rb +0 -40
- data/lib/gloo/verbs/run.rb +0 -75
- data/lib/gloo/verbs/save.rb +0 -39
- data/lib/gloo/verbs/show.rb +0 -64
- data/lib/gloo/verbs/tell.rb +0 -79
- data/lib/gloo/verbs/unless.rb +0 -92
- data/lib/gloo/verbs/version.rb +0 -37
- data/lib/gloo/verbs/wait.rb +0 -42
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
|
2
|
-
# Copyright:: Copyright (c) 2020 Eric Crane. All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
# Helper class used as part of file loading.
|
|
5
|
-
# It is responsible for splitting a line into components.
|
|
6
|
-
#
|
|
7
|
-
|
|
8
|
-
module Gloo
|
|
9
|
-
module Persist
|
|
10
|
-
class LineSplitter
|
|
11
|
-
|
|
12
|
-
BEGIN_BLOCK = 'BEGIN'.freeze
|
|
13
|
-
END_BLOCK = 'END'.freeze
|
|
14
|
-
|
|
15
|
-
attr_reader :obj
|
|
16
|
-
|
|
17
|
-
#
|
|
18
|
-
# Set up a line splitter
|
|
19
|
-
#
|
|
20
|
-
def initialize( line, tabs )
|
|
21
|
-
@line = line
|
|
22
|
-
@tabs = tabs
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
#
|
|
26
|
-
# Split the line into 3 parts.
|
|
27
|
-
#
|
|
28
|
-
def split
|
|
29
|
-
detect_name
|
|
30
|
-
detect_type
|
|
31
|
-
detect_value
|
|
32
|
-
|
|
33
|
-
return @name, @type, @value
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
#
|
|
37
|
-
# Detect the object name.
|
|
38
|
-
#
|
|
39
|
-
def detect_name
|
|
40
|
-
@line = @line.strip
|
|
41
|
-
@idx = @line.index( ' ' )
|
|
42
|
-
@name = @line[ 0..@idx - 1 ]
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
#
|
|
46
|
-
# Detect the object type.
|
|
47
|
-
#
|
|
48
|
-
def detect_type
|
|
49
|
-
@line = @line[ @idx + 1..-1 ]
|
|
50
|
-
@idx = @line.index( ' ' )
|
|
51
|
-
|
|
52
|
-
if @line[ 0 ] == ':'
|
|
53
|
-
@type = 'untyped'
|
|
54
|
-
return
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
@type = @line[ 0..( @idx ? @idx - 1 : -1 ) ]
|
|
58
|
-
@type = @type[ 1..-1 ] if @type[ 0 ] == '['
|
|
59
|
-
@type = @type[ 0..-2 ] if @type[ -1 ] == ']'
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
#
|
|
63
|
-
# Detect the object value.
|
|
64
|
-
# Use nil if there is no value specified.
|
|
65
|
-
#
|
|
66
|
-
def detect_value
|
|
67
|
-
if @idx
|
|
68
|
-
@value = @line[ @idx + 1..-1 ]
|
|
69
|
-
if @value[ 0..1 ] == ': '
|
|
70
|
-
@value = @value[ 2..-1 ]
|
|
71
|
-
elsif @value[ 0 ] == ':'
|
|
72
|
-
@value = @value[ 1..-1 ]
|
|
73
|
-
end
|
|
74
|
-
else
|
|
75
|
-
@value = nil
|
|
76
|
-
end
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
end
|
|
80
|
-
end
|
|
81
|
-
end
|
|
@@ -1,120 +0,0 @@
|
|
|
1
|
-
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
|
2
|
-
# Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
# The persistance manager.
|
|
5
|
-
# Keeps a collection of object-file mappings, and then
|
|
6
|
-
# uses mappings to know how/where to save updated objects.
|
|
7
|
-
#
|
|
8
|
-
|
|
9
|
-
module Gloo
|
|
10
|
-
module Persist
|
|
11
|
-
class PersistMan
|
|
12
|
-
|
|
13
|
-
attr_reader :maps
|
|
14
|
-
|
|
15
|
-
#
|
|
16
|
-
# Contructor for the persistence manager.
|
|
17
|
-
#
|
|
18
|
-
def initialize
|
|
19
|
-
@maps = []
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
#
|
|
23
|
-
# Save one object to the file.
|
|
24
|
-
#
|
|
25
|
-
def save( name = '' )
|
|
26
|
-
if name.nil? || name.strip.empty?
|
|
27
|
-
save_all
|
|
28
|
-
else
|
|
29
|
-
save_one name
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
#
|
|
34
|
-
# Save one object to the file.
|
|
35
|
-
#
|
|
36
|
-
def save_all
|
|
37
|
-
@maps.each( &:save )
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
#
|
|
41
|
-
# Save one object to the file.
|
|
42
|
-
#
|
|
43
|
-
def save_one( name )
|
|
44
|
-
ref = Gloo::Core::Pn.new name
|
|
45
|
-
obj = ref.resolve
|
|
46
|
-
pn = get_full_path_name name
|
|
47
|
-
fs = Gloo::Persist::FileStorage.new( pn, obj )
|
|
48
|
-
fs.save
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
#
|
|
52
|
-
# Load the object from the file.
|
|
53
|
-
#
|
|
54
|
-
def load( name )
|
|
55
|
-
pns = get_full_path_names name
|
|
56
|
-
return unless pns
|
|
57
|
-
|
|
58
|
-
pns.each do |pn|
|
|
59
|
-
$log.debug "Load file(s) at: #{pn}"
|
|
60
|
-
fs = Gloo::Persist::FileStorage.new( pn )
|
|
61
|
-
fs.load
|
|
62
|
-
@maps << fs
|
|
63
|
-
$engine.event_manager.on_load fs.obj
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
#
|
|
68
|
-
# Get the full path and name of the file.
|
|
69
|
-
#
|
|
70
|
-
def get_full_path_names( name )
|
|
71
|
-
return nil if name.strip.empty?
|
|
72
|
-
|
|
73
|
-
if name.strip[ -1 ] == '*'
|
|
74
|
-
pns = []
|
|
75
|
-
dir = File.join( $settings.project_path, name[ 0..-2 ] )
|
|
76
|
-
Dir.glob( "#{dir}*.gloo" ).each do |f|
|
|
77
|
-
pns << f
|
|
78
|
-
end
|
|
79
|
-
return pns
|
|
80
|
-
else
|
|
81
|
-
ext_path = File.expand_path( name )
|
|
82
|
-
return [ ext_path ] if self.gloo_file?( ext_path )
|
|
83
|
-
|
|
84
|
-
full_name = "#{name}#{file_ext}"
|
|
85
|
-
return [ File.join( $settings.project_path, full_name ) ]
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
#
|
|
90
|
-
# Check to see if a given path name refers to a gloo object file.
|
|
91
|
-
#
|
|
92
|
-
def gloo_file?( name )
|
|
93
|
-
return false unless name
|
|
94
|
-
return false unless File.exist?( name )
|
|
95
|
-
return false unless File.file?( name )
|
|
96
|
-
return false unless name.end_with?( self.file_ext )
|
|
97
|
-
|
|
98
|
-
return true
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
#
|
|
102
|
-
# Get the default file extention.
|
|
103
|
-
#
|
|
104
|
-
def file_ext
|
|
105
|
-
return '.gloo'
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
#
|
|
109
|
-
# Print out all object - persistance mappings.
|
|
110
|
-
# This is a debugging tool.
|
|
111
|
-
#
|
|
112
|
-
def show_maps
|
|
113
|
-
@maps.each do |o|
|
|
114
|
-
puts " \t #{o.pn} \t #{o.obj.name}"
|
|
115
|
-
end
|
|
116
|
-
end
|
|
117
|
-
|
|
118
|
-
end
|
|
119
|
-
end
|
|
120
|
-
end
|
data/lib/gloo/utils/format.rb
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
|
2
|
-
# Copyright:: Copyright (c) 2020 Eric Crane. All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
# Formatting utilities
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
module Gloo
|
|
8
|
-
module Utils
|
|
9
|
-
class Format
|
|
10
|
-
|
|
11
|
-
#
|
|
12
|
-
# Format number, adding comma separators.
|
|
13
|
-
# Ex: 1000 -> 1,000
|
|
14
|
-
#
|
|
15
|
-
def self.number( num )
|
|
16
|
-
return num.to_s.reverse.scan( /.{1,3}/ ).join( ',' ).reverse
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
end
|
data/lib/gloo/utils/stats.rb
DELETED
|
@@ -1,205 +0,0 @@
|
|
|
1
|
-
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
|
2
|
-
# Copyright:: Copyright (c) 2020 Eric Crane. All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
# Utilities related to words (strings).
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
module Gloo
|
|
8
|
-
module Utils
|
|
9
|
-
class Stats
|
|
10
|
-
|
|
11
|
-
DIR_NOT_FOUND_ERR = 'The folder was not found!'.freeze
|
|
12
|
-
|
|
13
|
-
# ---------------------------------------------------------------------
|
|
14
|
-
# Setup
|
|
15
|
-
# ---------------------------------------------------------------------
|
|
16
|
-
|
|
17
|
-
#
|
|
18
|
-
# Create a stats utility class for the given directory.
|
|
19
|
-
#
|
|
20
|
-
def initialize( dir, types, skip = [] )
|
|
21
|
-
@dir = dir
|
|
22
|
-
setup_loc types
|
|
23
|
-
@skip = skip
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
# ---------------------------------------------------------------------
|
|
27
|
-
# Public Functions
|
|
28
|
-
# ---------------------------------------------------------------------
|
|
29
|
-
|
|
30
|
-
#
|
|
31
|
-
# Is the stats utility valid?
|
|
32
|
-
# Does it have a valid root directory.
|
|
33
|
-
#
|
|
34
|
-
def valid?
|
|
35
|
-
return true if @dir && File.directory?( @dir )
|
|
36
|
-
|
|
37
|
-
$engine.err DIR_NOT_FOUND_ERR
|
|
38
|
-
$engine.heap.it.set_to false
|
|
39
|
-
|
|
40
|
-
return false
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
#
|
|
44
|
-
# Show all stat data for the project.
|
|
45
|
-
#
|
|
46
|
-
def show_all
|
|
47
|
-
return unless valid?
|
|
48
|
-
|
|
49
|
-
generate
|
|
50
|
-
puts "Showing All stats for #{@dir}".white
|
|
51
|
-
puts "\n ** #{@dir_cnt} Total Folders ** "
|
|
52
|
-
puts " ** #{@file_cnt} Total Files ** "
|
|
53
|
-
|
|
54
|
-
busy_folders( 7 )
|
|
55
|
-
file_types
|
|
56
|
-
loc
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
#
|
|
60
|
-
# Get a list of the busiest folders.
|
|
61
|
-
# Count is how many results we want.
|
|
62
|
-
#
|
|
63
|
-
def busy_folders( count = 17 )
|
|
64
|
-
return unless valid?
|
|
65
|
-
|
|
66
|
-
generate
|
|
67
|
-
puts "\nBusy Folders:".yellow
|
|
68
|
-
|
|
69
|
-
@folders.sort! { |a, b| a[ :cnt ] <=> b[ :cnt ] }
|
|
70
|
-
@folders.reverse!
|
|
71
|
-
@folders[ 0..count ].each do |f|
|
|
72
|
-
puts " #{f[ :cnt ]} - #{f[ :name ]}"
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
#
|
|
77
|
-
# Show file types and how many of each there are.
|
|
78
|
-
#
|
|
79
|
-
def file_types
|
|
80
|
-
return unless valid?
|
|
81
|
-
|
|
82
|
-
generate
|
|
83
|
-
puts "\nFiles by Type:".yellow
|
|
84
|
-
|
|
85
|
-
@types = @types.sort_by( &:last )
|
|
86
|
-
@types.reverse!
|
|
87
|
-
@types.each do |o|
|
|
88
|
-
puts " #{o[ 1 ]} - #{o[ 0 ]}" unless o[ 0 ].empty?
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
#
|
|
93
|
-
# Show Lines of Code
|
|
94
|
-
#
|
|
95
|
-
def loc
|
|
96
|
-
return unless valid?
|
|
97
|
-
|
|
98
|
-
generate
|
|
99
|
-
total = 0
|
|
100
|
-
|
|
101
|
-
@loc.each do |k, v|
|
|
102
|
-
puts "\n #{k} Lines of Code".yellow
|
|
103
|
-
total += v[ :lines ]
|
|
104
|
-
formatted = Gloo::Utils::Format.number( v[ :lines ] )
|
|
105
|
-
puts " ** #{formatted} in #{v[ :files ].count} #{k} files ** "
|
|
106
|
-
|
|
107
|
-
puts "\n Busy #{k} files:".yellow
|
|
108
|
-
files = v[ :files ].sort! { |a, b| a[ :lines ] <=> b[ :lines ] }
|
|
109
|
-
files.reverse!
|
|
110
|
-
files[ 0..12 ].each do |f|
|
|
111
|
-
puts " #{f[ :lines ]} - #{f[ :file ]}"
|
|
112
|
-
end
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
formatted = Gloo::Utils::Format.number( total )
|
|
116
|
-
puts "\n #{formatted} Total Lines of Code".white
|
|
117
|
-
end
|
|
118
|
-
|
|
119
|
-
# ---------------------------------------------------------------------
|
|
120
|
-
# Private Functions
|
|
121
|
-
# ---------------------------------------------------------------------
|
|
122
|
-
|
|
123
|
-
#
|
|
124
|
-
# Setup counters for lines of code by file type.
|
|
125
|
-
def setup_loc( types )
|
|
126
|
-
@loc = {}
|
|
127
|
-
|
|
128
|
-
types.split( ' ' ).each do |t|
|
|
129
|
-
@loc[ t ] = { lines: 0, files: [] }
|
|
130
|
-
end
|
|
131
|
-
end
|
|
132
|
-
|
|
133
|
-
#
|
|
134
|
-
# Generate stat data unless we've already done so.
|
|
135
|
-
#
|
|
136
|
-
def generate
|
|
137
|
-
return if @folders
|
|
138
|
-
|
|
139
|
-
$log.debug 'Generating...'
|
|
140
|
-
@folders = []
|
|
141
|
-
@types = {}
|
|
142
|
-
@file_cnt = 0
|
|
143
|
-
@dir_cnt = 0
|
|
144
|
-
|
|
145
|
-
generate_for Pathname.new( @dir )
|
|
146
|
-
end
|
|
147
|
-
|
|
148
|
-
#
|
|
149
|
-
# Generate data for the given path.
|
|
150
|
-
# NOTE: this is a recursive function.
|
|
151
|
-
# It traverses all sub-direcctories.
|
|
152
|
-
#
|
|
153
|
-
def generate_for( path )
|
|
154
|
-
return if @skip.include?( File.basename( path ) )
|
|
155
|
-
|
|
156
|
-
cnt = 0
|
|
157
|
-
path.children.each do |f|
|
|
158
|
-
if f.directory?
|
|
159
|
-
@dir_cnt += 1
|
|
160
|
-
generate_for( f )
|
|
161
|
-
else
|
|
162
|
-
@file_cnt += 1
|
|
163
|
-
cnt += 1
|
|
164
|
-
handle_file( f )
|
|
165
|
-
inc_type( File.extname( f ) )
|
|
166
|
-
end
|
|
167
|
-
end
|
|
168
|
-
@folders << { name: path, cnt: cnt }
|
|
169
|
-
end
|
|
170
|
-
|
|
171
|
-
#
|
|
172
|
-
# Increment the file count.
|
|
173
|
-
#
|
|
174
|
-
def inc_type( type )
|
|
175
|
-
if @types[ type ]
|
|
176
|
-
@types[ type ] += 1
|
|
177
|
-
else
|
|
178
|
-
@types[ type ] = 1
|
|
179
|
-
end
|
|
180
|
-
end
|
|
181
|
-
|
|
182
|
-
#
|
|
183
|
-
# Consider code file types.
|
|
184
|
-
#
|
|
185
|
-
def handle_file( file )
|
|
186
|
-
ext = File.extname( file )
|
|
187
|
-
return unless ext
|
|
188
|
-
|
|
189
|
-
ext = ext[ 1..-1 ]
|
|
190
|
-
return unless @loc.key?( ext )
|
|
191
|
-
|
|
192
|
-
lines = count_lines( file )
|
|
193
|
-
@loc[ ext ][ :lines ] += lines
|
|
194
|
-
@loc[ ext ][ :files ] << { lines: lines, file: file }
|
|
195
|
-
end
|
|
196
|
-
|
|
197
|
-
#
|
|
198
|
-
# Count lines of code in file.
|
|
199
|
-
def count_lines( file )
|
|
200
|
-
return `wc -l #{file}`.split.first.to_i
|
|
201
|
-
end
|
|
202
|
-
|
|
203
|
-
end
|
|
204
|
-
end
|
|
205
|
-
end
|
data/lib/gloo/utils/words.rb
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
|
2
|
-
# Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
# Utilities related to words (strings).
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
require 'active_support/inflector'
|
|
8
|
-
|
|
9
|
-
module Gloo
|
|
10
|
-
module Utils
|
|
11
|
-
class Words
|
|
12
|
-
|
|
13
|
-
def self.pluralize( word )
|
|
14
|
-
return word.pluralize
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
data/lib/gloo/verbs/context.rb
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
|
2
|
-
# Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
# Set the current context pointer.
|
|
5
|
-
# Alternatively if no value is provided, just show the context.
|
|
6
|
-
#
|
|
7
|
-
|
|
8
|
-
module Gloo
|
|
9
|
-
module Verbs
|
|
10
|
-
class Context < Gloo::Core::Verb
|
|
11
|
-
|
|
12
|
-
KEYWORD = 'context'.freeze
|
|
13
|
-
KEYWORD_SHORT = '@'.freeze
|
|
14
|
-
|
|
15
|
-
#
|
|
16
|
-
# Run the verb.
|
|
17
|
-
#
|
|
18
|
-
def run
|
|
19
|
-
set_context if @tokens.token_count > 1
|
|
20
|
-
show_context
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
#
|
|
24
|
-
# Show the current context.
|
|
25
|
-
#
|
|
26
|
-
def show_context
|
|
27
|
-
$log.show "Context: #{$engine.heap.context}"
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
#
|
|
31
|
-
# Get the Verb's keyword.
|
|
32
|
-
#
|
|
33
|
-
def self.keyword
|
|
34
|
-
return KEYWORD
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
#
|
|
38
|
-
# Get the Verb's keyword shortcut.
|
|
39
|
-
#
|
|
40
|
-
def self.keyword_shortcut
|
|
41
|
-
return KEYWORD_SHORT
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
# ---------------------------------------------------------------------
|
|
45
|
-
# Private functions
|
|
46
|
-
# ---------------------------------------------------------------------
|
|
47
|
-
|
|
48
|
-
private
|
|
49
|
-
|
|
50
|
-
#
|
|
51
|
-
# Set the context to the given path.
|
|
52
|
-
#
|
|
53
|
-
def set_context
|
|
54
|
-
path = @tokens.second
|
|
55
|
-
$engine.heap.context.set_to path
|
|
56
|
-
$engine.heap.it.set_to path
|
|
57
|
-
$log.debug "Context set to #{$engine.heap.context}"
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
data/lib/gloo/verbs/create.rb
DELETED
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
|
2
|
-
# Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
# Create an object, optionally of a type.
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
module Gloo
|
|
8
|
-
module Verbs
|
|
9
|
-
class Create < Gloo::Core::Verb
|
|
10
|
-
|
|
11
|
-
KEYWORD = 'create'.freeze
|
|
12
|
-
KEYWORD_SHORT = '`'.freeze
|
|
13
|
-
AS = 'as'.freeze
|
|
14
|
-
VAL = ':'.freeze
|
|
15
|
-
NO_NAME_ERR = 'Object name is missing!'.freeze
|
|
16
|
-
|
|
17
|
-
#
|
|
18
|
-
# Run the verb.
|
|
19
|
-
#
|
|
20
|
-
def run
|
|
21
|
-
name = @tokens.second
|
|
22
|
-
type = @tokens.after_token( AS )
|
|
23
|
-
value = @tokens.after_token( VAL )
|
|
24
|
-
|
|
25
|
-
unless name
|
|
26
|
-
$engine.err NO_NAME_ERR
|
|
27
|
-
return
|
|
28
|
-
end
|
|
29
|
-
create name, type, value
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
#
|
|
33
|
-
# Get the Verb's keyword.
|
|
34
|
-
#
|
|
35
|
-
def self.keyword
|
|
36
|
-
return KEYWORD
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
#
|
|
40
|
-
# Get the Verb's keyword shortcut.
|
|
41
|
-
#
|
|
42
|
-
def self.keyword_shortcut
|
|
43
|
-
return KEYWORD_SHORT
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# ---------------------------------------------------------------------
|
|
47
|
-
# Private functions
|
|
48
|
-
# ---------------------------------------------------------------------
|
|
49
|
-
|
|
50
|
-
private
|
|
51
|
-
|
|
52
|
-
#
|
|
53
|
-
# Create an object with given name of given type with
|
|
54
|
-
# the given initial value.
|
|
55
|
-
#
|
|
56
|
-
def create( name, type, value )
|
|
57
|
-
if Gloo::Expr::LString.string?( value )
|
|
58
|
-
value = Gloo::Expr::LString.strip_quotes( value )
|
|
59
|
-
end
|
|
60
|
-
obj = $engine.factory.create( { name: name, type: type, value: value } )
|
|
61
|
-
|
|
62
|
-
obj.add_default_children if obj&.add_children_on_create?
|
|
63
|
-
$engine.heap.it.set_to value
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
data/lib/gloo/verbs/execute.rb
DELETED
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
# Author:: Eric Crane (mailto:eric.crane@mac.com)
|
|
2
|
-
# Copyright:: Copyright (c) 2020 Eric Crane. All rights reserved.
|
|
3
|
-
#
|
|
4
|
-
# Execute a shell command.
|
|
5
|
-
#
|
|
6
|
-
|
|
7
|
-
module Gloo
|
|
8
|
-
module Verbs
|
|
9
|
-
class Execute < Gloo::Core::Verb
|
|
10
|
-
|
|
11
|
-
KEYWORD = 'execute'.freeze
|
|
12
|
-
KEYWORD_SHORT = 'exec'.freeze
|
|
13
|
-
MISSING_EXPR_ERR = 'Missing Expression!'.freeze
|
|
14
|
-
|
|
15
|
-
#
|
|
16
|
-
# Run the verb.
|
|
17
|
-
#
|
|
18
|
-
def run
|
|
19
|
-
if @tokens.token_count < 2
|
|
20
|
-
$engine.err MISSING_EXPR_ERR
|
|
21
|
-
return
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
expr = Gloo::Expr::Expression.new( @tokens.params )
|
|
25
|
-
cmd = expr.evaluate
|
|
26
|
-
$log.debug "starting cmd: #{cmd}"
|
|
27
|
-
|
|
28
|
-
pid = fork { exec( cmd ) }
|
|
29
|
-
Process.wait pid
|
|
30
|
-
|
|
31
|
-
# pid = spawn cmd
|
|
32
|
-
# Process.wait pid
|
|
33
|
-
$log.debug "done executing cmd: #{cmd}"
|
|
34
|
-
|
|
35
|
-
# system expr.evaluate #, chdir: Dir.pwd
|
|
36
|
-
# `#{expr.evaluate}`
|
|
37
|
-
# exec expr.evaluate
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
#
|
|
41
|
-
# Get the Verb's keyword.
|
|
42
|
-
#
|
|
43
|
-
def self.keyword
|
|
44
|
-
return KEYWORD
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
#
|
|
48
|
-
# Get the Verb's keyword shortcut.
|
|
49
|
-
#
|
|
50
|
-
def self.keyword_shortcut
|
|
51
|
-
return KEYWORD_SHORT
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|