lizarb 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +12 -13
- data/Rakefile +38 -0
- data/app/dev_box.rb +14 -12
- data/app/happy_box.rb +2 -2
- data/app/net_box.rb +4 -4
- data/app/web_box.rb +4 -4
- data/app.rb +6 -7
- data/{exe/Gemfile → app_global.gemfile.rb} +2 -0
- data/app_global.gemfile.rb.lock +19 -0
- data/app_global.rb +4 -0
- data/{app → app_new}/dev/benches/loops_bench.rb +3 -2
- data/{app/dev/generators/bench_generator_test.rb → app_new/dev/benches/loops_bench_test.rb} +2 -2
- data/app_new/dev/benches/objects_bench.rb +83 -0
- data/{app/dev/generators/record_generator_test.rb → app_new/dev/benches/objects_bench_test.rb} +2 -2
- data/app_new/dev/benches/sorted_bench.rb +54 -0
- data/app_new/dev/benches/sorted_bench_test.rb +12 -0
- data/app_new/dev/benches/variables_bench.rb +55 -0
- data/{app/dev/generators/command_generator_test.rb → app_new/dev/benches/variables_bench_test.rb} +2 -2
- data/{app → app_new}/dev/commands/calculator_command.rb +1 -1
- data/{app → app_new}/dev/commands/circle_command.rb +1 -1
- data/{app → app_new}/dev/commands/narrative_method_command.rb +5 -7
- data/{app → app_new}/dev/commands/quadratic_command.rb +1 -1
- data/app_new/dev_box.rb +14 -0
- data/app_new.rb +15 -0
- data/exe/lizarb +9 -1
- data/lib/app.rb +27 -95
- data/lib/dev_system/dev/controllers/bench/not_found_bench.rb +15 -8
- data/lib/dev_system/dev/controllers/bench.rb +0 -6
- data/lib/dev_system/dev/controllers/command/bench_command.rb +1 -2
- data/lib/dev_system/dev/controllers/command/generate_command.rb +3 -27
- data/lib/dev_system/dev/controllers/command/new_command.rb +9 -0
- data/lib/dev_system/dev/controllers/command/new_command_test.rb +7 -0
- data/lib/dev_system/dev/controllers/command/not_found_command.rb +29 -8
- data/lib/dev_system/dev/controllers/command/terminal_command.rb +2 -2
- data/lib/dev_system/dev/controllers/command/test_command.rb +6 -6
- data/lib/dev_system/dev/controllers/command.rb +9 -13
- data/lib/dev_system/dev/controllers/generator_dsl_main_part.rb +2 -4
- data/{app/dev/generators/bench_generator/bench.rb.erb → lib/dev_system/dev/controllers/generators/bench_generator/controller.rb.erb} +1 -2
- data/{app/dev/generators/bench_generator/bench_test.rb.erb → lib/dev_system/dev/controllers/generators/bench_generator/controller_test.rb.erb} +2 -2
- data/lib/dev_system/dev/controllers/generators/bench_generator.rb +12 -0
- data/lib/dev_system/dev/controllers/generators/bench_generator_test.rb +12 -0
- data/lib/dev_system/dev/controllers/generators/command_generator/controller.rb.erb +41 -0
- data/{app/dev/generators/command_generator/command_test.rb.erb → lib/dev_system/dev/controllers/generators/command_generator/controller_test.rb.erb} +2 -2
- data/lib/dev_system/dev/controllers/generators/command_generator.rb +19 -0
- data/lib/dev_system/dev/controllers/generators/command_generator_test.rb +12 -0
- data/lib/dev_system/dev/controllers/generators/controller_generator.rb +97 -0
- data/lib/dev_system/dev/controllers/generators/controller_generator_test.rb +12 -0
- data/lib/dev_system/dev/controllers/generators/generator_generator/template.rb.erb +1 -1
- data/lib/dev_system/dev/controllers/generators/new_generator.rb +117 -0
- data/lib/dev_system/dev/controllers/generators/new_generator_test.rb +12 -0
- data/lib/dev_system/dev/controllers/generators/not_found_generator.rb +20 -8
- data/{app/dev → lib/dev_system/dev/controllers}/generators/record_generator.rb +1 -1
- data/lib/dev_system/dev/controllers/generators/record_generator_test.rb +12 -0
- data/{app/dev → lib/dev_system/dev/controllers}/generators/request_generator.rb +2 -2
- data/lib/dev_system/dev/controllers/generators/request_generator_test.rb +12 -0
- data/lib/dev_system/dev/controllers/log.rb +3 -0
- data/{app/dev/generators/request_generator_test.rb → lib/dev_system/dev/controllers/log_test.rb} +2 -2
- data/lib/dev_system/dev/controllers/shell.rb +22 -0
- data/lib/dev_system/dev/controllers/shell_test.rb +25 -0
- data/lib/dev_system/dev/controllers/terminal/irb_terminal.rb +7 -1
- data/lib/dev_system/dev/controllers/terminal/pry_terminal.rb +1 -1
- data/lib/dev_system/dev/dev_box.rb +12 -18
- data/lib/dev_system/dev/panels/command_panel.rb +54 -11
- data/lib/dev_system/dev/panels/command_panel_test.rb +35 -10
- data/lib/dev_system/dev/panels/generator_panel.rb +70 -0
- data/lib/dev_system/dev/panels/generator_panel_test.rb +34 -0
- data/lib/happy_system/happy/happy_box.rb +2 -3
- data/lib/lerb.rb +95 -49
- data/lib/liza/base/box.rb +6 -1
- data/lib/liza/base/panel.rb +16 -18
- data/lib/liza/base/panel_test.rb +27 -1
- data/lib/liza/base_parts/controller_renderer_part.rb +1 -1
- data/lib/liza/ruby_tests/module_test.rb +2 -2
- data/lib/liza/test/test_test.rb +5 -1
- data/lib/liza/test_parts/test_assertions_part.rb +1 -1
- data/lib/liza/test_parts/test_dsl_part.rb +3 -3
- data/lib/liza/test_parts/test_tree_part.rb +4 -49
- data/lib/liza/unit.rb +73 -79
- data/lib/liza/unit_parts/unit_procedure_part_test.rb +9 -9
- data/lib/liza/unit_parts/unit_settings_part.rb +76 -0
- data/lib/liza/unit_parts/unit_settings_part_test.rb +3 -0
- data/lib/liza/unit_test.rb +11 -0
- data/lib/liza.rb +10 -1
- data/lib/lizarb/ruby/module.rb +1 -1
- data/lib/lizarb/version.rb +1 -1
- data/lib/lizarb.rb +247 -23
- data/lib/net_system/dev/net_command.rb +9 -9
- data/lib/net_system/net/controllers/client/redis_client.rb +1 -1
- data/lib/net_system/net/controllers/client/sqlite_client.rb +1 -1
- data/lib/net_system/net/net_box.rb +4 -6
- data/lib/web_system/dev/rack_command.rb +1 -8
- data/lib/web_system/dev/request_command.rb +6 -20
- data/lib/web_system/web/panels/request_panel.rb +0 -2
- data/lib/web_system/web/web_box.rb +4 -6
- data/lizarb.gemspec +1 -1
- metadata +46 -41
- data/.ruby-version +0 -1
- data/app/dev/benches/app_bench.rb +0 -5
- data/app/dev/benches/app_bench_test.rb +0 -7
- data/app/dev/benches/loops_bench_test.rb +0 -11
- data/app/dev/commands/app_command.rb +0 -5
- data/app/dev/commands/app_command_test.rb +0 -7
- data/app/dev/commands/new_command.rb +0 -9
- data/app/dev/commands/new_command_test.rb +0 -7
- data/app/dev/generators/bench_generator.rb +0 -18
- data/app/dev/generators/command_generator/command.rb.erb +0 -26
- data/app/dev/generators/command_generator.rb +0 -18
- data/exe/Gemfile.lock +0 -13
- data/lib/dev_system/dev/controllers/bench_dsl_main_part.rb +0 -58
- data/lib/dev_system/dev/controllers/command/echo_command.rb +0 -9
- data/lib/dev_system/dev/controllers/command/echo_command_test.rb +0 -12
- data/lib/dev_system/dev/controllers/command/version_command.rb +0 -7
- data/lib/dev_system/dev/controllers/command/version_command_test.rb +0 -12
- data/lib/dev_system/dev/controllers/generators/app_generator.rb +0 -146
- data/lib/dev_system/dev/controllers/generators/app_generator_test.rb +0 -12
- /data/{app → app_new}/dev/commands/calculator_command_test.rb +0 -0
- /data/{app → app_new}/dev/commands/circle_command_test.rb +0 -0
- /data/{app → app_new}/dev/commands/narrative_method_command_test.rb +0 -0
- /data/{app → app_new}/dev/commands/quadratic_command_test.rb +0 -0
@@ -0,0 +1,97 @@
|
|
1
|
+
class DevSystem::ControllerGenerator < DevSystem::Generator
|
2
|
+
|
3
|
+
def self.call args
|
4
|
+
log "args = #{args.inspect}"
|
5
|
+
new.generate_app_controller(*args)
|
6
|
+
end
|
7
|
+
|
8
|
+
def generate_app_controller system_name, controller_name, folder, name
|
9
|
+
log "(#{system_name.inspect}, #{controller_name.inspect}, #{folder.inspect}, #{name.inspect})"
|
10
|
+
|
11
|
+
@name = name
|
12
|
+
@panels = []
|
13
|
+
|
14
|
+
filename = "app/#{system_name}/#{folder}/#{name}_#{controller_name}.rb"
|
15
|
+
content = render "controller.rb"
|
16
|
+
TextShell.write filename, content
|
17
|
+
|
18
|
+
filename = "app/#{system_name}/#{folder}/#{name}_#{controller_name}_test.rb"
|
19
|
+
content = render "controller_test.rb"
|
20
|
+
TextShell.write filename, content
|
21
|
+
end
|
22
|
+
|
23
|
+
#
|
24
|
+
|
25
|
+
def self.install args
|
26
|
+
log "args = #{args.inspect}"
|
27
|
+
|
28
|
+
system_name = get(:system).name.snakecase.gsub "_system", ""
|
29
|
+
controller_name = last_namespace.snakecase.gsub "_generator", ""
|
30
|
+
|
31
|
+
new.instance_exec do
|
32
|
+
log "#install_app_panel"
|
33
|
+
|
34
|
+
@filename = "app/#{system_name}_box.rb"
|
35
|
+
@system_name = system_name
|
36
|
+
@controller_name = controller_name
|
37
|
+
@panels = {}
|
38
|
+
|
39
|
+
install_write_box unless FileShell.exist? @filename
|
40
|
+
install_read_box
|
41
|
+
install_insert_panel
|
42
|
+
install_write_box
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
# helper methods
|
47
|
+
|
48
|
+
def install_write_box
|
49
|
+
@content = render "app_box.rb"
|
50
|
+
TextShell.write @filename, "#{@content.strip}\n"
|
51
|
+
end
|
52
|
+
|
53
|
+
def install_read_box
|
54
|
+
@content ||= TextShell.read @filename
|
55
|
+
|
56
|
+
cursor = nil
|
57
|
+
@content.split("\n").each do |line|
|
58
|
+
md = line.match(/^ configure :(.*) do$/)
|
59
|
+
if md
|
60
|
+
cursor = md[1]
|
61
|
+
@panels[cursor] = {lines: []}
|
62
|
+
elsif line =~ /^ end$/
|
63
|
+
cursor = nil
|
64
|
+
else
|
65
|
+
next unless cursor
|
66
|
+
@panels[cursor][:lines] << line
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
def install_insert_panel
|
72
|
+
lines = render("install_insert_panel.rb").split("\n").reject(&:empty?)
|
73
|
+
@panels[@controller_name] = {lines: lines}
|
74
|
+
@panels = @panels.sort_by(&:first)
|
75
|
+
end
|
76
|
+
|
77
|
+
end
|
78
|
+
|
79
|
+
__END__
|
80
|
+
|
81
|
+
# view app_box.rb.erb
|
82
|
+
|
83
|
+
class <%= @system_name.camelcase %>Box < Liza::<%= @system_name.camelcase %>Box
|
84
|
+
|
85
|
+
<% @panels.each do |key, panel| -%>
|
86
|
+
configure :<%= key %> do
|
87
|
+
<% panel[:lines].each do |line| -%>
|
88
|
+
<%= line %>
|
89
|
+
<% end -%>
|
90
|
+
end
|
91
|
+
|
92
|
+
<% end -%>
|
93
|
+
end
|
94
|
+
|
95
|
+
# view install_insert_panel.rb.erb
|
96
|
+
|
97
|
+
#
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class DevSystem::ControllerGeneratorTest < DevSystem::GeneratorTest
|
2
|
+
|
3
|
+
test :subject_class do
|
4
|
+
assert subject_class == DevSystem::ControllerGenerator
|
5
|
+
end
|
6
|
+
|
7
|
+
test :settings do
|
8
|
+
assert subject_class.log_level == :normal
|
9
|
+
assert subject_class.log_color == :green
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
@@ -0,0 +1,117 @@
|
|
1
|
+
class DevSystem::NewGenerator < DevSystem::Generator
|
2
|
+
def self.call(args)
|
3
|
+
log "args = #{args.inspect}"
|
4
|
+
new.call args
|
5
|
+
end
|
6
|
+
|
7
|
+
def call(args)
|
8
|
+
log "args = #{args.inspect}"
|
9
|
+
# setup
|
10
|
+
|
11
|
+
name = args.shift || "app_1"
|
12
|
+
|
13
|
+
from = "#{Lizarb::APP_DIR}/app_new"
|
14
|
+
to = name
|
15
|
+
|
16
|
+
return log "Directory #{to.light_green} already exists." if Dir.exist? to
|
17
|
+
|
18
|
+
log "Liza Application initializing at `#{to}`"
|
19
|
+
|
20
|
+
# init
|
21
|
+
|
22
|
+
DirShell.create to
|
23
|
+
|
24
|
+
# app
|
25
|
+
|
26
|
+
FileUtils.cp_r from, "#{to}/app", verbose: true
|
27
|
+
FileUtils.cp_r "#{from}.rb", "#{to}/app.rb", verbose: true
|
28
|
+
|
29
|
+
# extra
|
30
|
+
|
31
|
+
puts
|
32
|
+
|
33
|
+
FileShell.gitkeep "#{to}/lib"
|
34
|
+
FileShell.gitkeep "#{to}/tmp"
|
35
|
+
|
36
|
+
TextShell.write "#{to}/.gitignore", render("hidden.gitignore")
|
37
|
+
TextShell.write "#{to}/Gemfile", render("Gemfile.rb")
|
38
|
+
# TextShell.write "#{to}/Procfile", render("Procfile.yml")
|
39
|
+
TextShell.write "#{to}/.tool-versions", render("toolversions.txt")
|
40
|
+
|
41
|
+
FileUtils.cp_r "#{Lizarb::APP_DIR}/README.md",
|
42
|
+
"#{to}/README.md",
|
43
|
+
verbose: true
|
44
|
+
# FileUtils.cp_r "#{Lizarb::APP_DIR}/web_files",
|
45
|
+
# "#{to}/web_files",
|
46
|
+
# verbose: true
|
47
|
+
@env_name = nil
|
48
|
+
TextShell.write "#{to}/app.env", render("env.env")
|
49
|
+
@env_name = :code
|
50
|
+
TextShell.write "#{to}/app.code.env", render("env.env")
|
51
|
+
@env_name = :demo
|
52
|
+
TextShell.write "#{to}/app.demo.env", render("env.env")
|
53
|
+
|
54
|
+
puts
|
55
|
+
|
56
|
+
`cd #{to}; git init -b main; git add .; git commit -m "lizarb new app_1 (v#{Lizarb::VERSION})"`
|
57
|
+
|
58
|
+
log "Liza Application initialized at `#{to}`"
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
__END__
|
63
|
+
|
64
|
+
# view hidden.gitignore.erb
|
65
|
+
# Ignore all files in all subdirectories
|
66
|
+
.gitignore
|
67
|
+
/.bundle/
|
68
|
+
/tmp/
|
69
|
+
*.sqlite
|
70
|
+
*.rdb
|
71
|
+
|
72
|
+
# view toolversions.txt.erb
|
73
|
+
ruby <%= RUBY_VERSION %>
|
74
|
+
|
75
|
+
# view Procfile.yml.erb
|
76
|
+
# HEROKU EXAMPLE
|
77
|
+
|
78
|
+
web: MODE=demo bundle exec liza rack h=0.0.0.0 p=$PORT
|
79
|
+
|
80
|
+
# view Gemfile.rb.erb
|
81
|
+
# frozen_string_literal: true
|
82
|
+
|
83
|
+
source "https://rubygems.org"
|
84
|
+
|
85
|
+
group :default do
|
86
|
+
gem "lizarb", "~> <%= Lizarb::VERSION %>"
|
87
|
+
# gem "lizarb", github: "rubyonrails-brasil/lizarb"
|
88
|
+
end
|
89
|
+
|
90
|
+
group :dev do
|
91
|
+
# gems you only want to load if DevSystem is loaded
|
92
|
+
# gem "pry", "~> 0.14.1"
|
93
|
+
end
|
94
|
+
|
95
|
+
# view env.env.erb
|
96
|
+
#
|
97
|
+
<% if @env_name == :code -%>
|
98
|
+
# ENV VARIABLES FOR MODE=code (default)
|
99
|
+
#
|
100
|
+
# MODE=code lizarb commands
|
101
|
+
# lizarb commands
|
102
|
+
<% elsif @env_name == :demo -%>
|
103
|
+
# ENV VARIABLES FOR MODE=demo
|
104
|
+
#
|
105
|
+
# MODE=demo lizarb commands
|
106
|
+
<% else -%>
|
107
|
+
# ENV VARIABLES FOR ALL MODES
|
108
|
+
#
|
109
|
+
# MODE=code lizarb commands
|
110
|
+
# MODE=demo lizarb commands
|
111
|
+
# lizarb commands
|
112
|
+
<% end -%>
|
113
|
+
#
|
114
|
+
|
115
|
+
# app variables
|
116
|
+
|
117
|
+
# dev variables
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class DevSystem::NewGeneratorTest < DevSystem::GeneratorTest
|
2
|
+
|
3
|
+
test :subject_class do
|
4
|
+
assert subject_class == DevSystem::NewGenerator
|
5
|
+
end
|
6
|
+
|
7
|
+
test :settings do
|
8
|
+
assert subject_class.log_level == :normal
|
9
|
+
assert subject_class.log_color == :green
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
@@ -3,25 +3,37 @@ class DevSystem::NotFoundGenerator < DevSystem::Generator
|
|
3
3
|
def self.call args
|
4
4
|
# 1. LOG
|
5
5
|
|
6
|
-
log
|
6
|
+
log "args = #{args.inspect}"
|
7
7
|
puts
|
8
8
|
|
9
9
|
# 2. FIND generators
|
10
10
|
|
11
|
-
App.
|
11
|
+
App.load_all
|
12
12
|
generators = Liza::Generator.descendants
|
13
|
+
generators -= ignored_generators
|
13
14
|
|
14
|
-
|
15
|
-
|
15
|
+
# 3. LIST generators
|
16
|
+
|
17
|
+
keys = generators.map { _1.last_namespace.snakecase[0..-11] }.uniq.sort
|
16
18
|
|
19
|
+
log "Liza comes with #{keys.count} generators you can use."
|
17
20
|
log "Here they are:"
|
18
21
|
puts
|
19
22
|
|
20
|
-
|
23
|
+
keys.each do
|
24
|
+
log "liza generate #{_1}"
|
25
|
+
end
|
26
|
+
end
|
21
27
|
|
22
|
-
|
23
|
-
|
24
|
-
|
28
|
+
def self.ignored_generators
|
29
|
+
[
|
30
|
+
self,
|
31
|
+
DevSystem::NotFoundGenerator,
|
32
|
+
DevSystem::NewGenerator,
|
33
|
+
DevSystem::ControllerGenerator,
|
34
|
+
DevSystem::RecordGenerator,
|
35
|
+
DevSystem::RequestGenerator,
|
36
|
+
].uniq.compact
|
25
37
|
end
|
26
38
|
|
27
39
|
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class DevSystem::RecordGeneratorTest < DevSystem::GeneratorTest
|
2
|
+
|
3
|
+
test :subject_class do
|
4
|
+
assert subject_class == DevSystem::RecordGenerator
|
5
|
+
end
|
6
|
+
|
7
|
+
test :settings do
|
8
|
+
assert subject_class.log_level == :normal
|
9
|
+
assert subject_class.log_color == :green
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
class RequestGenerator <
|
1
|
+
class DevSystem::RequestGenerator < DevSystem::Generator
|
2
2
|
main_dsl
|
3
3
|
|
4
4
|
FOLDER = "app/web/requests"
|
@@ -23,7 +23,7 @@ class #{name.camelize}Request < Liza::Request
|
|
23
23
|
|
24
24
|
def self.call env
|
25
25
|
path = env["REQUEST_PATH"]
|
26
|
-
log
|
26
|
+
log "args = #{args.inspect}"
|
27
27
|
|
28
28
|
#
|
29
29
|
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class DevSystem::RequestGeneratorTest < DevSystem::GeneratorTest
|
2
|
+
|
3
|
+
test :subject_class do
|
4
|
+
assert subject_class == DevSystem::RequestGenerator
|
5
|
+
end
|
6
|
+
|
7
|
+
test :settings do
|
8
|
+
assert subject_class.log_level == :normal
|
9
|
+
assert subject_class.log_color == :green
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|
@@ -28,4 +28,26 @@ class DevSystem::Shell < Liza::Controller
|
|
28
28
|
:unix
|
29
29
|
end
|
30
30
|
|
31
|
+
# Return the current Ruby engine as a symbol
|
32
|
+
def self.engine
|
33
|
+
return :jruby if jruby?
|
34
|
+
return :ruby if ruby?
|
35
|
+
:unknown
|
36
|
+
end
|
37
|
+
|
38
|
+
# Check if the current Ruby engine is JRuby
|
39
|
+
def self.jruby?
|
40
|
+
@jruby || RUBY_ENGINE == "jruby"
|
41
|
+
end
|
42
|
+
|
43
|
+
# Check if the current Ruby engine is MRI
|
44
|
+
def self.ruby?
|
45
|
+
@ruby || RUBY_ENGINE == "ruby"
|
46
|
+
end
|
47
|
+
|
48
|
+
# Return the current Ruby version as a Gem::Version
|
49
|
+
def self.ruby_version
|
50
|
+
Lizarb.ruby_version
|
51
|
+
end
|
52
|
+
|
31
53
|
end
|
@@ -43,4 +43,29 @@ class DevSystem::ShellTest < Liza::ControllerTest
|
|
43
43
|
subject_class.instance_variable_set(:@mac, original)
|
44
44
|
end
|
45
45
|
|
46
|
+
#
|
47
|
+
|
48
|
+
test :subject_class, :ruby? do
|
49
|
+
original = subject_class.ruby?
|
50
|
+
subject_class.instance_variable_set(:@ruby, true)
|
51
|
+
assert subject_class.ruby?
|
52
|
+
ensure
|
53
|
+
subject_class.instance_variable_set(:@ruby, original)
|
54
|
+
end
|
55
|
+
|
56
|
+
test :subject_class, :jruby? do
|
57
|
+
original = subject_class.jruby?
|
58
|
+
subject_class.instance_variable_set(:@jruby, true)
|
59
|
+
assert subject_class.jruby?
|
60
|
+
ensure
|
61
|
+
subject_class.instance_variable_set(:@jruby, original)
|
62
|
+
end
|
63
|
+
|
64
|
+
#
|
65
|
+
|
66
|
+
test :subject_class, :ruby_version do
|
67
|
+
assert subject_class.ruby_version.class == Gem::Version
|
68
|
+
end
|
69
|
+
|
70
|
+
|
46
71
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
class DevSystem::IrbTerminal < DevSystem::Terminal
|
2
2
|
|
3
3
|
def self.call args
|
4
|
-
log
|
4
|
+
log "args = #{args.inspect}"
|
5
5
|
|
6
6
|
# https://github.com/ruby/ruby/blob/master/lib/irb.rb
|
7
7
|
require "irb"
|
@@ -11,6 +11,12 @@ class DevSystem::IrbTerminal < DevSystem::Terminal
|
|
11
11
|
irb = IRB::Irb.new(workspace)
|
12
12
|
IRB.conf[:MAIN_CONTEXT] = irb.context
|
13
13
|
|
14
|
+
def irb.signal_status(status)
|
15
|
+
super
|
16
|
+
rescue Interrupt
|
17
|
+
IrbTerminal.log "Control-C"
|
18
|
+
end
|
19
|
+
|
14
20
|
irb.eval_input
|
15
21
|
end
|
16
22
|
|
@@ -1,39 +1,33 @@
|
|
1
1
|
class DevSystem::DevBox < Liza::Box
|
2
2
|
|
3
|
-
#
|
4
|
-
|
3
|
+
# Configure your bench panel per the DSL in http://guides.lizarb.org/panels/bench.html
|
4
|
+
configure :bench do
|
5
5
|
# set :log_level, ENV["dev.bench.log_level"]
|
6
6
|
end
|
7
7
|
|
8
|
-
#
|
9
|
-
|
8
|
+
# Configure your command panel per the DSL in http://guides.lizarb.org/panels/command.html
|
9
|
+
configure :command do
|
10
10
|
# set :log_level, ENV["dev.command.log_level"]
|
11
11
|
end
|
12
12
|
|
13
|
-
#
|
14
|
-
|
13
|
+
# Configure your generator panel per the DSL in http://guides.lizarb.org/panels/generator.html
|
14
|
+
configure :generator do
|
15
15
|
# set :log_level, ENV["dev.generator.log_level"]
|
16
16
|
end
|
17
17
|
|
18
|
-
#
|
19
|
-
|
18
|
+
# Configure your command panel per the DSL in http://guides.lizarb.org/panels/log.html
|
19
|
+
configure :log do
|
20
20
|
# set :log_level, ENV["dev.log.log_level"]
|
21
21
|
end
|
22
22
|
|
23
|
-
#
|
24
|
-
|
23
|
+
# Configure your shell panel per the DSL in http://guides.lizarb.org/panels/shell.html
|
24
|
+
configure :shell do
|
25
25
|
# set :log_level, ENV["dev.shell.log_level"]
|
26
26
|
end
|
27
27
|
|
28
|
-
#
|
29
|
-
|
28
|
+
# Configure your terminal panel per the DSL in http://guides.lizarb.org/panels/terminal.html
|
29
|
+
configure :terminal do
|
30
30
|
# set :log_level, ENV["dev.terminal.log_level"]
|
31
31
|
end
|
32
32
|
|
33
|
-
has_controller :bench, :bench
|
34
|
-
has_controller :command, :command
|
35
|
-
has_controller :generator, :generator
|
36
|
-
# has_controller :log, :log
|
37
|
-
has_controller :shell, :shell
|
38
|
-
has_controller :terminal, :terminal
|
39
33
|
end
|
@@ -1,28 +1,71 @@
|
|
1
1
|
class DevSystem::CommandPanel < Liza::Panel
|
2
|
+
class Error < StandardError; end
|
3
|
+
class ParseError < Error; end
|
2
4
|
|
3
5
|
def call args
|
4
|
-
#
|
6
|
+
log "args = #{args.inspect}" if get :log_details
|
5
7
|
|
6
|
-
|
8
|
+
return call_not_found args if args.none?
|
7
9
|
|
8
|
-
|
10
|
+
struct = parse args[0]
|
11
|
+
struct.command = short struct.command
|
12
|
+
command = find struct.command
|
9
13
|
|
10
|
-
|
14
|
+
case
|
15
|
+
when struct.class_method
|
16
|
+
_call_log "#{command}.#{struct.class_method}(#{args[1..-1]})"
|
17
|
+
command.public_send struct.class_method, args[1..-1]
|
18
|
+
when struct.instance_method
|
19
|
+
_call_log "#{command}.new.#{struct.instance_method}(#{args[1..-1]})"
|
20
|
+
command.new.public_send struct.instance_method, args[1..-1]
|
21
|
+
when struct.method
|
22
|
+
if command.respond_to?(struct.method)
|
23
|
+
_call_log "#{command}.#{struct.method}(#{args[1..-1]})"
|
24
|
+
command.public_send struct.method, args[1..-1]
|
25
|
+
else
|
26
|
+
_call_log "#{command}.new.#{struct.method}(#{args[1..-1]})"
|
27
|
+
command.new.public_send struct.method, args[1..-1]
|
28
|
+
end
|
29
|
+
else
|
30
|
+
_call_log "#{command}.call(#{args[1..-1]})"
|
31
|
+
command.call args[1..-1]
|
32
|
+
end
|
33
|
+
rescue ParseError
|
34
|
+
call_not_found args
|
35
|
+
end
|
36
|
+
|
37
|
+
def _call_log string
|
38
|
+
log "#{string}" if get :log_details
|
39
|
+
end
|
11
40
|
|
12
|
-
|
41
|
+
#
|
13
42
|
|
14
|
-
|
43
|
+
PARSE_REGEX = /(?<command>[A-Za-z_]+)(?::(?<class_method>[a-z_]+))?(?:#(?<instance_method>[a-z_]+))?(?:\.(?<method>[a-z_]+))?/
|
15
44
|
|
16
|
-
|
45
|
+
# OpenStruct command class_method instance_method method
|
46
|
+
def parse string
|
47
|
+
md = string.to_s.match PARSE_REGEX
|
48
|
+
raise ParseError if md.nil?
|
49
|
+
hash = md.named_captures
|
50
|
+
log "{#{hash.map { ":#{_1}=>#{_2.to_s.inspect}" }.join(", ") }}" if get :log_details
|
51
|
+
OpenStruct.new hash
|
52
|
+
end
|
17
53
|
|
18
|
-
|
54
|
+
#
|
19
55
|
|
20
|
-
|
56
|
+
def find string
|
57
|
+
k = Liza.const "#{string}_command"
|
21
58
|
rescue Liza::ConstNotFound
|
22
|
-
|
59
|
+
k = Liza::NotFoundCommand
|
60
|
+
ensure
|
61
|
+
log k.to_s if get :log_details
|
62
|
+
k
|
23
63
|
end
|
24
64
|
|
65
|
+
#
|
66
|
+
|
25
67
|
def call_not_found args
|
26
|
-
Liza
|
68
|
+
Liza[:NotFoundCommand].call args
|
27
69
|
end
|
70
|
+
|
28
71
|
end
|
@@ -1,21 +1,46 @@
|
|
1
1
|
class DevSystem::CommandPanelTest < Liza::PanelTest
|
2
2
|
|
3
3
|
test :subject_class do
|
4
|
-
|
4
|
+
assert_equality subject_class, DevSystem::CommandPanel
|
5
5
|
end
|
6
6
|
|
7
7
|
test :settings do
|
8
|
-
|
9
|
-
|
8
|
+
assert_equality subject_class.log_level, :normal
|
9
|
+
assert_equality subject_class.log_color, :green
|
10
10
|
end
|
11
11
|
|
12
|
-
test :
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
12
|
+
test :parse do
|
13
|
+
struct = subject.parse "generate"
|
14
|
+
assert_equality struct.command, "generate"
|
15
|
+
assert_equality struct.class_method, nil
|
16
|
+
assert_equality struct.instance_method, nil
|
17
|
+
assert_equality struct.method, nil
|
18
|
+
|
19
|
+
struct = subject.parse "generate:install"
|
20
|
+
assert_equality struct.command, "generate"
|
21
|
+
assert_equality struct.class_method, "install"
|
22
|
+
assert_equality struct.instance_method, nil
|
23
|
+
assert_equality struct.method, nil
|
24
|
+
|
25
|
+
struct = subject.parse "generate#install"
|
26
|
+
assert_equality struct.command, "generate"
|
27
|
+
assert_equality struct.class_method, nil
|
28
|
+
assert_equality struct.instance_method, "install"
|
29
|
+
assert_equality struct.method, nil
|
30
|
+
|
31
|
+
struct = subject.parse "generate.install"
|
32
|
+
assert_equality struct.command, "generate"
|
33
|
+
assert_equality struct.class_method, nil
|
34
|
+
assert_equality struct.instance_method, nil
|
35
|
+
assert_equality struct.method, "install"
|
36
|
+
end
|
37
|
+
|
38
|
+
test :find do
|
39
|
+
klass = subject.find "generate"
|
40
|
+
assert_equality DevSystem::GenerateCommand, klass
|
41
|
+
|
42
|
+
klass = subject.find "g"
|
43
|
+
assert_equality DevSystem::NotFoundCommand, klass
|
19
44
|
end
|
20
45
|
|
21
46
|
end
|