class Boa::Commands

Constants

BASE_FILES_OBJC

initialize VIPER hierarchy

BASE_FILES_SWIFT
CONFIG_FILE

configuration

PROJECT_FILES_OBJC
PROJECT_FILES_SWIFT

Public Instance Methods

configure() click to toggle source
# File lib/boa/commands.rb, line 83
def configure
  config = File.exists?(CONFIG_FILE) ? YAML.load_file(CONFIG_FILE) : {}

  project      = ask("Project name [#{config[:project]}] ?")
  language     = ask("Project language [#{config[:language]}] ?", :limited_to => ["objc", "swift", ""])
  class_prefix = ask("Class prefix [#{config[:class_prefix]}] ?")
  author       = ask("Author [#{config[:author]}] ?")

  config[:project]      = project.empty?      ? config[:project] || ''      : project
  config[:language]     = language.empty?     ? config[:language] || 'objc' : language
  config[:class_prefix] = class_prefix.empty? ? config[:class_prefix] || '' : class_prefix
  config[:author]       = author.empty?       ? config[:author] || ''       : author

  File.open(CONFIG_FILE, 'w') do |f|
    f.write config.to_yaml
  end

  config
end
init() click to toggle source
# File lib/boa/commands.rb, line 37
def init
  config = invoke(:configure, [])

  # Classes
  empty_directory 'Classes'

  # Classes/Common
  empty_directory 'Classes/Common'
  empty_directory 'Classes/Common/Categories'
  empty_directory 'Classes/Common/Model'
  empty_directory 'Classes/Common/Store'
  empty_directory 'Classes/Common/Utils'
  empty_directory 'Classes/Common/Wireframe'

  # Classes/Modules
  empty_directory 'Classes/Modules'

  # Add config
  @project = config[:project]
  @author  = config[:author]
  @date    = Time.now.strftime('%d/%m/%y')
  lang     = config[:language]

  # Generate files
  base_files = case lang
               when 'objc'  then BASE_FILES_OBJC
               when 'swift' then BASE_FILES_SWIFT
               end
  base_files.each do |file_name, folder|
    template "templates/#{lang}/#{file_name}", "#{folder}/#{@project}#{file_name}"
  end

  project_files = case lang
                  when 'objc'  then PROJECT_FILES_OBJC
                  when 'swift' then PROJECT_FILES_SWIFT
                  end
  project_files.each do |file_name, folder|
    template "templates/#{lang}/#{file_name}", "#{folder}/#{file_name}"
  end
end