Skip to content

Romefile prior 0.17.x.x

Tommaso Piazza edited this page Aug 9, 2018 · 1 revision

Romefile (Prior 0.17.x.x)

The Romefile has three purposes:

  1. Specifies what caches to use - [Cache] section. This section is required.
  2. Allows to use custom name mappings between repository names and framework names - [RepositoryMap] section. This section is optional and can be omitted.
  3. Allows to ignore certain framework names - [IgnoreMap] section. This section is optional and can be omitted.

A Romefile looks like this:

[Cache]
  S3-Bucket = ios-dev-bucket
  local = ~/Library/Caches/Rome/

[RepositoryMap]
  HockeySDK-iOS = HockeySDK
  awesome-framework-for-cat-names = CatFramework
  better-dog-names = DogFramework

[IgnoreMap]
  xcconfigs = xcconfigs

The Romefile is in the INI format

Cache section

This section must contain at least one between:

  • the name of the S3 Bucket to upload/download to/from. The key S3-Bucket is optional since Rome 0.11.0.x.
  • the path to local directory to use as an additional cache. The key local is optional.

RepositoryMap

This contains the mappings of git repository names with framework names. This is particularly useful in case you are not using github and the "Organization/FrameworkName" convention.

Example:

Suppose you have the following in your Cartfile

github "Alamofire/Alamofire" ~> 4.3.0
github "bitstadium/HockeySDK-iOS" "3.8.6"
git "http://stash.myAnimalStartup.com/scm/iossdk/awesome-framework-for-cat-names.git" ~> 3.3.1
git "http://stash.myAnimalStartup.com/scm/iossdk/better-dog-names.git" ~> 0.4.4

which translates to the following Cartfile.resolved

github "Alamofire/Alamofire" "4.3.0"
github "bitstadium/HockeySDK-iOS" "3.8.6"
git "http://stash.myAnimalStartup.com/scm/iossdk/awesome-framework-for-cat-names.git" "3.3.1"
git "http://stash.myAnimalStartup.com/scm/iossdk/better-dog-names.git" "0.4.4"

but your framework names are actually HockeySDK, CatFramework and DogFramework as opposed to HockeySDK-iOS, awesome-framework-for-cat-names and better-dog-names.

simply add a [RepositoryMap] section to your Romefile and specify the following mapping:

[Cache]
  S3-Bucket = ios-dev-bucket

[RepositoryMap]
  HockeySDK-iOS = HockeySDK
  awesome-framework-for-cat-names = CatFramework
  better-dog-names = DogFramework

IgnoreMap

This contains the mappings of git repository names and framework names should be ignored. This is particularly useful in case not all your Cartfile.resolved entries produce a framework.

Some repositories use Carthage as a simple mechanism to include other git repositories that do not produce frameworks. Even Carthage itself does this, to include xcconfigs.

Example:

Suppose you have the following in your Cartfile

github "Quick/Nimble"
github "jspahrsummers/xcconfigs"

xcconfigs can be ignored by Rome by adding an IgnoreMap section in the Romefile

[IgnoreMap]
  xcconfigs = xcconfigs
Multiple Aliases

Since version 0.6.0.10 Rome supports multiple aliases for one map entry. Suppose you have a framework Framework that builds two targets, t1 and t2, Rome can handle both targets by specifying

[RepositoryMap]
  Framework = t1, t2

If ANY of the aliases is missing on S3, the entire entry will be reported as missing when running rome list [--missing]

Multiple aliases are supported in [IgnoreMap] too

Static Frameworks

Since version 0.30.1 Carthage has support for Static Frameworks. To indicate that one of the aliases is a Static Framework, modify the RepositoryMap like so:

[RepositoryMap]
  Framework = static/t1, t2

If left unspecified, an alias is a Dynamic Framework by default.

Clone this wiki locally