Skip to content

Rambafile Structure

Michael edited this page Jan 28, 2017 · 10 revisions

General Information

Rambafile is a configuration file for current Xcode project. It doesn't contain any user-specific information, so it can be safely indexed in Git repository.

You can generate a pre-filled Rambafile using generamba setup command.

Only company, project_name, xcodeproj_path and templates fields are mandatory. If you specify one of the fields from Module Generation Settings section, then all the fields in this section are mandatory. The same applies to Tests Generation Settings section.

Rambafile Example

### Headers settings
company: Rambler&Co

### Xcode project settings
project_name: GenerambaSandbox
product_module_name: GenerambaSandbox
prefix: RDS
xcodeproj_path: GenerambaSandbox.xcodeproj

### Code generation settings section
# The main project target name
project_target: GenerambaSandbox

# The file path for new modules
project_file_path: GenerambaSandbox/Classes/Modules

# The Xcode group path to new modules
project_group_path: GenerambaSandbox/Classes/Modules

### Tests generation settings section
# The tests target name
test_target: GenerambaSandboxTests

# The file path for new tests
test_file_path: GenerambaSandboxTests/Classes/Modules

# The Xcode group path to new tests
test_group_path: GenerambaSandboxTests/Classes/Modules

### Dependencies settings section
podfile_path: Podfile
cartfile_path: Cartfile

### Templates
catalogs:
- 'https://github.com/rambler-digital-solutions/generamba-catalog'
- 'https://github.com/igrekde/my-own-catalog'
templates:
- {name: rviper_controller}
- {name: local_template_name, local: 'absolute/file/path'}
- {name: remote_template_name, git: 'https://github.com/igrekde/remote_template'}

Rambafile Structure

Project Headers Settings
  • company: Rambler&Co - this value is used as a company name to generate new file headers.
  • author: Egor Tolstoy - this value is used as an author name to generate new file headers. Optional.
Xcode Settings
  • project_name: GenerambaSandbox - the project name, can be determined automatically during Rambafile setup.
  • product_module_name: GenerambaSandbox - the product module name, can be used in swift tests templates.
  • prefix: RDS - prefix appended to all of the generated files.
  • xcodeproj_path: GenerambaSandbox.xcodeproj - a relative filepath to a xcodeproj-file.
Module Generation Settings
  • project_target: GenerambaSandbox - all generated code files will be included in this target.
  • project_targets: [GenerambaSandbox, GenerambaSandboxTests] - all generated code files will be included in these targets.
  • project_file_path: GenerambaSandbox/Classes/Modules - a default filepath for generated code files.
  • project_group_path: GenerambaSandbox/Classes/Modules - a default Xcode group path for generated code files.
Tests Generation Settings
  • test_target: GenerambaSandboxTests - all generated test files will be included in this target.
  • test_targets: [GenerambaSandboxTests] - all generated test files will be included in these targets.
  • test_file_path: GenerambaSandboxTests/Classes/Modules - a default filepath for generated test files.
  • test_group_path: GenerambaSandboxTests/Classes/Modules - a default Xcode group path for generated test files.
Dependency Management System Settings
  • podfile_path: Podfile - a relative file path to a Podfile.

  • cartfile_path: Cartfile - a relative file path to a Cartfile.

    these settings don't affect anything at the moment, they persist due to upcoming features

Templates Settings
  • catalogs: - custom template catalogs are listed under this key
    • https://github.com/rambler-digital-solutions/generamba-catalog - a catalog repository url (necessarily escaped with single quotes).
    • https://github.com/igrekde/my-own-catalog
  • templates: - templates used in a current project are listed under this key.
    • name: rviper_controller - a template name (if nothing else is specified, Generamba will search for the template with this name in a shared catalog).
    • git: 'https://github.com/igrekde/remote_template' - a url to remote Git repository (necessarily escaped with single quotes).
    • branch: 'develop' - a branch to remote Git repository (necessarily escaped with single quotes).
    • local: 'absolute/file/path' - an absolute path to a local template directory.