Contents

lucianopalmeida/variable-injector

This tool is deprecated and will no longer be updated by the maintainer.

Installation

Manual Installation

Just clone the repo and run make install

With that installed and on our bin folder, now we can use it.

Usage

For a detailed example of using this, check out the article Continuous Integration Environment Variables in iOS projects using Swift on Medium.

Note If you having issues with XCode 11 use the version 0.3.3 of the tool.

You should have a class or struct with your environment variables declaration following the $(VAR_NAME) pattern. Example:

   struct CI {
      static var serviceAPIKey: String = "$(SERVICE_PROD_KEY)"
      static var otherAPIKey: String = "$(OTHER_PROD_KEY)"
   }

With the environments static declarations matching the pattern

variable-injector --file ${SRCROOT}/Environment/CI.swift

If environment variables with those names, as in the example you have the SERVICE_PROD_KEY and OTHER_PROD_KEY are defined on the build machine for this pipeline the injector you replace the string literal with the environment variable value.

Example of the file after the substitution.

   struct CI {
      static var serviceAPIKey: String = "h344hjk2h4j3h24jk32h43j2k4h32jk4hkj324h"
      static var otherAPIKey: String = "dsa76d7adas7d6as87d6as78d6aklre423s7d6as8d7s6"
   }

Using as Run Script in Build Phases

You can add the script call for variable replacement on your build phases. We just have setup our Development keys in our local machine as environment variables and build the project.

Important: Is very important to add this Run Script phase before the Compile Sources phase. So the variables will be replaced and then compiled :))

if which variable-injector >/dev/null; then
  variable-injector --file ${SRCROOT}/YourProject/YourGroupFolderPath/File.swift --verbose # Pass your parameters
else
  echo "Warning: Swift Variable Injector not installed, download from https://github.com/LucianoPAlmeida/variable-injector"
fi

Options

We can ignore patterns that match $(ENV_VAR) to avoid the replace.

variable-injector --file ${SRCROOT}/Environment/CI.swift --ignore OTHER_PROD_KEY

And also, to see the logs of variables, values and source output you can use --verbose

IMPORTANT The verbose mode you print the values of your environment variables on the logs. So you may be careful and use it only for debug proposes.

variable-injector --file ${SRCROOT}/Environment/CI.swift --verbose

After that we can just proceed to the build, archive and other steps of our CI/CD pipeline.

Licence

Variable Injector is released under the MIT License.

Package Metadata

Repository: lucianopalmeida/variable-injector

Default branch: master

README: README.md