Use a Golang Script to Parse and Modify Xcode and Android Projects
-
id: 0000016
Context and Problem Statement
ADR-0000009
chose Swift for Xcode CLI tools,
ADR-0000011
chose XcodeGen, and
ADR-0000013
chose Apple’s xcode-project-format for project generation. This fragments
the toolchain across languages, third-party generators, and a young evolving
format. The actual need is narrower: parse the Xcode and Android projects and
apply changes through the existing Go tools (core, plugins, link,
appid). Should the decision be reverted to a single Golang script?
Considered Options
-
One Golang script on top of the existing Go tools (
core,plugins,link,appid) -
Keep Swift and Apple
xcode-project-format(ADR-0000009, ADR-0000013) -
Keep XcodeGen (ADR-0000011)
Decision Outcome
Chosen option: "One Golang script", because it follows
ADR-0000008 (Go for all
cross platform tools), drops the Swift toolchain and third-party generators,
and lets a single script parse both the Xcode and Android projects and drive
the core, plugins, link, and appid tools. Positive consequences: one
toolchain, fewer moving parts, and simpler to build, test, and distribute in
CI. Negative consequences: the Xcode project formats must be parsed in-house
in Go, which is less mature than the official Swift tooling.
The Golang script is the best option because it simplifies tool usage. If
XcodeGen or xcode-project-format were kept, project generation would demand
extra dependencies and a second language.
This ADR supersedes:
-
ADR-0000009 (Swift for Xcode related command line tools)
-
ADR-0000011 (XcodeGen for project generation)
-
ADR-0000013 (Apple
xcode-project-format)