https://github.com/samdmarshall/pyconfig
A tool for generating xcconfig files from a simple DSL
https://github.com/samdmarshall/pyconfig
dsl python xcconfig xcode
Last synced: 7 months ago
JSON representation
A tool for generating xcconfig files from a simple DSL
- Host: GitHub
- URL: https://github.com/samdmarshall/pyconfig
- Owner: samdmarshall
- License: bsd-3-clause
- Created: 2016-05-17T15:40:59.000Z (over 9 years ago)
- Default Branch: develop
- Last Pushed: 2020-02-07T06:17:59.000Z (almost 6 years ago)
- Last Synced: 2025-06-17T23:53:10.966Z (7 months ago)
- Topics: dsl, python, xcconfig, xcode
- Language: Python
- Size: 367 KB
- Stars: 48
- Watchers: 6
- Forks: 3
- Open Issues: 1
-
Metadata Files:
- Readme: readme.md
- Contributing: contributing.md
- License: LICENSE
Awesome Lists containing this project
README
pyconfig
========
[](https://codeclimate.com/github/samdmarshall/pyconfig)
[](https://codeclimate.com/github/samdmarshall/pyconfig/coverage)
[](https://circleci.com/gh/samdmarshall/pyconfig/tree/develop)
[](https://dependencyci.com/github/samdmarshall/pyconfig)
**pyconfig** is a tool that allows you to write the contents of your [`.xcconfig` files](http://pewpewthespells.com/blog/xcconfig_guide.html) in a simple and more expressive language and have them be generated prior to building a target in Xcode.
## Contributing and Code of Conduct [](./LICENSE)
This project and related material has a Code of Conduct that is listed in the [contributing.md](./contributing.md) file. This must be read and adhered to when interacting with this project. Additionally this code is released under a 3-clause BSD license that you can read [here](./LICENSE).
## Requirements  
This tool is built and tested against Python 2.7.10 and 3.6.0.
Module | Version
----------|-----------
pyparsing | >=2.0.1
Note: All of these modules come as part of the system Python installation for OS X (which is 2.7.10 as of 10.11.5), but you will have to install them yourself if necessary on other systems. These modules can be accquired through `pip install`.
## Installation [](https://github.com/samdmarshall/homebrew-formulae) [](https://github.com/samdmarshall/homebrew-formulae)
Via [homebrew](http://brew.sh):
$ brew update
$ brew tap samdmarshall/formulae
$ brew install samdmarshall/formulae/pyconfig
To install the tool from the repo, clone from Github then run the respective `make` command for the desired version.
### Installing for Python 2
$ make build2
### Installing for Python 3
$ make build3
## Usage
To use **pyconfig** to generate an `.xcconfig` file, you will have to pass it a path as input:
$ pyconfig
There are a number of flags that can be passed to modify the behavior of **pyconfig**:
Flags | Usage
-------------------|-----------------------------------------------------------
`--version` | Displays the version of **pyconfig** and exits
`--scheme ` | Add additional variable defined as `SCHEME_NAME = `
`--no-analyze` | Skip the analysis step of processing the `.pyconfig` files
`--dry-run` | Do not write any output files
`--quiet` | Silences all logging output
`--verbose` | Logs additional information
`--scm-info `| Write an additional `.xcconfig` file that contains information from the source control management software for versioning
## Syntax
One of the greatest benefits to using `.xcconfig` files are part of your build process is that they make the configuration of build settings be represented inside of a human-readable plain-text file rather than being part of the Xcode project's `.pbxproj` file. For the documentation on the DSL syntax please refer to the [wiki](../../wiki), which is located at the docs directory of this repo.
# Future Plans
I hope to be able to further enhance the capabilities of this tool to make the management of the `.xcconfig` files easy and understandable to newcomers. If you have an idea as to how to better extend this tool you should open a new issue to discuss it.