In this document we'll try to explain how dinobuildr operates.
Basics: dinobuildr files
dinobuildr's key components are the following:
- dinobuildr.sh
- dino_engine.py
- /resources/
- *_manifest.json
dinobuildr.sh
The dinobuildr.sh shell script is the one file that is required at build time on an end system. Running the shell script will curl down dino_engine.py
file from Github and will default to the "master" branch and the production_manifest.json
file, then run dino_engine.py
. It can accept parameters for the Github branch that should be used and the *_manifest file that should be referenced by dino_engine.py.
dino_engine.py
dino_engine.py is the main workhorse behind dinobuildr. It contains all of the definitions for how to handle the various specified actions contained within the *_manifest.json
file, and performs those operations in the order specified by the manifest. It also prints the status/results to stdout.
In its current state it understands how to handle the following operations:
- downloading files from Github and the Internet
- running bash scripts
- installing pkg files
- installing files from dmg files
- installing mobileconfig files
- verifying file hashes
/resources/
The /resources/ folder contains scripts, config files, and other supplementary files that are specified within the *_manifest.json
file associated with a specific build.
*_manifest.json
The *_manifest.json
files contain the operating instructions that dino_enine.py
uses to build out dinobuildr. The operations listed in the manifest are run in order by dino_engine.py
which can be extremely critical to ensuring that the build finishes without errors.