A PHP project/micro-package generator for PDS compliant projects or micro-packages.
Construct should be installed globally through composer.
composer global require jonathantorres/constructMake sure that ~/.composer/vendor/bin is on your $PATH. This way the construct executable can be located.
As Construct utilizes Composer's CLI, it's assumed that Composer is installed. When using the option to initialize an empty Git repo (i.e. --git or -g) it's also assumed that Git is installed.
Just run construct generate with your vendor/package declaration and it will construct a basic PHP project into the package directory. For example, if you run construct generate jonathantorres/logger it will generate a basic project structure inside the logger folder.
construct generate jonathantorres/loggerThe generated project structure will look like the following tree excerpt. Files and directories in parentheses are optional.
├── logger
│ ├── CHANGELOG.md
│ ├── (CONDUCT.md)
│ ├── composer.json
│ ├── composer.lock
│ ├── CONTRIBUTING.md
│ ├── (.appveyor.yml)
│ ├── (.editorconfig)
│ ├── (.env)
│ ├── (.env.example)
│ ├── (.git)
│ │ └── ...
│ ├── .gitattributes
│ ├── (.github)
│ │ ├── CONTRIBUTING.md
│ │ ├── ISSUE_TEMPLATE.md
│ │ └── PULL_REQUEST_TEMPLATE.md
│ ├── .gitignore
│ ├── .gitmessage
│ ├── (.lgtm)
│ ├── (bin)
│ │ └── cli-script
│ ├── LICENSE.md
│ ├── (MAINTAINERS)
│ ├── (.php_cs)
│ ├── (phpunit.xml.dist)
│ ├── README.md
│ ├── (docs)
│ │ └── index.md
│ ├── src
│ │ └── Logger.php
│ ├── tests
│ │ └── LoggerTest.php
│ ├── .travis.yml
│ ├── (Vagrantfile)
│ └── vendor
│ └── ...
This is a good starting point. You can continue your work from there.
The --test-framework or --test option will allow you to select a testing framework. One of the following is available at the moment: phpunit, phpspec, codeception or behat. phpunit is currently the default.
construct generate jonathantorres/logger --test-framework=codeceptionYou can also use the short option -t.
construct generate jonathantorres/logger -t codeceptionThe --license option will allow you to select a license for the project to construct. One of the following is
available at the moment: MIT, Apache-2.0, GPL-2.0 or GPL-3.0. MIT is currently the default.
construct generate jonathantorres/logger --license=Apache-2.0You can also use the short option -l.
construct generate jonathantorres/logger -l Apache-2.0The --namespace option will allow you to specify a namespace for the project to construct. This is totally optional. By default construct will use the package name as the namespace.
construct generate jonathantorres/logger --namespace=JonathanTorres\\Projects\\LoggerYou can also use the short option -s.
construct generate jonathantorres/logger -s JonathanTorres\\Projects\\LoggerThe optional --cli-framework option will allow you to specify a CLI framework for the project to construct, while also creating a bin directory with an initial CLI script in it, adding a bin key in the project's composer.json, and an initial AppVeyor configuration. When the option has been set without a CLI composer package the symfony/console package will be used per default. There's no short option available.
construct generate jonathantorres/logger --cli-framework=zendframework/zend-consoleThe --php option will allow you to specify the minimum required PHP version that your project will support. Construct will use the currently installed version if not specified.
construct generate jonathantorres/logger --php=5.6.31The optional --keywords option will allow you to specify a comma separated list of Composer keywords.
construct generate jonathantorres/logger --keywords=log,loggingYou can also use the short option -k.
construct generate jonathantorres/logger -k=log,loggingThe --git option will allow you to initialize an empty Git repository inside the constructed project.
construct generate jonathantorres/logger --gitYou can also use the short option -g.
construct generate jonathantorres/logger -gThe --phpcs option will generate a PHP Coding Standards Fixer configuration within the constructed project and add a Travis CI script for validation during builds. The generated .php_cs configuration defaults to the PSR-2 coding style guide.
construct generate jonathantorres/logger --phpcsYou can also use the short option -p.
construct generate jonathantorres/logger -pThe --vagrant option will generate a basic Vagrantfile within the constructed project, defaulting to the output of a vagrant init call plus a minimal vagrant-cachier plugin configuration. There's no short option available.
construct generate jonathantorres/logger --vagrantThe --editor-config option will generate an EditorConfig configuration
within the constructed project.
construct generate jonathantorres/logger --editor-configYou can also use the short option -e.
construct generate jonathantorres/logger -eThe --env option will generate .env environment files within the constructed project for keeping sensitive information out of it. There's no short option available.
construct generate jonathantorres/logger --envThe --lgtm option will generate LGTM configuration files within the constructed project. There's no short option available.
construct generate jonathantorres/logger --lgtmThe --github option will generate common GitHub (i.e. templates and docs) files. There's no short option available.
construct generate jonathantorres/logger --githubThe --github-templates option will generate GitHub template files within the constructed project into a folder conventionally named .github. It also will move CONTRIBUTING.md into it. There's no short option available, but the option is implicated with the github option.
construct generate jonathantorres/logger --github-templatesThe --github-docs option will generate GitHub documentation files within the constructed project into a folder conventionally named docs. There's no short option available, but the option is implicated with the github option.
construct generate jonathantorres/logger --github-docsThe --code-of-conduct option will generate a Code of Conduct file named CONDUCT.md within the constructed project and also add a reference to it in the generated README.md. The used Code of Conduct is adapted from the Contributor Covenant, version 1.4. There's no short option available.
construct generate jonathantorres/logger --code-of-conductThe --config option allows the usage of a configuration file in the YAML format. There are two ways to provide such a configuration file: One is to provide a specific file as an option argument, the other is to put a .construct configuration file in the home directory of your system. For the structure of a configuration file have a look at the .construct example file. When no configuration keys are provided for settings having a default value (i.e. test-framework, license, php) their default value is used.
construct generate jonathantorres/logger --config /path/to/config.ymlYou can also use the short option -c.
construct generate jonathantorres/logger -c /path/to/config.ymlWhen there's a .construct configuration file in your home directory it will be used per default. If required it's possible to disable the usage via the --ignore-default-config option or the equivalent short option -i.
This mode will ask you all the required (and optional) information to generate your project.
construct generate:interactivecomposer construct:testThis library is licensed under the MIT license. Please see LICENSE for more details.
Please see CHANGELOG for more details.
Please see CONTRIBUTING for more details.