gloo-lang 0.9.4 → 0.9.5

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.
@@ -1,110 +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 prompt and collect user input.
5
- #
6
-
7
- module GlooLang
8
- module Objs
9
- class Prompt < GlooLang::Core::Obj
10
-
11
- KEYWORD = 'prompt'.freeze
12
- KEYWORD_SHORT = 'ask'.freeze
13
- PROMPT = 'prompt'.freeze
14
- RESULT = 'result'.freeze
15
-
16
- #
17
- # The name of the object type.
18
- #
19
- def self.typename
20
- return KEYWORD
21
- end
22
-
23
- #
24
- # The short name of the object type.
25
- #
26
- def self.short_typename
27
- return KEYWORD_SHORT
28
- end
29
-
30
- #
31
- # Get the prompt from the child object.
32
- # Returns nil if there is none.
33
- #
34
- def prompt_value
35
- o = find_child PROMPT
36
- return nil unless o
37
-
38
- return o.value
39
- end
40
-
41
- #
42
- # Set the result of the system call.
43
- #
44
- def set_result( data )
45
- r = find_child RESULT
46
- return nil unless r
47
-
48
- r.set_value data
49
- end
50
-
51
- # ---------------------------------------------------------------------
52
- # Children
53
- # ---------------------------------------------------------------------
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
- #
60
- def add_children_on_create?
61
- return true
62
- end
63
-
64
- #
65
- # Add children to this object.
66
- # This is used by containers to add children needed
67
- # for default configurations.
68
- #
69
- def add_default_children
70
- fac = $engine.factory
71
- fac.create_string PROMPT, '>', self
72
- fac.create_string RESULT, nil, self
73
- end
74
-
75
- # ---------------------------------------------------------------------
76
- # Messages
77
- # ---------------------------------------------------------------------
78
-
79
- #
80
- # Get a list of message names that this object receives.
81
- #
82
- def self.messages
83
- return super + %w[run multiline]
84
- end
85
-
86
- #
87
- # Show a multiline prompt and get the user's input.
88
- #
89
- def msg_multiline
90
- prompt = prompt_value
91
- return unless prompt
92
-
93
- result = $prompt.multiline( prompt )
94
- set_result result.join
95
- end
96
-
97
- #
98
- # Show the prompt and get the user's input.
99
- #
100
- def msg_run
101
- prompt = prompt_value
102
- return unless prompt
103
-
104
- result = $prompt.ask( prompt )
105
- set_result result
106
- end
107
-
108
- end
109
- end
110
- end
@@ -1,126 +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 prompt and user selection from a list.
5
- #
6
-
7
- module GlooLang
8
- module Objs
9
- class Select < GlooLang::Core::Obj
10
-
11
- KEYWORD = 'select'.freeze
12
- KEYWORD_SHORT = 'sel'.freeze
13
- PROMPT = 'prompt'.freeze
14
- OPTIONS = 'options'.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 prompt 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
- # Get the list of options for selection.
44
- #
45
- def options
46
- o = find_child OPTIONS
47
- return [] unless o
48
-
49
- return o.children.map( &:name )
50
- end
51
-
52
- #
53
- # Get the value of the selected item.
54
- #
55
- def key_for_option( selected )
56
- o = find_child OPTIONS
57
- return nil unless o
58
-
59
- o.children.each do |c|
60
- return c.value if c.name == selected
61
- end
62
-
63
- return nil
64
- end
65
-
66
- #
67
- # Set the result of the system call.
68
- #
69
- def set_result( data )
70
- r = find_child RESULT
71
- return nil unless r
72
-
73
- r.set_value data
74
- end
75
-
76
- # ---------------------------------------------------------------------
77
- # Children
78
- # ---------------------------------------------------------------------
79
-
80
- #
81
- # Does this object have children to add when an object
82
- # is created in interactive mode?
83
- # This does not apply during obj load, etc.
84
- #
85
- def add_children_on_create?
86
- return true
87
- end
88
-
89
- #
90
- # Add children to this object.
91
- # This is used by containers to add children needed
92
- # for default configurations.
93
- #
94
- def add_default_children
95
- fac = $engine.factory
96
- fac.create_string PROMPT, '>', self
97
- fac.create_can OPTIONS, self
98
- fac.create_string RESULT, nil, self
99
- end
100
-
101
- # ---------------------------------------------------------------------
102
- # Messages
103
- # ---------------------------------------------------------------------
104
-
105
- #
106
- # Get a list of message names that this object receives.
107
- #
108
- def self.messages
109
- return super + %w[run]
110
- end
111
-
112
- #
113
- # Show the prompt and get the user's selection.
114
- #
115
- def msg_run
116
- prompt = prompt_value
117
- return unless prompt
118
-
119
- per = GlooLang::App::Settings.page_size
120
- result = $prompt.select( prompt, options, :per_page => per )
121
- set_result self.key_for_option( result )
122
- end
123
-
124
- end
125
- end
126
- end
@@ -1,140 +0,0 @@
1
- # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
- # Copyright:: Copyright (c) 2019 Eric Crane. All rights reserved.
3
- #
4
- # An object that interacts with a git repository
5
- #
6
-
7
- module GlooLang
8
- module Objs
9
- class Git < GlooLang::Core::Obj
10
-
11
- KEYWORD = 'git_repo'.freeze
12
- KEYWORD_SHORT = 'git'.freeze
13
-
14
- #
15
- # The name of the object type.
16
- #
17
- def self.typename
18
- return KEYWORD
19
- end
20
-
21
- #
22
- # The short name of the object type.
23
- #
24
- def self.short_typename
25
- return KEYWORD_SHORT
26
- end
27
-
28
- #
29
- # Get the path to the git repo (locally).
30
- #
31
- def path_value
32
- return value
33
- end
34
-
35
- # ---------------------------------------------------------------------
36
- # Messages
37
- # ---------------------------------------------------------------------
38
-
39
- #
40
- # Get a list of message names that this object receives.
41
- #
42
- def self.messages
43
- actions = %w[validate commit get_branch review]
44
- changes = %w[check_changes get_changes]
45
- return super + changes + actions
46
- end
47
-
48
- #
49
- # Get the current working branch.
50
- #
51
- def msg_get_branch
52
- branch = ''
53
- path = path_value
54
- if path_is_dir?( path )
55
- branch = `cd #{path}; git rev-parse --abbrev-ref HEAD`
56
- branch = branch.strip
57
- end
58
-
59
- $engine.heap.it.set_to branch
60
- end
61
-
62
- #
63
- # Review pending changes.
64
- #
65
- def msg_review
66
- $log.debug 'Reviewing pending changes'
67
- cmd = "cd #{path_value}; git diff"
68
- $log.debug cmd
69
- system cmd
70
- end
71
-
72
- #
73
- # Commit pending changes.
74
- #
75
- def msg_commit
76
- msg = 'Commit'
77
- path = path_value
78
- if path_is_dir?( path )
79
- if @params&.token_count&.positive?
80
- expr = GlooLang::Expr::Expression.new( @params.tokens )
81
- msg = expr.evaluate
82
- end
83
- branch = `cd #{path}; git rev-parse --abbrev-ref HEAD`
84
- branch = branch.strip
85
- add = 'git add .'
86
- cmt = 'git commit -m '
87
- psh = 'git push origin '
88
- `cd #{path};#{add};#{cmt}"#{msg}";#{psh}#{branch}`
89
- end
90
- $engine.heap.it.set_to msg
91
- end
92
-
93
- #
94
- # Get the pending changes.
95
- #
96
- def msg_get_changes
97
- path = path_value
98
- result = `cd #{path}; git status -s` if path_is_dir?( path )
99
- result ||= ''
100
- $engine.heap.it.set_to result
101
- end
102
-
103
- #
104
- # Is the given path non nil and is it a directory?
105
- #
106
- def path_is_dir?( path )
107
- return path && File.directory?( path )
108
- end
109
-
110
- #
111
- # Check to see if the repo has changes.
112
- #
113
- def msg_check_changes
114
- result = false
115
- path = path_value
116
- if path_is_dir?( path )
117
- data = `cd #{path}; git status -s`
118
- result = true unless data.strip.empty?
119
- end
120
-
121
- $engine.heap.it.set_to result
122
- end
123
-
124
- #
125
- # Check to make sure this is a valide git repo.
126
- #
127
- def msg_validate
128
- result = false
129
- path = path_value
130
- if path_is_dir?( path )
131
- pn = File.join( path, '.git' )
132
- result = File.exist? pn
133
- end
134
-
135
- $engine.heap.it.set_to result
136
- end
137
-
138
- end
139
- end
140
- end
@@ -1,120 +0,0 @@
1
- # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
- # Copyright:: Copyright (c) 2020 Eric Crane. All rights reserved.
3
- #
4
- # Get statistics about a development project.
5
- #
6
-
7
- module GlooLang
8
- module Objs
9
- class Stats < GlooLang::Core::Obj
10
-
11
- KEYWORD = 'stats'.freeze
12
- KEYWORD_SHORT = 'stat'.freeze
13
- FOLDER = 'folder'.freeze
14
- TYPES = 'types'.freeze
15
- SKIP = 'skip'.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 path to the git repo (locally).
33
- #
34
- def path_value
35
- o = find_child FOLDER
36
- return o ? o.value : nil
37
- end
38
-
39
- #
40
- # The code file types to count.
41
- #
42
- def types_value
43
- o = find_child TYPES
44
- return o ? o.value : ''
45
- end
46
-
47
- #
48
- # Get the list of files and folders to skip.
49
- #
50
- def skip_list
51
- o = find_child SKIP
52
- val = o ? o.value : ''
53
- return val.split ' '
54
- end
55
-
56
- # ---------------------------------------------------------------------
57
- # Children
58
- # ---------------------------------------------------------------------
59
-
60
- #
61
- # Does this object have children to add when an object
62
- # is created in interactive mode?
63
- # This does not apply during obj load, etc.
64
- #
65
- def add_children_on_create?
66
- return true
67
- end
68
-
69
- #
70
- # Add children to this object.
71
- # This is used by containers to add children needed
72
- # for default configurations.
73
- #
74
- def add_default_children
75
- fac = $engine.factory
76
- fac.create_file FOLDER, '', self
77
- fac.create_string TYPES, '', self
78
- fac.create_can SKIP, self
79
- end
80
-
81
- # ---------------------------------------------------------------------
82
- # Messages
83
- # ---------------------------------------------------------------------
84
-
85
- #
86
- # Get a list of message names that this object receives.
87
- #
88
- def self.messages
89
- all = %w[show_all]
90
- more = %w[show_busy_folders show_types]
91
- return super + all + more
92
- end
93
-
94
- #
95
- # Show all project stats.
96
- #
97
- def msg_show_all
98
- o = GlooLang::Utils::Stats.new( path_value, types_value, skip_list )
99
- o.show_all
100
- end
101
-
102
- #
103
- # Show file types.
104
- #
105
- def msg_show_types
106
- o = GlooLang::Utils::Stats.new( path_value, types_value, skip_list )
107
- o.file_types
108
- end
109
-
110
- #
111
- # Show busy folders: those with the most files.
112
- #
113
- def msg_show_busy_folders
114
- o = GlooLang::Utils::Stats.new( path_value, types_value, skip_list )
115
- o.busy_folders
116
- end
117
-
118
- end
119
- end
120
- end
@@ -1,48 +0,0 @@
1
- # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
- # Copyright:: Copyright (c) 2020 Eric Crane. All rights reserved.
3
- #
4
- # Play an audio file (MP3).
5
- #
6
-
7
- module GlooLang
8
- module Objs
9
- class Play < GlooLang::Core::Obj
10
-
11
- KEYWORD = 'play'.freeze
12
- KEYWORD_SHORT = 'play'.freeze
13
-
14
- #
15
- # The name of the object type.
16
- #
17
- def self.typename
18
- return KEYWORD
19
- end
20
-
21
- #
22
- # The short name of the object type.
23
- #
24
- def self.short_typename
25
- return KEYWORD_SHORT
26
- end
27
-
28
- # ---------------------------------------------------------------------
29
- # Messages
30
- # ---------------------------------------------------------------------
31
-
32
- #
33
- # Get a list of message names that this object receives.
34
- #
35
- def self.messages
36
- return super + [ 'run' ]
37
- end
38
-
39
- #
40
- # Play the audio file.
41
- #
42
- def msg_run
43
- system "afplay #{value}"
44
- end
45
-
46
- end
47
- end
48
- end
@@ -1,98 +0,0 @@
1
- # Author:: Eric Crane (mailto:eric.crane@mac.com)
2
- # Copyright:: Copyright (c) 2020 Eric Crane. All rights reserved.
3
- #
4
- # Wrapper for the 'say something' function on the Mac.
5
- #
6
- require 'erb'
7
-
8
- module GlooLang
9
- module Objs
10
- class Say < GlooLang::Core::Obj
11
-
12
- KEYWORD = 'say'.freeze
13
- KEYWORD_SHORT = 'say'.freeze
14
- VOICE = 'voice'.freeze
15
- MSG = 'message'.freeze
16
- DEFAULT_MSG = 'talk to me'.freeze
17
-
18
- #
19
- # The name of the object type.
20
- #
21
- def self.typename
22
- return KEYWORD
23
- end
24
-
25
- #
26
- # The short name of the object type.
27
- #
28
- def self.short_typename
29
- return KEYWORD_SHORT
30
- end
31
-
32
- #
33
- # Get the voice to use.
34
- #
35
- def voice_value
36
- v = find_child VOICE
37
- return nil unless v
38
-
39
- return v.value
40
- end
41
-
42
- #
43
- # Get the message to speak.
44
- #
45
- def msg_value
46
- o = find_child MSG
47
- return nil unless o
48
-
49
- return o.value
50
- end
51
-
52
- # ---------------------------------------------------------------------
53
- # Children
54
- # ---------------------------------------------------------------------
55
-
56
- #
57
- # Does this object have children to add when an object
58
- # is created in interactive mode?
59
- # This does not apply during obj load, etc.
60
- #
61
- def add_children_on_create?
62
- return true
63
- end
64
-
65
- #
66
- # Add children to this object.
67
- # This is used by containers to add children needed
68
- # for default configurations.
69
- #
70
- def add_default_children
71
- fac = $engine.factory
72
- fac.create_string VOICE, '', self
73
- fac.create_string MSG, DEFAULT_MSG, self
74
- end
75
-
76
- # ---------------------------------------------------------------------
77
- # Messages
78
- # ---------------------------------------------------------------------
79
-
80
- #
81
- # Get a list of message names that this object receives.
82
- #
83
- def self.messages
84
- return super + [ 'run' ]
85
- end
86
-
87
- #
88
- # Have the computer 'speak' the message.
89
- #
90
- def msg_run
91
- v = voice_value.empty? ? '' : "-v '#{voice_value}'"
92
- cmd = "say #{v} '#{msg_value}'"
93
- system cmd
94
- end
95
-
96
- end
97
- end
98
- end