Building the Project¶
Tool requirements:
PHP 8+
composer
phing
codeception
For Docs
Apigen
Sphinx
Misc
Sonar-Analyzer
We use scoop for simplicity.
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser # Optional: Needed to run a remote script the first time
irm get.scoop.sh | iex
scoop install mingit
scoop bucket add extra
scoop bucket add versions
scoop install php xdebug composer python
composer global require phing/phing:^3.*@alpha comcast/php-legal-licenses codeception/codeception apigen/apigen:^7.0@alpha humbug/box
pip install -U sphinx
PHING and build.xml¶
Phing Is our build orchestration tool. You will use to run any tool required for developing on this project. Build settings are configured in build.xml.
Build Targets¶
Default target:
-------------------------------------------------------------------------------
dist-full zip FULL _build dir structure
- depends on: prepare-dist
Main targets:
-------------------------------------------------------------------------------
QA Shortcut for `testcov,analyze`
- depends on: testcov, analyze
build Shortcut for `testcov,docs,phar`
- depends on: testcov, docs, phar
classrefdocs Creates class reference documentation with Apigen
dist-full zip FULL _build dir structure
- depends on: prepare-dist
dist-phar zip phar for dist
- depends on: prepare-dist
docs shortcut for `classrefdocs, manual`
- depends on: classrefdocs, manual
generate Creates project skel. For first run only
janegen Generate code from Brex OpenAPI spec with JanePHP
license-inventory Licence Inventory Report
manual Compiles Sphinx docs for dirhtml, man, and htmlhelp
- depends on: prepare
phar Creats Phar with Box
prepare Creates _build and runs `composer install`
- depends on: license-inventory
prepare-dist shortcut for `build, phar, docs`
- depends on: build
testcov Runs test suite wit code coverage reports
Subtargets:
-------------------------------------------------------------------------------
analyze
Reproducible builds¶
If you update a composer package to add a feature or fix a bug, or otherwise run composer update please be sure to commit the composer.lock file as well as composer.josn. This ensures that all vendor packages can be tested and released at the same time.
Code Generation¶
This SDK uses code generation provided by JanePHP This allows us to rapidly create a great deal of scaffolding while still supporting Brex’s whole API. From time to time Brex will make updates, and this SDK must be updated in kind. You must first download the new OpenAPI specs and then regenerate the API.
Pulling Down OpenAPI Specs¶
For each Brex API, you will need to download each OpenAPI file. Goto https://developer.brex.com and under “APIs” click on ___ API then the download button next to “Download OpenAPI specification”. Download each file to their respective .json file in .config/jane-gen. (E.g. .config/jane-gen/brex-budgets_1.0.json). It is highly recommend to not only update a single API and to retrieve them all.
Note
We skip the Onboarding API and the Accounting API
Updating the API Code¶
To bring the library up to date with the live Brex API. You must run:
phing janegen
Note
This may take some time (10 min+)
Please ensure that you run the test suite and make required alterations to the SDK before committing the new API code.
Known Brex Idiosyncrasies¶
No Known Issues At This Time