{"id":18553721,"url":"https://github.com/websemantics/auto-pyro","last_synced_at":"2025-11-01T10:30:22.450Z","repository":{"id":150921325,"uuid":"65499180","full_name":"websemantics/auto-pyro","owner":"websemantics","description":"PyroCMS deploy tool for faster and more pleasurable development experience","archived":false,"fork":false,"pushed_at":"2019-09-07T11:09:10.000Z","size":125,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-12-26T08:42:33.691Z","etag":null,"topics":["ant","deployer","pyrocms","pyrocms3"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/websemantics.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2016-08-11T20:22:33.000Z","updated_at":"2023-10-01T06:56:55.000Z","dependencies_parsed_at":"2023-07-08T13:01:18.705Z","dependency_job_id":null,"html_url":"https://github.com/websemantics/auto-pyro","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websemantics%2Fauto-pyro","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websemantics%2Fauto-pyro/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websemantics%2Fauto-pyro/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/websemantics%2Fauto-pyro/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/websemantics","download_url":"https://codeload.github.com/websemantics/auto-pyro/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239278543,"owners_count":19612329,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ant","deployer","pyrocms","pyrocms3"],"created_at":"2024-11-06T21:18:06.229Z","updated_at":"2025-11-01T10:30:22.396Z","avatar_url":"https://github.com/websemantics.png","language":"PHP","funding_links":[],"categories":["Resources"],"sub_categories":[],"readme":"```\n   ____ _  _ ___ ____                     __ __ ____ _________ _\n    \\__\\ \\  \\  \\  \\  \\                        _ _____________ __\n     \\  \\ \\__\\  \\  \\__\\                          __ __ ______/  |\n      __________  _____     _____ __________       _________|    \\_\n      |         \\ \\    \\   /    / |          \\        ____   \\_    `-_\n      |    __    | \\    \\ /    /  |    __     |       /   \\ 4  5.     \\\n      |   |__)   |  \\    V    /   |   |__)    |      /    /3     6\\    \\\n      |      ___/    \\       /    |          \u003c       |   |2     / 7|   |\n      |     |         |     |     |     |\\    \\      \\    \\1   / 8/    /\n      |     |         |     |     |     | \\    \\      \\    `-.^.-'    /\n      |_____|         |_____|     |_____|  \\____\\      '-_        _-'\n                                                          `------'\n\n                                            )))\n                                           (o o)\n    ----  PyroCMS Deploy Tool v1.5 --- ooO--(_)--Ooo ----\n```\n\n\u003e This is a [PyroCMS 3](https://www.pyrocms.com/) deploy tool with customization, install automation, better version control setup and other nice-to-have features.\n\n## Get Started\n\nAuto-pyro downloads, configures, installs and deploys a complete Pyro app with optional / required addons and packages. It automatically installs [Pyro Builder](https://github.com/websemantics/builder-extension) and comes pre-configured with a [todo module](#todo-module) example out of the box.\n\nHere's a video to demonstrate how it works (click on the image)\n\n[![Auto pyro, a deploy tool for Pyro 3](http://img.youtube.com/vi/rP0YVmAeE58/0.jpg)](https://www.youtube.com/watch?v=rP0YVmAeE58)\n\nAnd, the following steps sum-up what was achieved in the video,\n\n1- Install [Apache Ant](http://ant.apache.org/),\n\n```bash\nbrew install ant\n```\n\nApache Ant is an awesome build tool and despite its seemingly dated xml format, it can achieve great feats. [Tutsplus](https://tutsplus.com/) has a great article called, [Automate your Projects with Apache Ant](https://code.tutsplus.com/tutorials/automate-your-projects-with-apache-ant--net-18595) to introduce the tool to new comers.\n\n2- Clone this repository into `my-app`,\n\n```bash\ngit clone https://github.com/websemantics/auto-pyro my-app\n```\n\n3- Add other project files, for example, `README.md`, `CONTRIBUTING.md` and `LICENSE.md` etc,\n\n4- Configure the properties file,`./local.properties` with database settings (see [Environment Variables](#environment-variables) for more details). The script will create a fresh database every time it runs,\n\n5- Deploy the app by executing the command `ant` in the project folder,\n\n```bash\ncd my-app\nant\n```\n\nSet back until the deploy process is complete. Browse to the project to view, for example, http://my-app.test.\n\nA setup switch `setup` is available for you to only install Pyro.\n\n```bash\nant -Dsetup=false\n```\n\nThe deploy process will skip cloning PyroCMS repo, requiring plugins and composer packages.\n\n## Todo Module\n\nThis is a simple module that is used to demonstrate features of Auto-pyro and [Pyro Builder](https://github.com/websemantics/builder-extension),\n\nIt is achieved as the result of executing a number of artisan commands as follows,\n\n```bash\n# Start with scaffolding a new module,\nphp artisan make:addon websemantics.module.todo,\n\n# Make a stream and fields migrations,\nphp artisan make:stream 'task:tc(name),name,description:t(anomaly.field_type.textarea),completed:t(anomaly.field_type.boolean)' websemantics.module.todo\n\n# Finally, install the module, .. done!\nphp artisan module:install websemantics.module.todo\n```\n\nCheck `env.ARTISAN` in the properties files  `./local.properties` for details. Also, make sure to remove this line if you're using Auto-pyro in your own project.\n\n## Motivation\n\nHere's a list of why this project can be of help when working with PyroCMS 3, mainly nice to have features that reduce the workload required when starting new projects,\n\n- We don't always need to install, migrate or seed all PyroCMS core addons. For example, not seeding the `Pages` module will allow us to use the project [Twig](http://twig.sensiolabs.org/) views instead.\n\n- When building an app or a website with PyroCMS most of the project code commonly located in the well-recognized `./addons` folder. However, we often end-up tracking [app boilerplate](https://laravel.com/docs/5.2/lifecycle) code from [Laravel](https://laravel.com/) and PyroCMS core modules (located at `./core`) plus many other files in the project Github repository.\n\n- To gain the ability to have project own `README.md`, `CONTRIBUTING.md` and `LICENSE.md` files instead of the framework defaults.\n\n- Oftentimes we need to install third-party modules, themes and other addons from Github but end-up installing them manually and track them in the project Github repository.\n\n- Find it somewhat inconvenient to install dependencies for third-party/our own addons  ([Bower](https://bower.io/), [NPM](http://npmjs.com/), [Composer](https://getcomposer.org/), etc) or run build tasks (i.e [Grunt](http://gruntjs.com/), [Gulp](http://gulpjs.com/)) after every install.\n\n- Call it lazy, but, installing and deploying a PyroCMS project completely from the command line would be an absolute pleasure.\n\n- Building Admin interfaces for new project modules / extensions can be time consuming. Having a build process that can take [migration files](https://www.pyrocms.com/documentation/streams-platform/migrations) and turn them into admin UIs would be nice.\n\n- And last but not least, how about the ability to encode your application modules and streams into the DNA of your auto-pyro install so that they are ready after each install?\n\n## Features\n\nQuick list of the features and benefits of using Auto-pyro,\n\n- [x] Complete installation and deployment of Pyro projects from the command line,\n- [x] Select which modules/addons (including core) to install or exclude,\n- [x] Exclusively track the project's code on Github,\n- [x] Get fresh Pyro 3 for new installs,\n- [x] Install third party plugins directly from Github,\n- [x] Automate database migration and seeding,\n- [x] Install front-end, node, composer and other dependencies for the app or its dependencies,\n- [x] Speed Admin development with the [Builder](https://github.com/websemantics/builder-extension) (included),\n- [x] Painless removal of the Installer Module and other excluded addons after installation is complete,\n- [x] Execute artisan commands after install,\n- [ ] Install the Streams platform and PyroCMS core modules directly on Laravel (experimental),\n- [ ] Optionally, setup a [Vagrant](https://www.vagrantup.com/) environment,\n\n## Environment Variables\n\nTo configure the deploy process, change properties values in `./local.properties`, located at the root folder,\n\nHere's a quick list of the PyroCOM Environment properties,\n\n| Property        | Value           |Description           |\n| ------------- |:-------------:|:-------------:|\n| APPLICATION_NAME | `default` | Set to `Default` by default |\n| APPLICATION_DOMAIN |   `localhost`    |  Change as appropriate |\n| APPLICATION_REFERENCE |   `default`   | Set to `default` by default  |\n| APP_URL |   `default.test`   | Set to `{APPLICATION_NAME}.test` by default |\n| ADMIN_USERNAME | `admin` | Set to `admin` by default |\n| ADMIN_EMAIL | `admin@admin.com` | Set to `admin@admin.com` by default |\n| ADMIN_PASSWORD | `secret` | Set to `secret` by default |\n| DB_DATABASE | `pyro` | Set to `pyro` by default |\n| DB_USERNAME | `root` | Change as appropriate |\n| DB_PASSWORD | `root` | Change as appropriate |\n| DB_CONNECTION | `mysql` | Set to `mysql` by default |\n| DB_HOST | `localhost` | Set to `localhost` by default |\n| APP_KEY | `r!a#n^d*o?m` | Auto generated |\n| APP_ENV | `local` | Change as appropriate |\n| DEFAULT_LOCALE | `en` | Change as appropriate |\n| APP_TIMEZONE | `UTC` | Change as appropriate |\n| APP_DEBUG | `false` | Change as appropriate |\n| ADMIN_THEME | `pyrocms.theme.pyrocms` | Optional |\n| STANDARD_THEME | `pyrocms.theme.starter` | Change as appropriate |\n\nConfiguration of core addons\n\n| Property        | Example           |Description           |\n| ------------- |:-------------:|:-------------:|\n| SEED_EXCLUDES | `pages,variables` | Comma-separated list of modules or extensions to be excluded from seeding |\n| MODULE_EXCLUDES | `pages`,`post` |  Don't install modules (comma-separated list) |\n| EXTENSION_EXCLUDES | `default_page_handler`,`page_link_type`  | Don't install extensions (comma-separated list) |\n\n## Deploy Script\n\nThe deploy script is written for [Apache Ant](http://ant.apache.org/) and can be found at `./build.xml`.\n\n#### Targets\n\nTargets are equivalent to `methods` in PHP. When the `ant` command is invoked, it looks for `./build.xml` at the current folder and runs the `default` target.\n\nTo get a list of targets,\n\n```bash\nant -projecthelp\n```\n\nTo better understand the deploy script in `build.xml`, here's a list of all the targets included, their dependencies and order of execution,\n\n\n| Order         | Target        | Description   | Dependencies |\n| ------------- |:-------------:|:-------------:|:-------------:|\n| 10 | `default` | The default target to start project deploy |`install` |\n| 9 | `install` | Deploys this project and runs post deploy tasks | `run-artisan-commands` |\n| 8 | `run-artisan-commands` | Run artisan commands | `require-install-addons` |\n| 7 | `require-install-addons` | Requires and installs project addons and all the front-end, css, npm, grunt libraries | `install-pyro` |\n| 6 | `install-pyro` | Installs PyroCMS by running migrations, installing/seeding core modules/addons and creating the project .env file | `create-database` |\n| 5 | `create-database` | Create database | `require-composer` |\n| 4 | `require-composer` | Requires all composer dependencies | `require-pyro` |\n| 3 | `require-pyro` | Clones PyroCMS and copy its files to project folder | `clean` |\n| 2 | `clean` | Delete `temp` folders and the project .env file | `init` |\n| 1 | `init` | Loads project properties, task definitions and other environment settings | * |\n\nThere are few empty targets with examples to use with common tasks, for example, install, uninstall or reinstall the project addons when in development mode,\n\n| Target        | Description     | Dependencies |\n| ------------- |:-------------:|:-------------:|\n| `install-addons` | Install project addons | `init` |\n| `uninstall-addons` | Uninstall project addons | `init` |\n| `reinstall-addons` | Reinstall project addons |  `init` |\n\nThe remaining tasks are experiential and still work in progress,\n\n| Target        | Description     | Dependencies |\n| ------------- |:-------------:|:-------------:|\n| `install-laravel` | Install PyroCMS on top of Laravel |`require-laravel` |\n| `require-laravel` | Clones Laravel and copy all files to project folder |`init`,`clean` |\n| `update-database` | Update database with liquibase schema |`init` |\n\n\n## Changelog\n\n1.5.0\n  date: 2019-09-07\n  changes:\n  - Upgraded to PyroCMS 3.7\n  - Switched to [Maven Repository](https://repo1.maven.org/maven2/) for Java jar files\n  - Upgraded Java MySQL Connector to v8.0.17\n1.0.0\n  date: 2016-09-18\n  changes:\n  - Start Changelog,\n  - Update for PyroCMS 3.1 and Laravel 5.3,\n  - Install and deploy Pyro from the command line with a single command, `ant`\n  - Include / exclude core Pyro addons,\n  - Require Pyro Addons directly from Github,\n  - Opt-out core Addons from seeding,\n  - Run `artisan` commands after install\n  - Install [Pyro Builder](https://github.com/websemantics/builder-extension) by default,\n  - Scaffolds and installs a `todo` module by default,\n\n## Support\n\nNeed help or have a question? post a questions at [StackOverflow](https://stackoverflow.com/questions/tagged/auto-pyro)\n\n*Please don't use the issue trackers for support/questions.*\n\n## Contribution\n\nWe are more than happy to accept external contributions to the project in the form of feedback, bug reports and even better - pull requests :)\n\n## Links\n\n- [PyroCMS](https://www.pyrocms.com/)\n- [Pyro Builder](https://github.com/websemantics/builder-extension)\n- [Maven Repository](https://repo1.maven.org/maven2/)\n\n## License\n\n[MIT license](http://opensource.org/licenses/mit-license.php)\nCopyright (c) Web Semantics, Inc.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebsemantics%2Fauto-pyro","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwebsemantics%2Fauto-pyro","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwebsemantics%2Fauto-pyro/lists"}