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