class AppCommand::Generate

Public Instance Methods

execute() click to toggle source
# File lib/routes/generate.rb, line 5
def execute

    begin

        @opts = command_options
        @args = arguments

        @verbose = !@opts[:silent]

        @errors      = []
        @generated   = []
        @overwritten = []

        opts_validate
        opts_routing

    rescue => e

        Blufin::Terminal::print_exception(e)

    end

end
opts_routing() click to toggle source
# File lib/routes/generate.rb, line 61
def opts_routing

    Blufin::Terminal::execute_proc("Processing: #{Blufin::Terminal::format_highlight('Routes')}", Proc.new {
        rg, ro = EWorld::RouteWriter::write(@ui_project, @routes_to_write)
        @generated.concat(rg)
        @overwritten.concat(ro)
    }, verbose: @verbose)

    # Reformat front-end.
    Blufin::Terminal::execute_proc('Re-formatting UI codebase', Proc.new {
        Blufin::Terminal::execute('git add .', @project_path_ui, verbose: false)
        Blufin::Terminal::execute('yarn format', @project_path_ui, verbose: false)
    }, verbose: @verbose)

    puts if @verbose && !@generated.any? && !@overwritten.any?

    Blufin::Terminal::custom('Generated', 22, 'The following files were generated:', @generated) if @generated.any?
    Blufin::Terminal::custom('Overwritten', 55, 'The following files were overwritten:', @overwritten) if @overwritten.any?

end
opts_validate() click to toggle source
# File lib/routes/generate.rb, line 29
def opts_validate

    # TODO - This cannot be hard-coded forever!
    group = 'fmm'

    # Get API Project.
    api_projects = Blufin::Projects.get_projects_as_array(group: group, types: [Blufin::Projects::TYPE_API_SIMPLE])
    @api_project = Blufin::Projects.show_project_prompt(api_projects)

    # Get Quasar Project.
    ui_projects = Blufin::Projects.get_projects_as_array(group: group, types: [Blufin::Projects::TYPE_QUASAR])
    @ui_project = Blufin::Projects.show_project_prompt(ui_projects)

    # Get project path(s).
    @project_path    = Blufin::Projects::get_project_path(@api_project[Blufin::Projects::PROJECT_ID])
    @project_path_ui = Blufin::Projects::get_project_path(@ui_project[Blufin::Projects::PROJECT_ID], true)

    puts if @verbose

    Blufin::Terminal::execute_proc("Scanning: #{Blufin::Terminal::format_highlight('Routes')}", Proc.new {
        eb                   = @errors.length
        @routes_to_write, re = EWorld::RouteScanner::scan(@ui_project)
        @errors.concat(re)
        eb == @errors.length
    }, verbose: @verbose)

    puts if @errors.any? && @verbose

    Blufin::ScannerError::output_cli(@errors, false) if @errors.any?

end