lib/mobilis/interactive_designer.rb in mobilis-0.0.3 vs lib/mobilis/interactive_designer.rb in mobilis-0.0.4
- old
+ new
@@ -1,11 +1,12 @@
# frozen_string_literal: true
-require 'state_machine'
-require 'tty-prompt'
require 'awesome_print'
require 'forwardable'
+require 'state_machine'
+require 'table_print'
+require 'tty-prompt'
require 'mobilis/logger'
require 'mobilis/project'
module Mobilis
@@ -14,11 +15,11 @@
extend Forwardable
attr_accessor :project
attr_reader :prompt
-def_delegators :@project, :projects, :display
+def_delegators :@project, :projects, :load_from_file
state_machine :state, initial: :intialize do
event :go_build do
transition [:main_menu] => :build
@@ -42,10 +43,15 @@
event :go_add_redis_instance do
transition [:main_menu] => :add_redis_instance
end
+ event :go_back do
+ transition [:edit_rails_project] => :main_menu
+ transition [:edit_generic_project] => :main_menu
+ end
+
event :go_add_rack_project do
transition [:main_menu] => :add_rack_project
end
event :go_edit_rails_project do
@@ -105,11 +111,14 @@
puts "o0o ^^^^ ---- ^^^^ o0o"
end
state :main_menu do
def display
- project.display
+ puts
+ tp.set :max_width, 160
+ tp projects, 'name', 'type', 'options': lambda {|p| p.options.join ", "}
+ puts
end
def choices
project_choices = projects.map do |project|
{ name: "Edit '#{ project.name }' project", value: -> { @selected_rails_project = project ; go_edit_rails_project } }
end
@@ -139,16 +148,22 @@
end
def action = false
end
state :edit_links_select_project do
- def display = false
+ def display
+ puts
+ tp.set :max_width, 160
+ tp projects, 'name', 'type', 'links': lambda {|p| p.links.join ", "}
+ puts
+ end
def choices
[
{name: "return to Main Menu", value: -> { go_main_menu }},
*( projects.map do |project|
- { name: "Edit '#{ project.name }' links", value: -> { @selected_project = project ; go_edit_links } }
+ links_txt = project.links.join ", "
+ { name: "Edit '#{ project.name }' links (#{ links_txt })", value: -> { @selected_project = project ; go_edit_links } }
end)
]
end
def action = false
end
@@ -272,11 +287,11 @@
end
end
state :toggle_rails_api_mode do
def display
- Mobilis.logger.info "Toggled rails API mode for '#{@selected_rails_project.name}'"
+ Mobilis.logger.info "Toggled rails API mode for '#{ @selected_rails_project.name }'"
end
def choices = false
def action
@selected_rails_project.toggle_rails_api_mode
go_edit_rails_project
@@ -345,13 +360,13 @@
super()
@prompt = TTY::Prompt.new
@project = Project.new
end
-
+##
+# display, choices, and action methods all change per-state
def choose_destination
Mobilis.logger.info "#choose_destination"
-
blank_space
spacer
display
spacer
blank_space