class Generamba::CLI::Application
Public Instance Methods
gen(module_name, template_name)
click to toggle source
# File lib/generamba/cli/gen_command.rb, line 27 def gen(module_name, template_name) does_rambafile_exist = Dir[RAMBAFILE_NAME].count > 0 unless does_rambafile_exist puts('Rambafile not found! Run `generamba setup` in the working directory instead!'.red) return end rambafile_validator = Generamba::RambafileValidator.new rambafile_validator.validate(RAMBAFILE_NAME) setup_username_command = Generamba::CLI::SetupUsernameCommand.new setup_username_command.setup_username rambafile = YAML.load_file(RAMBAFILE_NAME) code_module = CodeModule.new(module_name, rambafile, options) module_validator = ModuleValidator.new module_validator.validate(code_module) module_info = ModuleInfoGenerator.new(code_module) template = ModuleTemplate.new(template_name, module_info.scope) parameters = GenCommandTableParametersFormatter.prepare_parameters_for_displaying(code_module, template_name) PrintTable.print_values( values: parameters, title: "Summary for gen #{module_name}" ) DependencyChecker.check_all_required_dependencies_has_in_podfile(template.dependencies, code_module.podfile_path) DependencyChecker.check_all_required_dependencies_has_in_cartfile(template.dependencies, code_module.cartfile_path) project = XcodeprojHelper.obtain_project(code_module.xcodeproj_path) module_group_already_exists = XcodeprojHelper.module_with_group_path_already_exists(project, code_module.project_group_path) if module_group_already_exists replace_exists_module = yes?("#{module_name} module already exists. Replace? (yes/no)") unless replace_exists_module return end end generator = Generamba::ModuleGenerator.new generator.generate_module(module_name, code_module, template) end
setup()
click to toggle source
# File lib/generamba/cli/setup_command.rb, line 13 def setup properties = {} setup_username_command = Generamba::CLI::SetupUsernameCommand.new setup_username_command.setup_username properties[COMPANY_KEY] = ask('The company name which will be used in the headers:') project_name = Pathname.new(Dir.getwd).basename.to_s is_right_project_name = yes?("The name of your project is #{project_name}. Do you want to use it? (yes/no)") properties[PROJECT_NAME_KEY] = is_right_project_name ? project_name : ask_non_empty_string('The project name:', 'Project name should not be empty') properties[PROJECT_PREFIX_KEY] = ask('The project prefix (if any):') xcodeproj_path = ask_file_with_path('*.xcodeproj', '.xcodeproj file of the project') properties[XCODEPROJ_PATH_KEY] = xcodeproj_path project = Xcodeproj::Project.open(xcodeproj_path) targets_prompt = '' project.targets.each_with_index { |element, i| targets_prompt += ("#{i}. #{element.name}" + "\n") } project_target = ask_index("Select the appropriate target for adding your MODULES (type the index):\n" + targets_prompt,project.targets) include_tests = yes?('Are you using unit-tests in this project? (yes/no)') test_target = nil if include_tests test_target = ask_index("Select the appropriate target for adding your TESTS (type the index):\n" + targets_prompt,project.targets) end should_add_all_modules_by_one_path = yes?('Do you want to add all your modules by one path? (yes/no)') project_file_path = nil project_group_path = nil test_file_path = nil test_group_path = nil if should_add_all_modules_by_one_path || include_tests should_use_same_paths = false if should_add_all_modules_by_one_path should_use_same_paths = yes?('Do you want to use the same paths for your files both in Xcode and the filesystem? (yes/no)') end if should_use_same_paths if should_add_all_modules_by_one_path project_group_path = ask('The default path for creating new modules:') project_file_path = project_group_path end if include_tests test_group_path = ask('The default path for creating tests:') test_file_path = test_group_path end else if should_add_all_modules_by_one_path project_group_path = ask('The default path for creating new modules (in Xcode groups):') project_file_path = ask('The default path for creating new modules (in the filesystem):') end if include_tests test_group_path = ask('The default path for creating tests (in Xcode groups):') test_file_path = ask('The default path for creating tests (in the filesystem):') end end end using_pods = yes?('Are you using Cocoapods? (yes/no)') if using_pods properties[PODFILE_PATH_KEY] = ask_file_with_path('Podfile', 'Podfile') end using_carthage = yes?('Are you using Carthage? (yes/no)') if using_carthage properties[CARTFILE_PATH_KEY] = ask_file_with_path('Cartfile', 'Cartfile') end should_add_templates = yes?('Do you want to add some well known templates to the Rambafile? (yes/no)') if should_add_templates properties[TEMPLATES_KEY] = [ '{name: rviper_controller}', '{name: mvvm_controller}', '{name: swifty_viper}' ] end properties[PROJECT_TARGET_KEY] = project_target.name if project_target properties[PROJECT_FILE_PATH_KEY] = project_file_path if project_file_path properties[PROJECT_GROUP_PATH_KEY] = project_group_path if project_group_path properties[TEST_TARGET_KEY] = test_target.name if test_target properties[TEST_FILE_PATH_KEY] = test_file_path if test_file_path properties[TEST_GROUP_PATH_KEY] = test_group_path if test_group_path PrintTable.print_values( values: properties, title: 'Summary for generamba setup' ) Generamba::RambafileGenerator.create_rambafile(properties) if should_add_templates puts('Rambafile successfully created! Now run `generamba template install`.'.green) else puts('Rambafile successfully created!\n Go on and find some templates in our catalog using `generamba template list` command.\n Add any of them to the Rambafile and run `generamba template install`.'.green) end end
version()
click to toggle source
# File lib/generamba/cli/version_command.rb, line 9 def version options = {} options['Version'] = Generamba::VERSION.green options['Release date'] = Generamba::RELEASE_DATE.green options['Change notes'] = Generamba::RELEASE_LINK.green values = [] options.each do |title, value| values.push("#{title}: #{value}") end output = values.join("\n") puts(output) end