From 3535bdb2f6360662bd95f6e26fce31dbc269af64 Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Tue, 7 Nov 2023 10:27:12 +0000 Subject: [PATCH] Deployer 7.3.3 --- .github/FUNDING.yml | 1 - .github/ISSUE_TEMPLATE/bug_report.md | 11 - .github/ISSUE_TEMPLATE/config.yml | 8 - .github/ISSUE_TEMPLATE/feature_request.md | 7 - .github/PULL_REQUEST_TEMPLATE.md | 8 - .github/workflows/check.yml | 62 - .github/workflows/docs.yml | 44 - .github/workflows/release.yml | 67 - .github/workflows/sync.yml | 51 - .github/workflows/test.yml | 75 - bin/build | 92 - bin/dep | 97 - bin/docgen | 56 - composer.json | 97 +- composer.lock | 4898 ----------------- dep | Bin 0 -> 788636 bytes docs/KNOWN_BUGS.md | 59 - docs/UPGRADE.md | 274 - docs/api.md | 565 -- docs/avoid-php-fpm-reloading.md | 54 - docs/basics.md | 239 - docs/ci-cd.md | 99 - docs/cli.md | 148 - docs/contrib/README.md | 35 - docs/contrib/bugsnag.md | 41 - docs/contrib/cachetool.md | 140 - docs/contrib/chatwork.md | 205 - docs/contrib/cimonitor.md | 223 - docs/contrib/cloudflare.md | 43 - docs/contrib/cpanel.md | 175 - docs/contrib/crontab.md | 45 - docs/contrib/directadmin.md | 83 - docs/contrib/discord.md | 160 - docs/contrib/grafana.md | 55 - docs/contrib/hangouts.md | 130 - docs/contrib/hipchat.md | 85 - docs/contrib/ispmanager.md | 245 - docs/contrib/mattermost.md | 206 - docs/contrib/ms-teams.md | 183 - docs/contrib/newrelic.md | 84 - docs/contrib/npm.md | 52 - docs/contrib/ntfy.md | 196 - docs/contrib/phinx.md | 118 - docs/contrib/php-fpm.md | 75 - docs/contrib/rabbit.md | 73 - docs/contrib/raygun.md | 45 - docs/contrib/rocketchat.md | 230 - docs/contrib/rollbar.md | 56 - docs/contrib/rsync.md | 233 - docs/contrib/sentry.md | 70 - docs/contrib/slack.md | 219 - docs/contrib/supervisord-monitor.md | 128 - docs/contrib/telegram.md | 155 - docs/contrib/webpack_encore.md | 67 - docs/contrib/workplace.md | 145 - docs/contrib/yammer.md | 140 - docs/contrib/yarn.md | 47 - docs/getting-started.md | 173 - docs/hosts.md | 190 - docs/installation.md | 31 - docs/recipe/README.md | 28 - docs/recipe/cakephp.md | 116 - docs/recipe/codeigniter.md | 90 - docs/recipe/common.md | 264 - docs/recipe/composer.md | 32 - docs/recipe/contao.md | 166 - docs/recipe/craftcms.md | 114 - docs/recipe/deploy/check_remote.md | 25 - docs/recipe/deploy/cleanup.md | 35 - docs/recipe/deploy/clear_paths.md | 42 - docs/recipe/deploy/copy_dirs.md | 33 - docs/recipe/deploy/info.md | 24 - docs/recipe/deploy/lock.md | 40 - docs/recipe/deploy/push.md | 26 - docs/recipe/deploy/release.md | 111 - docs/recipe/deploy/rollback.md | 54 - docs/recipe/deploy/setup.md | 24 - docs/recipe/deploy/shared.md | 47 - docs/recipe/deploy/symlink.md | 35 - docs/recipe/deploy/update_code.md | 90 - docs/recipe/deploy/vendors.md | 58 - docs/recipe/deploy/writable.md | 102 - docs/recipe/drupal7.md | 132 - docs/recipe/drupal8.md | 117 - docs/recipe/flow_framework.md | 122 - docs/recipe/fuelphp.md | 80 - docs/recipe/joomla.md | 100 - docs/recipe/laravel.md | 483 -- docs/recipe/magento.md | 118 - docs/recipe/magento2.md | 745 --- docs/recipe/pimcore.md | 89 - docs/recipe/prestashop.md | 127 - docs/recipe/provision.md | 160 - docs/recipe/provision/databases.md | 90 - docs/recipe/provision/nodejs.md | 35 - docs/recipe/provision/php.md | 51 - docs/recipe/provision/website.md | 61 - docs/recipe/shopware.md | 306 - docs/recipe/silverstripe.md | 136 - docs/recipe/statamic.md | 222 - docs/recipe/sulu.md | 87 - docs/recipe/symfony.md | 193 - docs/recipe/typo3.md | 123 - docs/recipe/wordpress.md | 100 - docs/recipe/yii.md | 100 - docs/recipe/zend_framework.md | 65 - docs/selector.md | 178 - docs/sidebar.js | 19 - docs/tasks.md | 136 - docs/yaml.md | 31 - phpcs.xml | 33 - phpstan.neon | 15 - phpunit.xml | 24 - tests/bootstrap.php | 40 - tests/docker/Dockerfile | 102 - tests/docker/README.md | 88 - tests/docker/conf/10-coverage.ini | 2 - tests/docker/conf/healthcheck.conf | 32 - tests/docker/docker-compose.yml | 48 - tests/docker/initial-site/public/index.html | 5 - tests/docker/scripts/install-composer.sh | 18 - .../coverage-start-wrapper.php | 5 - tests/docker/scripts/start-servers.sh | 8 - tests/e2e/AbstractE2ETest.php | 17 - tests/e2e/ConsoleApplicationTester.php | 147 - tests/e2e/FunctionsE2ETest.php | 24 - tests/e2e/LaravelBoilerplateE2ETest.php | 37 - tests/e2e/MiscE2ETest.php | 45 - tests/e2e/SymfonyBoilerplateE2ETest.php | 0 tests/e2e/TimeoutsE2ETest.php | 25 - tests/e2e/bootstrap.php | 14 - tests/e2e/coverage/coverage-report.php | 40 - tests/e2e/coverage/coverage-start.php | 60 - tests/e2e/coverage/start-e2e-test.sh | 12 - tests/e2e/phpunit-e2e.xml | 8 - tests/e2e/recipe/functions.php | 14 - tests/e2e/recipe/hosts.php | 13 - tests/e2e/recipe/laravel-boilerplate.php | 29 - tests/e2e/recipe/misc.php | 12 - tests/e2e/recipe/timeouts.php | 20 - tests/fixtures/project/uploaded.html | 0 tests/fixtures/repository/.env | 1 - tests/fixtures/repository/README.md | 3 - tests/fixtures/repository/composer.json | 6 - tests/fixtures/repository/uploads/poem.txt | 12 - tests/joy/HostDefaultConfigTest.php | 34 - tests/joy/JoyTest.php | 76 - tests/joy/OnFuncTest.php | 49 - tests/legacy/AbstractTest.php | 73 - tests/legacy/CurrentPathTest.php | 35 - tests/legacy/DeployTest.php | 144 - tests/legacy/EnvTest.php | 25 - tests/legacy/NamedArgumentsTest.php | 56 - tests/legacy/OncePerNodeTest.php | 25 - tests/legacy/OnceTest.php | 22 - tests/legacy/ParallelTest.php | 114 - tests/legacy/SelectTest.php | 33 - tests/legacy/UpdateCodeTest.php | 33 - tests/legacy/YamlTest.php | 52 - tests/legacy/recipe/deploy.php | 47 - tests/legacy/recipe/deploy.yaml | 27 - tests/legacy/recipe/env.php | 22 - tests/legacy/recipe/named_arguments.php | 22 - tests/legacy/recipe/once.php | 10 - tests/legacy/recipe/once_per_node.php | 16 - tests/legacy/recipe/parallel.php | 49 - tests/legacy/recipe/select.php | 13 - tests/legacy/recipe/update_code.php | 9 - tests/phpstan-baseline.neon | 52 - tests/src/Collection/CollectionTest.php | 52 - tests/src/Command/BlackjackCommandTest.php | 20 - tests/src/Component/Pimple/PimpleTest.php | 599 -- tests/src/Component/Ssh/IOArgumentsTest.php | 34 - tests/src/Configuration/ConfigurationTest.php | 174 - tests/src/DeployerTest.php | 36 - tests/src/FunctionsTest.php | 185 - tests/src/Host/ConfigurationTest.php | 87 - tests/src/Host/HostTest.php | 86 - tests/src/Host/RangeTest.php | 30 - tests/src/Importer/ImporterTest.php | 82 - tests/src/Selector/SelectorTest.php | 32 - tests/src/Support/HelpersTest.php | 62 - tests/src/Support/ObjectProxyTest.php | 27 - tests/src/Task/ContextTest.php | 36 - tests/src/Task/ScriptManagerTest.php | 98 - tests/src/Task/TaskTest.php | 114 - 186 files changed, 29 insertions(+), 21077 deletions(-) delete mode 100644 .github/FUNDING.yml delete mode 100644 .github/ISSUE_TEMPLATE/bug_report.md delete mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .github/ISSUE_TEMPLATE/feature_request.md delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/workflows/check.yml delete mode 100644 .github/workflows/docs.yml delete mode 100644 .github/workflows/release.yml delete mode 100644 .github/workflows/sync.yml delete mode 100644 .github/workflows/test.yml delete mode 100755 bin/build delete mode 100755 bin/dep delete mode 100755 bin/docgen delete mode 100644 composer.lock create mode 100755 dep delete mode 100644 docs/KNOWN_BUGS.md delete mode 100644 docs/UPGRADE.md delete mode 100644 docs/api.md delete mode 100644 docs/avoid-php-fpm-reloading.md delete mode 100644 docs/basics.md delete mode 100755 docs/ci-cd.md delete mode 100755 docs/cli.md delete mode 100644 docs/contrib/README.md delete mode 100644 docs/contrib/bugsnag.md delete mode 100644 docs/contrib/cachetool.md delete mode 100644 docs/contrib/chatwork.md delete mode 100644 docs/contrib/cimonitor.md delete mode 100644 docs/contrib/cloudflare.md delete mode 100644 docs/contrib/cpanel.md delete mode 100644 docs/contrib/crontab.md delete mode 100644 docs/contrib/directadmin.md delete mode 100644 docs/contrib/discord.md delete mode 100644 docs/contrib/grafana.md delete mode 100644 docs/contrib/hangouts.md delete mode 100644 docs/contrib/hipchat.md delete mode 100644 docs/contrib/ispmanager.md delete mode 100644 docs/contrib/mattermost.md delete mode 100644 docs/contrib/ms-teams.md delete mode 100644 docs/contrib/newrelic.md delete mode 100644 docs/contrib/npm.md delete mode 100644 docs/contrib/ntfy.md delete mode 100644 docs/contrib/phinx.md delete mode 100644 docs/contrib/php-fpm.md delete mode 100644 docs/contrib/rabbit.md delete mode 100644 docs/contrib/raygun.md delete mode 100644 docs/contrib/rocketchat.md delete mode 100644 docs/contrib/rollbar.md delete mode 100644 docs/contrib/rsync.md delete mode 100644 docs/contrib/sentry.md delete mode 100644 docs/contrib/slack.md delete mode 100644 docs/contrib/supervisord-monitor.md delete mode 100644 docs/contrib/telegram.md delete mode 100644 docs/contrib/webpack_encore.md delete mode 100644 docs/contrib/workplace.md delete mode 100644 docs/contrib/yammer.md delete mode 100644 docs/contrib/yarn.md delete mode 100755 docs/getting-started.md delete mode 100644 docs/hosts.md delete mode 100755 docs/installation.md delete mode 100644 docs/recipe/README.md delete mode 100644 docs/recipe/cakephp.md delete mode 100644 docs/recipe/codeigniter.md delete mode 100644 docs/recipe/common.md delete mode 100644 docs/recipe/composer.md delete mode 100644 docs/recipe/contao.md delete mode 100644 docs/recipe/craftcms.md delete mode 100644 docs/recipe/deploy/check_remote.md delete mode 100644 docs/recipe/deploy/cleanup.md delete mode 100644 docs/recipe/deploy/clear_paths.md delete mode 100644 docs/recipe/deploy/copy_dirs.md delete mode 100644 docs/recipe/deploy/info.md delete mode 100644 docs/recipe/deploy/lock.md delete mode 100644 docs/recipe/deploy/push.md delete mode 100644 docs/recipe/deploy/release.md delete mode 100644 docs/recipe/deploy/rollback.md delete mode 100644 docs/recipe/deploy/setup.md delete mode 100644 docs/recipe/deploy/shared.md delete mode 100644 docs/recipe/deploy/symlink.md delete mode 100644 docs/recipe/deploy/update_code.md delete mode 100644 docs/recipe/deploy/vendors.md delete mode 100644 docs/recipe/deploy/writable.md delete mode 100644 docs/recipe/drupal7.md delete mode 100644 docs/recipe/drupal8.md delete mode 100644 docs/recipe/flow_framework.md delete mode 100644 docs/recipe/fuelphp.md delete mode 100644 docs/recipe/joomla.md delete mode 100644 docs/recipe/laravel.md delete mode 100644 docs/recipe/magento.md delete mode 100644 docs/recipe/magento2.md delete mode 100644 docs/recipe/pimcore.md delete mode 100644 docs/recipe/prestashop.md delete mode 100644 docs/recipe/provision.md delete mode 100644 docs/recipe/provision/databases.md delete mode 100644 docs/recipe/provision/nodejs.md delete mode 100644 docs/recipe/provision/php.md delete mode 100644 docs/recipe/provision/website.md delete mode 100644 docs/recipe/shopware.md delete mode 100644 docs/recipe/silverstripe.md delete mode 100644 docs/recipe/statamic.md delete mode 100644 docs/recipe/sulu.md delete mode 100644 docs/recipe/symfony.md delete mode 100644 docs/recipe/typo3.md delete mode 100644 docs/recipe/wordpress.md delete mode 100644 docs/recipe/yii.md delete mode 100644 docs/recipe/zend_framework.md delete mode 100644 docs/selector.md delete mode 100644 docs/sidebar.js delete mode 100644 docs/tasks.md delete mode 100644 docs/yaml.md delete mode 100644 phpcs.xml delete mode 100644 phpstan.neon delete mode 100644 phpunit.xml delete mode 100644 tests/bootstrap.php delete mode 100644 tests/docker/Dockerfile delete mode 100644 tests/docker/README.md delete mode 100644 tests/docker/conf/10-coverage.ini delete mode 100644 tests/docker/conf/healthcheck.conf delete mode 100644 tests/docker/docker-compose.yml delete mode 100644 tests/docker/initial-site/public/index.html delete mode 100644 tests/docker/scripts/install-composer.sh delete mode 100644 tests/docker/scripts/php-code-coverage/coverage-start-wrapper.php delete mode 100644 tests/docker/scripts/start-servers.sh delete mode 100644 tests/e2e/AbstractE2ETest.php delete mode 100644 tests/e2e/ConsoleApplicationTester.php delete mode 100644 tests/e2e/FunctionsE2ETest.php delete mode 100644 tests/e2e/LaravelBoilerplateE2ETest.php delete mode 100644 tests/e2e/MiscE2ETest.php delete mode 100644 tests/e2e/SymfonyBoilerplateE2ETest.php delete mode 100644 tests/e2e/TimeoutsE2ETest.php delete mode 100644 tests/e2e/bootstrap.php delete mode 100644 tests/e2e/coverage/coverage-report.php delete mode 100644 tests/e2e/coverage/coverage-start.php delete mode 100644 tests/e2e/coverage/start-e2e-test.sh delete mode 100644 tests/e2e/phpunit-e2e.xml delete mode 100644 tests/e2e/recipe/functions.php delete mode 100644 tests/e2e/recipe/hosts.php delete mode 100644 tests/e2e/recipe/laravel-boilerplate.php delete mode 100644 tests/e2e/recipe/misc.php delete mode 100644 tests/e2e/recipe/timeouts.php delete mode 100644 tests/fixtures/project/uploaded.html delete mode 100644 tests/fixtures/repository/.env delete mode 100644 tests/fixtures/repository/README.md delete mode 100644 tests/fixtures/repository/composer.json delete mode 100644 tests/fixtures/repository/uploads/poem.txt delete mode 100644 tests/joy/HostDefaultConfigTest.php delete mode 100644 tests/joy/JoyTest.php delete mode 100644 tests/joy/OnFuncTest.php delete mode 100644 tests/legacy/AbstractTest.php delete mode 100644 tests/legacy/CurrentPathTest.php delete mode 100644 tests/legacy/DeployTest.php delete mode 100644 tests/legacy/EnvTest.php delete mode 100644 tests/legacy/NamedArgumentsTest.php delete mode 100644 tests/legacy/OncePerNodeTest.php delete mode 100644 tests/legacy/OnceTest.php delete mode 100644 tests/legacy/ParallelTest.php delete mode 100644 tests/legacy/SelectTest.php delete mode 100644 tests/legacy/UpdateCodeTest.php delete mode 100644 tests/legacy/YamlTest.php delete mode 100644 tests/legacy/recipe/deploy.php delete mode 100644 tests/legacy/recipe/deploy.yaml delete mode 100644 tests/legacy/recipe/env.php delete mode 100644 tests/legacy/recipe/named_arguments.php delete mode 100644 tests/legacy/recipe/once.php delete mode 100644 tests/legacy/recipe/once_per_node.php delete mode 100644 tests/legacy/recipe/parallel.php delete mode 100644 tests/legacy/recipe/select.php delete mode 100644 tests/legacy/recipe/update_code.php delete mode 100644 tests/phpstan-baseline.neon delete mode 100644 tests/src/Collection/CollectionTest.php delete mode 100644 tests/src/Command/BlackjackCommandTest.php delete mode 100644 tests/src/Component/Pimple/PimpleTest.php delete mode 100644 tests/src/Component/Ssh/IOArgumentsTest.php delete mode 100644 tests/src/Configuration/ConfigurationTest.php delete mode 100644 tests/src/DeployerTest.php delete mode 100644 tests/src/FunctionsTest.php delete mode 100644 tests/src/Host/ConfigurationTest.php delete mode 100644 tests/src/Host/HostTest.php delete mode 100644 tests/src/Host/RangeTest.php delete mode 100644 tests/src/Importer/ImporterTest.php delete mode 100644 tests/src/Selector/SelectorTest.php delete mode 100644 tests/src/Support/HelpersTest.php delete mode 100644 tests/src/Support/ObjectProxyTest.php delete mode 100644 tests/src/Task/ContextTest.php delete mode 100644 tests/src/Task/ScriptManagerTest.php delete mode 100644 tests/src/Task/TaskTest.php diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml deleted file mode 100644 index bc2800951..000000000 --- a/.github/FUNDING.yml +++ /dev/null @@ -1 +0,0 @@ -github: antonmedv diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md deleted file mode 100644 index 534a8a3bd..000000000 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -name: Bug report -about: Create a report to help us improve. -title: '' -labels: '' -assignees: '' ---- -- Deployer version: -- Deployment OS: - - Please, provide a minimal reproducible example of deploy.php diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index e4626d2ba..000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,8 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: Ask question - url: https://github.com/deployphp/deployer/discussions/category_choices - about: Please ask questions in discussions. - - name: 💰 Paid Support - url: https://github.com/deployphp/deployer/discussions/3031 - about: We can offer a paid support for Deployer. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md deleted file mode 100644 index 3e9561cf8..000000000 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -name: Feature request -about: Suggest an idea for this project. -title: '' -labels: '' -assignees: '' ---- diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md deleted file mode 100644 index 3f7bff1e8..000000000 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ /dev/null @@ -1,8 +0,0 @@ -- [ ] Bug fix #…? -- [ ] New feature? -- [ ] BC breaks? -- [ ] Tests added? -- [ ] Docs added? - - Please, regenerate docs by running next command: - $ php bin/docgen diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml deleted file mode 100644 index cfe5abb2e..000000000 --- a/.github/workflows/check.yml +++ /dev/null @@ -1,62 +0,0 @@ -name: check - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - phpstan: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Validate composer.json and composer.lock - run: composer validate - - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - if: steps.composer-cache.outputs.cache-hit != 'true' - run: composer install --prefer-dist --no-progress - - - name: Run test suite - run: composer phpstan - - phpcs: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Validate composer.json and composer.lock - run: composer validate - - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - if: steps.composer-cache.outputs.cache-hit != 'true' - run: composer install --prefer-dist --no-progress - - - name: Run test suite - run: composer phpcs diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index 345157e8a..000000000 --- a/.github/workflows/docs.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: doc - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - docgen: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Validate composer.json and composer.lock - run: composer validate - - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - if: steps.composer-cache.outputs.cache-hit != 'true' - run: composer install --prefer-dist --no-progress - - - name: Run docgen - run: php bin/docgen - - - name: Check for uncommitted changes - run: | - status=$(git status --porcelain docs/); - [ -z "$status" ] || { - echo "Please, run bin/docgen and commit next files:"; - echo $status; - exit 1; - } diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 1ad5f5683..000000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,67 +0,0 @@ -name: release - -on: - release: - types: - - created - -jobs: - release: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Get version - run: echo "RELEASE_VERSION=${GITHUB_REF#refs/*/v}" >> $GITHUB_ENV - - - name: Build phar - run: php -d phar.readonly=0 bin/build -v"$RELEASE_VERSION" - - - name: Upload phar - run: | - export PATH=${PATH}:`go env GOPATH`/bin - export RELEASE_ID=$(curl --fail-with-body -L \ - -H "Authorization: Bearer ${GITHUB_TOKEN}" \ - https://api.github.com/repos/deployphp/deployer/releases \ - | npx fx ".find(x=> x.tag_name == 'v${RELEASE_VERSION}').id") - curl --fail-with-body -L \ - -X POST \ - -H "Authorization: Bearer ${GITHUB_TOKEN}" \ - -H "Content-Type: application/octet-stream" \ - "https://uploads.github.com/repos/deployphp/deployer/releases/${RELEASE_ID}/assets?name=deployer.phar" \ - --data-binary "@deployer.phar" - env: - GITHUB_TOKEN: ${{ secrets.MY_GITHUB_TOKEN_FOR_UPLOADING_RELEASES }} - - - name: Add deployer.phar - shell: bash - run: | - set -x - git checkout -b dist - mv deployer.phar dep - chmod +x dep - git add -f dep - - - name: Remove obsolete files & dirs - shell: bash - run: | - set -x - git rm -r .github/ bin/ docs/ tests/ *.lock *.yaml *.xml *.neon - - - name: Update composer.json - shell: bash - run: | - set -x - cat composer.json | jq 'del(.autoload) | del(.scripts) | del(.require) | del(."require-dev") | setpath(["bin"]; "dep")' > composer-new.json - mv composer-new.json composer.json - git add composer.json - - - name: Push release tag - shell: bash - run: | - set -x - git config --global user.email "41898282+github-actions[bot]@users.noreply.github.com" - git config --global user.name "github-actions" - git commit -m "Deployer $RELEASE_VERSION" - git tag "v$RELEASE_VERSION" --force - git push origin "v$RELEASE_VERSION" --force diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml deleted file mode 100644 index fe68283e7..000000000 --- a/.github/workflows/sync.yml +++ /dev/null @@ -1,51 +0,0 @@ -name: sync - -on: - push: - branches: [ master ] - -jobs: - docs: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - name: Validate composer.json and composer.lock - run: composer validate - - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - if: steps.composer-cache.outputs.cache-hit != 'true' - run: composer install --prefer-dist --no-progress - - - name: Run docgen - run: php bin/docgen - - - name: Add & Commit - uses: EndBug/add-and-commit@v9 - with: - add: 'docs' - message: '[automatic] Update docs with bin/docgen' - - - name: Deploy docs - run: | - curl --fail-with-body --location --request POST 'https://api.github.com/repos/antonmedv/deployer.org/actions/workflows/deploy-docs.yml/dispatches' \ - --header "Authorization: Bearer ${MY_GITHUB_TOKEN}" \ - --header 'Accept: application/vnd.github.v3+json' \ - --header 'Content-Type: application/json' \ - --data-raw '{ - "ref": "master" - }' - env: - MY_GITHUB_TOKEN: ${{ secrets.MY_GITHUB_TOKEN }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 76813e1a3..000000000 --- a/.github/workflows/test.yml +++ /dev/null @@ -1,75 +0,0 @@ -name: test - -on: - push: - branches: [ master ] - pull_request: - branches: [ master ] - -jobs: - unit: - runs-on: ubuntu-latest - strategy: - matrix: - php-versions: [ '7.3', '7.4', '8.0', '8.1', '8.2' ] - steps: - - uses: actions/checkout@v3 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: ${{ matrix.php-versions }} - extensions: mbstring, intl - coverage: xdebug - - - name: Validate composer.json and composer.lock - run: composer validate - - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - if: steps.composer-cache.outputs.cache-hit != 'true' - run: composer install --prefer-dist --no-progress - - - name: Run test suite - run: composer test - - e2e: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - - uses: jpribyl/action-docker-layer-caching@v0.1.1 - continue-on-error: true - - - name: Build the docker-compose stack - run: cd tests/docker && docker-compose build - - - name: Get Composer Cache Directory - id: composer-cache - run: | - echo "dir=$(composer config cache-files-dir)" >> $GITHUB_OUTPUT - - - uses: actions/cache@v3 - with: - path: ${{ steps.composer-cache.outputs.dir }} - key: ${{ runner.os }}-composer-${{ hashFiles('**/composer.lock') }} - restore-keys: | - ${{ runner.os }}-composer- - - - name: Install dependencies - if: steps.composer-cache.outputs.cache-hit != 'true' - run: composer install --prefer-dist --no-progress - - - name: Run E2E test suite - run: cd tests/docker && docker-compose up --abort-on-container-exit diff --git a/bin/build b/bin/build deleted file mode 100755 index 9e159f7fc..000000000 --- a/bin/build +++ /dev/null @@ -1,92 +0,0 @@ -#!/usr/bin/env php - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ -if (ini_get('phar.readonly') === '1') { - throw new \Exception('Writing to phar files is disabled. Change your `php.ini` or append `-d phar.readonly=false` to the shebang, if supported by your `env` executable.'); -} - -define('__ROOT__', realpath(__DIR__ . '/..')); -chdir(__ROOT__); - -$opt = getopt('v:', ['nozip']); - -$version = $opt['v'] ?? null; -if (empty($version)) { - echo "Please, specify version as \"-v7.0.0-beta.42\".\n"; - exit(1); -} -if (!preg_match('/^\d+\.\d+\.\d+(\-\w+(\.\d+)?)?$/', $version)) { - echo "Version must be \"7.0.0-beta.42\". Got \"$version\".\n"; - exit(1); -} - -`composer install --no-dev --prefer-dist --optimize-autoloader`; - -$pharName = "deployer.phar"; -$pharFile = __ROOT__ . '/' . $pharName; -if (file_exists($pharFile)) { - unlink($pharFile); -} - -$ignore = [ - '.anton', - '.git', - 'Tests', - 'tests', - 'deploy.php', -]; - -$phar = new \Phar($pharFile, 0, $pharName); -$phar->setSignatureAlgorithm(\Phar::SHA1); -$phar->startBuffering(); -$iterator = new RecursiveDirectoryIterator(__ROOT__, FilesystemIterator::SKIP_DOTS); -$iterator = new RecursiveCallbackFilterIterator($iterator, function (SplFileInfo $fileInfo) use ($ignore) { - return !in_array($fileInfo->getBasename(), $ignore, true); -}); -$iterator = new RecursiveIteratorIterator($iterator); -$iterator = new CallbackFilterIterator($iterator, function (SplFileInfo $fileInfo) { - //'bash', 'fish', 'zsh' is a completion templates - return in_array($fileInfo->getExtension(), ['php', 'exe', 'bash', 'fish', 'zsh'], true); -}); - -foreach ($iterator as $fileInfo) { - $file = str_replace(__ROOT__, '', $fileInfo->getRealPath()); - echo "Add file: " . $file . "\n"; - $phar->addFile($fileInfo->getRealPath(), $file); - - if (!array_key_exists('nozip', $opt)) { - $phar[$file]->compress(Phar::GZ); - - if (!$phar[$file]->isCompressed()) { - echo "Could not compress File: $file\n"; - } - } -} - -// Add schema.json -echo "Add file: /src/schema.json\n"; -$phar->addFile(realpath(__DIR__ . '/../src/schema.json'), '/src/schema.json'); - -// Add bin/dep file -echo "Add file: /bin/dep\n"; -$depContent = file_get_contents(__ROOT__ . '/bin/dep'); -$depContent = str_replace("#!/usr/bin/env php\n", '', $depContent); -$depContent = str_replace('__FILE__', 'str_replace("phar://", "", Phar::running())', $depContent); -$depContent = preg_replace("/run\('.+?'/", "run('$version'", $depContent); -$phar->addFromString('bin/dep', $depContent); -$phar->setStub(<<stopBuffering(); -unset($phar); - -echo "$pharName was created successfully.\n"; diff --git a/bin/dep b/bin/dep deleted file mode 100755 index 2bfa43b83..000000000 --- a/bin/dep +++ /dev/null @@ -1,97 +0,0 @@ -#!/usr/bin/env php - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -// Detect deploy.php location -$deployFile = null; -foreach ($argv as $i => $arg) { - if (preg_match('/^(-f|--file)$/', $arg, $match) && $i + 1 < count($argv)) { - $deployFile = $argv[$i + 1]; - break; - } - if (preg_match('/^--file=(?.+)$/', $arg, $match)) { - $deployFile = $match['file']; - break; - } - if (preg_match('/^-f=?(?.+)$/', $arg, $match)) { - $deployFile = $match['file']; - break; - } -} -if (!empty($deployFile)) { - $deployFile = realpath($deployFile); -} -$lookUp = function (string $name): ?string { - $dir = getcwd(); - for ($i = 0; $i < 10; $i++) { - $path = "$dir/$name"; - if (is_readable($path)) { - return $path; - } - $dir = dirname($dir); - } - return ''; -}; -if (empty($deployFile)) { - $deployFile = $lookUp('deploy.php'); -} -if (empty($deployFile)) { - $deployFile = $lookUp('deploy.yaml'); -} -if (empty($deployFile)) { - $deployFile = $lookUp('deploy.yml'); -} - -// Detect autoload location -$autoload = [ - __DIR__ . '/../vendor/autoload.php', // The dep located at "deployer.phar/bin" or in development. - __DIR__ . '/../../../autoload.php', // The dep located at "vendor/deployer/deployer/bin". - __DIR__ . '/../autoload.php', // The dep located at "vendor/bin". -]; -$includes = [ - __DIR__ . '/..', - __DIR__ . '/../../../deployer/deployer', - __DIR__ . '/../deployer/deployer', -]; -$includePath = false; -for ($i = 0; $i < count($autoload); $i++) { - if (file_exists($autoload[$i]) && is_dir($includes[$i])) { - require $autoload[$i]; - $includePath = $includes[$i]; - break; - } -} -if (empty($includePath)) { - fwrite(STDERR, "Error: The `autoload.php` file not found in:\n"); - for ($i = 0; $i < count($autoload); $i++) { - $a = file_exists($autoload[$i]) ? 'true' : 'false'; - $b = is_dir($includes[$i]) ? 'true' : 'false'; - fwrite(STDERR, " - file_exists($autoload[$i]) = $a\n"); - fwrite(STDERR, " is_dir($includes[$i]) = $b\n"); - } - exit(1); -} - -// Errors to exception -set_error_handler(function ($severity, $message, $filename, $lineno) { - if (error_reporting() == 0) { - return; - } - if (error_reporting() & $severity) { - throw new ErrorException($message, 0, $severity, $filename, $lineno); - } -}); - -// Enable recipe loading -set_include_path($includePath . PATH_SEPARATOR . get_include_path()); - -// Deployer constants -define('DEPLOYER', true); -define('DEPLOYER_BIN', __FILE__); -define('DEPLOYER_DEPLOY_FILE', $deployFile); - -Deployer\Deployer::run('master', $deployFile); diff --git a/bin/docgen b/bin/docgen deleted file mode 100755 index 645358e04..000000000 --- a/bin/docgen +++ /dev/null @@ -1,56 +0,0 @@ -#!/usr/bin/env php - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Deployer\Documentation\ApiGen; -use Deployer\Documentation\DocGen; -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Input\ArgvInput; -use Symfony\Component\Console\Output\ConsoleOutput; - -require __DIR__ . '/../vendor/autoload.php'; - -chdir(realpath(__DIR__ . '/..')); - -$input = new ArgvInput(); -$output = new ConsoleOutput(); -$app = new Application('DocGen', '1.0.0'); -$app->setDefaultCommand('all'); - -$api = function () use ($output) { - $parser = new ApiGen(); - $parser->parse(file_get_contents(__DIR__ . '/../src/functions.php')); - $md = $parser->markdown(); - file_put_contents(__DIR__ . '/../docs/api.md', $md); - $output->writeln('API Reference documentation updated.'); -}; - -$recipes = function () use ($input, $output) { - $docgen = new DocGen(__DIR__ . '/..'); - $docgen->parse(__DIR__ . '/../recipe'); - $docgen->parse(__DIR__ . '/../contrib'); - - if ($input->getOption('json')) { - echo json_encode($docgen->recipes, JSON_PRETTY_PRINT); - return; - } - - $docgen->gen(__DIR__ . '/../docs'); - $output->writeln('Recipes documentation updated.'); -}; - -$app->register('api')->setCode($api); -$app->register('recipes')->setCode($recipes)->addOption('json'); -$app->register('all')->setCode(function () use ($recipes, $api) { - $api(); - $recipes(); - echo `git status`; -})->addOption('json'); - -$app->run($input, $output); diff --git a/composer.json b/composer.json index 4a26ba956..5bd9de8e0 100644 --- a/composer.json +++ b/composer.json @@ -1,71 +1,32 @@ { - "name": "deployer/deployer", - "description": "Deployment Tool", - "license": "MIT", - "homepage": "https://deployer.org", - "support": { - "docs": "https://deployer.org/docs", - "source": "https://github.com/deployphp/deployer", - "issues": "https://github.com/deployphp/deployer/issues" - }, - "authors": [ - { - "name": "Anton Medvedev", - "email": "anton@medv.io" - } - ], - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/antonmedv" - } - ], - "autoload": { - "psr-4": { - "Deployer\\": "src/" - }, - "files": [ - "src/Support/helpers.php", - "src/functions.php" - ] - }, - "scripts": { - "test": "pest", - "test:e2e": "pest --config tests/e2e/phpunit-e2e.xml", - "phpcs": "phpcs", - "fix": "phpcbf", - "phpstan": "phpstan analyse -c phpstan.neon", - "phpstan:baseline": "@phpstan --generate-baseline tests/phpstan-baseline.neon" - }, - "bin": [ - "bin/dep" - ], - "require": { - "php": "^8.0|^7.3", - "ext-json": "*", - "justinrainbow/json-schema": "^5.2", - "psr/http-message": "^1", - "react/http": "^1.5", - "symfony/console": "^5.4.9", - "symfony/polyfill-php80": "^1.22", - "symfony/polyfill-php81": "^1.26", - "symfony/process": "^5", - "symfony/yaml": "^5" - }, - "require-dev": { - "pestphp/pest": "^1.0", - "phpstan/phpstan": "^1.4", - "phpunit/php-code-coverage": "^9.2", - "phpunit/phpunit": "^9.3", - "slevomat/coding-standard": "^7.0", - "squizlabs/php_codesniffer": "^3.5" - }, - "config": { - "sort-packages": true, - "process-timeout": 0, - "allow-plugins": { - "pestphp/pest-plugin": true, - "dealerdirect/phpcodesniffer-composer-installer": true - } + "name": "deployer/deployer", + "description": "Deployment Tool", + "license": "MIT", + "homepage": "https://deployer.org", + "support": { + "docs": "https://deployer.org/docs", + "source": "https://github.com/deployphp/deployer", + "issues": "https://github.com/deployphp/deployer/issues" + }, + "authors": [ + { + "name": "Anton Medvedev", + "email": "anton@medv.io" } + ], + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/antonmedv" + } + ], + "bin": "dep", + "config": { + "sort-packages": true, + "process-timeout": 0, + "allow-plugins": { + "pestphp/pest-plugin": true, + "dealerdirect/phpcodesniffer-composer-installer": true + } + } } diff --git a/composer.lock b/composer.lock deleted file mode 100644 index 3042e95e4..000000000 --- a/composer.lock +++ /dev/null @@ -1,4898 +0,0 @@ -{ - "_readme": [ - "This file locks the dependencies of your project to a known state", - "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", - "This file is @generated automatically" - ], - "content-hash": "2e4a876ba583ea7b5ddf4bebd46c0262", - "packages": [ - { - "name": "evenement/evenement", - "version": "v3.0.1", - "source": { - "type": "git", - "url": "https://github.com/igorw/evenement.git", - "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/igorw/evenement/zipball/531bfb9d15f8aa57454f5f0285b18bec903b8fb7", - "reference": "531bfb9d15f8aa57454f5f0285b18bec903b8fb7", - "shasum": "" - }, - "require": { - "php": ">=7.0" - }, - "require-dev": { - "phpunit/phpunit": "^6.0" - }, - "type": "library", - "autoload": { - "psr-0": { - "Evenement": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - } - ], - "description": "Événement is a very simple event dispatching library for PHP", - "keywords": [ - "event-dispatcher", - "event-emitter" - ], - "support": { - "issues": "https://github.com/igorw/evenement/issues", - "source": "https://github.com/igorw/evenement/tree/master" - }, - "time": "2017-07-23T21:35:13+00:00" - }, - { - "name": "fig/http-message-util", - "version": "1.1.5", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message-util.git", - "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message-util/zipball/9d94dc0154230ac39e5bf89398b324a86f63f765", - "reference": "9d94dc0154230ac39e5bf89398b324a86f63f765", - "shasum": "" - }, - "require": { - "php": "^5.3 || ^7.0 || ^8.0" - }, - "suggest": { - "psr/http-message": "The package containing the PSR-7 interfaces" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Fig\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Utility classes and constants for use with PSR-7 (psr/http-message)", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "issues": "https://github.com/php-fig/http-message-util/issues", - "source": "https://github.com/php-fig/http-message-util/tree/1.1.5" - }, - "time": "2020-11-24T22:02:12+00:00" - }, - { - "name": "justinrainbow/json-schema", - "version": "5.2.11", - "source": { - "type": "git", - "url": "https://github.com/justinrainbow/json-schema.git", - "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/justinrainbow/json-schema/zipball/2ab6744b7296ded80f8cc4f9509abbff393399aa", - "reference": "2ab6744b7296ded80f8cc4f9509abbff393399aa", - "shasum": "" - }, - "require": { - "php": ">=5.3.3" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "~2.2.20||~2.15.1", - "json-schema/json-schema-test-suite": "1.2.0", - "phpunit/phpunit": "^4.8.35" - }, - "bin": [ - "bin/validate-json" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "JsonSchema\\": "src/JsonSchema/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bruno Prieto Reis", - "email": "bruno.p.reis@gmail.com" - }, - { - "name": "Justin Rainbow", - "email": "justin.rainbow@gmail.com" - }, - { - "name": "Igor Wiedler", - "email": "igor@wiedler.ch" - }, - { - "name": "Robert Schönthal", - "email": "seroscho@googlemail.com" - } - ], - "description": "A library to validate a json schema.", - "homepage": "https://github.com/justinrainbow/json-schema", - "keywords": [ - "json", - "schema" - ], - "support": { - "issues": "https://github.com/justinrainbow/json-schema/issues", - "source": "https://github.com/justinrainbow/json-schema/tree/5.2.11" - }, - "time": "2021-07-22T09:24:00+00:00" - }, - { - "name": "psr/container", - "version": "1.1.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/container.git", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/container/zipball/8622567409010282b7aeebe4bb841fe98b58dcaf", - "reference": "8622567409010282b7aeebe4bb841fe98b58dcaf", - "shasum": "" - }, - "require": { - "php": ">=7.2.0" - }, - "type": "library", - "autoload": { - "psr-4": { - "Psr\\Container\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common Container Interface (PHP FIG PSR-11)", - "homepage": "https://github.com/php-fig/container", - "keywords": [ - "PSR-11", - "container", - "container-interface", - "container-interop", - "psr" - ], - "support": { - "issues": "https://github.com/php-fig/container/issues", - "source": "https://github.com/php-fig/container/tree/1.1.1" - }, - "time": "2021-03-05T17:36:06+00:00" - }, - { - "name": "psr/http-message", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/php-fig/http-message.git", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/http-message/zipball/f6561bf28d520154e4b0ec72be95418abe6d9363", - "reference": "f6561bf28d520154e4b0ec72be95418abe6d9363", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Http\\Message\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "http://www.php-fig.org/" - } - ], - "description": "Common interface for HTTP messages", - "homepage": "https://github.com/php-fig/http-message", - "keywords": [ - "http", - "http-message", - "psr", - "psr-7", - "request", - "response" - ], - "support": { - "source": "https://github.com/php-fig/http-message/tree/master" - }, - "time": "2016-08-06T14:39:51+00:00" - }, - { - "name": "react/cache", - "version": "v1.1.1", - "source": { - "type": "git", - "url": "https://github.com/reactphp/cache.git", - "reference": "4bf736a2cccec7298bdf745db77585966fc2ca7e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/cache/zipball/4bf736a2cccec7298bdf745db77585966fc2ca7e", - "reference": "4bf736a2cccec7298bdf745db77585966fc2ca7e", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "react/promise": "^3.0 || ^2.0 || ^1.1" - }, - "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Cache\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Async, Promise-based cache interface for ReactPHP", - "keywords": [ - "cache", - "caching", - "promise", - "reactphp" - ], - "support": { - "issues": "https://github.com/reactphp/cache/issues", - "source": "https://github.com/reactphp/cache/tree/v1.1.1" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-02-02T06:47:52+00:00" - }, - { - "name": "react/dns", - "version": "v1.9.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/dns.git", - "reference": "6d38296756fa644e6cb1bfe95eff0f9a4ed6edcb" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/dns/zipball/6d38296756fa644e6cb1bfe95eff0f9a4ed6edcb", - "reference": "6d38296756fa644e6cb1bfe95eff0f9a4ed6edcb", - "shasum": "" - }, - "require": { - "php": ">=5.3.0", - "react/cache": "^1.0 || ^0.6 || ^0.5", - "react/event-loop": "^1.2", - "react/promise": "^3.0 || ^2.7 || ^1.2.1", - "react/promise-timer": "^1.8" - }, - "require-dev": { - "clue/block-react": "^1.2", - "phpunit/phpunit": "^9.3 || ^4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Dns\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Async DNS resolver for ReactPHP", - "keywords": [ - "async", - "dns", - "dns-resolver", - "reactphp" - ], - "support": { - "issues": "https://github.com/reactphp/dns/issues", - "source": "https://github.com/reactphp/dns/tree/v1.9.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-12-20T08:46:54+00:00" - }, - { - "name": "react/event-loop", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/event-loop.git", - "reference": "be6dee480fc4692cec0504e65eb486e3be1aa6f2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/event-loop/zipball/be6dee480fc4692cec0504e65eb486e3be1aa6f2", - "reference": "be6dee480fc4692cec0504e65eb486e3be1aa6f2", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" - }, - "suggest": { - "ext-event": "~1.0 for ExtEventLoop", - "ext-pcntl": "For signal handling support when using the StreamSelectLoop", - "ext-uv": "* for ExtUvLoop" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\EventLoop\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "ReactPHP's core reactor event loop that libraries can use for evented I/O.", - "keywords": [ - "asynchronous", - "event-loop" - ], - "support": { - "issues": "https://github.com/reactphp/event-loop/issues", - "source": "https://github.com/reactphp/event-loop/tree/v1.2.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-07-11T12:31:24+00:00" - }, - { - "name": "react/http", - "version": "v1.6.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/http.git", - "reference": "59961cc4a5b14481728f07c591546be18fa3a5c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/http/zipball/59961cc4a5b14481728f07c591546be18fa3a5c7", - "reference": "59961cc4a5b14481728f07c591546be18fa3a5c7", - "shasum": "" - }, - "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "fig/http-message-util": "^1.1", - "php": ">=5.3.0", - "psr/http-message": "^1.0", - "react/event-loop": "^1.2", - "react/promise": "^2.3 || ^1.2.1", - "react/promise-stream": "^1.1", - "react/socket": "^1.9", - "react/stream": "^1.2", - "ringcentral/psr7": "^1.2" - }, - "require-dev": { - "clue/block-react": "^1.5", - "clue/http-proxy-react": "^1.7", - "clue/reactphp-ssh-proxy": "^1.3", - "clue/socks-react": "^1.3", - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Http\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Event-driven, streaming HTTP client and server implementation for ReactPHP", - "keywords": [ - "async", - "client", - "event-driven", - "http", - "http client", - "http server", - "https", - "psr-7", - "reactphp", - "server", - "streaming" - ], - "support": { - "issues": "https://github.com/reactphp/http/issues", - "source": "https://github.com/reactphp/http/tree/v1.6.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2022-02-03T13:17:37+00:00" - }, - { - "name": "react/promise", - "version": "v2.9.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise.git", - "reference": "234f8fd1023c9158e2314fa9d7d0e6a83db42910" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise/zipball/234f8fd1023c9158e2314fa9d7d0e6a83db42910", - "reference": "234f8fd1023c9158e2314fa9d7d0e6a83db42910", - "shasum": "" - }, - "require": { - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.36" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "React\\Promise\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "A lightweight implementation of CommonJS Promises/A for PHP", - "keywords": [ - "promise", - "promises" - ], - "support": { - "issues": "https://github.com/reactphp/promise/issues", - "source": "https://github.com/reactphp/promise/tree/v2.9.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2022-02-11T10:27:51+00:00" - }, - { - "name": "react/promise-stream", - "version": "v1.3.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise-stream.git", - "reference": "3ebd94fe0d8edbf44937948af28d02d5437e9949" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise-stream/zipball/3ebd94fe0d8edbf44937948af28d02d5437e9949", - "reference": "3ebd94fe0d8edbf44937948af28d02d5437e9949", - "shasum": "" - }, - "require": { - "php": ">=5.3", - "react/promise": "^2.1 || ^1.2", - "react/stream": "^1.0 || ^0.7 || ^0.6 || ^0.5 || ^0.4.6" - }, - "require-dev": { - "clue/block-react": "^1.0", - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", - "react/event-loop": "^1.0 || ^0.5 || ^0.4 || ^0.3", - "react/promise-timer": "^1.0" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "React\\Promise\\Stream\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "The missing link between Promise-land and Stream-land for ReactPHP", - "homepage": "https://github.com/reactphp/promise-stream", - "keywords": [ - "Buffer", - "async", - "promise", - "reactphp", - "stream", - "unwrap" - ], - "support": { - "issues": "https://github.com/reactphp/promise-stream/issues", - "source": "https://github.com/reactphp/promise-stream/tree/v1.3.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-10-18T10:47:09+00:00" - }, - { - "name": "react/promise-timer", - "version": "v1.8.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/promise-timer.git", - "reference": "0bbbcc79589e5bfdddba68a287f1cb805581a479" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/promise-timer/zipball/0bbbcc79589e5bfdddba68a287f1cb805581a479", - "reference": "0bbbcc79589e5bfdddba68a287f1cb805581a479", - "shasum": "" - }, - "require": { - "php": ">=5.3", - "react/event-loop": "^1.2", - "react/promise": "^3.0 || ^2.7.0 || ^1.2.1" - }, - "require-dev": { - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" - }, - "type": "library", - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "React\\Promise\\Timer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "A trivial implementation of timeouts for Promises, built on top of ReactPHP.", - "homepage": "https://github.com/reactphp/promise-timer", - "keywords": [ - "async", - "event-loop", - "promise", - "reactphp", - "timeout", - "timer" - ], - "support": { - "issues": "https://github.com/reactphp/promise-timer/issues", - "source": "https://github.com/reactphp/promise-timer/tree/v1.8.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-12-06T11:08:48+00:00" - }, - { - "name": "react/socket", - "version": "v1.11.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/socket.git", - "reference": "f474156aaab4f09041144fa8b57c7d70aed32a1c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/socket/zipball/f474156aaab4f09041144fa8b57c7d70aed32a1c", - "reference": "f474156aaab4f09041144fa8b57c7d70aed32a1c", - "shasum": "" - }, - "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.0", - "react/dns": "^1.8", - "react/event-loop": "^1.2", - "react/promise": "^2.6.0 || ^1.2.1", - "react/promise-timer": "^1.8", - "react/stream": "^1.2" - }, - "require-dev": { - "clue/block-react": "^1.5", - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35", - "react/promise-stream": "^1.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Socket\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Async, streaming plaintext TCP/IP and secure TLS socket server and client connections for ReactPHP", - "keywords": [ - "Connection", - "Socket", - "async", - "reactphp", - "stream" - ], - "support": { - "issues": "https://github.com/reactphp/socket/issues", - "source": "https://github.com/reactphp/socket/tree/v1.11.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2022-01-14T10:14:32+00:00" - }, - { - "name": "react/stream", - "version": "v1.2.0", - "source": { - "type": "git", - "url": "https://github.com/reactphp/stream.git", - "reference": "7a423506ee1903e89f1e08ec5f0ed430ff784ae9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/reactphp/stream/zipball/7a423506ee1903e89f1e08ec5f0ed430ff784ae9", - "reference": "7a423506ee1903e89f1e08ec5f0ed430ff784ae9", - "shasum": "" - }, - "require": { - "evenement/evenement": "^3.0 || ^2.0 || ^1.0", - "php": ">=5.3.8", - "react/event-loop": "^1.2" - }, - "require-dev": { - "clue/stream-filter": "~1.2", - "phpunit/phpunit": "^9.3 || ^5.7 || ^4.8.35" - }, - "type": "library", - "autoload": { - "psr-4": { - "React\\Stream\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Christian Lück", - "email": "christian@clue.engineering", - "homepage": "https://clue.engineering/" - }, - { - "name": "Cees-Jan Kiewiet", - "email": "reactphp@ceesjankiewiet.nl", - "homepage": "https://wyrihaximus.net/" - }, - { - "name": "Jan Sorgalla", - "email": "jsorgalla@gmail.com", - "homepage": "https://sorgalla.com/" - }, - { - "name": "Chris Boden", - "email": "cboden@gmail.com", - "homepage": "https://cboden.dev/" - } - ], - "description": "Event-driven readable and writable streams for non-blocking I/O in ReactPHP", - "keywords": [ - "event-driven", - "io", - "non-blocking", - "pipe", - "reactphp", - "readable", - "stream", - "writable" - ], - "support": { - "issues": "https://github.com/reactphp/stream/issues", - "source": "https://github.com/reactphp/stream/tree/v1.2.0" - }, - "funding": [ - { - "url": "https://github.com/WyriHaximus", - "type": "github" - }, - { - "url": "https://github.com/clue", - "type": "github" - } - ], - "time": "2021-07-11T12:37:55+00:00" - }, - { - "name": "ringcentral/psr7", - "version": "1.3.0", - "source": { - "type": "git", - "url": "https://github.com/ringcentral/psr7.git", - "reference": "360faaec4b563958b673fb52bbe94e37f14bc686" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/ringcentral/psr7/zipball/360faaec4b563958b673fb52bbe94e37f14bc686", - "reference": "360faaec4b563958b673fb52bbe94e37f14bc686", - "shasum": "" - }, - "require": { - "php": ">=5.3", - "psr/http-message": "~1.0" - }, - "provide": { - "psr/http-message-implementation": "1.0" - }, - "require-dev": { - "phpunit/phpunit": "~4.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "files": [ - "src/functions_include.php" - ], - "psr-4": { - "RingCentral\\Psr7\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Michael Dowling", - "email": "mtdowling@gmail.com", - "homepage": "https://github.com/mtdowling" - } - ], - "description": "PSR-7 message implementation", - "keywords": [ - "http", - "message", - "stream", - "uri" - ], - "support": { - "source": "https://github.com/ringcentral/psr7/tree/master" - }, - "time": "2018-05-29T20:21:04+00:00" - }, - { - "name": "symfony/console", - "version": "v5.4.17", - "source": { - "type": "git", - "url": "https://github.com/symfony/console.git", - "reference": "58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f", - "reference": "58422fdcb0e715ed05b385f70d3e8b5ed4bbd45f", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php73": "^1.9", - "symfony/polyfill-php80": "^1.16", - "symfony/service-contracts": "^1.1|^2|^3", - "symfony/string": "^5.1|^6.0" - }, - "conflict": { - "psr/log": ">=3", - "symfony/dependency-injection": "<4.4", - "symfony/dotenv": "<5.1", - "symfony/event-dispatcher": "<4.4", - "symfony/lock": "<4.4", - "symfony/process": "<4.4" - }, - "provide": { - "psr/log-implementation": "1.0|2.0" - }, - "require-dev": { - "psr/log": "^1|^2", - "symfony/config": "^4.4|^5.0|^6.0", - "symfony/dependency-injection": "^4.4|^5.0|^6.0", - "symfony/event-dispatcher": "^4.4|^5.0|^6.0", - "symfony/lock": "^4.4|^5.0|^6.0", - "symfony/process": "^4.4|^5.0|^6.0", - "symfony/var-dumper": "^4.4|^5.0|^6.0" - }, - "suggest": { - "psr/log": "For using the console logger", - "symfony/event-dispatcher": "", - "symfony/lock": "", - "symfony/process": "" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Console\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Eases the creation of beautiful and testable command line interfaces", - "homepage": "https://symfony.com", - "keywords": [ - "cli", - "command line", - "console", - "terminal" - ], - "support": { - "source": "https://github.com/symfony/console/tree/v5.4.17" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-12-28T14:15:31+00:00" - }, - { - "name": "symfony/deprecation-contracts", - "version": "v2.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/deprecation-contracts.git", - "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/6f981ee24cf69ee7ce9736146d1c57c2780598a8", - "reference": "6f981ee24cf69ee7ce9736146d1c57c2780598a8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "files": [ - "function.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "A generic function and convention to trigger deprecation notices", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/deprecation-contracts/tree/v2.5.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-07-12T14:48:14+00:00" - }, - { - "name": "symfony/polyfill-ctype", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-ctype.git", - "reference": "30885182c981ab175d4d034db0f6f469898070ab" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-ctype/zipball/30885182c981ab175d4d034db0f6f469898070ab", - "reference": "30885182c981ab175d4d034db0f6f469898070ab", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-ctype": "*" - }, - "suggest": { - "ext-ctype": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Ctype\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Gert de Pagter", - "email": "BackEndTea@gmail.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for ctype functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "ctype", - "polyfill", - "portable" - ], - "support": { - "source": "https://github.com/symfony/polyfill-ctype/tree/v1.25.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-10-20T20:35:02+00:00" - }, - { - "name": "symfony/polyfill-intl-grapheme", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-grapheme.git", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/81b86b50cf841a64252b439e738e97f4a34e2783", - "reference": "81b86b50cf841a64252b439e738e97f4a34e2783", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Grapheme\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's grapheme_* functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "grapheme", - "intl", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-grapheme/tree/v1.25.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-11-23T21:10:46+00:00" - }, - { - "name": "symfony/polyfill-intl-normalizer", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-intl-normalizer.git", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-intl-normalizer/zipball/8590a5f561694770bdcd3f9b5c69dde6945028e8", - "reference": "8590a5f561694770bdcd3f9b5c69dde6945028e8", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "suggest": { - "ext-intl": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Intl\\Normalizer\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for intl's Normalizer class and related functions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "intl", - "normalizer", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-intl-normalizer/tree/v1.25.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-02-19T12:13:01+00:00" - }, - { - "name": "symfony/polyfill-mbstring", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-mbstring.git", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/0abb51d2f102e00a4eefcf46ba7fec406d245825", - "reference": "0abb51d2f102e00a4eefcf46ba7fec406d245825", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "provide": { - "ext-mbstring": "*" - }, - "suggest": { - "ext-mbstring": "For best performance" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Mbstring\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill for the Mbstring extension", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "mbstring", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.25.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-11-30T18:21:41+00:00" - }, - { - "name": "symfony/polyfill-php73", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php73.git", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php73/zipball/cc5db0e22b3cb4111010e48785a97f670b350ca5", - "reference": "cc5db0e22b3cb4111010e48785a97f670b350ca5", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php73\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 7.3+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php73/tree/v1.25.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-06-05T21:20:04+00:00" - }, - { - "name": "symfony/polyfill-php80", - "version": "v1.25.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php80.git", - "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php80/zipball/4407588e0d3f1f52efb65fbe92babe41f37fe50c", - "reference": "4407588e0d3f1f52efb65fbe92babe41f37fe50c", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.23-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php80\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Ion Bazan", - "email": "ion.bazan@gmail.com" - }, - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.0+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php80/tree/v1.25.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-03-04T08:16:47+00:00" - }, - { - "name": "symfony/polyfill-php81", - "version": "v1.26.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/polyfill-php81.git", - "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/polyfill-php81/zipball/13f6d1271c663dc5ae9fb843a8f16521db7687a1", - "reference": "13f6d1271c663dc5ae9fb843a8f16521db7687a1", - "shasum": "" - }, - "require": { - "php": ">=7.1" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "1.26-dev" - }, - "thanks": { - "name": "symfony/polyfill", - "url": "https://github.com/symfony/polyfill" - } - }, - "autoload": { - "files": [ - "bootstrap.php" - ], - "psr-4": { - "Symfony\\Polyfill\\Php81\\": "" - }, - "classmap": [ - "Resources/stubs" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Symfony polyfill backporting some PHP 8.1+ features to lower PHP versions", - "homepage": "https://symfony.com", - "keywords": [ - "compatibility", - "polyfill", - "portable", - "shim" - ], - "support": { - "source": "https://github.com/symfony/polyfill-php81/tree/v1.26.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-05-24T11:49:31+00:00" - }, - { - "name": "symfony/process", - "version": "v5.4.5", - "source": { - "type": "git", - "url": "https://github.com/symfony/process.git", - "reference": "95440409896f90a5f85db07a32b517ecec17fa4c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/95440409896f90a5f85db07a32b517ecec17fa4c", - "reference": "95440409896f90a5f85db07a32b517ecec17fa4c", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-php80": "^1.16" - }, - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Process\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Executes commands in sub-processes", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/process/tree/v5.4.5" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-30T18:16:22+00:00" - }, - { - "name": "symfony/service-contracts", - "version": "v2.5.0", - "source": { - "type": "git", - "url": "https://github.com/symfony/service-contracts.git", - "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/service-contracts/zipball/1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", - "reference": "1ab11b933cd6bc5464b08e81e2c5b07dec58b0fc", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "psr/container": "^1.1", - "symfony/deprecation-contracts": "^2.1" - }, - "conflict": { - "ext-psr": "<1.1|>=2" - }, - "suggest": { - "symfony/service-implementation": "" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-main": "2.5-dev" - }, - "thanks": { - "name": "symfony/contracts", - "url": "https://github.com/symfony/contracts" - } - }, - "autoload": { - "psr-4": { - "Symfony\\Contracts\\Service\\": "" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Generic abstractions related to writing services", - "homepage": "https://symfony.com", - "keywords": [ - "abstractions", - "contracts", - "decoupling", - "interfaces", - "interoperability", - "standards" - ], - "support": { - "source": "https://github.com/symfony/service-contracts/tree/v2.5.0" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2021-11-04T16:48:04+00:00" - }, - { - "name": "symfony/string", - "version": "v5.4.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/string.git", - "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/string/zipball/92043b7d8383e48104e411bc9434b260dbeb5a10", - "reference": "92043b7d8383e48104e411bc9434b260dbeb5a10", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/polyfill-ctype": "~1.8", - "symfony/polyfill-intl-grapheme": "~1.0", - "symfony/polyfill-intl-normalizer": "~1.0", - "symfony/polyfill-mbstring": "~1.0", - "symfony/polyfill-php80": "~1.15" - }, - "conflict": { - "symfony/translation-contracts": ">=3.0" - }, - "require-dev": { - "symfony/error-handler": "^4.4|^5.0|^6.0", - "symfony/http-client": "^4.4|^5.0|^6.0", - "symfony/translation-contracts": "^1.1|^2", - "symfony/var-exporter": "^4.4|^5.0|^6.0" - }, - "type": "library", - "autoload": { - "files": [ - "Resources/functions.php" - ], - "psr-4": { - "Symfony\\Component\\String\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nicolas Grekas", - "email": "p@tchwork.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Provides an object-oriented API to strings and deals with bytes, UTF-8 code points and grapheme clusters in a unified way", - "homepage": "https://symfony.com", - "keywords": [ - "grapheme", - "i18n", - "string", - "unicode", - "utf-8", - "utf8" - ], - "support": { - "source": "https://github.com/symfony/string/tree/v5.4.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-02T09:53:40+00:00" - }, - { - "name": "symfony/yaml", - "version": "v5.4.3", - "source": { - "type": "git", - "url": "https://github.com/symfony/yaml.git", - "reference": "e80f87d2c9495966768310fc531b487ce64237a2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/e80f87d2c9495966768310fc531b487ce64237a2", - "reference": "e80f87d2c9495966768310fc531b487ce64237a2", - "shasum": "" - }, - "require": { - "php": ">=7.2.5", - "symfony/deprecation-contracts": "^2.1|^3", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "symfony/console": "<5.3" - }, - "require-dev": { - "symfony/console": "^5.3|^6.0" - }, - "suggest": { - "symfony/console": "For validating YAML files using the lint command" - }, - "bin": [ - "Resources/bin/yaml-lint" - ], - "type": "library", - "autoload": { - "psr-4": { - "Symfony\\Component\\Yaml\\": "" - }, - "exclude-from-classmap": [ - "/Tests/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Fabien Potencier", - "email": "fabien@symfony.com" - }, - { - "name": "Symfony Community", - "homepage": "https://symfony.com/contributors" - } - ], - "description": "Loads and dumps YAML files", - "homepage": "https://symfony.com", - "support": { - "source": "https://github.com/symfony/yaml/tree/v5.4.3" - }, - "funding": [ - { - "url": "https://symfony.com/sponsor", - "type": "custom" - }, - { - "url": "https://github.com/fabpot", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", - "type": "tidelift" - } - ], - "time": "2022-01-26T16:32:32+00:00" - } - ], - "packages-dev": [ - { - "name": "dealerdirect/phpcodesniffer-composer-installer", - "version": "v0.7.2", - "source": { - "type": "git", - "url": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer.git", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/Dealerdirect/phpcodesniffer-composer-installer/zipball/1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "reference": "1c968e542d8843d7cd71de3c5c9c3ff3ad71a1db", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.0 || ^2.0", - "php": ">=5.3", - "squizlabs/php_codesniffer": "^2.0 || ^3.1.0 || ^4.0" - }, - "require-dev": { - "composer/composer": "*", - "php-parallel-lint/php-parallel-lint": "^1.3.1", - "phpcompatibility/php-compatibility": "^9.0" - }, - "type": "composer-plugin", - "extra": { - "class": "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\Plugin" - }, - "autoload": { - "psr-4": { - "Dealerdirect\\Composer\\Plugin\\Installers\\PHPCodeSniffer\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Franck Nijhof", - "email": "franck.nijhof@dealerdirect.com", - "homepage": "http://www.frenck.nl", - "role": "Developer / IT Manager" - }, - { - "name": "Contributors", - "homepage": "https://github.com/Dealerdirect/phpcodesniffer-composer-installer/graphs/contributors" - } - ], - "description": "PHP_CodeSniffer Standards Composer Installer Plugin", - "homepage": "http://www.dealerdirect.com", - "keywords": [ - "PHPCodeSniffer", - "PHP_CodeSniffer", - "code quality", - "codesniffer", - "composer", - "installer", - "phpcbf", - "phpcs", - "plugin", - "qa", - "quality", - "standard", - "standards", - "style guide", - "stylecheck", - "tests" - ], - "support": { - "issues": "https://github.com/dealerdirect/phpcodesniffer-composer-installer/issues", - "source": "https://github.com/dealerdirect/phpcodesniffer-composer-installer" - }, - "time": "2022-02-04T12:51:07+00:00" - }, - { - "name": "doctrine/instantiator", - "version": "1.4.1", - "source": { - "type": "git", - "url": "https://github.com/doctrine/instantiator.git", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/doctrine/instantiator/zipball/10dcfce151b967d20fde1b34ae6640712c3891bc", - "reference": "10dcfce151b967d20fde1b34ae6640712c3891bc", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "require-dev": { - "doctrine/coding-standard": "^9", - "ext-pdo": "*", - "ext-phar": "*", - "phpbench/phpbench": "^0.16 || ^1", - "phpstan/phpstan": "^1.4", - "phpstan/phpstan-phpunit": "^1", - "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", - "vimeo/psalm": "^4.22" - }, - "type": "library", - "autoload": { - "psr-4": { - "Doctrine\\Instantiator\\": "src/Doctrine/Instantiator/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Marco Pivetta", - "email": "ocramius@gmail.com", - "homepage": "https://ocramius.github.io/" - } - ], - "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors", - "homepage": "https://www.doctrine-project.org/projects/instantiator.html", - "keywords": [ - "constructor", - "instantiate" - ], - "support": { - "issues": "https://github.com/doctrine/instantiator/issues", - "source": "https://github.com/doctrine/instantiator/tree/1.4.1" - }, - "funding": [ - { - "url": "https://www.doctrine-project.org/sponsorship.html", - "type": "custom" - }, - { - "url": "https://www.patreon.com/phpdoctrine", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/doctrine%2Finstantiator", - "type": "tidelift" - } - ], - "time": "2022-03-03T08:28:38+00:00" - }, - { - "name": "facade/ignition-contracts", - "version": "1.0.2", - "source": { - "type": "git", - "url": "https://github.com/facade/ignition-contracts.git", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/facade/ignition-contracts/zipball/3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "reference": "3c921a1cdba35b68a7f0ccffc6dffc1995b18267", - "shasum": "" - }, - "require": { - "php": "^7.3|^8.0" - }, - "require-dev": { - "friendsofphp/php-cs-fixer": "^v2.15.8", - "phpunit/phpunit": "^9.3.11", - "vimeo/psalm": "^3.17.1" - }, - "type": "library", - "autoload": { - "psr-4": { - "Facade\\IgnitionContracts\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Freek Van der Herten", - "email": "freek@spatie.be", - "homepage": "https://flareapp.io", - "role": "Developer" - } - ], - "description": "Solution contracts for Ignition", - "homepage": "https://github.com/facade/ignition-contracts", - "keywords": [ - "contracts", - "flare", - "ignition" - ], - "support": { - "issues": "https://github.com/facade/ignition-contracts/issues", - "source": "https://github.com/facade/ignition-contracts/tree/1.0.2" - }, - "time": "2020-10-16T08:27:54+00:00" - }, - { - "name": "filp/whoops", - "version": "2.14.5", - "source": { - "type": "git", - "url": "https://github.com/filp/whoops.git", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/filp/whoops/zipball/a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "reference": "a63e5e8f26ebbebf8ed3c5c691637325512eb0dc", - "shasum": "" - }, - "require": { - "php": "^5.5.9 || ^7.0 || ^8.0", - "psr/log": "^1.0.1 || ^2.0 || ^3.0" - }, - "require-dev": { - "mockery/mockery": "^0.9 || ^1.0", - "phpunit/phpunit": "^4.8.36 || ^5.7.27 || ^6.5.14 || ^7.5.20 || ^8.5.8 || ^9.3.3", - "symfony/var-dumper": "^2.6 || ^3.0 || ^4.0 || ^5.0" - }, - "suggest": { - "symfony/var-dumper": "Pretty print complex values better with var-dumper available", - "whoops/soap": "Formats errors as SOAP responses" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.7-dev" - } - }, - "autoload": { - "psr-4": { - "Whoops\\": "src/Whoops/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Filipe Dobreira", - "homepage": "https://github.com/filp", - "role": "Developer" - } - ], - "description": "php error handling for cool kids", - "homepage": "https://filp.github.io/whoops/", - "keywords": [ - "error", - "exception", - "handling", - "library", - "throwable", - "whoops" - ], - "support": { - "issues": "https://github.com/filp/whoops/issues", - "source": "https://github.com/filp/whoops/tree/2.14.5" - }, - "funding": [ - { - "url": "https://github.com/denis-sokolov", - "type": "github" - } - ], - "time": "2022-01-07T12:00:00+00:00" - }, - { - "name": "myclabs/deep-copy", - "version": "1.11.0", - "source": { - "type": "git", - "url": "https://github.com/myclabs/DeepCopy.git", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/myclabs/DeepCopy/zipball/14daed4296fae74d9e3201d2c4925d1acb7aa614", - "reference": "14daed4296fae74d9e3201d2c4925d1acb7aa614", - "shasum": "" - }, - "require": { - "php": "^7.1 || ^8.0" - }, - "conflict": { - "doctrine/collections": "<1.6.8", - "doctrine/common": "<2.13.3 || >=3,<3.2.2" - }, - "require-dev": { - "doctrine/collections": "^1.6.8", - "doctrine/common": "^2.13.3 || ^3.2.2", - "phpunit/phpunit": "^7.5.20 || ^8.5.23 || ^9.5.13" - }, - "type": "library", - "autoload": { - "files": [ - "src/DeepCopy/deep_copy.php" - ], - "psr-4": { - "DeepCopy\\": "src/DeepCopy/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Create deep copies (clones) of your objects", - "keywords": [ - "clone", - "copy", - "duplicate", - "object", - "object graph" - ], - "support": { - "issues": "https://github.com/myclabs/DeepCopy/issues", - "source": "https://github.com/myclabs/DeepCopy/tree/1.11.0" - }, - "funding": [ - { - "url": "https://tidelift.com/funding/github/packagist/myclabs/deep-copy", - "type": "tidelift" - } - ], - "time": "2022-03-03T13:19:32+00:00" - }, - { - "name": "nikic/php-parser", - "version": "v4.13.2", - "source": { - "type": "git", - "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/210577fe3cf7badcc5814d99455df46564f3c077", - "reference": "210577fe3cf7badcc5814d99455df46564f3c077", - "shasum": "" - }, - "require": { - "ext-tokenizer": "*", - "php": ">=7.0" - }, - "require-dev": { - "ircmaxell/php-yacc": "^0.0.7", - "phpunit/phpunit": "^6.5 || ^7.0 || ^8.0 || ^9.0" - }, - "bin": [ - "bin/php-parse" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.9-dev" - } - }, - "autoload": { - "psr-4": { - "PhpParser\\": "lib/PhpParser" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Nikita Popov" - } - ], - "description": "A PHP parser written in PHP", - "keywords": [ - "parser", - "php" - ], - "support": { - "issues": "https://github.com/nikic/PHP-Parser/issues", - "source": "https://github.com/nikic/PHP-Parser/tree/v4.13.2" - }, - "time": "2021-11-30T19:35:32+00:00" - }, - { - "name": "nunomaduro/collision", - "version": "v5.11.0", - "source": { - "type": "git", - "url": "https://github.com/nunomaduro/collision.git", - "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/nunomaduro/collision/zipball/8b610eef8582ccdc05d8f2ab23305e2d37049461", - "reference": "8b610eef8582ccdc05d8f2ab23305e2d37049461", - "shasum": "" - }, - "require": { - "facade/ignition-contracts": "^1.0", - "filp/whoops": "^2.14.3", - "php": "^7.3 || ^8.0", - "symfony/console": "^5.0" - }, - "require-dev": { - "brianium/paratest": "^6.1", - "fideloper/proxy": "^4.4.1", - "fruitcake/laravel-cors": "^2.0.3", - "laravel/framework": "8.x-dev", - "nunomaduro/larastan": "^0.6.2", - "nunomaduro/mock-final-classes": "^1.0", - "orchestra/testbench": "^6.0", - "phpstan/phpstan": "^0.12.64", - "phpunit/phpunit": "^9.5.0" - }, - "type": "library", - "extra": { - "laravel": { - "providers": [ - "NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider" - ] - } - }, - "autoload": { - "psr-4": { - "NunoMaduro\\Collision\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "Cli error handling for console/command-line PHP applications.", - "keywords": [ - "artisan", - "cli", - "command-line", - "console", - "error", - "handling", - "laravel", - "laravel-zero", - "php", - "symfony" - ], - "support": { - "issues": "https://github.com/nunomaduro/collision/issues", - "source": "https://github.com/nunomaduro/collision" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2022-01-10T16:22:52+00:00" - }, - { - "name": "pestphp/pest", - "version": "v1.21.2", - "source": { - "type": "git", - "url": "https://github.com/pestphp/pest.git", - "reference": "63f009fadf9b37f611fda43928d03336475d5d9f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest/zipball/63f009fadf9b37f611fda43928d03336475d5d9f", - "reference": "63f009fadf9b37f611fda43928d03336475d5d9f", - "shasum": "" - }, - "require": { - "nunomaduro/collision": "^5.10.0|^6.0", - "pestphp/pest-plugin": "^1.0.0", - "php": "^7.3 || ^8.0", - "phpunit/phpunit": "^9.5.5" - }, - "require-dev": { - "illuminate/console": "^8.47.0", - "illuminate/support": "^8.47.0", - "laravel/dusk": "^6.15.0", - "pestphp/pest-dev-tools": "dev-master", - "pestphp/pest-plugin-parallel": "^1.0" - }, - "bin": [ - "bin/pest" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "pest": { - "plugins": [ - "Pest\\Plugins\\Coverage", - "Pest\\Plugins\\Init", - "Pest\\Plugins\\Version", - "Pest\\Plugins\\Environment" - ] - }, - "laravel": { - "providers": [ - "Pest\\Laravel\\PestServiceProvider" - ] - } - }, - "autoload": { - "files": [ - "src/Functions.php", - "src/Pest.php" - ], - "psr-4": { - "Pest\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Nuno Maduro", - "email": "enunomaduro@gmail.com" - } - ], - "description": "An elegant PHP Testing Framework.", - "keywords": [ - "framework", - "pest", - "php", - "test", - "testing", - "unit" - ], - "support": { - "issues": "https://github.com/pestphp/pest/issues", - "source": "https://github.com/pestphp/pest/tree/v1.21.2" - }, - "funding": [ - { - "url": "https://www.paypal.com/paypalme/enunomaduro", - "type": "custom" - }, - { - "url": "https://github.com/lukeraymonddowning", - "type": "github" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://github.com/octoper", - "type": "github" - }, - { - "url": "https://github.com/olivernybroe", - "type": "github" - }, - { - "url": "https://github.com/owenvoke", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2022-03-05T19:34:40+00:00" - }, - { - "name": "pestphp/pest-plugin", - "version": "v1.0.0", - "source": { - "type": "git", - "url": "https://github.com/pestphp/pest-plugin.git", - "reference": "fc8519de148699fe612d9c669be60554cd2db4fa" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/pestphp/pest-plugin/zipball/fc8519de148699fe612d9c669be60554cd2db4fa", - "reference": "fc8519de148699fe612d9c669be60554cd2db4fa", - "shasum": "" - }, - "require": { - "composer-plugin-api": "^1.1 || ^2.0", - "php": "^7.3 || ^8.0" - }, - "conflict": { - "pestphp/pest": "<1.0" - }, - "require-dev": { - "composer/composer": "^1.10.19", - "pestphp/pest": "^1.0", - "pestphp/pest-dev-tools": "dev-master" - }, - "type": "composer-plugin", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - }, - "class": "Pest\\Plugin\\Manager" - }, - "autoload": { - "psr-4": { - "Pest\\Plugin\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "The Pest plugin manager", - "keywords": [ - "framework", - "manager", - "pest", - "php", - "plugin", - "test", - "testing", - "unit" - ], - "support": { - "source": "https://github.com/pestphp/pest-plugin/tree/v1.0.0" - }, - "funding": [ - { - "url": "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=66BYDWAT92N6L", - "type": "custom" - }, - { - "url": "https://github.com/nunomaduro", - "type": "github" - }, - { - "url": "https://www.patreon.com/nunomaduro", - "type": "patreon" - } - ], - "time": "2021-01-03T15:53:42+00:00" - }, - { - "name": "phar-io/manifest", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/phar-io/manifest.git", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/manifest/zipball/97803eca37d319dfa7826cc2437fc020857acb53", - "reference": "97803eca37d319dfa7826cc2437fc020857acb53", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-phar": "*", - "ext-xmlwriter": "*", - "phar-io/version": "^3.0.1", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0.x-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Component for reading phar.io manifest information from a PHP Archive (PHAR)", - "support": { - "issues": "https://github.com/phar-io/manifest/issues", - "source": "https://github.com/phar-io/manifest/tree/2.0.3" - }, - "time": "2021-07-20T11:28:43+00:00" - }, - { - "name": "phar-io/version", - "version": "3.2.1", - "source": { - "type": "git", - "url": "https://github.com/phar-io/version.git", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phar-io/version/zipball/4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "reference": "4f7fd7836c6f332bb2933569e566a0d6c4cbed74", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - }, - { - "name": "Sebastian Heuer", - "email": "sebastian@phpeople.de", - "role": "Developer" - }, - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "Developer" - } - ], - "description": "Library for handling version information and constraints", - "support": { - "issues": "https://github.com/phar-io/version/issues", - "source": "https://github.com/phar-io/version/tree/3.2.1" - }, - "time": "2022-02-21T01:04:05+00:00" - }, - { - "name": "phpdocumentor/reflection-common", - "version": "2.2.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionCommon.git", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionCommon/zipball/1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "reference": "1d01c49d4ed62f25aa84a747ad35d5a16924662b", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-2.x": "2.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Jaap van Otterdijk", - "email": "opensource@ijaap.nl" - } - ], - "description": "Common reflection classes used by phpdocumentor to reflect the code structure", - "homepage": "http://www.phpdoc.org", - "keywords": [ - "FQSEN", - "phpDocumentor", - "phpdoc", - "reflection", - "static analysis" - ], - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionCommon/issues", - "source": "https://github.com/phpDocumentor/ReflectionCommon/tree/2.x" - }, - "time": "2020-06-27T09:03:43+00:00" - }, - { - "name": "phpdocumentor/reflection-docblock", - "version": "5.3.0", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/ReflectionDocBlock.git", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/ReflectionDocBlock/zipball/622548b623e81ca6d78b721c5e029f4ce664f170", - "reference": "622548b623e81ca6d78b721c5e029f4ce664f170", - "shasum": "" - }, - "require": { - "ext-filter": "*", - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.2", - "phpdocumentor/type-resolver": "^1.3", - "webmozart/assert": "^1.9.1" - }, - "require-dev": { - "mockery/mockery": "~1.3.2", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - }, - { - "name": "Jaap van Otterdijk", - "email": "account@ijaap.nl" - } - ], - "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "support": { - "issues": "https://github.com/phpDocumentor/ReflectionDocBlock/issues", - "source": "https://github.com/phpDocumentor/ReflectionDocBlock/tree/5.3.0" - }, - "time": "2021-10-19T17:43:47+00:00" - }, - { - "name": "phpdocumentor/type-resolver", - "version": "1.6.1", - "source": { - "type": "git", - "url": "https://github.com/phpDocumentor/TypeResolver.git", - "reference": "77a32518733312af16a44300404e945338981de3" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpDocumentor/TypeResolver/zipball/77a32518733312af16a44300404e945338981de3", - "reference": "77a32518733312af16a44300404e945338981de3", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "phpdocumentor/reflection-common": "^2.0" - }, - "require-dev": { - "ext-tokenizer": "*", - "psalm/phar": "^4.8" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-1.x": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "phpDocumentor\\Reflection\\": "src" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Mike van Riel", - "email": "me@mikevanriel.com" - } - ], - "description": "A PSR-5 based resolver of Class names, Types and Structural Element Names", - "support": { - "issues": "https://github.com/phpDocumentor/TypeResolver/issues", - "source": "https://github.com/phpDocumentor/TypeResolver/tree/1.6.1" - }, - "time": "2022-03-15T21:29:03+00:00" - }, - { - "name": "phpspec/prophecy", - "version": "v1.16.0", - "source": { - "type": "git", - "url": "https://github.com/phpspec/prophecy.git", - "reference": "be8cac52a0827776ff9ccda8c381ac5b71aeb359" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpspec/prophecy/zipball/be8cac52a0827776ff9ccda8c381ac5b71aeb359", - "reference": "be8cac52a0827776ff9ccda8c381ac5b71aeb359", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.2", - "php": "^7.2 || 8.0.* || 8.1.* || 8.2.*", - "phpdocumentor/reflection-docblock": "^5.2", - "sebastian/comparator": "^3.0 || ^4.0", - "sebastian/recursion-context": "^3.0 || ^4.0" - }, - "require-dev": { - "phpspec/phpspec": "^6.0 || ^7.0", - "phpunit/phpunit": "^8.0 || ^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Prophecy\\": "src/Prophecy" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Konstantin Kudryashov", - "email": "ever.zet@gmail.com", - "homepage": "http://everzet.com" - }, - { - "name": "Marcello Duarte", - "email": "marcello.duarte@gmail.com" - } - ], - "description": "Highly opinionated mocking framework for PHP 5.3+", - "homepage": "https://github.com/phpspec/prophecy", - "keywords": [ - "Double", - "Dummy", - "fake", - "mock", - "spy", - "stub" - ], - "support": { - "issues": "https://github.com/phpspec/prophecy/issues", - "source": "https://github.com/phpspec/prophecy/tree/v1.16.0" - }, - "time": "2022-11-29T15:06:56+00:00" - }, - { - "name": "phpstan/phpdoc-parser", - "version": "1.4.2", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpdoc-parser.git", - "reference": "4cb3021a4e10ffe3d5f94a4c34cf4b3f6de2fa3d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpdoc-parser/zipball/4cb3021a4e10ffe3d5f94a4c34cf4b3f6de2fa3d", - "reference": "4cb3021a4e10ffe3d5f94a4c34cf4b3f6de2fa3d", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0" - }, - "require-dev": { - "php-parallel-lint/php-parallel-lint": "^1.2", - "phpstan/extension-installer": "^1.0", - "phpstan/phpstan": "^1.5", - "phpstan/phpstan-strict-rules": "^1.0", - "phpunit/phpunit": "^9.5", - "symfony/process": "^5.2" - }, - "type": "library", - "autoload": { - "psr-4": { - "PHPStan\\PhpDocParser\\": [ - "src/" - ] - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPDoc parser with support for nullable, intersection and generic types", - "support": { - "issues": "https://github.com/phpstan/phpdoc-parser/issues", - "source": "https://github.com/phpstan/phpdoc-parser/tree/1.4.2" - }, - "time": "2022-03-30T13:33:37+00:00" - }, - { - "name": "phpstan/phpstan", - "version": "1.4.10", - "source": { - "type": "git", - "url": "https://github.com/phpstan/phpstan.git", - "reference": "898c479c39caa727bedf4311dd294a8f4e250e72" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/phpstan/phpstan/zipball/898c479c39caa727bedf4311dd294a8f4e250e72", - "reference": "898c479c39caa727bedf4311dd294a8f4e250e72", - "shasum": "" - }, - "require": { - "php": "^7.1|^8.0" - }, - "conflict": { - "phpstan/phpstan-shim": "*" - }, - "bin": [ - "phpstan", - "phpstan.phar" - ], - "type": "library", - "autoload": { - "files": [ - "bootstrap.php" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "PHPStan - PHP Static Analysis Tool", - "support": { - "issues": "https://github.com/phpstan/phpstan/issues", - "source": "https://github.com/phpstan/phpstan/tree/1.4.10" - }, - "funding": [ - { - "url": "https://github.com/ondrejmirtes", - "type": "github" - }, - { - "url": "https://github.com/phpstan", - "type": "github" - }, - { - "url": "https://www.patreon.com/phpstan", - "type": "patreon" - }, - { - "url": "https://tidelift.com/funding/github/packagist/phpstan/phpstan", - "type": "tidelift" - } - ], - "time": "2022-03-14T10:25:45+00:00" - }, - { - "name": "phpunit/php-code-coverage", - "version": "9.2.15", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-code-coverage.git", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/2e9da11878c4202f97915c1cb4bb1ca318a63f5f", - "reference": "2e9da11878c4202f97915c1cb4bb1ca318a63f5f", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-libxml": "*", - "ext-xmlwriter": "*", - "nikic/php-parser": "^4.13.0", - "php": ">=7.3", - "phpunit/php-file-iterator": "^3.0.3", - "phpunit/php-text-template": "^2.0.2", - "sebastian/code-unit-reverse-lookup": "^2.0.2", - "sebastian/complexity": "^2.0", - "sebastian/environment": "^5.1.2", - "sebastian/lines-of-code": "^1.0.3", - "sebastian/version": "^3.0.1", - "theseer/tokenizer": "^1.2.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcov": "*", - "ext-xdebug": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.2-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that provides collection, processing, and rendering functionality for PHP code coverage information.", - "homepage": "https://github.com/sebastianbergmann/php-code-coverage", - "keywords": [ - "coverage", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-code-coverage/issues", - "source": "https://github.com/sebastianbergmann/php-code-coverage/tree/9.2.15" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-03-07T09:28:20+00:00" - }, - { - "name": "phpunit/php-file-iterator", - "version": "3.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-file-iterator.git", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "reference": "cf1c2e7c203ac650e352f4cc675a7021e7d1b3cf", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "FilterIterator implementation that filters files based on a list of suffixes.", - "homepage": "https://github.com/sebastianbergmann/php-file-iterator/", - "keywords": [ - "filesystem", - "iterator" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-file-iterator/issues", - "source": "https://github.com/sebastianbergmann/php-file-iterator/tree/3.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-12-02T12:48:52+00:00" - }, - { - "name": "phpunit/php-invoker", - "version": "3.1.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-invoker.git", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-invoker/zipball/5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "reference": "5a10147d0aaf65b58940a0b72f71c9ac0423cc67", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "ext-pcntl": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-pcntl": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Invoke callables with a timeout", - "homepage": "https://github.com/sebastianbergmann/php-invoker/", - "keywords": [ - "process" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-invoker/issues", - "source": "https://github.com/sebastianbergmann/php-invoker/tree/3.1.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:58:55+00:00" - }, - { - "name": "phpunit/php-text-template", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-text-template.git", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "reference": "5da5f67fc95621df9ff4c4e5a84d6a8a2acf7c28", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Simple template engine.", - "homepage": "https://github.com/sebastianbergmann/php-text-template/", - "keywords": [ - "template" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-text-template/issues", - "source": "https://github.com/sebastianbergmann/php-text-template/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T05:33:50+00:00" - }, - { - "name": "phpunit/php-timer", - "version": "5.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/php-timer.git", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "reference": "5a63ce20ed1b5bf577850e2c4e87f4aa902afbd2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Utility class for timing", - "homepage": "https://github.com/sebastianbergmann/php-timer/", - "keywords": [ - "timer" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/php-timer/issues", - "source": "https://github.com/sebastianbergmann/php-timer/tree/5.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:16:10+00:00" - }, - { - "name": "phpunit/phpunit", - "version": "9.5.20", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/phpunit.git", - "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/12bc8879fb65aef2138b26fc633cb1e3620cffba", - "reference": "12bc8879fb65aef2138b26fc633cb1e3620cffba", - "shasum": "" - }, - "require": { - "doctrine/instantiator": "^1.3.1", - "ext-dom": "*", - "ext-json": "*", - "ext-libxml": "*", - "ext-mbstring": "*", - "ext-xml": "*", - "ext-xmlwriter": "*", - "myclabs/deep-copy": "^1.10.1", - "phar-io/manifest": "^2.0.3", - "phar-io/version": "^3.0.2", - "php": ">=7.3", - "phpspec/prophecy": "^1.12.1", - "phpunit/php-code-coverage": "^9.2.13", - "phpunit/php-file-iterator": "^3.0.5", - "phpunit/php-invoker": "^3.1.1", - "phpunit/php-text-template": "^2.0.3", - "phpunit/php-timer": "^5.0.2", - "sebastian/cli-parser": "^1.0.1", - "sebastian/code-unit": "^1.0.6", - "sebastian/comparator": "^4.0.5", - "sebastian/diff": "^4.0.3", - "sebastian/environment": "^5.1.3", - "sebastian/exporter": "^4.0.3", - "sebastian/global-state": "^5.0.1", - "sebastian/object-enumerator": "^4.0.3", - "sebastian/resource-operations": "^3.0.3", - "sebastian/type": "^3.0", - "sebastian/version": "^3.0.2" - }, - "require-dev": { - "ext-pdo": "*", - "phpspec/prophecy-phpunit": "^2.0.1" - }, - "suggest": { - "ext-soap": "*", - "ext-xdebug": "*" - }, - "bin": [ - "phpunit" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "9.5-dev" - } - }, - "autoload": { - "files": [ - "src/Framework/Assert/Functions.php" - ], - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "The PHP Unit Testing framework.", - "homepage": "https://phpunit.de/", - "keywords": [ - "phpunit", - "testing", - "xunit" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/phpunit/issues", - "source": "https://github.com/sebastianbergmann/phpunit/tree/9.5.20" - }, - "funding": [ - { - "url": "https://phpunit.de/sponsors.html", - "type": "custom" - }, - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-04-01T12:37:26+00:00" - }, - { - "name": "psr/log", - "version": "1.1.4", - "source": { - "type": "git", - "url": "https://github.com/php-fig/log.git", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/php-fig/log/zipball/d49695b909c3b7628b6289db5479a1c204601f11", - "reference": "d49695b909c3b7628b6289db5479a1c204601f11", - "shasum": "" - }, - "require": { - "php": ">=5.3.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.1.x-dev" - } - }, - "autoload": { - "psr-4": { - "Psr\\Log\\": "Psr/Log/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "PHP-FIG", - "homepage": "https://www.php-fig.org/" - } - ], - "description": "Common interface for logging libraries", - "homepage": "https://github.com/php-fig/log", - "keywords": [ - "log", - "psr", - "psr-3" - ], - "support": { - "source": "https://github.com/php-fig/log/tree/1.1.4" - }, - "time": "2021-05-03T11:20:27+00:00" - }, - { - "name": "sebastian/cli-parser", - "version": "1.0.1", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/cli-parser.git", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/cli-parser/zipball/442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "reference": "442e7c7e687e42adc03470c7b668bc4b2402c0b2", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for parsing CLI options", - "homepage": "https://github.com/sebastianbergmann/cli-parser", - "support": { - "issues": "https://github.com/sebastianbergmann/cli-parser/issues", - "source": "https://github.com/sebastianbergmann/cli-parser/tree/1.0.1" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:08:49+00:00" - }, - { - "name": "sebastian/code-unit", - "version": "1.0.8", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit.git", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit/zipball/1fc9f64c0927627ef78ba436c9b17d967e68e120", - "reference": "1fc9f64c0927627ef78ba436c9b17d967e68e120", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the PHP code units", - "homepage": "https://github.com/sebastianbergmann/code-unit", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit/issues", - "source": "https://github.com/sebastianbergmann/code-unit/tree/1.0.8" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:08:54+00:00" - }, - { - "name": "sebastian/code-unit-reverse-lookup", - "version": "2.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/code-unit-reverse-lookup.git", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/code-unit-reverse-lookup/zipball/ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "reference": "ac91f01ccec49fb77bdc6fd1e548bc70f7faa3e5", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Looks up which function or method a line of code belongs to", - "homepage": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/", - "support": { - "issues": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/issues", - "source": "https://github.com/sebastianbergmann/code-unit-reverse-lookup/tree/2.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:30:19+00:00" - }, - { - "name": "sebastian/comparator", - "version": "4.0.6", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/comparator.git", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/55f4261989e546dc112258c7a75935a81a7ce382", - "reference": "55f4261989e546dc112258c7a75935a81a7ce382", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/diff": "^4.0", - "sebastian/exporter": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@2bepublished.at" - } - ], - "description": "Provides the functionality to compare PHP values for equality", - "homepage": "https://github.com/sebastianbergmann/comparator", - "keywords": [ - "comparator", - "compare", - "equality" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/comparator/issues", - "source": "https://github.com/sebastianbergmann/comparator/tree/4.0.6" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:49:45+00:00" - }, - { - "name": "sebastian/complexity", - "version": "2.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/complexity.git", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/complexity/zipball/739b35e53379900cc9ac327b2147867b8b6efd88", - "reference": "739b35e53379900cc9ac327b2147867b8b6efd88", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.7", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for calculating the complexity of PHP code units", - "homepage": "https://github.com/sebastianbergmann/complexity", - "support": { - "issues": "https://github.com/sebastianbergmann/complexity/issues", - "source": "https://github.com/sebastianbergmann/complexity/tree/2.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T15:52:27+00:00" - }, - { - "name": "sebastian/diff", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/diff.git", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "reference": "3461e3fccc7cfdfc2720be910d3bd73c69be590d", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3", - "symfony/process": "^4.2 || ^5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Kore Nordmann", - "email": "mail@kore-nordmann.de" - } - ], - "description": "Diff implementation", - "homepage": "https://github.com/sebastianbergmann/diff", - "keywords": [ - "diff", - "udiff", - "unidiff", - "unified diff" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/diff/issues", - "source": "https://github.com/sebastianbergmann/diff/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:10:38+00:00" - }, - { - "name": "sebastian/environment", - "version": "5.1.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/environment.git", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/388b6ced16caa751030f6a69e588299fa09200ac", - "reference": "388b6ced16caa751030f6a69e588299fa09200ac", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-posix": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.1-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides functionality to handle HHVM/PHP environments", - "homepage": "http://www.github.com/sebastianbergmann/environment", - "keywords": [ - "Xdebug", - "environment", - "hhvm" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/environment/issues", - "source": "https://github.com/sebastianbergmann/environment/tree/5.1.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T05:52:38+00:00" - }, - { - "name": "sebastian/exporter", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/exporter.git", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "reference": "65e8b7db476c5dd267e65eea9cab77584d3cfff9", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-mbstring": "*", - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Volker Dusch", - "email": "github@wallbash.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - }, - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Provides the functionality to export PHP variables for visualization", - "homepage": "https://www.github.com/sebastianbergmann/exporter", - "keywords": [ - "export", - "exporter" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/exporter/issues", - "source": "https://github.com/sebastianbergmann/exporter/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2021-11-11T14:18:36+00:00" - }, - { - "name": "sebastian/global-state", - "version": "5.0.5", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/global-state.git", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/global-state/zipball/0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "reference": "0ca8db5a5fc9c8646244e629625ac486fa286bf2", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "ext-dom": "*", - "phpunit/phpunit": "^9.3" - }, - "suggest": { - "ext-uopz": "*" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "5.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Snapshotting of global state", - "homepage": "http://www.github.com/sebastianbergmann/global-state", - "keywords": [ - "global state" - ], - "support": { - "issues": "https://github.com/sebastianbergmann/global-state/issues", - "source": "https://github.com/sebastianbergmann/global-state/tree/5.0.5" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-02-14T08:28:10+00:00" - }, - { - "name": "sebastian/lines-of-code", - "version": "1.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/lines-of-code.git", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/lines-of-code/zipball/c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "reference": "c1c2e997aa3146983ed888ad08b15470a2e22ecc", - "shasum": "" - }, - "require": { - "nikic/php-parser": "^4.6", - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library for counting the lines of code in PHP source code", - "homepage": "https://github.com/sebastianbergmann/lines-of-code", - "support": { - "issues": "https://github.com/sebastianbergmann/lines-of-code/issues", - "source": "https://github.com/sebastianbergmann/lines-of-code/tree/1.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-11-28T06:42:11+00:00" - }, - { - "name": "sebastian/object-enumerator", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-enumerator.git", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-enumerator/zipball/5c9eeac41b290a3712d88851518825ad78f45c71", - "reference": "5c9eeac41b290a3712d88851518825ad78f45c71", - "shasum": "" - }, - "require": { - "php": ">=7.3", - "sebastian/object-reflector": "^2.0", - "sebastian/recursion-context": "^4.0" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Traverses array structures and object graphs to enumerate all referenced objects", - "homepage": "https://github.com/sebastianbergmann/object-enumerator/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-enumerator/issues", - "source": "https://github.com/sebastianbergmann/object-enumerator/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:12:34+00:00" - }, - { - "name": "sebastian/object-reflector", - "version": "2.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/object-reflector.git", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/object-reflector/zipball/b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "reference": "b4f479ebdbf63ac605d183ece17d8d7fe49c15c7", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "2.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Allows reflection of object attributes, including inherited and non-public ones", - "homepage": "https://github.com/sebastianbergmann/object-reflector/", - "support": { - "issues": "https://github.com/sebastianbergmann/object-reflector/issues", - "source": "https://github.com/sebastianbergmann/object-reflector/tree/2.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:14:26+00:00" - }, - { - "name": "sebastian/recursion-context", - "version": "4.0.4", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/recursion-context.git", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/recursion-context/zipball/cd9d8cf3c5804de4341c283ed787f099f5506172", - "reference": "cd9d8cf3c5804de4341c283ed787f099f5506172", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "4.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - }, - { - "name": "Jeff Welch", - "email": "whatthejeff@gmail.com" - }, - { - "name": "Adam Harvey", - "email": "aharvey@php.net" - } - ], - "description": "Provides functionality to recursively process PHP variables", - "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "support": { - "issues": "https://github.com/sebastianbergmann/recursion-context/issues", - "source": "https://github.com/sebastianbergmann/recursion-context/tree/4.0.4" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-10-26T13:17:30+00:00" - }, - { - "name": "sebastian/resource-operations", - "version": "3.0.3", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/resource-operations.git", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/resource-operations/zipball/0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "reference": "0f4443cb3a1d92ce809899753bc0d5d5a8dd19a8", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.0" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de" - } - ], - "description": "Provides a list of PHP built-in functions that operate on resources", - "homepage": "https://www.github.com/sebastianbergmann/resource-operations", - "support": { - "issues": "https://github.com/sebastianbergmann/resource-operations/issues", - "source": "https://github.com/sebastianbergmann/resource-operations/tree/3.0.3" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:45:17+00:00" - }, - { - "name": "sebastian/type", - "version": "3.0.0", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/type.git", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/type/zipball/b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", - "reference": "b233b84bc4465aff7b57cf1c4bc75c86d00d6dad", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "require-dev": { - "phpunit/phpunit": "^9.5" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Collection of value objects that represent the types of the PHP type system", - "homepage": "https://github.com/sebastianbergmann/type", - "support": { - "issues": "https://github.com/sebastianbergmann/type/issues", - "source": "https://github.com/sebastianbergmann/type/tree/3.0.0" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2022-03-15T09:54:48+00:00" - }, - { - "name": "sebastian/version", - "version": "3.0.2", - "source": { - "type": "git", - "url": "https://github.com/sebastianbergmann/version.git", - "reference": "c6c1022351a901512170118436c764e473f6de8c" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/c6c1022351a901512170118436c764e473f6de8c", - "reference": "c6c1022351a901512170118436c764e473f6de8c", - "shasum": "" - }, - "require": { - "php": ">=7.3" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.0-dev" - } - }, - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Sebastian Bergmann", - "email": "sebastian@phpunit.de", - "role": "lead" - } - ], - "description": "Library that helps with managing the version number of Git-hosted PHP projects", - "homepage": "https://github.com/sebastianbergmann/version", - "support": { - "issues": "https://github.com/sebastianbergmann/version/issues", - "source": "https://github.com/sebastianbergmann/version/tree/3.0.2" - }, - "funding": [ - { - "url": "https://github.com/sebastianbergmann", - "type": "github" - } - ], - "time": "2020-09-28T06:39:44+00:00" - }, - { - "name": "slevomat/coding-standard", - "version": "7.1", - "source": { - "type": "git", - "url": "https://github.com/slevomat/coding-standard.git", - "reference": "b521bd358b5f7a7d69e9637fd139e036d8adeb6f" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/slevomat/coding-standard/zipball/b521bd358b5f7a7d69e9637fd139e036d8adeb6f", - "reference": "b521bd358b5f7a7d69e9637fd139e036d8adeb6f", - "shasum": "" - }, - "require": { - "dealerdirect/phpcodesniffer-composer-installer": "^0.6.2 || ^0.7", - "php": "^7.2 || ^8.0", - "phpstan/phpdoc-parser": "^1.4.1", - "squizlabs/php_codesniffer": "^3.6.2" - }, - "require-dev": { - "phing/phing": "2.17.2", - "php-parallel-lint/php-parallel-lint": "1.3.2", - "phpstan/phpstan": "1.4.10|1.5.2", - "phpstan/phpstan-deprecation-rules": "1.0.0", - "phpstan/phpstan-phpunit": "1.0.0|1.1.0", - "phpstan/phpstan-strict-rules": "1.1.0", - "phpunit/phpunit": "7.5.20|8.5.21|9.5.19" - }, - "type": "phpcodesniffer-standard", - "extra": { - "branch-alias": { - "dev-master": "7.x-dev" - } - }, - "autoload": { - "psr-4": { - "SlevomatCodingStandard\\": "SlevomatCodingStandard" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "description": "Slevomat Coding Standard for PHP_CodeSniffer complements Consistence Coding Standard by providing sniffs with additional checks.", - "support": { - "issues": "https://github.com/slevomat/coding-standard/issues", - "source": "https://github.com/slevomat/coding-standard/tree/7.1" - }, - "funding": [ - { - "url": "https://github.com/kukulich", - "type": "github" - }, - { - "url": "https://tidelift.com/funding/github/packagist/slevomat/coding-standard", - "type": "tidelift" - } - ], - "time": "2022-03-29T12:44:16+00:00" - }, - { - "name": "squizlabs/php_codesniffer", - "version": "3.6.2", - "source": { - "type": "git", - "url": "https://github.com/squizlabs/PHP_CodeSniffer.git", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/squizlabs/PHP_CodeSniffer/zipball/5e4e71592f69da17871dba6e80dd51bce74a351a", - "reference": "5e4e71592f69da17871dba6e80dd51bce74a351a", - "shasum": "" - }, - "require": { - "ext-simplexml": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": ">=5.4.0" - }, - "require-dev": { - "phpunit/phpunit": "^4.0 || ^5.0 || ^6.0 || ^7.0" - }, - "bin": [ - "bin/phpcs", - "bin/phpcbf" - ], - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "3.x-dev" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Greg Sherwood", - "role": "lead" - } - ], - "description": "PHP_CodeSniffer tokenizes PHP, JavaScript and CSS files and detects violations of a defined set of coding standards.", - "homepage": "https://github.com/squizlabs/PHP_CodeSniffer", - "keywords": [ - "phpcs", - "standards" - ], - "support": { - "issues": "https://github.com/squizlabs/PHP_CodeSniffer/issues", - "source": "https://github.com/squizlabs/PHP_CodeSniffer", - "wiki": "https://github.com/squizlabs/PHP_CodeSniffer/wiki" - }, - "time": "2021-12-12T21:44:58+00:00" - }, - { - "name": "theseer/tokenizer", - "version": "1.2.1", - "source": { - "type": "git", - "url": "https://github.com/theseer/tokenizer.git", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/theseer/tokenizer/zipball/34a41e998c2183e22995f158c581e7b5e755ab9e", - "reference": "34a41e998c2183e22995f158c581e7b5e755ab9e", - "shasum": "" - }, - "require": { - "ext-dom": "*", - "ext-tokenizer": "*", - "ext-xmlwriter": "*", - "php": "^7.2 || ^8.0" - }, - "type": "library", - "autoload": { - "classmap": [ - "src/" - ] - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "BSD-3-Clause" - ], - "authors": [ - { - "name": "Arne Blankerts", - "email": "arne@blankerts.de", - "role": "Developer" - } - ], - "description": "A small library for converting tokenized PHP source code into XML and potentially other formats", - "support": { - "issues": "https://github.com/theseer/tokenizer/issues", - "source": "https://github.com/theseer/tokenizer/tree/1.2.1" - }, - "funding": [ - { - "url": "https://github.com/theseer", - "type": "github" - } - ], - "time": "2021-07-28T10:34:58+00:00" - }, - { - "name": "webmozart/assert", - "version": "1.10.0", - "source": { - "type": "git", - "url": "https://github.com/webmozarts/assert.git", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25" - }, - "dist": { - "type": "zip", - "url": "https://api.github.com/repos/webmozarts/assert/zipball/6964c76c7804814a842473e0c8fd15bab0f18e25", - "reference": "6964c76c7804814a842473e0c8fd15bab0f18e25", - "shasum": "" - }, - "require": { - "php": "^7.2 || ^8.0", - "symfony/polyfill-ctype": "^1.8" - }, - "conflict": { - "phpstan/phpstan": "<0.12.20", - "vimeo/psalm": "<4.6.1 || 4.6.2" - }, - "require-dev": { - "phpunit/phpunit": "^8.5.13" - }, - "type": "library", - "extra": { - "branch-alias": { - "dev-master": "1.10-dev" - } - }, - "autoload": { - "psr-4": { - "Webmozart\\Assert\\": "src/" - } - }, - "notification-url": "https://packagist.org/downloads/", - "license": [ - "MIT" - ], - "authors": [ - { - "name": "Bernhard Schussek", - "email": "bschussek@gmail.com" - } - ], - "description": "Assertions to validate method input/output with nice error messages.", - "keywords": [ - "assert", - "check", - "validate" - ], - "support": { - "issues": "https://github.com/webmozarts/assert/issues", - "source": "https://github.com/webmozarts/assert/tree/1.10.0" - }, - "time": "2021-03-09T10:59:23+00:00" - } - ], - "aliases": [], - "minimum-stability": "stable", - "stability-flags": [], - "prefer-stable": false, - "prefer-lowest": false, - "platform": { - "php": "^8.0|^7.3", - "ext-json": "*" - }, - "platform-dev": [], - "plugin-api-version": "2.3.0" -} diff --git a/dep b/dep new file mode 100755 index 0000000000000000000000000000000000000000..3e3b316306564d6a2de64a87a3c2ac44eb9e79c2 GIT binary patch literal 788636 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

djqpN(_~MRC7;DvIf7wlyYDBivqHPH9_5bM|tq z_^xWS=+{(WORf6xNc7TzE8XlzlT+an1xY%7AFvHXoV51X@b&d;XbvxAJTJ60KO>|x zFZ>VXg+d3X28A)r2~#L9EagsyL19dD!W7C2cXZzMpfIL6VG8Ai${f%Q3S*iRrchpJ zoz%ly8q=IGh29|Sr-z08YgU**d7-Bt8x9I%niHl_Uf5WB<_u$+6Q)pJ*q*-^?VBz} z`}$`50hN?dOT#b}h2Qflt{}J#aqrtuVJHY9gZVfZS$ew$(;gZ5S*d39xO{`YU;R>x1a@5 zU;E^E2)Wmn<lo#DI2VF3s3DzEqxSk)MY9#n*hr-U^2_bi*0 z5}ofNHcQuO1m8u^3E?G-uF6KTeu6EwzOfzMu->wzLN@iycnn7Z{`zsjnL4U@>u0!j z*t+oyc1j62ftADQr_uw{D4ic41z`upC9!vs0lW;R1Cq~b4EP5+ad4$3w-;O$PAx27S zxH4YqNJ$G%5*|5o)taNojGxx>7sj%>q|9@OOfk1A%{&MlL#`sJ9U9h&v18$t(OoEV zDR69}~X)<(qb$f zZep>c;L7B4)RhP4eqPAO6bW{fKS7Prg|XD09YU?vlxYT5rgGK<;Y?{StrmInElQu^ zMt_tTzgWVRNIiw+8OCm?<69}t(y>r^6PSK0QMekSTsT+RZM|y&{@4}z-GgiCORF8+ zUcVZGNGzQrM_T%RL>~1-uFLVNI8sE6VXS5t_B&*MRlu^_Fft~u$NK!YC`Sl5 zIErh8bkGsUmraFis?GX3EL}x|emn@L;AEbhoJ2-r7<`BTgx-V{jS$%rvYJXk7sBx3 z)ywnS%b#C{VF&STRMoBp%7w%ooz@oN?p-)MgoD%5+8TZz6o`0;tcm6RM!p*y+0Kt&o6nT!aRthg2whKP@jfUOi@u)1`EjmoeqhQ7-gb z*Ew3~t750yd%p+o zwu)&}Se+ST5jEAbz*0$F#}J-Lr()^2&0?IF)bib2SxzZ96 zDdR3g!dfL#*~EvcKD`p~^ityZ3hJ=myP*!7+H2|rZp(FCLs=C6wUG1D-9W>p_8JLB+ zNeA@sm~z8pDAB5_iK0B}aPtUe6dB8{nWtvT60E!v7)k7_lqsVpqNqoI*Plcr&&=Igu%`E%=Bd2avvw4gsSS5N_Mgp6ZR1YE z-On(e6?{s4t0vTtuW|p&T*l$zN|I4`sphCWq5rK%_))kZ`U?SCCY4tLz5LgwEhBhk#B3;Fc8My>r-4IGT3Bd%Ndn+C(|- zr39v%)`(5*fT{|lV5n>uthhE?>V#G!Xe82*`z3G}`xf(0*+Y?aQqiTWse>K0Pzmdd zSbK*R?1ZaBC2U}|Hw?p|DmuO(#M_r$R=JjKP?4*=ZmupNs5DbT1czjm-{<9Hwk+mf zAIkY>xV?d^@#T1&!V`h;8Fb#LDS7Vk3b{~NCBrX2if@Z~xy)wEthg_W#oc2zOyTqt zPL46lEDuZF4by{m4<6-4@cv!;GWmpi#ky0K_&Z#{CPQirZA)QG8RA#f0|#&FNsM3+ zpL7CittC9|*Mp`%%w+PmXHQSz`M3*Ie!CC;;0B!W z_>ZwyAY7J7YVAQS%EW_nDlPUN{{U@K%SuBr5Z&i1M(CpTi94|m3!);56m+Lj(sW`% z)8vxOZM|s!-AVeOsI!^LJkFdm>0MQ(65{Moz#+UCn?PHKz`l}^AZQ?i@Z8LG@D1nG zOn%@gH|PGg>cFj>SoAOogkD*U(9qG%^I;S`pZ3|Ck|3UyS- zi>8I~nGjyiF|ml9qPJ0S4P&{tk*O}uyZI7@>QL5XnC_ER!SRN>h%w-Zwj6=tsRRX8dItiaM66En4ZO-KLB=SXu}x#gBHHBzt>QYDFbTnx z;Wb1ytD*h+4*hCzsVHKBi~{h_`REAa!f zu`kFd;Nr?mQ_zSB@Cb+xa}5gi^!JPRbWyNTurM$*Fwj(}=28FxZazV&iE&!cYOK;;g z5WeeI3=9{N7FwsL9_%>DVw+$WNV`U}J;i}QQdA7t%s5O9A+-nQ@?VaD{-oeU)pq$36bYwql0DBp>k@ZrDZ& z1uN}@;!+qm&;8DoZFOc`R~Mc9jW*s~-jpS9UGI(D77m!opp;xFi;h*UO~stlDuKEb z4ELU-*m=F%ub;2~yt^h-K1x?G2RmjVlhzrzX`IMlCtZOjn1R)e;Q}3HKH{?=P^=Ob zlNd5uf7Vs4l~8WIGMWo(7eUb2H_q4B&s@|L-}+W>B_BQ)@7DXPQBGE3q>1=@fL2A_ ziGyjB1qQ1xE3n+i+95QE6#izS7Wkta)U9k^4qDS1mY@)?gQ+Myry_&kg@#G4^<)8; z7h$|O=zP3DchO;|HWJO#{#LkejjJ0M#k0v;O%|Q6E7rII%lY2&p9Q>RnARvm@r*hd zZnfXRkAPfzBxs=zq#&z+N~^ZehT36)R25@voF>2^VuV?%5T7*jk0S0(`7ZOPWM-$$ zBRR;V5!`9B2h7Whp;fA>do9#A1#gU@Do_|*C5~J&W7xj+2veb+2AB9QjaC(@KQSZO zrWE#+TZ@E!C5;Kb&o>pYUsIx+Zk+eszayQj;2JCNR@6isS}R6frM+`fMUS!u;-6@N5@1eYxx=50D@CCpYt_jL4-{FnJpJ?c?B^6~O2@enO! zn{DVlt+ATv-KW*ppAhgPb_q^YHO|e*?rns^mUvZEcm-mr zVrT*0?!CJQrc%|78$K`dQnRD3IBo$~7`^kHetnNc)=&RD3TawQenBQppb|LkGvG`q z?O=lgh?ON>wgnFV#!`qVIhkRt()5q(?_a+Co~9VRDD(N;PyYD-BR4>X5E>VeYoa}Z zf^QrAOL7{S`-iu?p8g~F3$81`EfpX>Zi53%$Jcfg{;hl*I0UKnhS_-N%vl(}Nxn9r zA&-`I15hu)znxfZZ__#y{+?fPhI(m=x{c2p9fN7;P8T7>E<(Bt6*qO7Xo(%!&Pql1 z-|sngnkA{zc0__P`}n**=Q%cS-WEv_1gEb8cm@9^sfIYsIN;BMDFZSFlW@3Q<*^hi zT#N46f}fx;$%oMhKCoHJ1$>rk`dSX?sHmjeI5j*-X(SYE8+!t zd3PfoSeDM;sYRKiM7?oNS+!wbveG0N`WKnARKO=*8YKn1N%KPS=yHLpSu;(SsW4m# zmRYCS3}a)Ffhc2I!@KHN>n5OzjFVXncHxFj#u#AmI{^HOa)z0OL1CpQ@cjq6Wj9p% zzzl~$DvHv)FXI?XH-X{s+_T+Tn`JV($4pPasFHU!(MfZylvI@=n*;hVE`$`zL2*}@ zHPuWk))?(N&LlJInUvZ3?gm3(Myjz!c}VKGJ4#Z-6)fqhuw@~mvR;*5LWIufMF|IsCA>= z&cBuFidn_Zo)b84Z9fLv|7w|c`1S|CDH zOmfmri$aErh+yi>;GtWq;|f*0$I~}Yhr`hs5S%+{duk6VxAVQxF`cNI!qf~^OWDXy z0ZYzVKGi%!zp$$SW#7P+wzC(Kqz!MK7Hgct&yE-d#{ zpHpn@!_j2Y4B_R=${ei|0t>0br~NSun`Rmw3`c!s`YJ5D=qftBw+N*>umwP!7M zWCI#0mfeg*v-4DJ@?UefNt9e_=$m@*jgV*IWLdRhQdp%tn_~t+po}hyLMkdFDk=HC z5--UyYN)qNDYo(zI@Oq+RWg+ri~KfbWp3cZY1 zn{E4LeQQmW&h)AW#_>f|Duq=*{XPR;{CJSlw%E>TW8C;MTgSV9@^$Jq)kp|T?USa@ zLJtI92K&$#YP^RC6NkeWf9V$vbciJ8aAt3_tAYb#{XY!vRjO!4m%vhf|vz$R(Z$vb1xFsS_s?R1{yLMr9=A3zZ7NE??kwUamS=?G z=NLM99`qhMyy*UvY_Hh<#R+`KplQ9_4jJBk@%GcCb+V5SeX6|dcxVE=EQ)j}L>=r+LQhYbnG7n1~g<8rI#$;q&*MT zwQ(&5Y4jdgMaZ#RNq4#K^T~K}I-8_c8D(fNz#V$1qz_J(F;E3}GBkX{47`a>5D%&{ z;)9~l*pg=wkBqLyrnN?s4p-;S2=e~wTw3ynNs^2?|2)xwT%GD#)GPo`Brlw_!8o7s z+mr_N1Hs6sSvt!tuZ<z8j{F{PB1X{ECZ7Zjq?2|u87*d@rz zyf(1O4Gxya)=`VJHJDTQ@YH0m^R{pPf8*0y^OD#I72WeX%PwJ%4jd^=`{hj&wtNpF znS(F+vzI>s4a5s|=(^m?FR(6#j$EFax=20${$m@JX=<{O1Xk<@444pQS2pYiE_$-X zUl{mlF@w?=1D{eB6$GAYHJn$;C32QqDWjLSDQind)t0MCo?w;Qg zYlxy@4JT*QExN$*(pI>vT5$YhD|NL|!Blyyt4k*X4OR*7t-wEm8kMK*Zt2;8h|ck= zWxQ+(mYfx0XRa=QHCxetJw$YL#-(Y;3DCyLy`WqHSf>9U(@SGwurX{N)8H*7v&^Dp ze};dL8z(*d7Avivk)<5$92UQd->p||PuoZk{+?ekC!r=rDWTHceF#vXxuBve5E0Nx z2T`mMtVIUF-0{u>z zwxA-gF~V>$iy+#zPi-{JwBu!%qk17%Tifg1KB|8itK15fxHTCb%(qoS<2T@rY$MrqEof850uDF|(Qk z_eqgPel(@mq#VX0AuVdj67LjGm@y^u_&}Km4IED>CX8GE+W6i8`cf_KnMK&Lc5y~w z*;{{2YhPn_kC({8VV0&!TXNZxvkB#lQYpE2b3EoslEsYM*5O2{fKW>VI zNf6Uk&;_P7TT~pfu~u`CRMNL!Sa^n%`mo26r2oJ%bqZR|9+Og8FsKDf#D56Qo$mmrY(tYbgHm0%PovGW zgqyWT_uVvImpdWd9JQa3OSaxX9IXoZv9adjdUsSkdjX}JpAMz>lf*Y7u4kRUgY{K! zmW}-30~BMn+ZASD7exXwYz1#{mDJUveG8!;bgk7FN?=8DQGree3>AE4UuQzCpO{9! zq=`-_R~y@B>DVtYMdchG%kUrK#a2G@CyC;BLQa<}z|RKPdn_@y0Z~yKne@WTLEt!DUDltC6?wpe@Sv9kY>HU*&UTtQ6>_!O}D@A5f~&&-MP9o zYDV*v`~gmzeM&b7ZSlO1&66-`98(gN9_QO%w{E;~N^}0ucf{tX^JI;S7nuDk73fZ=e}L06||{fq0X@!+!GI~|^0oKqG*_5Xw} z?ACOXq2Y=Zz$Iu!I0zvFvoIECz-gOMWDHD@?m>T|=q#mXZPQHERB*s1RO%pT^XFl- zdI4-oCr?$aqGM0bg&}X41P=lf=b6?{TP{oxNu^KRn)v$QH$xB3ZMrW6>vVwTd}J?N+8%4Z}zHGzx<1Md0hM zkSpPE%IgYkIbv3v!HcEl*JF;)%>h(V9++C?QGRUY4A0|K*e>O06NDNt&ujiY%b{|b zxpm}LLj5+XKj+>Lg6{kacl5nz+^?>nW??)w9vlAy#aMf9+DH)ppHH#X(E=$2TB+3u znqJbBsL`cK6jHTPh^)n4@G554+FgfmZNB@>tZgvHc3vl)r6}N?*?Ilu#mB!wKdjZd zJ2kRHE_|-Zln0E!|Bxy} zcYJg(JQ)q~DyyaOsUZuhiO023d=eSvkp(wCoPY&dM#^O%$g>)EYc)aVOoI_Ci^d0X z9!kN48J{WXGOfpFJY;%Mt3|qsYIy6i5VahiN5b$qTfG?E!1D zpM%kJptmj{aFr&8!5xaKrL|fUFxUs5!N)WZdzvxg8x!h&w>ybux&u+|2xhwP-~QR_ zRg-*p|KWWvy@*D}hbW!PIpujm~qfEj>lEAm7|2bGee~$5;r1oE#yLA zAhi^YO;QclFr;+i5~7+br~-7BA#0QRT+doI63tiZn*l+aa*%95?sBSNTmk5C-Wv?a z>(_Ojhh9R(sOtk|>}#lK_7nQ2jzzkN$y#dbK6nJuP?%}6@lub+dg=g*T<2x)-OtWT z-Dsz-gAcr&T$o9d?1L%uqVB_$QyDVRv;sPf4we?UsIh3Y%5+KDk;7rP(1P?PdnG46 zP#O#u5hL#grF3_tCyHqUe$0ilReqK6m0S=3%{1S$nvMNj+JSCS;1MAWnLuiTYoN74 zf-V#{%%*!7<2XtCK529^U@2Cj*cKatDSE6~_uFKAe0uP=GyF+@Cm&BfS32@OCzcE4 z8nPiRn3-O3X|Z@!DK*izj5jso`$bv=yhwHQ zLb^^8ZdXsRI=-xtcw?+p{ z{V;s?``dF%LVs5_=jed3u-WPpsuW%3rkQo=8GokUHwHtdcR+(6Q-Kbsz-ptJ;xyp@ zFeoUFb8x&r8ad8=vKRE4MIijiQV}Lkkn6F;MJ3Z)jN8py?9`9X4*3P+vk!8OC*34u zJKaK2(EYzK?J6EZBz2jW<7W1t0kAG$2Lt69ov$*waq|5bd!F0KcT2@gq(s3$blE_- zHf$NV+8%#0QXX-5RftTSA6Y{&+mj-VBdQ%43Z_AvC%8!l)@J$G*Q&bQcEM!NN-lJ% zz_#Z_cB@n>3UT2~=H9B^YAt01EtG*jVTxm}NqKQ+g>?(tDlAuX6v_p&i*bl66&`@M zh{tYVPsTo+>A>Wy9HMwUw?i~b7T3)kE>$O= zwf1mP)Nc3UL~=9>7?y0DeHZWt9lFgQL;W=?OUQ?eIgc4c-w3 zW@om^Ogk$Q9>ul)u~KT=pVo`PmSDRi;D%zCg!REzW%H<^xFW<3!MzDvIdrvTJdfGh z$O+*EQD6P_s9BQ9edXl$fc=TKd{(y@tHGceD=C3sw5d4 zCvXgtLORH$5ElA$!Z2bB_x&K6QEL)`oE<>=$> z$fpV@v0w;G<{*;}txRha87w6hWT6V2sVx_DQ5Fynl0>soI4WXO(e%=kmC-`u^x7IO zoI6dD+C5>Pj_$aqJih5zFPM_q8#}K{^4J(oJ)fcAHs%vbX=njg%+asW$fTw^koe%y6O2}?z!`aJgLKX`0vbp?edMfBGGZd89I~1MEqtJc zN)2zBGe3X8SsAwdg0^}%FPT)aRfD7fu#G-mtQ+bU14gK1u*w91n)ukR#q

)3 zw_#z;(!pbTA_Kv5;y0ey`ryAyah=jAMagW4j;O{yy0gnhuPtP|0e;CGI@(X_i}Um7 zvSp4gQ|V?_G_%%e-S++bY6)mOPIt`f2a`4^|659*kqTz^85vuKy3b7A3ZW4`7bL1y zlYa#L>S8W%jKVTB5!lJecrv<~-M$-N&qg;l-M_zm8Z-VgX%FO{Shf(>u~dmC(rbFM zH!$`JyjRiAHVi|Ee{3E)jvf+?dFSZhr8{WfL+*{P9dy@&Etp`^FM^Yi9zn7Tn&2o{ z*FWmTIp}WT+QRezU+ZL@`~sC!?@!w>5dEIN;#7f15EN}63uR0!Af}EX=srxUgp6~k zJrX;zot0|hf8RO3XxhStKQxv7{O;Ym^PPMuL=gl>`vL63R7eY{%n;~XFyla{-~__m zGEcQy(jI?ga~u-b<3k?71$&UF;6^)CT%v)KwAwkd^_?Nt`Duf{(59kG%Pa$~i=~ls z;ee?GGRaX{3anCXa^|E~2T)|lXz#bgMRjj-bsk^e#h$8C=>&7IU=|W-oskcv!vq%6 z2|A$+tS${l3Y1iekAgt494#f$Wi&h2d7%|5H@h*KqqVd6iDTj89|u8c-$FLuV{c!T zUw5@uMiQJbdZAz;$RY+seF2;#8K6to8hOS_C&-+yS}>*P?As9TxX7h*aANB}zqB}; z=S*g;qelVH7_l`nrbL>2FWrj>e4?5p7H&)BBX$SDp8#kTv&Da3S@=E!#0Ig;+UcOjz+7ZEG45{8g?MR_NLU0 zZPdZ89gx=?F`@SJecG`5*RxA)h{TrI;od=yqm_DiI!8y%mD4krNQGgvhN}}GP~60r z*7RZ2;i9Nc_<6g@bhq&~TzAl*D~(z+@=Y>nFHxakSzpEmrNt~Ajrx5x9&f3~KcZbF z8UBB$x|}Rnk_kz+Dy9Fuvs>MRr@+hmnD-X%v5QJo zGX*pF>?ngJhahj%sQ_Cj9m4VIEr+XM=1aFY7xKV=GS9HlC&B;+E*K19f`uKCW&YR9 z4g0qnf5U0Cv%Pa*I9?OAT>%{$aAYuK2@aN%*M&H|Ky;`D`zAb(y4`lQ-XGV4)p%v; zbb+(Z&`>UkPJO`!&Qv=2kp`LjWKe>d@#0FUpgm?OF*T}J>>~#Zr9LD!m~*|p7>q;y z>oCiB_l{dK6At!P+ueVHn`M;m*k8IKU`@Bs_qo~{L#@T4r4OmGd?skhvkCMII4ylL_GO8azaT@=7n zwbvrcEl`<2AsCkiiDjyENv%-w0;+;jv~2|6`nbo3#q#@V=~DSBZB8w0sewcotHrvu zJb|sSIeM@IqiW4K5+%OkD?%hKxxps-j^c$XDgj8~3-Mo4W=A=~fF z$>;m)LjjwBlwyquR1J!oPPJQF+Z_F0RZgYk2EIkGVtFa7g=^DXeyjX8D=|SQ-xXm6 zH3nMFd!PHj$9E`yV&G>jttff#Ab$wpskGQo%i*l*OZMh^jk@DFB=cEbUYL@oWX){Q z67?aWk7&}lBT@)D-{p-ktD3nhjy4FxBb+-n*J=wAr}!W@v=GS`oz*2u+1D9Nmb;2G zH$OTM?gDVGe*Br(;HI@^KX=oUMw4*XbH0)Odd9Uzt><7+18LJ>@|?SsC`-3>qp=ya zbkQUl#WI%5ov^ULm6^iW1Y;9A<1eLOh0JizG#07!-Z@7X@0vV_k#W0d2p)yxL3je^ z*c{n^fu3>7CxLC5cU_f1*ki*Pc{jRG$FuuU+p4yA!q7D;@o|2wh|xhsFI5vZjpclB zVmUTmOCNR;HW2YcOHJ^w>yHvSrVjfK`tP;CpBt{<_Sm8dKA@;YLLgDK6)HXEVw`on zZTyhEDWIzV-c5j9IN6$=o!OcBb8<Fb_ zsh~X;2{9(BmeHpeFmSca(O@an>S!?a{*Qev!`&ZUVDdOlz+Qq}c3@PwHnY$jJ0ZP9 zr$fL3Z&TPA=ZP8S<^1`IZqay6?X{wrGOZT18#_Eoxpjf+W(TM4Ot z)t~wYg;L#X+b|G+*I#jzj@qS7-jg&7loSSIlqHXWqR3}U%$9^c>W0z(eP{WjC0jea z2%qkLU+2|VD=lO5YX;Y_m&!w_Y6QA1cL7WZK_cuY0=++MUj*8Yf5}+%pLGuRvWqYIn?`$OBq2y=S`DqFh&b4O03=C1B9*+V zG_SE31Ksc#B!#r2fYdYButSYP@)}lTrmta?o2uce9+RE3QV|M>niKXQYBwOiNx~P} zP~qWc)Il{kJ+R*l=vYVK0pZe4u2MN3X*IMlEfUJplQ5dXjv{0O)ijc)i5{*ym)#a_ z*Q4vZbL@oA9YwlWyvOyVMTauG+SATI%&cE@{{K@!=`C`oQ%#Onloj!B*Kh%+bL4S7m6!5)-zvPcJuj~(XP|IopK@hypSM)KF zpdS!P45Aw}PgPwz(e=4qg&9$htmPi<0aHc>Ev@0JQ!atQJ! zof)D9ZV~oZZ)3O$W{$eSsgQgAlX-@@`yiFOVE+!A^wdLHD^?uD1JCZ#7)Wt!6mu0yP!Rbm$ms zI1{(>BMnOIvOx)|hl^)Q1?{m&iLp_&j6TJHfva7P21}_{7lWzKf9+=(?%srxc2s}l zrt?A_8DMXPZdw@K?h7q+$E}dQqSq8)iyddt&B>>XX3+@h?hDP7aav3srr||4t_xHT z8Di_OhYF0~CNO3zoz;)}RewcLO>e?5487-9__(17e!$R%G=ao4CL}oa5>khFByp9v zD`?t(Us|9$C9>c1`Q80nMqYRcjLU|jV1lWQ&gxw`rj+ZhsCw;_e0r&U^ z^9U<_AdIkO!Dt8*%S8{M;@3Q-e!!TAI}IakZG!KT-L?rRx*Z*)49Wa}uHY|pm0AU6(-SMJR$bStia-r4CG zF~epGJL3Y0z&u|+U+fmgpvm7WnkgC;Mi>90crF#!8LGWY-06cy^`m~(AMHJBciXm- z-}5UFts7B|Y}t8qTc>%|c6xo9#$MZLw`-?5v;^6_mPlQavZFTr?>jSi5Fi1Pex!HX zvpOe{OyW5+m=^|vZ(q*O=lAXnzP!i2WJl*w#wO8}Gx(l|Y0i=f%g;GGT+Sv*yo6_? zi|~xEL18Q(jC$-%cpCAT?I$^pM-fliw-b8uDid|qM#=1jEdM4+skzBwI%T6|zD%RD z^PGk8m`$S*k2B~vo+Rlk%%ddkv-y;V@a!_;S5)uq?$*w`!yRmjMwy?7IlBroHjc79 zjZPOiAG50{KZiFkgDhF3BMu#nX~ctj_u_EIGnj;)(aBaanqZ`zdPu_$8h4IbnA4X?!c&iqU zq8T6WEp9URgGHP}?bbE-qdAxV@5VV#CxFIwb>7F(NBY&S_|H*1POdUp1C|ESt}KHq zBSi9w*;N|O=Rojbnk;~V=TKk>gt>@EIGv2;2?O$trc11z<+z-nWj^QdU!1f3f9z8o zXq0DaMZF3a`8lkTwyR24I7nt8jOiU;Pkpj9)PhA?kE|GN73e!s`yGhdv-dWMA;XF1zBIAG6N zm#1m>S@rGS`y+gtEOK~TeSLWJ`sn@P@L=cl_Agj2<>7egYDX4?uY;qVZ7fO<=i{2f zM>_{U?!J31%fnn|Q5=dYt~%Sh@1Weev%PIGj}7-r0fI-e*};I}vVkcBQ28jzfLeeu zSjM5k7)hbr#L@1LJJ7*!|6pfp_i%TQ#)I7q{kpkbELd(=G@M44KyYjYL469c^_l(n zJj}M_8|Y~gPBUIA0V{h3;&U3sl{Z)8(i0wEmYzg0K)>{imJKrI(sN(}`5vL`sQNM& z^jvO!Jmp8uH~eFiqgXCIp2*1_=3&0bV9LiIN+l%2+%2?(QUO6x+ff#tf?)GNEz8H% zF~LLNQSSb#FcRa-_;j+lX)>t_ghwfH%Wx`yw>Oz&JU94=qvTGSCTTY z?}7A9!#JA~iLe}rVNDiNWnsCdtH6n1>5Q3x2AeHlg(JV=MMJ=2Q1|@m$?C?&V+O6B z>81uIdr+gps#{bO;4KQmXB`3B-TR^2*N-;n(f2$Co-h?7Fy20*w?9T14hPh5LJK=x zL{s1&85AtqdGr;P1$8vJfVoJX0Q@_SlN_ePN1zy+9Y6X{s<0&sVyOx0FjkqbRimim z3V?)C(=~es#+MPYGNbM{R2OLEY%w<*eY`Fk1|>h+Z)!uJm7M8oP*r zU7|n)D`v)#pprSsj3l-j6Da&40-^}C>H^vs=;IOmnl5`*ae+;X<~OVY0%eE%jCc^u z<}yme0x}CeS+BPA$SNT4_%qCaBb4T_%7sxDCk&>?P=|y0TXh6l#j1xj7G==t>5_%h zFr8TiC1&M>ag;&I|Fr;?fqiK}n3D$z-FWhZtrDHfAsa0U3~wPrQTlk%&KOnU1l0U7 z3qZ>T6#!7T;NveX=sx*Mt|#%9MH5xaDkV^M2yf(~L@LNRSRpCkd%Cm=e{D{5O6|#o zW)%}?`woQWSz(3{G3VH_=prGQvq_rF7z&P{6U7~C22a=9wR5GgDw+W)T53li|9yIf zCeAp_Ll$0w34#n5kPjyL=z?3z{;5Fy*8Y2jS_GR$vq-E8KDOcaRNx+^4?yC#+M-X~ z^n^Vi7SZ&C30+2MzJLPw7?z*;XA14kBhW{!RrmC%Vi=QXN+2&oDn1(Z8Cuz83`lHlFc683QxIijd#Kd|d zQpp9c&j8FB`c=XV)E#UN2mqd^5zk7!2&3^+jNTpU_z4(oQ%V7b|U=<3N6fl($vNjya2}mih!AM{2>!D5XM*=V@}4G20i#em>{1@M(YmiqSMgVnl%p1gFT+)_|1jgAIpd zE1_f#1nDV?Q=SDu9M5TJeMz2#IrT`wQT_RnW?W46Is0n8M}7aU7Y1~R7`=|NY1aW@)+T; ziY}=f{(-9So3!#lPfS=inE(^8n|zgV&NkV3p3k$*!QgapmaWat=W8*~2TwP?USDrr zc>U?4Cl*l<{Xc*H+yvl*2P`;|tTpKV&(6E;;n6?Pf*T&bezVi&}m zji;Oh67aH6T0hd`TDIi2jEaKFfKw`okIbDagFvB0xp&Bd!D$o^vU8+kbPhw!3t+yZ z*?0{UGh-pG^;93UH3I7xIprcl4#wBc)=0S}9*fL2!ZnVjoKWsyy|dj|xP)e45cZX! zL_^F_tcW$I`miR+lw}5GXxtJ!S$X!*MUsx8LXPqRtqwL`#^DSYGMH`)vS8tr30+_i zS7=UyusfSBfwkdF4*iLl&8J{DohMUhRQDzTaE0bZ2J(t=kYIDtp{S1%D@1#UIAIK+ z0ZFvLl^-v!!sTXZ^h|pLfP5rfY;K~adWg{2Dp+FBoh^q-S?R3&zWL)X!=GLs{L#@& z)og9`1<+0)gvW7L6eXty&@2B5$NWK8bE+}LYIG?}ibm06qBy4}GyG%k@c)&gzk_m= z@_doT(z)~5G$-jh(h8K5{)rh8G-v=u>BXYF{BCYwOAqjIcSJIH2*V*2J(=?E2ln!%5ZoR; z#PrqzKBq~>Eyad$sOwQ-@?;*YSF|AST%d6v^a?eK#(+WaT#AV8Fb{*Ck5&#AvEWd0 z=w*>foLp_J0L$gkB^MR)<(#~&VjF=4xIlnO@HFkAK-Q8v0giaOL~TYmRiLV@0^9{) zJYB^#0rEdrN&~Q%a}=Bt&d1oVYD(8P_lDK-8!u>u7Yc=AB68yjrIOrhD)ek^k%W_+ zrzS`kMS8>$2rWG;v=FceD6eAoA)ra)-^P{%Je&~~SHLQHFhUkPl`L2T`ZWm({ipOd zfUObpOEI{V0#6XQg+Q6azh6l{vIA*j#kh^(A=I( z#W3#XsJKo;AZi1&*K3AUP1@>45XEXA(rCvQeqpzRU5yb)p6ZqO54*bZdjcSB zsId)Fu=s$2I>IoXu)sZr7p2K%G{)BBvBKjyXalDljZ(RPS4PGpDmr#Ef7JRE0UEUD z6pzOrdYecGZgxXvZ=jnHLa*l#T%!0@80EL&ND-ku!sQ>0!l_&yu-L=~frxbq<6^%6 zixcQ$W$l-AFr;j0k%zQf{~J$}VrQ$edd>NGR)IV2sMJ4TZ;Z>J*pf`G-yGHs+nAR=yfM= zvsRmdIw&B;Nk@V`i$D&rR)L_VD1~GQ3pwSH%@zh|!7y<7N19!zQHbCLvtWw!EO$mv z^`?PKJmtn#O=8mta7*NsAub&ixF?p;oeAu+q*e`j1h$;132*dJjKg$X0N$~TYvlax z1pHq^r22&0EoI|1Wnx7D-Cppx8Iq6;*I-9}#XQOm#AJdR&Qk_Vpm(gRKxuF>`*did zhz5@kc`CRi!i?Ufyhs{h-rfpMasWdvQ;l?!4x3+KTx zwFJW>2O?Lo(_L~cn5`QlQ==mQ-S_$9OT)p>U_hJ|mkBl;l4}ipJ;3jUxB(%Eu?Xm4 z7JJ1uf3LJynq-%n@2*wj@CrQZUrsyO3FefO3wGb|!&(T@x~PMiG@!g27p;acPjRo8 zOFy`DL%l^eRQ*6`lC%@&-dA|=fN9ouDC4+xXt!uwWr2V{WIct>ikOrvI}ysqBw3_@ zM+!0#K~D=jQh=cfNqV7Tv-OUY3LUc{U@(&7#~&z84jTl*?Ot_1lqeAfb;!Bids@WN z$2H)YqYKc?X{!yxtp^m6fy0Xq*dh_!!A}0C#HwQeg}M71O_agef!`s zd;IN#RrdJBV9YNE#3vsB_~GIDv+gs0i)+y2JQ_b=x&Msu(RspF;4k*#!Q*G7d(ofI z2-we8UaBGldn!Yypuf9Sxcm$tmk^)GqaLS=vpy*#Z2#y`i_mZy-zbIDx^aA%G!t`u}R0ZFc`2G6e`z`tX6S6>(rY=sV z$9at8xpJ}AeGWu%>E$&xKe!KU9XEc9Ez0X?8`&Im)O;c~#kKZ?PUp@SS%-}iEk_(g^&R{BYT=4Kk?ky4T@YgiO+U!^Td+apb46=4%LiNh8TKM<)wXH9&Gw4sZ z!3u^)bZ2^o%=g#uJvMBb{T!kTP|0HLGHcp~N;vR)UFEVU^f zjlE=5ZeDmjY{Y?GyN9Y~xi3X);g|{rs`Eap^*msx;C)rrvV{eY3ygRArFzvUf?5D+ zA>ti2*4Nh?HMZ&jy5nvpnFc6_g?a8Oh*ARzLpfs?#XPXpxO-CJPi^;4R$tg>27R(l z>~`d~6cf7`Xk7ijxRdQ(Z$sKEc5W#mnx&ue;pavG7X~GhdEP?QyhnO)$Q#fKPm^SN zD{)h*)humpC`amK$o~oXK|t>KtlaB}jiQ#&sI8D<{7Ak@j*|c5;zY86=k8iKzt{1Y zj>+9r(pdc!E-Pg>X3#ToF?3wvuCGf!L9%=-**TPT6|vBvkrgO!g-Cs%8UVuZ93q5RFxJA;Wnr{TyyTMj@}9DwjbE<(f){7;X?6mSZe6>JW)jnuDu*DYcM7 z>vSr?4-_u_?Ud+WG}KD`8$~UjiIj$T!UYVPKr?9yJ()y2?a}#>a6Sia>N+`X7&^jC zIx?LqW2~&{ncgSp{kV!U<@j*3>ocCifGW{{wiaNn$Cq`wig0#q(g3`{7aW6tL$<$n zxclGk9UzaHh&JAete{Opvy~t-_6U^cdOnJC%*H~;9`dZ>{%8?_p{?wn; zd1T^*Q?A27vOR0;4MNtQXyZ(bqd;nN-VXE&gqBzd>nnCE zQpY}lo3S}S=8N9)HBlon+juaI@OYp3C_PATbj-ZZQCVyslLnnqt{-tAY6$({A&ndl z;Ro6V#LPu~wz|=0>y>pO!P)IPsaW9{zT2QwdogrgqUq9c_HdNUKqZPYw6{g(MdJX0 zGA+g7z;JpME;FqljPqthE$TMWH41Q-f&&Ey+WP@qZ2;D7m9rUU0;Yq@z)CocKt4wt)N1HVw?O&izNDOSEp`4slTgbG z>O`cg0{B%^MH-a-AIB#Gwd2g z4b>n8Upa%;jM8NXpZYihI~`43mrXkRs!kt21b)Nuh8{ni;n1#M(^`Sa9o*$`MWGR4 z)?*UN_%K;XY}kNKXzFvI(>ly}XE=3bZ7d@e7toCnOZi4$5E5>H*!u+|!81qpL z&>dvfEybFadT!&BZ^_j4_**zRw-C+tsVX5U+Ze%a<;-FPCAl;KV=f+rIWIFb(;*8a z!7u6xG_r~Ho0^)2fo6FN9A=tRnfa?~)7C=&ci3v07k*}2jTaNWsljHzs=;bgZISV2 z5mb%sX3?E(!KwECu7=#*Qej(b?wVrQ&xG2`wLjmk`&@j!4rMN8Pr$BY_LTzd;Cvg7 zUmThdHH&;$4Gv*zTd$lRLGI|u6W{yx+9=YdHgaZ}B-yth>SHOc7Z{|Cf0ZyN<(L9n zr@2+(vDXHedDyy04~P{oshH88grAD|iGHJwRWsa*2ZY%;4Iqjs~hIJtqtG3&VDKh zIXv~CmoOR-(Nrbus6c#;;dB&f6?^G`)HLFkeC*q0Z6L>(qp}z(15%c+T zS&vL|{~0+C<-NZh(@}uACC|BY!~v_ovE4bVXot7jb>!AV@VumOBTb95Za3FNba;nD zU2`3UHMcf|*6PvKN+FXiPoQ1{esb>Dg`dHD$cLbB#lXwc(y`i+RIWOl<84AdRMfgh z&8yyB1OT?-du{S4DE}7YHc0$7)}b{&^QyO&ll-2S@^Xpdt`j8EhLWzYWU@*3Z7ll= z(ft;Hu{>Ng41?x;2Uc_aq`=q%!5j*-Hr9W z6+7%Z^(ZR*h-sFp>6X|-X5YAmpLUURg8@5>E`bFBcyLXyS-4bg2X&i|i1USUcPJ}^ zCfyF61d+Q5GK5)V|1MIMo3B7M5n!! zn)=U0mbyb$U& zI8yZca+7`I#+El3Ni!6U9pIWo7Ea(}4&{bwjxFahXT)<>eI0dPcZx%AE0>cZ-_%+8 zdQ2x0RDSuqNboD%{S`hO;azG?9uY6a-DOYzP-ckuOv!QvEYa@}K z+3~9F7$*`d`R7{bvyS@^f?4=+4aE_@^Tq)b7c4YEN{4*Z;?>e+S`6GigHawmk)qgP zHYoHCCbL@{DQP;SR=)Vwb@a@G4I2fHHKh#?eP@MvIJ%D~QiMJrbTc4)oZL-LfB5dV zSB9T)3?|0wzd^CASBVRPC|yF~VVs5DEFaK#KoxadXXHdhYv@}fRZB{j!{)$Td?hHALp z@s_F_eR4h|3R@#zQf#Ae21Oann%HOwuEpF-p9N9Y`aNhvNaNWMT73GI4u1 zj_#UNV|(6AIN6yrZ{&9aJU0kxb+x#MqwZgWcD>}bugMMn_echD-5iy;VTcTl^|l_? z{YHq*{Seb?P388l7O@>oy2{U@&280WLrjEJBCjee7yU)@DnoJko9SW~M~s)!=_%xC zNUm!&6%2{d`9aa2QEnXT;KC8<4e_qHFddx>q6S*%)77|oCr>)Yi)+%bZL3K+JU!-@ zn~jkh#pD~c1vP-y7;8oF6eoc)y!_2KjpjSI&ct1n^@~9#K(7ID zyKxzp+sSiCpH2?x8_T~C$sdnY=&7s8+aL^QS|pkDph%>jT%kGN3`IHsE3OG>RLN^U zDKMy`RP9Wf*cIVeGG?$$Bi@{Yq}Tx&n=07HDW@wFx!&xmo>MO+#`54^PPe%4583r6 z4Gr_+K$*%>q}e(WE@~Xn?e%ZZ9&oGefzqX|4)%PVbMO^~IG)#N!qu@hX~OabK}nMD z^JtoFZYot+Ok_Cxap&kCd)stYL)}DsEy~~LDJpby7cA;IF!20}g2oKPgmx(+;fa$8 zNyt(w?bNw4_$qWQlZCkI+_<`?I0T`C;;9uG-`VR^t?WEmOtnn~BzShFyze>=^lUK= zfufPXd7R=1m92)0)ZJ?#+MCjCZ%+?zA{x)o}9S zW=AF{UO~BoUEW|bg`N@K(4H$&73r&%Aw%UW5-k?eE>cYssgJL1)5a=vD3Z{Z?+q@A zK#>N&>aTPrlv3q&Ot;9ywHb% zWWMv_o=Lp>y@+7`7*QBRf@T%4S7pN^2mdmTJ~oNUJuxe#b*XIrw-lOHBOlZm3bI#F zyp!ZHGAKdLq3|ThPK+}lbb|skT@*d;s#A|cO3IIyMMz}H5e-p(&5h^Q-LB@=Qjs4} zHc!`D@TIue0$r2N+{fk}7JS*SjIu86aZ=3LhQhN-4ezSe*H1{-r6Nqae4AI%ZW&>DVu#4@}4IKo}W=5*K5m)D&&Uv6m zC(3Mxmz7_qbPmM1(N?}qy6lvlL$K&v)TZyT?y+s#wr$(CZQC~Pv2EM7Z5w^Q>K^sv z@6IrTwJS+wSF&oo&-3h1!jqh=a@k+)w01~e8>t+W{DqN7oxnKKd0Hr`I$>424~Xga zeP{0qC2;vC2E1=K87-t_%6F)G0x8 z>}8evRREBbq9Gv)Nd+?8?rO7eo6#z)L?v@k(8jqx7G%D#RroFs5(VB3c!sXj*oc`w z3gb{rSb9J0N?!2W;4lRCE^(?=;9;7)q|iZgeQoL_+ob=)^=14*!?h^<7;xM3ytWlp zjsHijfG;uX+FDv7~$Im2EVgiuzYf!M#bvH{iH_r6aQ8rh%Lc`nBwmW|vez6kj&| znnh=kQme9PI=d+GX6d`)dUU5Ob=!z+ZGn%40-vNFioVe_`>R6#F5gQ`Z+L%Zo5yQ^qhwofeWR_hRwI^ z-MSkr*B^)kq(Ld5f~9+9^AKo7BQ;xBzk*Hgr*~+9=72$I#v)9rJ{YL3?dT+DItSLD zS>2HeWA}%Ej{)heB%L|6uanof&yM5)FKuIMeKfEAt>99NTIG8ez7_r@kE#ivB?~;9 zX>E$5(9>{?k+{nas?*;&8Tj3T3(h-ji*^-nX_?S_k%s*yD_*uW?-!F9JK_{|x29Yw zS@J?r@NxY=(uyImdC6RdfOLf5(hwORFh;x8|AYL(l!7hEO(P}T)L6IH2#^WThEW`TyscK#8Bm^ zyhgdu;xVA&Cp9Wj%jAOvF8h(;aBTaKf2LWjb#xuwCG*6siP4zU$$;>W#;BA-BBSlO zBwld{EA{0hLP2|0@pIL>WVR$}r0PO=1AkmM>jIeZ|KRJbo}N_48Z)m-=?1Hrt^>Em ze=Ci^U80Dg>^l~M-2K%Ss5KevT2O(Kmh3L_ewwPL*!WsE-fKj?vebz{F*a0*nIGq7 zU*f!hBCWn`zDr0&LG9dpmO)KLx4Y2P;%Zvo+BLx8aaf?j$m2tiU?}bN@6OAfB*2N- zrB0xTwjkIXcjaA1%vwBPc`AFb$jTI!Lhgdi_sXV>5|2i$a$|lS{~BBhVy8*&=9_GA z0J?^Xi6m?zPO%`Zm%HLvn0^m6+%a#F8Tsf8?h2<5GXst4BspT-tPkYD*x(lKgf#feYr6|i0) zRw_)-hwI42?B2I##|E0rrX6(}!)ta%B_%t+_!k*a8lv!C?j_8CC;e6)9+4Kq7Ysq; zbhULsr~;~#K+zXzc%Q7xEK<_@PhQ2DSboLmBjw`D*dB_2Jv-?GfuLVuFWEl>Hv1P;b z`-DdVN_+Ud%ZfE}I^f~S@{7${1X0=ga@UwdHj)HeO0L|sIV;UjVs~&5tJ10HPb?B7)<<9 zT@7BjP2$iRfa{P9SJP3pK&P&%+Fl?{4J6{- zVDk#~LKR{8jEvrKuw7OA@QH>xfzfqy;@B`$R-m+CQvV zh_OFF4|H8FwbR4*N?e|NqEswXiEkmpZFu-~VTHc_PNyzUQ?c#6#%VUhexC_AfwA;< z?Uh^tBaLjY=xK`&=4|_dSD1BnYuHW!shRvBA0s_3-K{?tp|rRv+kEz<@%@f2KUbL_ zmxu!-vOe6ypdPfiE^0ICeLKQ8`CpY_)&k~a;~v?4BQ`r8mR8s^havO;9k6t&xAHyk zLEeBZw&E1JGnZ}yzWSl{`X(b6xLT28OSM+2(Whw?tgiADJI$ZeWJAo%Q5yQIWp@e?F3R6z(B+4xMA!G#s};w)pJ; zb7}n@>e7>=lcN(8WdOupir{X-=<*huLSdP&I2^w5%5V(<7_}BgrX~)9fVyROrB`-E z!)G=w{-#Ix=y7_5Z#dmq-Yy((bF!@F|Fo>>K`9L}XC{ER7X9T1N%NUGZMK8*G)UR@ z^O^|2X^TWOFYVH!JUtrJ?i#NKi7~%oe{La}sBzZC<1fQtdByewoeh|Q*~~YjS6>5G zcxSOuI(KsSCYegCt-n*1u13q)@a(4kcWhEby?h8`Z(B`{UIN)Ic*{YRy@6#kyB^6w zP|D(^WH6=}gTy~giWLr6G1&g?L|lLuj{D7j^%FrE18T27ojILZ@FXd4hx9I2K4L=P~?A+)X!+su>8Rc=%OC2Nm1>)9po2KfSviE2E8%_>b`#A#L4mxnG_(8_)|X01X}0yy=e(l zd8m*cY2ld?s$Eq#_C;K6y5GwQrr`e72=0-O^3v;Lzwck-$KBEdMh+gEr^VYjL**Bn9#j*+ZxrMlYxQI^ON^;);ymVnQuJm zVWl>BM?H=TF=0;2a?fqm@YQD`an)pqblshtpwaj33y_N<5ww;L~5YyO& zUetsse#)g7=9?a&{>qMY#usgpROt>1y;@s$C-~IVDdlc=|78Q^S>%a4HpZAd&>TBa zs+KRG$(umQI{5ERcjT@PG#d(vTfst=tBwdUmEpaQbp3!ND{DKhvmtq(sBUKKTP*Ay zbOoWX5HDOhX@cI*hciaS8EaNiyA%JS$*z2NDA!1acZ=?TR_DLiUN#+zD`4FdUOW<8 zxZR*!Ay(k-k^sI>gwW&Q(}MbrdIZTP%#k}IA%@-Gk=K_OcXhCbE0 zFmnO+#0L6p&<|W+dc*En{rm=z)qEd714GQMzrj{ENL!~rCa2+puf{6-O?N^3!5Y^7 z2E?{p96fEVJhfbzv}shLzCz;mdP=1k;B*4jxL{m$ovDw4Y7`BO;&y}VucQy-xEYp^ zkEP3~WgsA{-iE-f)~EbVl?T1A&!7LZh`tzOU$4J0rR<$;Cp>)skPTE$uxQhml+A(8 zvUJFGOUR+%sC>@q2}p^orw0o%4Yp#rlkK)NLtuE z7v%*jq#-hmxeGp%M*PL7PUF}$kW3;7buesD+k)BKE~Lj5ehoz9%2@U#oLbBw{|HtJ z>R9zeOPRNItp{8ZV{vKHDylJ*Q;F=5#WrO4k*0Tk`Ao*X4rtY?Y*CI*{pGKok^3PC zfn`C(!)s5m;eZ!B!R&rf!|Xw$+z++aCI)<>+~%h;imdy8h_R zG+(&($tE1N1&8C)l+^5LcXN)LKUV3;H_LzzFbqJojJ!=j73G{&dk#X+N1}=yn3?VP zj{HrTW(i#yP3Br2@DSOi7aH3=#VyV`xjL15xT|>KEmrQc`9-dFT~Ly2I1$p$UvkGN z(kj?u>UC&aX+6S$fl5bH5g?JrC28kB_qd9Q#}o}-=XatV|7E}Fau?kC)G`uA^8SSD z14}dQ7oZ>l{6d*zndk zPFel1LGshUve(|2gwRSuLAaa_RDuu}P*|^|R=j>V2~kCpA2(`dOK68V?cLUs>Fu5N zRskrHN)M)Kf)BrpUPpmVQj1Je2u@$y&V*GahXCgrMKI*hD74>eX8-R&fKtikZptiX zIi|3*k#s+DZ3hb~*7mMTN#@XP70nYHNPc`P449fOK-GT%IKV- z*%&T^UlH)Livjq?`?e3=sO<(Kb=_cooY%N`LTtV!z*3yz)8aPW$0nleU`-|Sr21Jg zJ~4}(zOJ^_)hun{c)`QkZVGD~{D`J6vUItHpHhZ(-RDaYRp>{EFYW<)dC&eu-{*m_ZB1Z0ZP>aY4kM|G0`bqM=W#${K%I4JCm4^sg z`;6w}rBZ-yGGBV{(9o-L(c7*bZ~e^|=SeaBV;-WG$=`|;7R0hhPhn0h4W&>+f%r9K z(RVlOZtxNL5|NY81Rym(quN5!SS$`|)K1?WONcM%nV~hKdGC&on@7#l%&22(iyk2T z7S3&Nv5(=*k5k>~U&-u&$bUiA+dj21e@awg`8@GX`#9%yY7cq?-bOXBVKof(g=CYU zba{iqv7S^c?SqNybK&{0Lv|uqbKM;z^F8+iC|DZ3bV#7^QMTPKz4ZWz-V!X74=#C! zSkpPv<|BNJL~l6gy&P-cR65m^39;X}YB*ikS?i1|mORIO8||W>QTRLs<<#E^34MSp)a=xGK*rnzU{xx9GiR z^~|?!$;Mowh{cd1D4h>T)NyVfo^Uf{hYOg{LQ$0o)-5=ME@kS*up3##j>$w_1;}En z#yn+RMjQrQbPhC!AXgj(8=yj6rB2Xjf*ZuLh{{iFj2?sE-EsvtUq0YvIf~Om>k@uk zWes=4Yhkfu!VD0>P`>u$wui=rj)1!2_-+P zQsPc<`Y(mX!ZvUkJ<5t+i`^;puf>Rz&v-n)%=0Q)!#3)su=G#81u(G)wsL7z7jEAO z^R6A2u_8h9L<@Db!q%TfY5$DE;mVMg#q)d>gM(hj4h^D*{wqh}C<~#cuy~#@4oOWV zR7M=Vt*pcpPh1MW;~?FZL6Y|K5M|+2s@eWoQrY>B2jMfLYcIHzaa)-EES4{5aFqu9 zx9Z4zD=1V18tUr2g|Gxg#%fZ<8Vnis6S* ztI8_uSNa8v9CUbqUh;5kv(i)A?Cr*s7?P-wsfOwlWKGk6AEV={i>`lu~r#a#$wdVYN;=u~9Vw_1ZGaRqd$h>>8$ zxS8Qb%alpzGW)*9k1Sn6nyfx@rh9Mu#jVM^5sY{fGGj!U4#}Nruvq1SDSE{z7%G?* z`nPkINiRf2TMQ#{22IxQGv_R09$|zcCJII+^mgSC(XFuimP_uM22Q+x-voIx23`JS zY$|EgAa4Q3yyT-37_g_0s07&k3Sj%65sSz+-Qk+bUL78}#OIdg)pYS*F_{_;3U`7h zvX+^+!Y|%|o-;9KJTNdAUc%)TmB@xy7rgLqEq1sN1G=;WbP5gyJ>i=0dScjAwb)X% ztw=6~6kNbBTM9qhOikL&tWWe)UG3YB`jUo?DUuy?@5q9f`Lv96PLGQcv9Z=SPaK?X zT>@2SD6W};?TXIvfS2(ao_wL0XuxUnUji?0f5iYm1tJKu=CLKcy&&+WUNnYy1)I)_ z!c6UG#i;ZQ)6qRGQFA2KD%u3>?^2ts&#aDGSFn4i|Mi&QUUiC3x7|0SmEE8f5I|c_ zU&=K3c&rz%)*!Y2B9D@aN{5%GWXo%olD<3A!eg$Wu$=ud)ad2gR4ZPNnHy*>+CQ&p zPM&B^Z0j0OrfHQGCu}z9{{BYf!?No83?2X=-udGG07MX+qMQ<=Y7`g}*B?ea+C&%p z=qNnf!0G-KU$kRmZ2#hVHeArsWwrz1{pg(y7R&pAkL0`N^9cCja$=uqKiR$wcG0kU zO0@xkT?Li6O$ttcQrc~<;M8?%YjAXbZCvI(RM=}L7qN5Cl5{%*p>q%GlQ*!=YS#iy zid#S#7Ay4(O-ts8=l$%T!b3fSn5g-c#fW7TU7A%dgl~`rs!n>Yb<$O>AB%%QmIIDnFp!^ z(9^RiSE#Wn{S!c-5WmjZr}xN4!6tkb$~#9dBHBBu6vE}$>ZKBuZp$}^#Iq5SZYIWBKX-y_?sz zO5@Y2{!a(uE&+_n$PcIXd^obIbBT=#M8Z~O)M&IxF5V+q)ISYINhw&MhjicK${hnp zks2ui|Cp=acz&`5orupDJYxx9XEH#&(AB2v6zG%Fq5f^d&*xzAoN<07Ijaj-4ajxj)AAcASZT+0{dZ4&(Y4AsoHnU>N=%Zx&c z+V#Z8HmVoOTe7?0H{FE_QdTt9U~VL3;ToZ52m67thk)gZFV!pKrof-;XNu%>Tp5lE zuD0R)0kbx2ucVQLTW3-^4hE}MAS>oO0#`F$SJ{-Ts_so1HMga-M?J{Fxj~(&5EetO zcm#Q=J%CX->r58Eq7Tk~1W^z3UuZ%W<1?>x>rdN9<{+@wYwTVb*QDvxteLeb3&R|? z=-1-FwAP}y{PI-7u^ukmFhUad4xw={e^M#o#_eS-#BNvPR8LApCqE?Et3AOKRGD9G zLKk~v5rq^7%A&Z@dkL6vzk))zQ-{<>xS>U1ZIqhYj5PRnWm5Cp_dxlg*5Rrq4zy7I zg~n-q>^@}N=9)|APWFy#RXS7_7;8|Q`}Z_FAjlMWXLdyeq@*`{K|n#Y1$+JQr#ym2g$anp#~pDBRC;a|pA>%wqFtjps`zqD<9ymv_{7~W{#EseXb*uKy-OGz`*{ZCPpVQx`;J>-cP3E+=^^;@$_$pf@r?^_Kyk7f zAVdLD!$sijlI)Py(sRbGIrtfP$scDB&9{Wru>|9aB**?SLQ4g~J^TqS2o_EnWnbWe z_lz4JHM`C^=wJ7~&dq@iF&$2hR+vc(0a1i=C??J|!Vpxm<0gbK&P$L26@v<9*#{bd zw~C2KC}qINCJ~TCF=NIk==_HVgH2kJdX;9ieEzr!vpu%_(8f27jr%8-sZ;<(sA1RTzh z2>8e#yhQE|1dB`;-g}K6yB1_e1g!awUeSW@_0`A5x?A%|=0#1!5#hVnlV;aYfYZgv zw43yCEpvKIv26|vhQII0gJQ*G{q6b>G~geP7pZ=Z`r$x%apGhpJr^fZvSje~{`GGK zy&X@jNjV2>lD^-L@v12z1%({wrk{iiFv=nMc@wsL^$8+T0(F%!P62xGoeYFsT{k)x zplTY2kE53sr5m&%V+6Jt8yRtIQ-uWN2;IH~R_*F_q~}5jNzuL8O`n_Bx3QhaRu5X# zNDGb=e(LLYidS!F=7vWTw#xE>aQR07N`zXa9dYj5(M{?>&vbQ&N%}V_8+(ZE&Yap* zga(p29ncE$VtOHEltJU^I)MZ7aQqF}@y5fmELlIVwQzcE>7vX1yN0s{=v?h|-PBT5 zuB_NYLZo>&96Kv^*H|KYiB;?9t)2AxpPshIObimYcDtqNac#j4si)&DYNrmpi2Wsk za)Vt9Gs}29FE_v8$I$Tl#RigB=ra8@nZu01<_x{N2)}tOBS(wH$WzE36D(Hw&czDV6n(rv>NySxb9HNnt{iNbzatp|r0Tr!-fvG5oWwE&+;%7PiII+Y=cS$dcRw4hnq7N5_dCh604)Z z;4^LZ%kfEMf%Swrv+0z|P+2;1dP_)lbq&y9PZSQ{P@QmWq=WKb>NT6rOB)`iW*t18 zQDI(F3_<5>$~#BFUGBhG7F{pgmFpXBbtXIdxwICT({!m-n1W|up_59}-@`g4 z=Au9*A#f|m<*Z#UhC!KOPaW!F%;*rR#9Y%@q(v>!G5&!kK=3ohOW4$)L~SAYuCmxb zQdC_lz13!>n`!BT=X-J$JeAp4e15S?*?mv^G)aP3os(!ey)OB7{FJ*~5=E^;wKMF4 zW?EK;_TN7Miu%Xk+eWw;g`-a8hG9nus3WLOevoM<6$XUj_&fdtGx<6}cthb9QV~ze zBG(qh<`+DBw81bdUb!A7YZDnjoT0m!bvBnGt^|iEj%a00JEZu6hh3Vpl_Dh%8TJo* z$MwRt9i=*2DUMRNXlqNL54QSC%nEEL0{tp8K~*hO!R{(}vp3N~s)*dCLkx935xBYD zRVZ{R>_;TywfU?K8mfdV{sO8+wodu=hUokc!8h+1G8VbL2r~NBK|Ra+)#|uX1Q!|2 z5zXB(!)0y_B<+^k5Z;t1P#y5HS&zMFYf*}df@;X3N7t16E6y7(l*HM>2%oA=%-GQIFOEm<5MQ|$W8z3?39xN3!;j+3 zAPNFx>7te4+$voNFsvG#%8JP8C32}|?%2vnbx@!TPX_+r5=pkp9`0Y! zp*{FZtFJssw`g`85;Z}?W7MH8kA~#X8>Pd-llCS2kz>11_&vO!myh++bT^Xe-p|>3 zRZs}#Nh7^vV>3lEx|->nS2&J2o4falt6?MJU9?uzkw&)J#nICi3HHP`32Wl@g~yAw zkMo4bb72zl10J%$Wa;D@RMkb|s)J3^lgR6>(DxtE?YDCs=F*!`V0LZZUNSLXwYrQF z>8cUImvW{SMvab;-D~!6Q*6}HWwj6-H2Cs}Gq&cey(l0x4V=ZVU=fjxQe#`uDLEUujit8GA^ksowS|C9|)W`2J+DQ6uA%re4 zup~ft)xRZLaTM2B{!R#-kn+)Le`?M{ADX>vv_|#xnaaRhkb9{ZF8W8;7*|#L99eLd zSjM9L?^cwHFXOM_HpkPbpeF^_pGs-|iccU|Y4x%YEOe0#XmJ@WY&9R4cbDN7dx0*b z%?j;gm-D*Ge)kh$fU=YVa)AHMH=>i9_1P$6K2uGk4-}V<7b|akMF( zt60GU);6PIJID>CmlOj!RQR@g6tW*{@_8r-!gp1Ff-@M7pyTh><%oz zCHKJ`s(>`loIR)YCW=E+?h&Hlc5(M)w}B`~PT0;v{VEqtc761Wj7H27lTzKn7QW8Edk&cVaW0Oge(la(-pz{KJgi0N z;$oM$AihyY-b)$rq7AEvW<;a@hF!?xjJ>?QIHq%{bf7Ls3j;?Sqqm+vztJ^xc4$^U z2_R#)l7M$n0eK$B3l591)4s7br3eB=0nx)$U+_Q%(aS(my(spwr48p(NxcLA1pca6%A&D0g4?4!2lU({`WZw|iBS zR;327qP3krTV4K~B~ejs@u5;a&IVM6aXIReXSVdyZFn*d2e?%@02R)iYI~jd5XmGH zsP{rzBGHqaRERgCg!fv^)*!*#*0AgP=TWk0l`e7?pU;VS zR_b{sJ2hCV4=G0%L)F|y?y*r4JG19;+KyL1ys3A&S3RLtIADgBnHXe>3^k3KES|iF z*p(+_MYWo!*kssxw9%vk!*Is&aCNKZz`=#C;u^wqAt@HfsE0NYt1IZFtg5wZOpf5%B^aZp(demD<06E8P>ulU7xwrYq|gmkY;?8e^B0AjC2ao2;{ z;H9BXWn+Fri;%dN-#+NqGHgIeMY(ikPFY{Bjf&mQ_CDKVqn40we!JATh<3~#YOh__ zH%nWDZj>N!&Bj(6o!L{ocm*k8%uv4+sH*RafHBrYcka5N;3ch=bvkf1A!0td`OHaUy?I3) zX1*}E#7x%Hi3uUz1O&^7O|Is$H6L_AeT~{hnwq%L)=^()0tZE9(fV+tm)p~rrgtmy z`q1wRh%R5>O$tXGZ(44iDOa(8_>|jA(XBnijE=B|_Z7?DVnAmA*B6Xl)org+1U3-; z7e99#1Bmo|nnvYE@6^$yFT+<6S{J2|>ym@f$(e9Wj3|j8*4w6-z%U)VDcB(x@Z6&D zb(tz)2)AT5p{`7PT(_)jnQX|$^SrTc7E0_yY5uXkYr5kxkj*~YIiMn%nVi2hdjxu= z(<*ai!-nN@;k=oEjh*q{tdLyJvDt-snESLUt zak%E{c$_NxqZe_G zIe=J3)p%5H4*LfbzJ!c01AsG+$`CIZ>y>z(+Ryo2|GO*huma7C6*!$OQ|$BhR2AGq zmskjDeuP7!jEY%k{H)FuW2Uj1a3j!B>4E>Nt>o}!x0V3Ri!{?5XU3Lz$_D;xv0}2S zPnq7^X82gBcNX^RMtmfcH*#wtL1KL#wS#Ns1`gL;_UOI*v!s z4EPEpmuFh+j!iabenEMyR}b`hHt=GJ>n%>4a(VT<50Rv??UwKrC|P;KW}Oet`-Jis zfZRpG=1LM754E@`di@WAlDpri#wD|k@tW|qGlItbO?KBG&@8bhsI}~L#*@iuDUH+z zE1imLtmR#}5Ol>j1{na~6QUJ7#aZ;=K7$mAy55f0aH%tT4$L1sn7tG!H00UTjEJ;3 zERC|RHU*kvwv+~_8(&ICs8p0JL8_C;ENMn)A);P&so?%Wg5Sg_g$f9ULP+6C9}iZ>Del`0L%Phzmz@KV5wifVgI4MPUWCBeZDyjcuSdq zOcEe4_BbgOY-WB6IT>%KrVs0S6xA1B)c7qxgLmRo?fY zkirt;1p_^@8foRMkVLm4PL_+r{@;M!{a_e4yON8UAXKLooRTa<5`qhCwp`GtWe}^R zB_5VPoUzx)O+@RfnVQ2buo6iK)u*A-eT!R4qnlE$a#gE>$wF4GvBLwWdm~%5jHkLg zP8fb8ncH99|2P|ceJ{4GvOT|KSTS^bbgG<89s7-3b0pCkuoy9x zLTs>JEUDyH*RJ~%vyXVs1m3~V!J-w{BFOCcJoWWk=Pv4R;!QeJ-nmcP3^1J95J;N8 z22CYbX@%U=4)}=JOPzabg-RZ38W)O5SIZ^5bRP3;zlSxZJTa|`{nHR1yu%h*aq%WFWLNrb)hc(M9!S8U$ zRKJ+2OA*snLg`8^Tz>9IVMUCB}D%}B^6n0{ zfls`_f7*@|aI?m&zR&8VhA>yohvqLXBB0D>s%0wWij?bCj%T7{I-k*3BSnzVCqrz{|FK`cu-<4^&@eNs z@xpw@_eZmDG?OHE2U;ic7*loYkcJKO1SxKQN6nD>;#lt11DdBl;hr<$fLh;P) zL3`hI0&oZj5o(=8G>G_%nbrf@xtwv2HKRRq9B_k%wCqdOUw{ZF3R%;%p$12i!Lzu4 z%sfW=`_bsQ&w}K0qMEfOzG4z8-E5l<+)hNkRy+kLIEu-LvzB6wta&fyKz4Q9^CC9P zR}0~^49m~MlX|n6e4WZQrdbskOZ^Jo5JVoPCIR5-^CtPl!$wtJpCQZ|9b;kIN~pFEPozkriK85uc*P$Gs_f2ya3_D51T}0#5X5r z2Cv(wk!7TmkBAw2j2K@nr^=B_^mcS&i3kDJBnz31x0%0dC;5$!)ee5P$vWbb1)ri4 zW347i1xHt6ZUwk<^jea#huKLE_(O39=-ckD3pS=OI%L!O9%V_vE>8U#wg&;2q@dT= z{A~@ucN7&oD>bD22KEo_IR zj7EPf)F|i&71|}pOMI-rzs0DxdjRX+&tPDN+xFgiADTUdz$LF_JDa?{YU}vMlTQF6 zo?uC}ChS-rzI7ui^`i_lqx#R>M91n{}|{?lW^*iMva$O--TvfB7qCbj_n z-7FR~g38x3Vdyxv4pYT=jI%CZ$zpbE^#xRGeH_y#p8ZW{*`W?JoRRt1JVT5*U_umD z1{(nzB-x^Jnz;puMDo3^jV-3Kdn0q_H#GZoMDM*LZc+UQ&G+!z34&jM2x1mAg(IcQz^A=m03s-fZTB|n z1!nX1V{6UG-OKlfEe#upPEyK+P?&j}Qeamgkh#R6&ssjM^MlDG%dkiqAFemX7_&DF zG#)48#8S-Fce>-mbV>)b$tcoF<4h>2;U!;=L2J?e8 zIkPms$DhKAcixM|Tawg~+?+_izjXf(Zrxia(!ja#P-4#?+MFgkn$cbL2_Bopa%!VX z=$_9#>L=;Z!oR)x%5Mc>3p<_~eAD|P3&}@4I(=<7y6o*yVvmHLw(954{~)^m0|>&* z9Gtcok+9ggKl$1Dn)NxDw1@=#l<;}E_#5b0Byg6N4z{2H!4sPnr=n2-A0-0^7$f(4 zDngF+M&V{G+UfHrTu9-z4z2^r-v@@PA(Xf0rJeq!g!?kd%^9 z2B#q(pOlo98W#tVBa@&eryf@%1FaBEm;%q_>?5M z%Abc`3w#cXHjB3Z&zh2xx0K2Y5HaayL{fuHh z&ub=*27`ytR@2TiDi-e={eJ0k(p>Ai&K9`$#NFHCQL2cDYoI;XszQy{gy~qYA|dlN z76^f#s-I&eZyb}9Gq$02iui=@EzJ-vLoRKqgNb?Ag`u(W7@H8qif~6LY`;{!k?JI# zF{^%;9#2fNzY9Na*KHykqYG!`H{3JL%pntJA6kwo%*;ZI6@ia9JH(}*Au=T|4B!!- zB>d#B80P;I+v5(s&IUd_k{(zv>3g|-brUg6_HPBW$O>vD+Ceb4eL!uEW};vNO@_&0 z!FA$}-j33G<_7k2c97S4G{g#^I8NKLpAISH=7DmW&y2D_CqftVwGT2gB1Rhmzqt%L zQarWD(dKo>RinuY)dqD!Iw8?<`^9~sXKFqwP9>WUJ4ZnuA3g!-8l4fw36SQfmg5qk z3PvqbXElYjuI==t@K1>qVQWCJio~m0zo!*)M^P# zS_FSY*sorXV$NhFYqlI9{qV1)ZNSY$Tc{mVdKF2qlK7dzvEB^TU_S>TOWOhcWw7KO z2%=hcW>}%T7D5a7n02yo*X+F?g#$JP=}JStas=#OKM(a-xOl%FolV-)2ctH~6Gn^} zeKtQCOw~WRz;@`@4uy7}Q^9+DXKY#u>yH|kRoDb|l?yieV4mC#T;$tCZ4nVpNj-#( zPu$Aviu&fxkzKp{4(R@tRlkmgnr7%y`2#Y`GR)ti3KH zblBtBaz;l|YEOH0J^eM!zIH@5<1qY=4T|kHIU6WI?LVE>@kfP!l!)p@(|9V!WIx>2 zD0Z-z2Z3Jd4WrmU7~=0d0mDu-ayo0f4N(!HhdXrzfNy zN{R=FJOo}^4+r>IYj-a;Q%@&4Q%}Cx7FU`38Q&A>Hl&d~NSM@>e^a z13ft%ylk_nwQLM8I|gupcSaKX=GNZe!x2Aq-El8r+enn>VgPLqk=l+BALa7GPfcVGC-p zK}>3fxu-!?+treXxw*I}57mm>;{aMIG&O{K3ELbb)+AN3Qq1nX-9b`?T%n zb_UdO+?pv<_=X8#XV-Bp|E>_^-~rVt>7dme%;@q)hg!uVFB^Jl#$20?$}TWfRLwP1-R7pDZ(6Qfq-7k80Z?|qADG{85$Oj=TammCm$x-B#D zDu+kx*!(aGb)`GKe>%0->ooEFnA9+RrK9p;OTgvWAE^7B?NWf^=EBX&;v*oVHhgSd z8~B2w*xMQsUwG28^|M1&sp5ZuJQm2q;r3EVl4#fcX58g77HpQ7esrH5h9 zbh8nN3BH3dyebb4?XQ&A>~Mb-gvKV3$26M=6rZs7ps{O)2Bh|(32RAyl$+ODAkG&#?0sGqxo?iE9Pgc!E|e}rw-NX z2TP-O!!B^Eve13?(=^0TkRI8^HUENN`1RfFmaI^K=aFy8V7S)#1iBNaKB*|3`{P8T zHQXR727*`cDvIUOKc%ZS$-4-Rrw$@ie9)HE|vONug~P+=e=GisrSgA?9P#-FCve$MwPynW9ijBD^+ zPS3KK5x~Yb6#;)O6fJXh`f1>>?c_SeYAg_~-YtbESR`2xZ@K#1%4W$mGY;jA7V4&- z>oHqq9ZYE<9zp6Og4oNFAM+;-h3#U^bN6;Bg%beU8YxW55vuyu5&tP7S9vf2`l5TV zy}5bcyjXb9c?$K+{})kT8P>)V?G3@DxC96uph$6dEv{{m;$Ga{9g0JX28ZJAuEo8$ zQ{3I{rvLZe=lw8e&-ophGqbasNwPb$s<9uw8}Qa8XfQj)vmE`PighoRmsw!JI?mD1 zJcbdJo)Sm>l>T#P+$W0EyC;C%CIV&zCTe5Jr@eSo{IW_a^upQmqWT3&Cj|HFjE4}M`VUVgdcMxTq{{UwDOd4`LnsC3(Zw&K7Dw)Hhd;pyuP^FwDZi?Q%x0twt^Q{LuDv(_#fa1{N~cT*mL zYav*Kka|=LR+AkNvN>fk?KaR#w~S_x4B;*9fmHkv?Ua+>`OL~UsECo)Qm$Ap%JN-1 z-gh?i3)--N8c~9owp#asy~n_iy_Eyqgv(s`Rbu-f3gXUC#Nf2I=T`^|%!vs<=^{NX z0COrw>{A{tdFBk(rA3%okNnp66P%_s0J?|)?KCT{D}CWQ`29UH#9#<`xg=BSAP!6BgW6OCNr-gaxyQybnJn z&D{*P-YDtRt;z|2f>qX)z4l=I! ze?1)E*^qSpmb7iKEulOZ;le&GV_EaulbNljv)&m=_?M)~n&(IH1gckw(Qo7CkG}yl z@)Zl+V#Q36l*3kO#JYM@ABGtG4Ys~y0;E{-OKtHp%?a>pUVJ~#4hC6bD!tMtJ;f9M*8=Km<#*KKcb+KXfAVVIkO?5z%CBmi? z8W1X)Axr(0bWaBW;-3*xrUxUdSs89DwOw#fP}|cs8Z?38b0u>SYvR%g9eOE4m+J-b za33jx3UMIv-(+4RRe#qM3E{8~Oh4!{9l8it zVu)Qr8CGHRcBNBT=L*I|1$?q~K6CV@=C_5KKpSl`vd5AF6{Ay|+P7+*9w>V}g z)@PP`d_OVsy=HVrNJK64kjA;P9Bungwzsb)VdsZWB>i#1`hV8>eH_rOx7a^N z(EnM&`IN30U~kdpMAN-%V1>^=j!{*K=6<4kNkiwuF=f_XUT*fOQLp@XI}L@G(+L*5 zc_t2k@BT=-Pg^5IrMZ};oqKY|URtP_6$J2~_;48MIpY=30ja*>Xc+r(vKUol8!iW5 z3uu2Pg6_xg;iui#D<=cKon$|XBF&QOOBw>poX5y)kH;~`=vVmsN5k0uf#)fdJQW;D zjIE3F?IZV0;%Ezsjqu-A-+vF>wcYJW-9-QR zJBK282>Q0Q?rt$2ps(~RK#CDi$#;2zf*pF(Z^%fh&<`* zi9s7DuiMKF2vJ;b_Sv`3n#6c+wIt@Fi{8(Rjcm^y~)DsW6|x4r`g7 zPQ9!zCQ%L~aGPO0qHZLus<_R2iH{NogM1Dj2S3q^D+2(F!GOj7)_EbOz|?&?-K8{Pg;-}$(mr@ZE|_Yju#`uH#~A?*J895j*n zvM4Z-+5R*(F|g)ydt)c))yQ*usvp(W6yP8_DvFN9gN2ljt^hNQNGrWzCoIAl2MW03 zv_|c!`UDfI2nVF$0QeOO|AM_{gUgQ9g7F!R?z+2XTExDWc1eSqJOKDB5yD+l8gbL%57?4&f2D0v~wV^LJsfM?PY@^do35VRgXer&<9-;v%wFN~q?4W@HNlHJArn;|uSIwn4z$u?UHp>_ZmVnj$Sqi-i2QgrW4Q2$W zFo}w2fFIN~#|o45Ykdx0EA3U>05_;h&j6-@71^2ut}4h-*1a|owo1}hzxOMZAGk{S zptjxj6F3is2A%c+8O}aRY=2l=lqiV)^BRBwD5&EC|Ed@NRsA*0-*m_Ax-RKwCteeA zz?mhTcG|04c8FLaH)3{B_tHn8zZC}BQ5|_9A}lRy*`HT1B1M2<#%&_dAFnWM%+oI| z7e1xCO6zRG2xga+9dVZp#&!IqR=g43lesEbY~KUDiybki(g21j;8iN)E8wNEi$C;( zs~;R(RYZ3c3oDE^5WO`TwhI2SBTW)iN8F?hc5ik45OER!4Fl~<&|=(5!!I{$`WaJb7%gOZ#sFrp$3&>tKjm53LC zkkXSaOAHrhxM-1!i<6C;K+8`F>jcr|Ox-&M><8z|V!&022L3ULheu*EoCL?hYVIEM zvsU#iB53ZI0LmQLVVUCB&7Ic1&iR6?elLB^XcvNxJ7UCcbdmQzo8xI05oPtcGti3Rj zB&`K7lBBFfFw~{2B`_K!t>G|!G{P<02PK4`G_}?Zws|&CJKN{`QgG)5rF~tD!Z@UY za*WvN(_)|ccCVSK)qWZquP!>RDt_1e^{%C^B|QnQTBkJ~r`o)8B!Ve?vbJE@KEje0 zgv)0B4d0?kR79dwv^N-3O4rN9N3dxxC8QnPD`czHtHp;kQe!C5S8`RQByx8}#r@bm z8@|bxx4xXXwzs1himC0$%}F4%OnN6gzJHh0b4NIn;MMBCIxlsM$UXY!kc-2W-bl)u zm!;>^XQ>)TrrmiyzBq((jPlF0ci}<@NBH$MYByg6o^M)=LapDMg^%^yYxS8KyVKMZ z;MaNkwU=sz91rDu5yR-Sz3C;SQYQ|Zr&1@;CzN7R)=!pXQVui49{KY`6kl^oiJfV= zN{P=`S27$hv%L`gc9RMU|I)dc^K}tnN0{D-=f`GsxUT9c2UQY+AMdk~q2y~7W6ig| z-G|5@GGgNi*y(#L(~j1eojQTu7Wf+@4%o}>`n!_WEVW{Ub-`6B)F6`y5`1 zKR}D_p1)haTv%sOc`>ZC9%dYt$DbsinJ7hDlo2h~_$k)7koun2?CJ2rgrhgt4Yf}!51@4W<8k%*Qa#_njs+;q6D%SiBeVq4wM zuauFIB&mov;0!DVDQtu*{GFjd0bwuewu1*&jC*$*-S!8WKdoP0*mU^qf`jrd3LPY` zF|@XhXle#Q9nu%}ur$5QpwBNqZz(ytI|aGNz8Or$T}APe!&@^oAv zp(CQ0LB1H*eT0~B(xLSmb=Q-ppSZ2JLN6@(If%!@T8SMqUXdM=OT0@yq#$g@&u<&h zWjhF8|Hu-Cy-b37v55vYWz*O|*rgxWuhi9}gGxJQndnwl9OrKGsod_PAcngd)qdET^U z!I*Hp&B%SyjzNYPGq-oreTP$j-lkuzY`f+%Y^IadHxYay_FX!tCZD|HNkLLok<>=` z#htrjW#F56QZ2$ZmB{RKVQFUJ{>QWDQIk%K1K#X zy0!j0b*?fjLU;#4IAlwOFrAQ>$^~>&#z5l>XllO)nZzzae@3B&;vwO1XdoU8U>q z)P-S~ppXu$-AQSQ(`X$Z&BZfOG7>4r?ua5~^gph@RP=OOd+Qh9U9KJ}e1ZV#$z z5a9kHOQhjsj>KAG(-L>kf}hHaqv0HCk|EW}1i*cj z^y|(>hF%b5mhIQ;A~vO8SxRH%YOV*RYl34;i=S|{#7(t4w?Ao#<7;_BN|-2p@YT>C znZS-QdFs#s@OXqIRV?C%HMK7Cz8?`ff=k3soV>gq7l?4b!e96na{PKPz_!p-+vHUy zY2G7LE$h)~?&gMb3DH6zG7)O|5to~uYdTE5Nuy;xtko|h#eR~x5G5FEqMpf7N*B~3 z&BKzvUsDIUlW|9yAL7@xSB__Dp)=z$t=i73K(?6q^0nd~*{bS``O&FG@VmRdGClMP z?-?7)=oSfi7U2xt6pgI$OfTY`jm(7(!K@oNkMS~E^dzB{+_+rEsha(GP`BK8%<3mF z-D$+n9S?9JG%r&irx5>JUGctU-Sy)PU(hThqqR_mc?Gw0`18ebRbtoJv0F6T_2SP*-*WpxoaztGrle-t)w&d4gKXKo@y3VrLyXZ5LE>23htJ` zb5d*?&UDdC#^8~XdoX> zB}W~H3T_`e+%O>VXBiUa&kP>?t9|!hE}dH<4t_aoEAT`co3~g%c>gHo9Y+~W@wxPy z&nW#~Oe(BdXeg{nk&|KdW1#GQE)IsjD#XDV&H6v!LYy0QHcgRWDyaVZ zKZpMX_N0Q7N#?&$>V@e$F-DZECG@B{nItEOVJ(L+9nNvh#~#VgH~B(W*b9y8`G%_M zSD{UDHX=8D*5>W%!qF5r7p)2;)w&?Mhq%z06mtwK%*!h$XT5*qs2-?z3(3Uti)%c7 zS4=vu=h4bB&WqPlYea_JDVUa4ciM)PI9EUHuxA(A!pC&R7`qb=-6XeFA6xCNRQxcr z?MzQ#+4+~bC*^LCBW23981(EGnO^DkL+61VB=cIUACMi?-R=%Xqy@8Cq#;jFWRj{f zVn2fM;Qa`jx2Q9#NLJNsUA@U64t4xB)-6}K`CgRr)d`Ba6Tg@j>voJ26n)7L68QB( zT9WwfaIUg=J{~I?y-RXxz|eL!o83{IUZyoSIHfT+T+^R+y-feC!^8zE&zBx(3Q_F6 zh2R@Jjbj*)R@0ZF+5Pffq3_Q~b508OVERNbGM`~>e8RgNGR9kb^OlC2-fG8NJPCbH z3iYZmt)zP#qT4l|F>9DSPF%%kuBa)`B!p-sV7xocWUkBF`(|oiMJscwJG8 zt2w1br0&>1E>AA-=lQ|XyiPd2mUPK1quR`3JttKtWx{C}dG`v!7plwq$7v>G(aD=D z^MRp(KTtnf8O|KQiv~g45M(9k0@+jgM|Ks!>;{a$>cCbY+P`Ze>w33g2BQzt2xxk@ zg0jI}h1KP=AqImP@Eaz{|0j$(ToYm$>;&LS(4U>f|E8-AJ$sbVfSNTO_QxWi0j?HT zG!>h5(<~|^5+M;}oM1cvD+rqe=Z=bQM&Hl$+Y(j~E)yvZB?18#$5`A*1J)WQ9d>)s zxVv`1{ZdEPWGyImmisdA3-3duCaG z@UzJ{aLXI;*y-G>R59ZaN_3csY#0TTc_f-@H5d&gZ4EKin0QPXX{`y3P(pv)fVEw4 z^S7>8U4gZQkv#{+CMqyucwJKFoz4+f({rc420q}1uD0E&Z+dtrk&_CEw8^)BnP~rV z)>Gp5ws_}zzDE8s^|b!9II-?`S3SSx_g1ejGIu2%D|B1DuH=1KE%FvQAbhh>_`0pi z8+(2i1j94lZH26H?*+{E#bBnkhJD}s&#`w%U24QbmPgc*-?d|9P1`f+q-Ki5b!Fuqmk@WgBMD(p?xIpQ8& zAg*Jcip8UudvzZ)dv%Y5T>Uhr)we(@{RZRJ8H-i!QyT${_HjbGpe?}~I`5wIc$NyO3Orw);F^6Z4;E7suMV{ z7;#>Sp|LGJ5X6SNcHoOgB?%2u|BB+llBh>2`u!GJ_ga|x7D>I*P1d+~S{6h>a*F<) zf?SvwOH6JhBHp_#8uHY{cX`2Ga=b;bIX*b>p@)?7b)Y;XRvV$`I}#nNTTWW6TRcAb zSWBy~7pfZ-sL~|mRjDa^sxhiiA;Q^q{B|`tVL>Bgs z>CY$cVVNKK`oHC~aD4nJG6BSY#qV$GCj{ozbPfaOAE}H@?&g78X`SOhrRUB{?5;3< zBlLl1#J}&{j~Sz$#<%R)F){`!*-y_7BQbcgE7G^%Rp!UwVbSmGg(L$CSA&Y zLrL#D-t%%;fcrTnk+RDTe;CQ1T{$xaHglVtUF)3P){`^)t(Ffn@3h~C@4OwuTIV|2 z(xRvcRC0V=T^Ys7wtbyv5F0a@rajzM>@P}7=K_2l8qtX2dw`W{ zLuq_ANHN$0J%_R#U%|D^(?0(nEtv7Wo7|{Ei0HT#ONY0(|Adi%vFrtM%$K?Suo#9b za*J73@FHx>vA+<0`y?dL@uE6Vl=;HO)>w(CXVGXk%XXrT>-5B2%w)T6I#5?x@j1Ud zFC)>by-ls(hZZBXX}!-7S6TtYb>Sa@q$p_eHzi_<5Bi=k-OxoEF?jOc94PTO3p<4d zON*`0;+*rQ)-U)-`1+pqp?^`N=L5MX$l`UtPa&H-;LFO91gXz$Eqqb_gkzTQ%rv=G zB!oVVQCGkGY5H-4D3(L-=uqkOW|N_kJ(N_i8>sOFHrCny6t#(<%n^z!*bDr4ZU^i| zI(*1#;b5^iQ(bN}h#ywpOwRLpu6^d_Jjcj*qBY_HOTjsaCnLzPrwg ze#>q}6c2(5#D^6DDrHc?K^rb-^OP7l+8L^?g91SD_I@D41KHLo_Dnn0N0m;aC|Epc zmpgHw$csPQM`b&Tz~d*E+lodw;&VeTm`@!7DQ6To-(rv1INWNa7T+)hHL z#GY+qU``$cw}K<4GWAU%hqf`SX=heZQ{MW2O!Iv7jG}HIbQG~0S>Jx=4p8(9yJ(AG6MY12(fny+T$LpYt@ep$i&89y?$i7*-ztS2I^|Oo z8urI0g~ETs1jv3+E_Qh6fg)0$NGFDh|3!2h5x(h%R|GhCIyz(aYK5z zs*%Z}$+}$QG*v0>GVeB45pMW-z%>hUw)$_CBbK@W+JM2Na4h&IiCgb@GdE>m_x`rV zl5v=*N#n9LH5RMDFPY_UcAc$uQQ}syUTQ#{{9MBES8V2o$t}k15%V`>4WE5?KV?r)q@lqt_Z=Xjog`W@7kpFoAcQkpN*ohc7;g9Z{xmWm4z(vbW| zq@bd5I0c$lCY~7CtsqUHszr-Ff680Z;qqN(g&FVIrN1H7)ZjvdhxbmjY0G z@Q{Oi{A*8|iWQRCC~3eaWEa`x?74;=aB|(o2v|ROs78(|+!Mm)Ri03mG!PPkI(m8f zG61d)9#WB43itM?sL!JGEyaly+QTqEsxWxELdKC3~IpNqWC;{ton^=J{i z9{7#j(d6xKRdxWr|@1#d<(t$z?4CtVDrF472pMj~*_{Q!i zc2;V;dO`?v56oL8clK0256P7BHz+~Fg&P!h?4f?=yPODj8)IguYu%d)sN>x^eyAPY z+AnxILA@Dxf`UaIEvA1*YN8j~TNW}QvntQ7_kvcv*1tQ_%6^_GvuE8oSOa-ZXD>7jAC`4OvR&L_MXC(utk9EbF`SpKs63Zog2t5LDXlUmnZ>UHXbZrqX>9M7JD7P zEjtWGNH_wk{JkiuXqU_-2qumlK$K+we*&v)JJ3r9M)5N<`ehGq(a%ykdkB`->QhI= zE5sLZ|B}6DvLbvG%-n>F(S3jI9-;izHD_wev>xHJXIn0Ruu`nXfQ)UN4z(7=l-_=K z?7X`~U8`ix$3U`YclnbJ@!U}znkhXiuno@j#(<)**Sbxd48jpu4VG!k-8{o2QBwLN zx$h_@`{{{o;yL{k^W(*q(5z)-uu@H{L~esW3F+BgVpr@bCPUs5c$okC;4VxvQ|Nx; z>>&1q{ zzfJbM_nI4n{?^>t2U;efRQ1>pxl7h6^)hz0o}J)DS#LX`kx6m!I?s94fpOBSZhPqjnRGZ@LETBfPqrN(^E7C0ny+KB&q3;rducM(&9da>6 zgJvc+-yxRk9r^|-J2*biN(>!Gc;j3A@&fh0y;t#sRxoYmSKTN9Jz;Nx`=%33jnX|+ zzxC23%WIW;a2hs6FdsFqZ0;w5u$;=?y?L;9Wmc~$ix<@Og83bTO_JeXuMFa7tTE%N z6qkd*qodrmew-j;2L6pNV@FrCRko+2c$Lafc?KG8 zZL)boq!8`+)4k8+LEyjs*WKO^)JM-?cC71V2~{F2HuYt5Zjo7E2z!GtUnm)pzd9{# z#NR>dQ#4!k4Gtb}znK4}N09G3)V#1V7Y@D2Na2YA6@B z=0WcOpvcR}!auq(dA9?ypT+Md4#>VVXMuB;kD<9PGdQIMGb~KRZRkkvrvIY$&2s8{ z-6~4XGhd4(y>Yx2#G&2X_kh1^mwx`XS)Hd6P{i~Z9M}j7L5vk|s>^%z>FHM$>Cck( z7V`m~(iA6F>3CcC0NcfC#%;vGBr9g|CW$5yCXrq@iRbC*QWS~$Yg`^6>F4glmi7t{>q>9vRbiEOXJX>#G}VuCswIb8z#smAP-@obOvG6 z2HXcevx4Y|z(lk}R78{!@lgqVvi&llvi-6jWpJRa9i2qRa|TX*iAvO=mW@-02h0AF zRReQ?pEdc}<$GcasGY!C2_6ZcA(sR}6pqBRbHzKyI$n0IF?nYnM8*R)C}`s?u9j15JH=ib^iOwkXMmiK7n#m zx(9A})C0$K*9FHEPXw1t<&`NeUxolWY~{gqlpX#e=*hC`O^P8VKl49Qy-jgnW-*|= z(3LI4y}idg5HZ}LgbGm!Z}0uKMTQ9;VrxQPan&0p{d$H89+fp0#otgEarZ?w6>%Pw zgV#t3-Xs?SRiW$&e!&|$>rw7?7HlS?+*?FdJCv2l41UEmMEiIkqT1r{;}y4nc`YVbY-3}xB9@}R6X-#^qQ*B(bmS@?U8?Dfpu`?Ou|>)H2NAxUyzEnA7g z=v|qGUsHl8?L5Qg*cP)45Xp&x*j$=Z8Z}zOGoqc^NeeUG9~0su&I#Y5=R*XJ^29pO zMUGNL6zAv&aL^)dB5xw4`g)91tHT%kH9uR+Sc@_-bHC?i;s$dw5a5#FMn*LySjtOIsJr^mv|TbWVA=^D>A~+@nJ0hYbpq;6o_)FUnqE&mTbsyd=x;nTH^OiI zb)w^X@$Na*;Pfmd#Dp`7g?N)M&2ZT+%SY&PxntdVr(7p zA_qbnu*vtGCD;ZB+4qBnjW`E9up55 zfa_D_v9aM7A6|x3K1J!H3Kg|JZ#0V2aa2^?*H1c(>auhaKAM=zMd_oH(z*V=ADg_G zE(3NF^V2u`JgiRAwN?n-Z%zh;%Ei9;kF`N}$_9 z_d-MVMAq|IS)th^f$5OtB@R^1WU^wppOCNgj)$Lfdcc8I*t;|ZER5|i!arNzFu*eH zUgE+(8{EhO7KV2UkqzD_XVLoq)bS04p>^DG04xmP|NN0vSdw2A#mGP}`1iZqci)rm za>KASwmf0HqI2cjSV)5{ilDzRT09{VAc~^~YZ*8bt}w(w5HY%ge;G*`B}SY}5LX}6 zp)eHca5D4HA%hs|(D><}gR7+s+_s*ZG*?~j$lXSXWmga}y|iFax8qC@F$<=KcG%>sjd-^&Ju#_66bE8`fo zFk|%Yxo_cYF?L@QpoqwB9KGZL+YakuQ*pOg1C zWg3*5bSSE8@O>K^cggM?#OY?X=LBGGiQMN@nj8UWK0O5FiG9#RO2v;XF#1{Cd1A2X z+Vej}LQI}UAj2k3rMw4nC;yR`EEEg>+@*~3%i|AukfN@kK3^4~!D*PUtt}O@?@G*+WLi z0(W#Sumtx?!VLJ8-H|J<^1}=Sls%9;uIj=J1Si~)$DIxwV!OSVA9li?bS_!^{d8}A z01Fd$YlHzW-e=nI_F0u3mk2mb6RP2{4u4T_gaxDMWK&u%@KC-GD<`TfU!bFqa%9rv zto`M~5w45alfC~&qelT1rErAHB9mqIr7ze~+FA4{bL6(ZBnaUM)veP7Jb`XLC0@wl z2NA(w=ep3sxsANw!}0X=&I~rryLZ8fiT=wY!+RRR5_c|U z>Kz}PNv2O_7)zp0y9t+jkBZ_|dC!1Cj@~~nvoO$i1RkzNjBvEhkmPF+%LQ$rL40rD zUwptZUFD9bsgUg%h`1n#xU>(G^k|ar$)xX)&KAEDMMcFKgV4yZf|NRzP;jn1ONU)p^=-M2aEbXk}8~ z!q=v$j4VcOOFHMsTqGV-=D=Ld)4fPKb_zG zve^XMQoUIC)!Q3$m-VxJy|f+stgxU~x2-nTQ<_om@e3i>+{>q4)BCDt`-4s8Sndtw zh>9$-x$^O!<Gx&V%@yA`z|*7I8;w z1_iBaCbiwvgn=SL{56)9``qsCd;+lymP?G@L(2vSs@>o8duw*;r5AI5#PRWv75mfj z>D=5eI>?Zf!1-*HuH7W)di#;?v}_B3#8As zzUTA4R>iNjBTkyY%q)a|fNWJXnBKGPJ@j5aPo0|myowdF#J*MOMI(cL!rn3voFLk+ z)0`Db6E1Y_|J3r4yj;m3Ymw9-t8lj4;Q3>Dr`)p575j9P=ewOFJB-@aVC7Dt;Ie$& za`$O-Gse7}JnagjW0QOT?wv}8(yMCbv0M5{(w)`RJ8)=Y>%By!fxh61vxty_%dAtW z7vVaqTZ`Y4&u4etn~J+54@Adn_A=qp>mv6*tI=z>zCI?3r-eRui6ut)jYr>NF?PPQ zP4Auj{W2v}lz#N>xbv}ehUJ|Jc;zNh;B((anBoNNgv`tqnk_3I`^H5-b^C+|g2BYB ze%_~pLdv_umYnz$Od-A^_v6m-m4!3jkD>3*aP9}gpJv_fkz1=?EtXGWqFmncbr<|@ zCNeQe1{Xbqm^}RMv=Y{oL0ZvO%bqFtLsw;6$`)sZx~Ou}#uGP_G~b%3wV?evw&XD} z@@_#p)z=dKWoC;Grx*FHZ%Sf6p4lrrR!Jzh1A4*V7ru~*$3ido$v=WSl-I1vUdXG% z9Ax79jzcWMkMZ)p4^v^#D;_3efaVQ#(gDiCX7tm%5l@;!*+4)06MclY-K9?S*Ts52 z(tT3qr}+Te%^E0+4rO8AI*;{{qTZk~>kE0?H8INZ>pR$mr`mO}f3e?P{hjQ_Uy)tX zGvwo^_IZ?z1-mwhD#b1&B5Fk(;UQoEk4PoQ70dgy=%*lWfDnMXBTL^g?+sh?{Nfto zMZnb~QZN|1R(a*>9PFpa=CI}NcAU7H>(#)6y61DI1xPt*1=ueJ>0;j>2>|S88{rKK zS-fLlgdcNZ(69Mm-FJ^F+Z6$&-XjvM!*?B$Fvi{*1}O#jM3kGok*X={0ssiB8jRlE z&N^1t_L?L7+HEd1Yr`HWAgleaOlZgyO?THCw!dLJB}}2GJdE%SEv^k7^G$_lL?QMj z`4`l#Y&}AMp>`UTEoO!FDU?%cfR*D0aV!=4?_SnD=|T@6wq^octzZ=L%6^7dP-<4f zn3uv{5UK1*-g#~#C;+#8AK81KPkKZAtn(Ies3u%L^e1zPT37hmA6NSvH-tlLYV4*- zXuERm_WANyp$NAJ*8d`n@VsMXFoOH-8YmlLXQ;=QoK&n?Ztw;j8B) z5VY5?f}(!T5^X1Or^&}so(haO#(BF>(w+5GVda>zzAE@ z*hnXZ|8iT&bhk~1%baA3HE_IEcl>eHd}YzFRGP6Qr}-t-(*TNA*o5le*jRt*S{1ptYhy;ZOTo^#d%H=HpMNpCNUB zm~MyDrM~`539EB6)`;@h9LbH6_>H9LP}%PzRy_>awerzho$L>SG|FM*4_Mvduf->> zqZXw!R5EY9R`6KDdlN@Y;kZ4oAH(R1=76pA}cMtH2Juq*hu$1on` zNkEETZ7pZN<3W*p)wO^XJPMk@ftxF`8bSVtK}~gwk%>pfi(#D zXmRy!U*WmXXqi&#U~D|hvkZmkNhfP1mbh zf%s_ZA2e%W#=UtICaVlq1K*)-^t(NwG%zhRWLv<3?rnb<3IxYM57tMzOeB3OliGz#~$$O|yyEV&Hd#^Vn9-pq;dT$GVOk zS+oi*R#VvLt-MiESIiL(F?h^}qF96RKo7JEZBfjeA!ZiMs&Cy12rWjIYe zl?aole*#wz<(2}Y5VX+Z2*_2V7(MKM)kqV;I%Vm{RHu#sRKO{QE9wad>V$b`&+kr=)|D0NzpnFZXX zZ<-vjb#7cWO3QWOkH|hBaWMxTk5TL- zlKL&vH|;9BF3ZY!mB?TpvV2W-2|eg$W2G;IKdiWpyMdJa<;z#6oT`)=CZgX`zr_t^ zxX8%tMWGx-?RVL(+na+3rirA3o%>a(-1^xlGaPhe%q7iTy}C2lWVd5};!Iahi}Mq# z9Np$JS|$yWqG7mt4P`)I4QmLDT-9^c#t(76$BAFY)^ly$bS*=+7$}J=srtAb1AP{+ zebW^JcGT{kwY6*EP(ra7uz*Gng@!nF^%^tlu|6Kc5$Y@uUS}V)gKAbj-sqy z#09s$YKEKZ1o^E-G;w?kaqfqO<_GN_2N@ajf8BFlDWK}sZwLh?Wz0b|j^-fTX`+D; z=Z|Znm`xm)uD)HQj5PVi1tHE%Ycm5Y)ivS_K1wnLd*wc(8Pyc|90X9)$N9sIFI127 zX%hG``k=p;Vs4>l=jvwBk)10<4%UIzGu5&+Yy%bX(E{93N%nggb6oj$SDA)3{Xs50 zT1dL(qaJa_$@LzXB{daZDzj43>27;^SktKo-zx5OwQ;7klHo`%m*lb~^t8WdlyX!+ zv%V2MYn{WICYt}J35^?XD#p+QJniQ;QSl&k??~VJT^+>54y7Mip4Hl=y)$yG(_d1ZtGq-zu;i zIW>^^(x88B?+MAAl@bcd+(9=)aFVM`794y^K*S9F9=nUT+s|H1Sw=jCpC`_H->twylsR5Ou-H$-&&DeGs#vD9<%l{0mgf}YDIZ?0i zXN3JZ~4fdO0qV0U}Ed8U5REP4V5nbNqySuSku+q&{O#Tk;260 zO`8m*-Oxst|C}~W*3KI`pu;uypTb8!JmlLoYW4NIe@gCs6WfiY?8N2(D+#4v9Nbjm zOKc4J9MeM(H*UlbXLqQL7PpZ&zqgJ|SYaZcfK3!K+ZhQou_$Zk5If%z=NHTv<+Bb_ z+C>bH{t*}RlVG}f-(=jGM2iytr_%1npm&ccB=5LU#W`0)1xHWbBRTCbpcU(Y()q}3 zKZks-NQ<>n&rx6Y$+&ELv&2d11iGKhg6!3-uXi$I!3bf;m zMmVz4F?2(U5S?-fMk68&loSx1{(fbp`xVH?MmidiYM?ZV=w!s4f_v2sX(AhqAnAr^ zBJcJYvC<_4?tH~avZB$fm^Emgo2heVWA->}W+ZIC%Y=7a^|Iq_>Y&UQw?-|-((azN zLy})dPwK#Df`1u_o}W9=cXGS;{N}^r&wVYpMDoE&_C8F)^=I@*k6Z7LAltjTY!WV~ zi2JaYf@Ps2F+H~A?|$$eV>&FahV-jRA(0fbjoU)_%kMqnQad&?KY3|vXMS!K`2Oy$ zY)RIs*X!#^1EdLA$y0@{WjDLDpg58O-@`R=BZkijJD-8)c{PK%oja`)ncs%LbZ#sVC&Y@J?*VRkLW?$^<>qA%lyKLsfG@D29Y|Hf5 zQ*FX-8_dJ+D+|5LH9KM%J_A8Zy2>HXR_m?EEp!rV^{wU-r^o4QSGGt`f`e2xq5sHX z@m(r^%24`dWOgR5$IeQW9{g%8mB#&8HxwZB2waWg+m9i-%dYsQIVtPq)F;;1+Pdx- z3*cTQP1d;2cT+$${3CSa>bdT$+}gf7DfCnSz6|Nh6`xooDJssjlXP5bkE zkj8@S)0XGjKlnV)Ith%AaTQGm5^FvoFQ^x%ouHXJwAa%|-|qF*Ry3!$J40;pOC_f5 z-q2)&z_n%J!kBmXYa`0*`1P%84-fXs1-SyW>rYb8u67>v`M4+U19&U#-$vRam1b_2 zbm^v7Q#G=*+Zhs&+RYU)F3D`x1a{Tm5O!An`lPMrST_rB*^Lw>yYTP&w^AW#)O%^_ z3)_?zZwd~s*`G4~UJ1%C54G>SLp8V3o%fp?ZG4bgnF|%jxQnujJn3}hRv?-&4*f9C z654JKt34XfU0c4o6DgFt+xV8^n49n{nB40=OWJFH6a-u8!})xU zv|)qp@fOVXW|C}`>)h~=+|o{o!~2-U7Ml7d(0_g*Vup_P#$^1uYGaoa%pq~TE3>hj z^)PBKqb`d)IdkXvAhzt95v=cHmlyGdw&jBB{o7XXKmRhfLKf3ji) zkI(Wi8*aL@4dQftgtKW9r=lY_$Li2B=g{J)3!NQ@U2WOWqB{{`tJ5#7!|_zJW&!gw zh-)8dJZ{W;^E4puvr|8i852Qao!$<>ypSAmexKo2-yDOXMkQW{44#4Hlukyho48Sp(63UHjnI&a&7*&Np2oB08f3q zN+gMD*chn|xNao+{n&0MH;$zf^)2g|kB#KaU*mCEfbce?Rl>_MB(O+7{9pH zBI$R;DSuZJqk6=ka2_1CMq{S%zhayqN$9)%)+F0Z)Mt)>9NFq;OY_13WD-sdBMb0r9#ys|2d*@oRM2%ymm zr^~rt2-*bJ+Sy_xVk3d1Xs#bNBxGKzwM%WfJ75Lc2_`ifki`kEwXqufB`$0NixA)l z(7$#i(>!|>XQUuFpoMJfUxC;yHBB|*jOM6+Wnm~$oWL4_P?(k_p+p&+l#5t`7?B?evd+G zC+ljfS!K|ji{Smai}HND2Ekjhi}GR|+6XE6|82yns{c`o8#ha!Hkk=ebFB}ywP#$$ zmC_Ma(-y^)EsO)UZH!4X{GEs~y2b`Dam3CkeBgH@U*FdBGAPJ#^Q7|?4|X2W5M5%U zE5*vzX>u69k?-4%=Q3!;son;|sCkY%>{iF(Ntvh@h0GkCx~VVa(<#UQaP}5Jb+p@> zFs{KZxVr_{;1VD~gIjQS5AG1$-66O;!7V^=4-i}f!3hrk%XjXaGk5Av)zn|LpYC4r zEO}S&-n)?Q5ELDQS9mQWuW3$UjNH2uA`KuF*g~KM$6mvozB1a+X(rK8%4nw1QOF2% zuKGGA%C|7Ro14XGaWQX#H?sFSv)o+x$LqFdBBP)3z-FfRVeEl&KC5P5}9{l_a8OO-{Rv?nxXw}&1t@STw2R`dn7bmu(=h4?j(5u8w zhG%6Oi=Z08>0LsRO?* z(^t?pC`K2Be#lzSZXlEp-@4)aa{@50GTmFSn0VVIcd(??xyGEdBsO|V^%qtA;-FwL z`IB94Pk&h8^EAbjQaAs;pP0p@@@J5M&d41dr)00Dgg6IPrZ8uJc7&WJX|TKS_o9lJ zI~Src^s+5;HAQ0S89ztCfuaho+E1Z!npV+Us33^W_Dhh~ArM5%Db5X~+od?Mr?(oD zT-{KfPmgHt0|am57Xr)qKZK(H5H31g0fFZ7=syIph8IGH*$Y8=>4m_Q{~tmE!wcc- z&p-bm{3}D6-3vkQAHrq`baj~Bw~@c%;(Z1pb$1M?Sx`}aNx`NsC6z_H*pfcU(wCAVlwSyVMgR05`%e#vS}z&a8(vE4v3ThrU`ETW zqz|_Eg@7#o4b@-x16Bf zeP>0^)%Vnc__d@C6I;!SK&IQp;Aicv1TlQa1-bou0XDXb6){)%UJlaPYz(ZB-(yg?{8Y^~P z!K-rjZ^iDCn$x|MQ@CD1t3=L}4uvsi%05rJTu{_5CI(Q=nzOKd;!JtXnJ)JVe~j7? zc(zRG7%l>}Ay9Lr%S8h9An-;6-qYqRaqQ`Gg+SD#td$sl$JFBy1B)bO7@i-ek#9_u zOh*__%>cwQAevGor@q0IdruHfU45a|W33DQo*H;xr5anaz$Wxy2U1fGSx7 zxH19PWZ?D#xZwad5XErp9g`9drW|KQ|9oXXcSS#UWq(see^X_Dx|$&~V=XabtuABj zTgKX^q{YrSjk<+*Oh3)2lD8`cp&q3SWyUR-(AhBMq@w!cp`{FmMJa2yV-M!z*$P^X zSIk-XtT|JN*wW=3&z=2&Y8!OUZorxHo?whxMapTo0ffwQ77wYO_ee_TDu)P-@wm7*t_>M#bPuGDvtmd2`!~1 zGApxw0J#9MGAkcPscac+F?qPG0So~w0ZajaF6m8{B!dMzUlMy-rfkMIMG_m3tsLJb zae%!Yf5gY05^_~e%Xdld&Egn`Uhq=t1C0S;{wE)i2+Vthd^yT_=EA6pAgkwdXQM=RLQcef4Q#x&H z<}AeA>2lJMyVGD~2Vi8Ev2hyw;A|pcgOYXfhlH#eV0dE-lPC`gNRSdaNW@U&w}D9< zC+H}2l43n*pOS0)bQ#YAL^&YV0nu_ht_t6yuvIp^yD(1rEE`M_;>h_b_aJ8n0C3aT8axhP|te+^OosyWwaK3}Xk zUu-yEtUF(9IycwyIMVPq0$WXwhA2Vyj<0>gm-rpVVp6PWJ_RZ77x$^LxXy?A-=CXp z(%f?N0Z;-I02l#m0mvjgq$SEcyZ*FPzxC zJ5#;kY^)}if|y^Jx;j4?KhF<%el*_q2zh-b2lT|c9oE7G-S>~ z$dUd7TtDjiq?~?&E6!2Ll#c7DIg5ZTXUY!07?eywtM!OEO9prP4^u$W1mZXldD4I2 z0#Oo(!{#j7z^VpBRUnQ5E_jn>ai;&!1EJ;d$4tN<^3-vF@PK@j3Bs?Mvv~dj=rd>e z2Hvr{z?B8Kr2scZ;0B@`rBCTJfeLIi#wxYPz}7}<%tmv}Mth8_a#u^uNkGl%o0^lS znv+d=t9L=GPW6;d)r2_<9(($aE5fmzmdiYmejswC|3G;?wgVTn>nJYe)S5b_!vca5 zf@-6HS_-I*fZ72B=rw0a0c8|L?mAikaS(`ryaPlJAoiHEr~_*f5KVwM07PJ&10ojS zgC$zw0!WEIA1a7~9 zDP(S?ZEgi@zs{{B&k?C}Vw?Z-LD7<**IhNYl0B!hY-tPLd}~&mDJNiILnC+3AElgb zYo>IBK&Tjku^lkg^FW{?FKG1wBP0bwLIbM--m2#XKn*UT58x6i1g4_^yul^(7FMfY+1DI+j7=YdX+f>ECRP(@1WzpHw z87~RPaC)Vjg2SeC$Spb5U%yFbd_^#Z6B4<|F;#403;yDllKzMUbbvhu90PzbDLFf`7(g1z}P+0-c7qs?*Wil89 zDF8W@Bb{*+6jKFY`+5uqybF*bfE!q^Uht7)FkoI)1EOdEx7ny&B$V=2m-1Gy{ZQV@ zT;6I^-uiV;=ZB^3cT3v^OWO&{DjTk5J5Kc@u5`w~AhEcV(|}JwEBJh`dg%q6pxygK770StIEU9_U8i3mi*xEbgve8-_^$~)MTh`_YB8UHg;XWiP2SejnLkWe)w}|5(MRXM2EseTF@g_dd8-sVaQV&C8xKaqieYi3f zVRT!q3t?qjO#{Z&k&yyQxD^M-KX1jc5?Z>Iiw;Vzm5WN*u%Hbp2|7v%@uM@BVr8R< zKMfR~Fn&p{)jW=@3cw5i2S7c56M!>Wt5`THRdCY2h+{A&@w+O;eCXkStJUeI{I`*) z`D1nRB;ey26JMN^DHToso8o_G?IAgn?I8(>s^`M;{cjk?8EGJ+Hf)_}6H7y-Qm32o zPpmL`3GyCZ`7ZeYL}h}$--*@?=bP- zym1(vyi62MDHg@4TaiXwC|CwKmQL&vvVUa&b-#Ezj%K#K1T{4nkEa z;x|Vr$t-@UqJo}FN5ZBfZn=4%8}Q#F!-4?$F2S0em$KjfVRjsGY1zeA)U z|I>KM|Hb@I?TnD>C6l0WoR`MMK;s|HML}=OL(~-TF9-i>vemfgUyY`8zMLihC+@iq z$~)9v&j}qO&BeL|TXq2~wuvR7Qemhah*)MZyhM44P$mx24O$z0+-k}%?`zU3r}T%4 zf@ASvQWSkzL_kn4nFh_wC4vY`ZDL$Tx_PoM>vbTatnqKF>dP|zm)bG-Kf(VULLP49 z{l8fMqxmI+>eJ6=r(g!=m%?B{VGS?oabMC0=ukMK|5qI#lbqVWvN;~e{m&u6L!9r_ zL|zL(sxP9n^y+ovEJ3R0Ldyhk@yBWvO99U8%RsbzyKyWHmR~o9Rqkues#)2PDdviL zo;8wdi*lg`6c!V}i%zSc9G|y9jPArkwC~hGRP20#$lNJ|h}=PhyctP=s!1w_S!Yl{ z?*5pKF|-_yYb_JeR7kBoUB_%OklbJ?r&Uj#RYRTCK;2;~$8RFXZzIQVB*$+h$8RRb zZzuQpSMp^D^FaXfK|b?AJo7;v^T8M9gEHoWbY_cR$qfc_ZMJf4U~3`QW+K;SBe&E* zZSyn!crpHXDgO9pe3OmL^*1@KU%NpKP86AOu6h#Xx8e5kOE?%~7R&VCjRs@GzTu-7_N#Td8hpzjT@Y?kD$caaNHnQ5c!lRa*;S*LcRmE;wu zwAvXKvDHD|hAYk?Mo&X-xW5u%TtjF$7t2k;gRX4HHs9G1VXTJH^5B{rvGP}|g4gnR zJNcE+pZnLVh6A-UeQ(IPs(%TCYp-ijrk#^L*j5kGnm6UcH$4+nv(Tp z_#fH8IX2=Cjhd37W%yTE!PQma54D++9j5zNY_%bb+obyoTEm^!{9F0oJpNB1nvsEb z%^dC`77Od!Rzsy+1Jv7hjFW*4P`4{cmt;D0J&m6jCyN`Pyk!}4Bh+#gEMOC-k?4wW z_C>WI|1>}?S->{T0LMzdbS+4(#usuf>ofiFD1!L}vnnXN*LOgWJ@n`ye^pdekCiwe z(X(>{y%6ub3(T8mz;8psQOJVwnz8*6TlYH+!8i06C% zZONEGwKBN)X~1kPBv27N_CGpBqyi_57bipDB>564>?IN#i1bg6evsooPEgu6bpj0h zmw3dYp-**73<0Q*ChA_!`>Y+?uHrFIWlMqqL|#)Eg=-PVlMjqSs;byRSFl{0WM*c^ z%Y45hA{;|@6~$E~a+JoWNBQz6&{5rehyEaM3FwU=_S{5&4+-Y_*`(l0lodi$43ld)vZ_4ZsJ9lPeNXG6Xc|TIT5h^mfw3H zU0_>I5Yxy2WRePmo_l$2F|pIm1m_P3tJk^5RT#i|2New%?T~uzk59e^uX|q`)m4kS zuRUUfu6yTLUnBh@Bfu2f%mU9HjrI7hT`wlL;vi$5X0f6C3OeV$4_fR^KRn?v!9uDF zJ$dTpuyqc)_1Sit6k*_DMW!gZ#@1uuRE$GUHW%oNRA+}cA)ox_}^$URgs^%-I{ z!!u#i#_!5mzMiDubqJZfi(vgaVY%{5zU^a zgr?LiO~3d2W_=u^`bPLwo485a-`B-j#z^9q;cTd*R*dGqzr#*Wroc>&roc`Psl!b6 ztHVxqDDXGw(mcj z^i9>&cD}LJBi&rA`8s2@t(4<1w8SjxgOZ!!i9J_B9R~HX2S0Qz!Rpo|`49 z7#sy`1)K@z5~sijVf^;V!IUqE1B?TOn~goBe}ZkXiET2K-!qzG*YkgrXRD4v{vtUL zZ>U+Duc6wm+OASTKaWGW<}f9~flx`-B5DqwSFq)RbAsdf#rs2*|7PI2qOQQl1=P7l zahE^fu%XJ^NJ&>9a)>IF@Jq&*-%ELIt|e8(QjI6@l8pz7HvAtmP|+Gr@;2l0mz>=z z#IwRMLM>-D(l%TFHgfA~v76hpT@HQ{JCh}(<@#LdUJymxVJpj4nW{9(u#0{11$H3c zP^Pv*L#YDEXEyVpgzr|#Ej}hafz*Ze%&?9wdpD$*dSwRln3&$u);*nYHGH#lQ;_HV zuKOPUY%q7{$MPO6 zHfMxs-x`t}3VHaZGl(n>NJ~4UKPON&UcdYEmS1IdT6h|32^=bW##{z*vmbOCPa9Mq zv(58GyF?phZE5WBg2P6bsK%klf4%Im!QKU$;1HK%o}GQZjqSf)1#1aoFk73&+7|bP z(jCR=QioqqY*uE?<)-EaZ6x1bzIAD=Cb`SLoV+d!?JV|}x|+PM2<*?ndFLmFbKioE|Al$X zm2*ut>ii6SfiJ8MtTyYD_0;FHO3A|kH{8P(4d@k^W_vcgGwznazq+Sym#(|LPa!H? z+~V0E|8x|Ou??UBSuf3_{)B$Y91Jll3@y@GrdFq@cstQNcUm+omReh0OM(E8WU8YO|yaT<5z_R5t; z_4?vNnP%wZ@?Xp4Ke3*+eX!bLSJjRW@VaHts2dhwzJ1EL`b%s&-OMWGv~cyOd`eLJ z?yt*Gc0TPR%jWeuNlUdLg8vocjByQ=9*R&$4}bpW!BoM03}XUE=$~9DE>K1v#Cu%Q zLaxN8Im?Q?2tN2VCMvL^1{UaY1~@me2F2O!N-l2y;N+^7t7bk_vQM9`U*{~&SmG?k zXCI>tRG+Y#%iPuegtr3c)}5;RM6v=cynlrBSug|lxSPwKcm;xo%?J4?V0j(21$poh z$KE$sXlctQf_z7rGBt1KQOJoBCW43T*)I4KZORDaRm!iF zxv<(}EI$}tk^TBYdw9oYs1@UX-7{zwk$gGlr4OEHLF7`0(kgG6u8+XfL zCw_av7ag_MzHAzq7c7JIw-&zs>1{&_c((^6erP??>%6b$R^EcsF|L+{eZB+2=-Q#S zx^;0u$GE~11^kMC9h(F}h!>5;Pl@9f=4-AQ$uVao4&B-Jc>nA0W^CZ;aQu4B z!)NT8)|0?~`O}dC%U?>jPEuygL7#2ZNxf@YU&+JTE==eX__ByDM>6NICXo8(wHHM} z7E%^sR>2Li(?U3(nq?qa;cFO!Lk78$zc&OuEFt~sE-JQ@13$oOK)>+9|G zeBteMC)}DJu|3kuwd0QRDa92v6CSTy(jHL?`hz4M{pAt*~g@Pi8(o@qA~IMmV0*zy4xz$!a>87bg}0_l=VsyAHig5{Vk&(M6|; zG_R(IB?G&O&e|!GxM>~w*f+OE&Ojk}(Xr;QkGMy7t-W+DAsxEDQTd(E{RfS&=wB66 zAk_&2tX%MgG2_jR1OFU$@+U8t!iCb&orRM&>C)gzHr7^)e(hKea@e%PtIqIV*P^o!E%+F>qOZ* z{3~35MV2u){Zyu@ju3?gFHZZMwt0xj_HLQf0*v-|(MUYIz$9k9|N77mpr(>)cb3kR z%9GC%&69!D7JKN?`CH7l3VYU`j4*!YIF_t=uQJR-E>2!f?D)lF;5PYM`vfVpT)Cyl z9?(R6iEn5w=`QJC(FuxZpeemHo4a<~iFk-jfz3^4t-QFY+C-1NSoAJWBJY&}$9sd| z0H4{1bcA3!CKUt~jl5Iez$zt;;u=wdgkIcW8zcejd~6}b#iAN%aw&tHUdUi^Bx&qT z>}dK-Mc!h2(T#YqfL@$ns$eT5)L`u3SHVodM8Sfv+n)`ul6#4R34-~9;eu&kvFG|- z!^P6Xf}x_X5#i0+g0Ko|6gK>N$%84891tu%vwWB+I%stcg8Gp96>+AE_|E6KSp6B= zCR5vq@ux@j$raQtgoWIdGb5EE3B z58bxV;lv+7GTdc|?N}c=OX7q2!-XMn5ckMmmUXKq{rF-1CUjJ^KzpkqG zyb4`=`Y!zNgw}NyMe2R>-S@VD)ax94@7(_;e7jBRwUwaId3!L#BYc~+_PCw#yuC-c z_8|R?76~PV5(zo@st|%6ddsiEAF(^pf7J7I!YBLnP$&G_v`yQ_R|O=a@P<#MXx?>$6v2^nQt?k^jtgtWbpej524e9 zy3P;qMat<5ON}KDnNJK4?!V@}HsB3yUG-m!RyUIUv+qz0jVNX*)nn zD+t;SNc-sJ>vdZGZPZU+Ca{CH;H2>3`~u$CkOf2Kl2yD;6@h$*6*M0`!5+y>7SVgW zQ!j(m|=HS`LKDR2F6iV}pH;$#gJQa1w< zzc~u*Ct_HXWf91lH;>*fvB3wvSc_7keXfcSu1b?N6i6b7!LS=<7)XAw=glsf$lE8# zA8Uj%4s%q)=|oUqvvi~(&2w`PzG!ztBDE2 znEjrbyJ?UJkJPp4AeQM`j!==hS&&$?B_L}c?kI^3Auo;m-(nLfOF@>@P-wTeml|bcVJc z&xdUhF(_YTMD7)yThu~-Y6M+HJgW21K{V6tUvVQr`_})MU45fyYzd9p>fMdeY`1=a zKQAkAuvcG^1VR19&%^6gjfen*#}cGQA+aAd*h$5igm`u4ABmQ%GaL?0sO!RNIpGxR zyWyDksU}Z(bsjKGazAcGE#`$1{mCCepoeua&bzkI>Nh-@(V#N*E=WT>B+Tu_gea+l zfv}7W9Xp#ijD*i64`yj+jf#a`U&}lk<<5EHW_9dGg5}+TdmV+#1JTlbeXu3xMQShU zCV!A?)iyH~)rRF*ejKDR>ea?zh`(2i7n?)BlL>xggq54<)Z?ct@5k)BHcj62;H^Lw z6(G(|2cZcSB~F9L*^P~aI-Cb#KCq2mnF>*vN|cX-^=3kAkQ}+f#7__jRZ{{|gQA7k zIBgQDB6mIZs2fl{lx}amd+ZP zrwhq@-;6EW27Qf+=RZY{U6RXo9nWhExX{9t_T5&<0Sm|!xUj-+o1dG>+&h?pC3_A7 z!h(CikLWV~R=Y`9r+2YLEDHMS;?#ye-A&saxO~`aYJ70fH49i2>9qY#NBDh#8G~?e zVUHrTji4Xy{0Cy!Q;Nze4JDsC{)X*|^K2w1`nP9RT1h6UuF(jl@Wr$f8`%|B4*Fwh z$;rir7X59(YwnP13yX^2>%(aczVciC(uZ8kByukbC4ILc;oc+&zzaGDCG= zBe&1Ky>n}+&Fz|TgUNUIj22DK%;VO(XEa6S+6*_l*o2-&t?L=M+l-&Bg9|$AcDA10 z2YpM$+hB>7IG@(Y=+a7rtIMC-C<*usZAf!FR~F5l@*wNyN)%y+IQX@l#aO` z?~u{Bj$yF}0|Bza8lPbm)YfHEK&QH28cf5V9dziPR2?Mr0ulie$|4-MV|evW7jy9-^`%6>gID!|TQh{i7tjvOzJ@&Qtn9x{(K3 z0}2;96=Dm5+wTfO4{FaP!%lisVJ$jwEt=@HwZ`;)6Wdvne_b4`DHJbk=BstiH+bEe z>+k=`s0R%mv5wsC&>{?F4R4R_jwg~KXLtRbNN=C5?bVc1Ls%vCbD~*VGoEYN^N}&p z2beSw%6O@nAmhm}b9h?v0Z-4o51D?N#n0Kz-G)~anePjfkWGP&RhoIyGd_h z;S!zGbIYurX7_p33>U60ttrWsU1qBIJpKx?%G*!XHMd(Ue zeze%uGjA$wVk%507tv5+ ztqJA`=~v75uugl#)Z1C#PbU|Dif(709j2uUvcHK#x3cHl8A&cB-OlRs;fsqiRx5+0 zn40V@N93fi;EepM3K#VbH%f~)T&myexA2|PuFCVmFeiboH(XSh$864x(k^(Og5lF; z@lji62fN#y6|D!So95v_YWVs0^1!Kh$1?+CcQoF3(d(nCG`mol?a)B-s8=NxH zC3e8w?5zpM09rM?Q9M6QB>AU?t zg3w)B_6lS9BweMFkx_*u;F`7MwaH(rvQRq4ybzvs>mA#vmv!$QmR9NYLwf4{j;DOp zWC_lKxrFUx32d{u#FBY{L#O!8(dT}b%ZaO!!~Q`XX@M%0Dl9@bVw=`%`>fQz{N9<> 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

^sO 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щI$1sFt(JX~(1SrXJ3Xe2kQxs5s!rMDh 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

?>$Zo*+*t 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 z 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

1tS*k@i(~D5QgRuwK^ZvRW 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 literal 0 HcmV?d00001 diff --git a/docs/KNOWN_BUGS.md b/docs/KNOWN_BUGS.md deleted file mode 100644 index 90202922d..000000000 --- a/docs/KNOWN_BUGS.md +++ /dev/null @@ -1,59 +0,0 @@ -# Known Bugs - -## Ubuntu 14.04, Coreutils 8.21 - -There are known bugs with relative symlinks `ln --relative`, which may cause the rollback command to fail. - -Add the following line to your _deploy.php_ file: - -```php -set('use_relative_symlink', false); -``` - -## OpenSSH_7.2p2 - -ControlPersist causes stderr to be left open until the master connection times out. - -- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=714526 -- https://bugzilla.mindrot.org/show_bug.cgi?id=1988 - -## cURL 7.29.0 - -Certificate verification fails with multiple https urls. - -- https://bugzilla.redhat.com/show_bug.cgi?id=1241172 - -## Rsync (3.1.3) - -Artifact upload with `rsync` is interrupted after the first chunk of data upload. - -``` -The command "rsync -azP -e 'ssh -A -p *** -o UserKnownHostsFile=/dev/null - -o StrictHostKeyChecking=no' 'artifacts/artifact.tar.gz' 'deploy@ssh.XXX.io:/srv/releases/2009076181'" failed. - -Exit Code: 255(Unknown error) - -Output: -================ -sending incremental file list -artifact.tar.gz - 32,768 0% 0.00kB/s 0:00:00 - -Error Output: -================ -client_loop: send disconnect: Broken pipe - -rsync: [sender] write error: Broken pipe (32) -``` - -In order to resolve (workaround) the issue, you need to add `--bwlimit=4096` to the list of options. - -Example: - -```php -task('artifact:upload', function () { - upload(get('artifact_path'), '{{release_path}}', ['options' => ['--bwlimit=4096']]); -}); -``` - -The issue was also described in the [Github Action](https://github.com/deployphp/action/issues/35). diff --git a/docs/UPGRADE.md b/docs/UPGRADE.md deleted file mode 100644 index afd567e4e..000000000 --- a/docs/UPGRADE.md +++ /dev/null @@ -1,274 +0,0 @@ -# Upgrade a major version - -## Upgrade from 6.x to 7.x - -### Step 1: Update deploy.php - -1. Change config `hostname` to `alias`. -2. Change config `real_hostname` to `hostname`. -3. Change config `user` to `remote_user`. -4. Update `host()` definitions: - 1. Add `set` prefix to all setters: `identityFile` -> `setIdentityFile` or `set('identity_file')` - 2. Update `host(...)->addSshOption('UserKnownHostsFile', '/dev/null')` to `host(...)->setSshArguments(['-o UserKnownHostsFile=/dev/null']);` - 3. Replace _stage_ with labels, i.e. - ```php - host('deployer.org') - ->set('labels', ['stage' => 'prod']); - ``` - When deploying instead of `dep deploy prod` use `dep deploy stage=prod`. - 4. `alias()` is deleted, `host()` itself sets alias and hostname, to override hostname use `setHostname()`. -5. Update `task()` definitions. - 1. Replace `onRoles()` with `select()`: - ```php - task(...) - ->select('stage=prod'); - ``` - 2. Don't use string-based task definition, it's not available anymore. Don't forget to set correct working directory. - ```php - # from - task('deploy:npm-install', 'npm clean-install'); - - # to - task('deploy:npm-install', function() { - cd('{{release_path}}'); - run('npm clean-install'); - }); - ``` -6. Third party recipes now live inside main Deployer repo in _contrib_: - ```php - require 'contrib/rsync.php'; - ``` -7. Replace `inventory()` with `import()`. It now can import hosts, configs, tasks: - - ```yaml - import: recipe/common.php - - config: - application: deployer - shared_dirs: - - uploads - - storage/logs/ - - storage/db - shared_files: - - .env - - config/test.yaml - keep_releases: 3 - http_user: false - - hosts: - prod: - local: true - - tasks: - deploy: - - deploy:prepare - - deploy:vendors - - deploy:publish - - deploy:vendors: - - run: "cd {{release_path}} && echo {{bin/composer}} {{composer_options}} 2>&1" - ``` - -8. Rename task `success` to `deploy:success` and `cleanup` to `deploy:cleanup`. -9. Verbosity functions (`isDebug()`, etc) got deleted. Use `output()->isDebug()` instead. -10. `runLocally()` commands are executed relative to the recipe file directory. This behaviour can be overridden via an environment variable: - ``` - DEPLOYER_ROOT=. vendor/bin/dep taskname` - ``` -11. Replace `local()` tasks with combination of `once()` and `runLocally()` func. -12. Replace `locateBinaryPath()` with `which()` func. -13. Configuration property `default_stage` is not supported anymore and has been dropped. -14. Replace `onHosts()` and `onStage()` with [labels & selectors](selector.md). -15. Replace `setPrivate()` with [`hidden()`](tasks.md#hidden). -16. Configuration property `writable_recursive` defaults to `false`. This behaviour can be overridden with: - ```php - set('writable_recursive', true); - ``` -17. `.git` directory is not present in release directory anymore. The previous behavior can be restored with: - ```php - set('update_code_strategy', 'clone'); - ``` - -### Step 2: Deploy - -Since the release history numbering is not compatible between v6 and v7, you need to specify the `release_name` manually for the first time. Otherwise you start with release 1. - -1. Find out next release name (ssh to the host, `ls` releases dir, find the biggest number). Example: `42`. -2. Deploy with release_name: - ``` - dep deploy -o release_name=43 - ``` - -:::note -In case a rollback is needed, manually change the `current` symlink: - -``` -ln -nfs releases/42 current -``` - -::: - -:::note -In case there are multiple hosts with different release names, you should create a `{{deploy_path}}/.dep/latest_release` file in each host with the current release number of that particular host. -::: - -## Upgrade from 5.x to 6.x - -1. Changed branch option priority - - If you have host definition with `branch(...)` parameter, adding `--branch` option will not override it any more. - If no `branch(...)` parameter persists, branch will be fetched from current local git branch. - - ```php - host('prod') - ->set('branch', 'production') - ``` - - In order to return to old behavior add checking of `--branch` option. - - ```php - host('prod') - ->set('branch', function () { - return input()->getOption('branch') ?: 'production'; - }) - ``` - -2. Add `deploy:info` task to the beginning to `deploy` task. -3. `run` returns string instead of `Deployer\Type\Result` - - Now `run` and `runLocally` returns `string` instead of `Deployer\Type\Result`. - Replace method calls as: - - - `run('command')->toString()` → `run('command')` - - `run('if command; then echo "true"; fi;')->toBool()` → `test('command')` - -4. `env_vars` renamed to `env` - - - `set('env_vars', 'FOO=bar');` → `set('env', ['FOO' => 'bar']);` - - If your are using Symfony recipe, then you need to change `env` setting: - - - `set('env', 'prod');` → `set('symfony_env', 'prod');` - -## Upgrade from 4.x to 5.x - -1. Servers to Hosts - - - `server($hostname)` to `host($hostname)`, and `server($name, $hostname)` to `host($name)->hostname($hostname)` - - `localServer($name)` to `localhost()` - - `cluster($name, $nodes, $port)` to `hosts(...$hodes)` - - `serverList($file)` to `inventory($file)` - - If you need to deploy to same server use [host aliases](https://deployer.org/docs/hosts#host-aliases): - - ```php - host('domain.com/green', 'domain.com/blue') - ->set('deploy_path', '~/{{hostname}}') - ... - ``` - - Or you can define different hosts with same hostname: - - ```php - host('production') - ->hostname('domain.com') - ->set('deploy_path', '~/production') - ... - - host('beta') - ->hostname('domain.com') - ->set('deploy_path', '~/beta') - ... - ``` - -2. Configuration options - - - Rename `{{server.name}}` to `{{hostname}}` - -3. DotArray syntax - - In v5 access to nested arrays in config via dot notation was removed. - If you was using it, consider to move to plain config options. - - Refactor this: - - ```php - set('a', ['b' => 1]); - - // ... - - get('a.b'); - ``` - - To: - - ```php - set('a_b', 1); - - // ... - - get('a_b'); - ``` - -4. Credentials - - Best practice in new v5 is to omit credentials for connection in `deploy.php` and write them in `~/.ssh/config` instead. - - - `identityFile($publicKeyFile,, $privateKeyFile, $passPhrase)` to `identityFile($privateKeyFile)` - - `pemFile($pemFile)` to `identityFile($pemFile)` - - `forwardAgent()` to `forwardAgent(true)` - -5. Tasks constraints - - - `onlyOn` to `onHosts` - - `onlyOnStage` to `onStage` - -## Upgrade from 3.x to 4.x - -1. Namespace for functions - - Add to beginning of _deploy.php_ next line: - - ```php - use function Deployer\{server, task, run, set, get, add, before, after}; - ``` - - If you are using PHP version less than 5.6, you can use this: - - ```php - namespace Deployer; - ``` - -2. `env()` to `set()`/`get()` - - Rename all calls `env($name, $value)` to `set($name, $value)`. - - Rename all rvalue `env($name)` to `get($name)`. - - Rename all `server(...)->env(...)` to `server(...)->set(...)`. - -3. Moved _NonFatalException_ - - Rename `Deployer\Task\NonFatalException` to `Deployer\Exception\NonFatalException`. - -4. Prior release cleanup - - Due to changes in release management, the new cleanup task will ignore any prior releases deployed with 3.x. These will need to be manually removed after migrating to and successfully releasing via 4.x. - -## Upgrade from 2.x to 3.x - -1. ### `->path('...')` - - Replace your server paths configuration: - - ```php - server(...) - ->path(...); - ``` - - to: - - ```php - server(...) - ->env('deploy_path', '...'); - ``` diff --git a/docs/api.md b/docs/api.md deleted file mode 100644 index 9b2f20272..000000000 --- a/docs/api.md +++ /dev/null @@ -1,565 +0,0 @@ - - - - -# API Reference - -## host() - -```php -host(string ...$hostname) -``` - -Defines a host or hosts. -```php -host('example.org'); -host('prod.example.org', 'staging.example.org'); -``` - -Inside task can be used to get `Host` instance of an alias. -```php -task('test', function () { - $port = host('example.org')->get('port'); -}); -``` - - - -## localhost() - -```php -localhost(string ...$hostnames) -``` - - - -## currentHost() - -```php -currentHost(): Host -``` - -Returns current host. - - -## select() - -```php -select(string $selector): array -``` - -Returns hosts based on provided selector. - -```php -on(select('stage=prod, role=db'), function (Host $host) { - ... -}); -``` - - - -## selectedHosts() - -```php -selectedHosts(): array -``` - -Returns array of hosts selected by user via CLI. - - - -## import() - -```php -import(string $file): void -``` - -Import other php or yaml recipes. - -```php -import('recipe/common.php'); -``` - -```php -import(__DIR__ . '/config/hosts.yaml'); -``` - - - -## desc() - -```php -desc(?string $title = null): ?string -``` - -Set task description. - - -## task() - -```php -task(string $name, $body = null): Task -``` - -Define a new task and save to tasks list. - -Alternatively get a defined task. - - - -| Argument | Type | Comment | -|---|---|---| -| `$name` | `string` | Name of current task. | -| `$body` | `callable():void` or `array` or `null` | Callable task, array of other tasks names or nothing to get a defined tasks | - -## before() - -```php -before(string $task, $do) -``` - -Call that task before specified task runs. - - - - -| Argument | Type | Comment | -|---|---|---| -| `$task` | `string` | The task before $that should be run. | -| `$do` | `string` or `callable():void` | The task to be run. | - -## after() - -```php -after(string $task, $do) -``` - -Call that task after specified task runs. - - - - -| Argument | Type | Comment | -|---|---|---| -| `$task` | `string` | The task after $that should be run. | -| `$do` | `string` or `callable():void` | The task to be run. | - -## fail() - -```php -fail(string $task, $do) -``` - -Setup which task run on failure of $task. -When called multiple times for a task, previous fail() definitions will be overridden. - - - - -| Argument | Type | Comment | -|---|---|---| -| `$task` | `string` | The task which need to fail so $that should be run. | -| `$do` | `string` or `callable():void` | The task to be run. | - -## option() - -```php -option(string $name, $shortcut = null, ?int $mode = null, string $description = '', $default = null): void -``` - -Add users options. - - - -| Argument | Type | Comment | -|---|---|---| -| `$name` | `string` | The option name | -| `$shortcut` | `string` or `array` or `null` | The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts | -| `$mode` | `int` or `null` | The option mode: One of the VALUE_* constants | -| `$description` | `string` | A description text | -| `$default` | `string` or `string[]` or `int` or `bool` or `null` | The default value (must be null for self::VALUE_NONE) | - -## cd() - -```php -cd(string $path): void -``` - -Change the current working directory. - - -## within() - -```php -within(string $path, callable $callback) -``` - -Execute a callback within a specific directory and revert back to the initial working directory. - - - -## run() - -```php -run(string $command, ?array $options = [], ?int $timeout = null, ?int $idle_timeout = null, ?string $secret = null, ?array $env = null, ?bool $real_time_output = false, ?bool $no_throw = false): string -``` - -Executes given command on remote host. - -Examples: - -```php -run('echo hello world'); -run('cd {{deploy_path}} && git status'); -run('password %secret%', secret: getenv('CI_SECRET')); -run('curl medv.io', timeout: 5); -``` - -```php -$path = run('readlink {{deploy_path}}/current'); -run("echo $path"); -``` - - - - -| Argument | Type | Comment | -|---|---|---| -| `$command` | `string` | Command to run on remote host. | -| `$options` | `array` or `null` | Array of options will override passed named arguments. | -| `$timeout` | `int` or `null` | Sets the process timeout (max. runtime). The timeout in seconds (default: 300 sec; see {{default_timeout}}, `null` to disable). | -| `$idle_timeout` | `int` or `null` | Sets the process idle timeout (max. time since last output) in seconds. | -| `$secret` | `string` or `null` | Placeholder `%secret%` can be used in command. Placeholder will be replaced with this value and will not appear in any logs. | -| `$env` | `array` or `null` | Array of environment variables: `run('echo $KEY', env: ['key' => 'value']);` | -| `$real_time_output` | `bool` or `null` | Print command output in real-time. | -| `$no_throw` | `bool` or `null` | Don't throw an exception of non-zero exit code. | - -## runLocally() - -```php -runLocally(string $command, ?array $options = [], ?int $timeout = null, ?int $idle_timeout = null, ?string $secret = null, ?array $env = null, ?string $shell = null): string -``` - -Execute commands on a local machine. - -Examples: - -```php -$user = runLocally('git config user.name'); -runLocally("echo $user"); -``` - - - - -| Argument | Type | Comment | -|---|---|---| -| `$command` | `string` | Command to run on localhost. | -| `$options` | `array` or `null` | Array of options will override passed named arguments. | -| `$timeout` | `int` or `null` | Sets the process timeout (max. runtime). The timeout in seconds (default: 300 sec, `null` to disable). | -| `$idle_timeout` | `int` or `null` | Sets the process idle timeout (max. time since last output) in seconds. | -| `$secret` | `string` or `null` | Placeholder `%secret%` can be used in command. Placeholder will be replaced with this value and will not appear in any logs. | -| `$env` | `array` or `null` | Array of environment variables: `runLocally('echo $KEY', env: ['key' => 'value']);` | -| `$shell` | `string` or `null` | Shell to run in. Default is `bash -s`. | - -## test() - -```php -test(string $command): bool -``` - -Run test command. -Example: - -```php -if (test('[ -d {{release_path}} ]')) { -... -} -``` - - - -## testLocally() - -```php -testLocally(string $command): bool -``` - -Run test command locally. -Example: - - testLocally('[ -d {{local_release_path}} ]') - - - -## on() - -```php -on($hosts, callable $callback): void -``` - -Iterate other hosts, allowing to call run a func in callback. - -```php -on(select('stage=prod, role=db'), function ($host) { - ... -}); -``` - -```php -on(host('example.org'), function ($host) { - ... -}); -``` - -```php -on(Deployer::get()->hosts, function ($host) { - ... -}); -``` - - - -## invoke() - -```php -invoke(string $taskName): void -``` - -Runs a task. -```php -invoke('deploy:symlink'); -``` - - - -## upload() - -```php -upload($source, string $destination, array $config = []): void -``` - -Upload files or directories to host. - -> To upload the _contents_ of a directory, include a trailing slash (eg `upload('build/', '{{release_path}}/public');`). -> Without the trailing slash, the build directory itself will be uploaded (resulting in `{{release_path}}/public/build`). - - The `$config` array supports the following keys: - -- `flags` for overriding the default `-azP` passed to the `rsync` command -- `options` with additional flags passed directly to the `rsync` command -- `timeout` for `Process::fromShellCommandline()` (`null` by default) -- `progress_bar` to display upload/download progress -- `display_stats` to display rsync set of statistics - -Note: due to the way php escapes command line arguments, list-notation for the rsync `--exclude={'file','anotherfile'}` option will not work. -A workaround is to add a separate `--exclude=file` argument for each exclude to `options` (also, _do not_ wrap the filename/filter in quotes). -An alternative might be to write the excludes to a temporary file (one per line) and use `--exclude-from=temporary_file` argument instead. - - - - -## download() - -```php -download(string $source, string $destination, array $config = []): void -``` - -Download file or directory from host - - - - -## info() - -```php -info(string $message): void -``` - -Writes an info message. - - -## warning() - -```php -warning(string $message): void -``` - -Writes an warning message. - - -## writeln() - -```php -writeln(string $message, int $options = 0): void -``` - -Writes a message to the output and adds a newline at the end. - - -## parse() - -```php -parse(string $value): string -``` - -Parse set values. - - -## set() - -```php -set(string $name, $value): void -``` - -Setup configuration option. - - -## add() - -```php -add(string $name, array $array): void -``` - -Merge new config params to existing config array. - - - -## get() - -```php -get(string $name, $default = null) -``` - -Get configuration value. - - - - -## has() - -```php -has(string $name): bool -``` - -Check if there is such configuration option. - - -## ask() - -```php -ask(string $message, ?string $default = null, ?array $autocomplete = null): ?string -``` - - - -## askChoice() - -```php -askChoice(string $message, array $availableChoices, $default = null, bool $multiselect = false) -``` - - - -## askConfirmation() - -```php -askConfirmation(string $message, bool $default = false): bool -``` - - - -## askHiddenResponse() - -```php -askHiddenResponse(string $message): string -``` - - - -## input() - -```php -input(): InputInterface -``` - - - -## output() - -```php -output(): OutputInterface -``` - - - -## commandExist() - -```php -commandExist(string $command): bool -``` - -Check if command exists - - - -## commandSupportsOption() - -```php -commandSupportsOption(string $command, string $option): bool -``` - - - -## which() - -```php -which(string $name): string -``` - - - -## remoteEnv() - -```php -remoteEnv(): array -``` - -Returns remote environments variables as an array. -```php -$remotePath = remoteEnv()['PATH']; -run('echo $PATH', env: ['PATH' => "/home/user/bin:$remotePath"]); -``` - - -## error() - -```php -error(string $message): Exception -``` - -Creates a new exception. - - -## timestamp() - -```php -timestamp(): string -``` - -Returns current timestamp in UTC timezone in ISO8601 format. - - -## fetch() - -```php -fetch(string $url, string $method = 'get', array $headers = [], ?string $body = null, ?array &$info = null, bool $nothrow = false): string -``` - -Example usage: -```php -$result = fetch('{{domain}}', info: $info); -var_dump($info['http_code'], $result); -``` - - diff --git a/docs/avoid-php-fpm-reloading.md b/docs/avoid-php-fpm-reloading.md deleted file mode 100644 index bb34d85e4..000000000 --- a/docs/avoid-php-fpm-reloading.md +++ /dev/null @@ -1,54 +0,0 @@ -# Avoid PHP-FPM Reloading - -Deployer symlinks _current_ to latest release dir. - -``` -current -> releases/3/ -releases/ - 1/ - 2/ - 3/ -``` - -## The problem - -PHP Opcodes get cached. And if `SCRIPT_FILENAME` contains _current_ symlink, on -new deploy nothing updates. Usually, a solution is simple to reload **php-fpm** -after deploy, but such reload can lead to **dropped** or **failed** requests. -The correct fix is to configure your server set `SCRIPT_FILENAME` to a resolved path. -You can check your server configuration by printing `SCRIPT_FILENAME`. - -```php -echo $_SERVER['SCRIPT_FILENAME']; -``` - -If it prints something like `/home/deployer/example.com/current/index.php` with -_current_ in the path, your server configured incorrectly. - -## Fix for Nginx - -Nginx has special variable `$realpath_root`, use it to set up `SCRIPT_FILENAME`: - -```diff -location ~ \.php$ { - include fastcgi_params; - fastcgi_pass unix:/var/run/php/php-fpm.sock; -- fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; -+ fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name; -} -``` - -## Fix for Caddy - -:::tip -If you're already using servers provisioned by Deployer, you don't need to fix -anything, as everything is already configured properly. -::: - -Use `resolve_root_symlink`: - -``` -php_fastcgi * unix//run/php/php-fpm.sock { - resolve_root_symlink -} -``` diff --git a/docs/basics.md b/docs/basics.md deleted file mode 100644 index 6b64acb59..000000000 --- a/docs/basics.md +++ /dev/null @@ -1,239 +0,0 @@ -# Basics - -Deployer has two main concepts: [**hosts**](hosts.md) and [**tasks**](tasks.md). - -A **recipe** is a file containing definitions for **hosts** and **tasks**. - -Deployer CLI requires two arguments to run: a **task** to run and a **selector**. - -``` -$ dep deploy deployer.org - --- ------ ------------ - | | | - | | `--- Selector - | `------------- Task - `------------------ CLI -``` - -Deployer uses the [selector](selector.md) to choose hosts. Next, it takes the given -task, performs some preparation (described later), and executes the task on all -selected hosts. - -If a selector is not specified, Deployer will ask you to choose a host from a list. -If your recipe contains only one host, Deployer will automatically choose it. -To select all hosts, specify a special selector: `all`. - -The `dep` CLI looks for a `deploy.php` or `deploy.yaml` file in the current directory. - -Or a recipe can be specified explicitly via `-f` or `--file` option. - -``` -$ dep --file=deploy.php deploy deployer.org -``` - -Let's write a recipe. - -```php -// We are going to use functions declared primarily in the Deployer namespace, -// to simplify the recipe, we will also use the Deployer namespace. Alternatively, -// you can import individual functions via "use function". -namespace Deployer; - -host('deployer.org'); - -task('my_task', function () { - run('whoami'); -}); -``` - -Let's try to run our task on deployer.org. - -``` -$ dep my_task -task my_task -$ -``` - -But where is our `whoami` command output? By default, Deployer runs with normal verbosity -level and shows only the names of executed tasks. Let's increase verbosity to verbose, and -rerun our task. - -Add `-v` option to increase verbosity. Read more about [CLI usage](cli.md). - -``` -$ dep my_task -v -task my_task -[deployer.org] run whoami -[deployer.org] deployer -$ -``` - -Now let's add a second host: - -```php -host('deployer.org'); -host('medv.io'); -``` - -How does Deployer know how to connect to a host? It uses the same `~/.ssh/config` file as -the `ssh` command. Alternatively, you can specify [connection options](hosts.md) in the recipe. - -Let's run `my_task` task on both hosts: - -``` -$ dep my_task -v all -task my_task -[deployer.org] run whoami -[medv.io] run whoami -[medv.io] anton -[deployer.org] deployer -``` - -Deployer runs a task in parallel on each host. This is why the output is mixed. -We can limit it to run only on one host at a time. - -``` -$ dep my_task -v all --limit 1 -task my_task -[deployer.org] run whoami -[deployer.org] deployer -[medv.io] run whoami -[medv.io] deployer -``` - -It is also possible to specify a [limit level](tasks.md#limit) for each individual task. -By specifying the limit level for each task, you can control the degree of parallelism -for each part of your deployment process. - -Each host has a configuration: a list of key-value pairs. Let's define our first -configuration option for both our hosts: - -```php -host('deployer.org') - ->set('my_config', 'foo'); -host('medv.io') - ->set('my_config', 'bar'); -``` - -In the task we can get the currently executing host using the [currentHost](api.md#currenthost) function: - -```php -task('my_task', function () { - $myConfig = currentHost()->get('my_config'); - writeln("my_config: " . $myConfig); -}); -``` - -Or with the [get](api.md#get) function: - -```diff -task('my_task', function () { -- $myConfig = currentHost()->get('my_config'); -+ $myConfig = get('my_config'); - writeln("my_config: " . $myConfig); -}); -``` - -Or via the [parse](api.md#parse) function which replaces the `{{ ... }}` brackets -and their enclosed values with the corresponding configuration option. - -All functions (writeln, run, runLocally, cd, upload, etc) call the **parse** function -internally. So you don't need to call the **parse** function by yourself. - -```diff -task('my_task', function () { -- $myConfig = get('my_config'); -- writeln("my_config: " . $myConfig); -+ writeln("my_config: {{my_config}}"); -}); -``` - -Let's try to run our task: - -``` -$ dep my_task all -task my_task -[deployer.org] my_config: foo -[medv.io] my_config: bar -``` - -Awesome! Each host configuration inherits global configuration. Let's refactor -our recipe to define one global config option: - -```php -set('my_config', 'global'); - -host('deployer.org'); -host('medv.io'); -``` - -The config option `my_config` will be equal to `global` on both hosts. - -Additionally, the value of a config option can be defined as a callback. -This callback is executed upon its first access, and the returned result -is then stored in the host configuration. - -```php -set('whoami', function () { - return run('whoami'); -}); - -task('my_task', function () { - writeln('Who am I? {{whoami}}'); -}); -``` - -Let's try to run it: - -``` -$ dep my_task all -task my_task -[deployer.org] Who am I? deployer -[medv.io] Who am I? anton -``` - -We can use this to create a dynamic configuration which uses information from the current host. - -Only the first call will trigger the callback execution. All subsequent checks use the previously -saved value. - - -Here is an example: - -```php -set('current_date', function () { - return run('date'); -}); - -task('my_task', function () { - writeln('What time is it? {{current_date}}'); - run('sleep 5'); - writeln('What time is it? {{current_date}}'); -}); -``` - -If we run my_task, we will see that `date` is called only once on -`{{current_date}}` access. - -``` -$ dep my_task deployer.org -v -task my_task -[deployer.org] run date -[deployer.org] Wed 03 Nov 2021 01:16:53 PM UTC -[deployer.org] What time is it? Wed 03 Nov 2021 01:16:53 PM UTC -[deployer.org] run sleep 5 -[deployer.org] What time is it? Wed 03 Nov 2021 01:16:53 PM UTC -``` - -We can override a config option via CLI option `-o` like this: - -``` -$ dep my_task deployer.org -v -o current_date="I don't know" -task my_task -[deployer.org] What time is it? I don't know -[deployer.org] run sleep 5 -[deployer.org] What time is it? I don't know -``` - -Since the `current_date` config option is overridden there is no need to call the callback. -So there is no 'run date'. diff --git a/docs/ci-cd.md b/docs/ci-cd.md deleted file mode 100755 index f478b6a03..000000000 --- a/docs/ci-cd.md +++ /dev/null @@ -1,99 +0,0 @@ -# CI/CD - -## GitHub Actions - -Use official [GitHub Action for Deployer](https://github.com/deployphp/action). - -Create `.github/workflows/deploy.yml` file with following content: - -```yaml -name: deploy - -on: - push: - branches: [master] - -concurrency: production_environment - -jobs: - deploy: - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v3 - - - name: Setup PHP - uses: shivammathur/setup-php@v2 - with: - php-version: "8.1" - - - name: Install dependencies - run: composer install - - - name: Deploy - uses: deployphp/action@v1 - with: - private-key: ${{ secrets.PRIVATE_KEY }} - dep: deploy -``` - -:::warning -The `concurrency: production_environment` is important as it prevents concurrent -deploys. -::: - -## GitLab CI/CD - -Set the following variables in your GitLab project: - -- `SSH_KNOWN_HOSTS`: Content of `~/.ssh/known_hosts` file. - The public SSH keys for a host may be obtained using the utility `ssh-keyscan`. - For example: `ssh-keyscan deployer.org`. -- `SSH_PRIVATE_KEY`: Private key for connecting to remote hosts. - To generate a private key: `ssh-keygen -t ed25519 -C 'gitlab@deployer.org'`. - -Create a .gitlab-ci.yml file with the following content: - -```yml -stages: - - deploy - -deploy: - stage: deploy - image: - name: deployphp/deployer:7 - entrypoint: [""] - before_script: - - mkdir -p ~/.ssh - - eval $(ssh-agent -s) - - echo "$SSH_KNOWN_HOSTS" > ~/.ssh/known_hosts - - chmod 644 ~/.ssh/known_hosts - - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null - script: - - dep deploy -vvv - resource_group: production - only: - - master -``` - -### Deployment concurrency - -Only one deployment job runs at a time with the [`resource_group` keyword](https://docs.gitlab.com/ee/ci/yaml/index.html#resource_group) in .gitlab-ci.yml. - -In addition, you can ensure that older deployment jobs are cancelled automatically when a newer deployment runs by enabling the [skip outdated deployment jobs](https://docs.gitlab.com/ee/ci/pipelines/settings.html#prevent-outdated-deployment-jobs) feature (enabled by default). - -### Deploy secrets - -It is not recommended to commit secrets to the repository, you could use a GitLab variable to store them instead. - -Many frameworks use dotenv to store secrets, let's create a GitLab file variable named `DOTENV`, so it can be deployed along with the code. - -Set up a deployer task to copy secrets to the server: - -```php -task('deploy:secrets', function () { - upload(getenv('DOTENV'), '{{deploy_path}}/shared/.env'); -}); -``` - -Run the task immediately after updating the code. diff --git a/docs/cli.md b/docs/cli.md deleted file mode 100755 index d32d8e6a7..000000000 --- a/docs/cli.md +++ /dev/null @@ -1,148 +0,0 @@ -# CLI Usage - -We recommend adding the following alias to your .bashrc file: - -```bash -alias dep='vendor/bin/dep' -``` - -It is also recommended to install the completion script for Deployer. Completion supports: - -- tasks, -- options, -- host names, -- and configs. - -For example, on macOS run the following commands: - -```bash -brew install bash-completion -dep completion bash > /usr/local/etc/bash_completion.d/deployer -``` - -## Overriding configuration options - -For example, if your _deploy.php_ file contains this configuration: - -```php -set('ssh_multiplexing', false); -``` - -And you want to enable [ssh multiplexing](https://en.wikibooks.org/wiki/OpenSSH/Cookbook/Multiplexing) without modifying the recipe, you can pass the `-o` option to the `dep` command: - -``` -dep deploy -o ssh_multiplexing=true -``` - -To override multiple config options, you can pass multiple `-o` args: - -``` -dep deploy -o ssh_multiplexing=true -o branch=master -``` - -## Running arbitrary commands - -Run any command on one or more hosts: - -``` -dep run 'uptime -p' -``` - -## Tree command - -Deployer supports [task grouping](tasks.md#task-grouping) and [before/after hooks](tasks.md#addbefore). -To visualize the task hierarchy, use the **dep tree** command. - -``` -$ dep tree deploy -The task-tree for deploy: -└── deploy - ├── deploy:prepare - │ ├── deploy:info - │ ├── deploy:setup - │ ├── deploy:lock - │ ├── deploy:release - │ ├── deploy:update_code - │ ├── build // after deploy:update_code - │ ├── deploy:shared - │ └── deploy:writable - ├── deploy:vendors - ├── artisan:storage:link - ├── artisan:config:cache - ├── artisan:route:cache - ├── artisan:view:cache - ├── artisan:migrate - └── deploy:publish - ├── deploy:symlink - ├── deploy:unlock - ├── deploy:cleanup - └── deploy:success -``` - -## Execution plan - -Before executing tasks, Deployer needs to flatten the task tree and decide in which order it will be executing tasks -on which hosts. Use the `--plan` option to output a table with tasks/hosts: - -``` -$ dep deploy --plan all -┌──────────────────────┬──────────────────────┬──────────────────────┬──────────────────────┐ -│ prod01 │ prod02 │ prod03 │ prod04 │ -├──────────────────────┼──────────────────────┼──────────────────────┼──────────────────────┤ -│ deploy:info │ deploy:info │ deploy:info │ deploy:info │ -│ deploy:setup │ deploy:setup │ deploy:setup │ deploy:setup │ -│ deploy:lock │ deploy:lock │ deploy:lock │ deploy:lock │ -│ deploy:release │ deploy:release │ deploy:release │ deploy:release │ -│ deploy:update_code │ deploy:update_code │ deploy:update_code │ deploy:update_code │ -│ build │ build │ build │ build │ -│ deploy:shared │ deploy:shared │ deploy:shared │ deploy:shared │ -│ deploy:writable │ deploy:writable │ deploy:writable │ deploy:writable │ -│ deploy:vendors │ deploy:vendors │ deploy:vendors │ deploy:vendors │ -│ artisan:storage:link │ artisan:storage:link │ artisan:storage:link │ artisan:storage:link │ -│ artisan:config:cache │ artisan:config:cache │ artisan:config:cache │ artisan:config:cache │ -│ artisan:route:cache │ artisan:route:cache │ artisan:route:cache │ artisan:route:cache │ -│ artisan:view:cache │ artisan:view:cache │ artisan:view:cache │ artisan:view:cache │ -│ artisan:migrate │ artisan:migrate │ artisan:migrate │ artisan:migrate │ -│ deploy:symlink │ - │ - │ - │ -│ - │ deploy:symlink │ - │ - │ -│ - │ - │ deploy:symlink │ - │ -│ - │ - │ - │ deploy:symlink │ -│ deploy:unlock │ deploy:unlock │ deploy:unlock │ deploy:unlock │ -│ deploy:cleanup │ deploy:cleanup │ deploy:cleanup │ deploy:cleanup │ -│ deploy:success │ deploy:success │ deploy:success │ deploy:success │ -└──────────────────────┴──────────────────────┴──────────────────────┴──────────────────────┘ -``` - -The **deploy.php**: - -```php -host('prod[01:04]'); -task('deploy:symlink')->limit(1); -``` - -## The `runLocally` working dir - -By default, `runLocally()` commands are executed relative to the recipe file directory. -This can be overridden globally by setting an environment variable: - -``` -DEPLOYER_ROOT=. dep taskname` -``` - -Alternatively, the root directory can be overridden per command via the cwd configuration. - -```php -runLocally('ls', ['cwd' => '/root/directory']); -``` - -## Play blackjack - -> Yeah, well. I'm gonna go build my own theme park... with blackjack and hookers! -> -> In fact, forget the park! -> -> — Bender - -``` -dep blackjack -``` diff --git a/docs/contrib/README.md b/docs/contrib/README.md deleted file mode 100644 index c75174196..000000000 --- a/docs/contrib/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# All Contrib Recipes - -* [Bugsnag Recipe](/docs/contrib/bugsnag.md) -* [Cachetool Recipe](/docs/contrib/cachetool.md) -* [Chatwork Recipe](/docs/contrib/chatwork.md) -* [Cimonitor Recipe](/docs/contrib/cimonitor.md) -* [Cloudflare Recipe](/docs/contrib/cloudflare.md) -* [Cpanel Recipe](/docs/contrib/cpanel.md) -* [Crontab Recipe](/docs/contrib/crontab.md) -* [Directadmin Recipe](/docs/contrib/directadmin.md) -* [Discord Recipe](/docs/contrib/discord.md) -* [Grafana Recipe](/docs/contrib/grafana.md) -* [Hangouts Recipe](/docs/contrib/hangouts.md) -* [Hipchat Recipe](/docs/contrib/hipchat.md) -* [Ispmanager Recipe](/docs/contrib/ispmanager.md) -* [Mattermost Recipe](/docs/contrib/mattermost.md) -* [Ms-teams Recipe](/docs/contrib/ms-teams.md) -* [Newrelic Recipe](/docs/contrib/newrelic.md) -* [Npm Recipe](/docs/contrib/npm.md) -* [Ntfy Recipe](/docs/contrib/ntfy.md) -* [Phinx Recipe](/docs/contrib/phinx.md) -* [Php-fpm Recipe](/docs/contrib/php-fpm.md) -* [Rabbit Recipe](/docs/contrib/rabbit.md) -* [Raygun Recipe](/docs/contrib/raygun.md) -* [Rocketchat Recipe](/docs/contrib/rocketchat.md) -* [Rollbar Recipe](/docs/contrib/rollbar.md) -* [Rsync Recipe](/docs/contrib/rsync.md) -* [Sentry Recipe](/docs/contrib/sentry.md) -* [Slack Recipe](/docs/contrib/slack.md) -* [Supervisord-monitor Recipe](/docs/contrib/supervisord-monitor.md) -* [Telegram Recipe](/docs/contrib/telegram.md) -* [Webpack_encore Recipe](/docs/contrib/webpack_encore.md) -* [Workplace Recipe](/docs/contrib/workplace.md) -* [Yammer Recipe](/docs/contrib/yammer.md) -* [Yarn Recipe](/docs/contrib/yarn.md) \ No newline at end of file diff --git a/docs/contrib/bugsnag.md b/docs/contrib/bugsnag.md deleted file mode 100644 index 491874026..000000000 --- a/docs/contrib/bugsnag.md +++ /dev/null @@ -1,41 +0,0 @@ - - - - -# Bugsnag Recipe - -```php -require 'contrib/bugsnag.php'; -``` - -[Source](/contrib/bugsnag.php) - - - - -## Configuration - -- *bugsnag_api_key* – the API Key associated with the project. Informs Bugsnag which project has been deployed. This is the only required field. -- *bugsnag_provider* – the name of your source control provider. Required when repository is supplied and only for on-premise services. -- *bugsnag_app_version* – the app version of the code you are currently deploying. Only set this if you tag your releases with semantic version numbers and deploy infrequently. (Optional.) - -## Usage - -Since you should only notify Bugsnag of a successful deployment, the `bugsnag:notify` task should be executed right at the end. - -```php -after('deploy', 'bugsnag:notify'); -``` - - - -## Tasks - -### bugsnag:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/bugsnag.php#L23) - -Notifies Bugsnag of deployment. - - - - diff --git a/docs/contrib/cachetool.md b/docs/contrib/cachetool.md deleted file mode 100644 index 5b2162fe7..000000000 --- a/docs/contrib/cachetool.md +++ /dev/null @@ -1,140 +0,0 @@ - - - - -# Cachetool Recipe - -```php -require 'contrib/cachetool.php'; -``` - -[Source](/contrib/cachetool.php) - - - - -## Configuration - -- **cachetool** *(optional)*: accepts a *string* or an *array* of strings with the unix socket or ip address to php-fpm. If `cachetool` is not given, then the application will look for a `cachetool.yml` file and read the configuration from there. - - ```php - set('cachetool', '/var/run/php-fpm.sock'); - // or - set('cachetool', '127.0.0.1:9000'); - // or - set('cachetool', ['/var/run/php-fpm.sock', '/var/run/php-fpm-other.sock]); - ``` - -You can also specify different cachetool settings for each host: -```php -host('staging') - ->set('cachetool', '127.0.0.1:9000'); - -host('production') - ->set('cachetool', '/var/run/php-fpm.sock'); -``` - -By default, if no `cachetool` parameter is provided, this recipe will fallback to the global setting. - -If your deployment user does not have permission to access the php-fpm.sock, you can alternatively use -the web adapter that creates a temporary php file and makes a web request to it with a configuration like -```php -set('cachetool_args', '--web --web-path=./public --web-url=https://{{hostname}}'); -``` - -## Usage - -Since APCu and OPcache deal with compiling and caching files, they should be executed right after the symlink is created for the new release: - -```php -after('deploy:symlink', 'cachetool:clear:opcache'); -or -after('deploy:symlink', 'cachetool:clear:apcu'); -``` - -## Read more - -Read more information about cachetool on the website: -http://gordalina.github.io/cachetool/ - - -## Configuration -### cachetool -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L50) - - - - - -### cachetool_url -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L58) - -URL to download cachetool from if it is not available - -CacheTool 9.x works with PHP >=8.1 -CacheTool 8.x works with PHP >=8.0 -CacheTool 7.x works with PHP >=7.3 - -```php title="Default value" -'https://github.com/gordalina/cachetool/releases/download/9.0.0/cachetool.phar' -``` - - -### cachetool_args -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L59) - - - - - -### bin/cachetool -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L60) - - - -```php title="Default value" -if (!test('[ -f {{release_or_current_path}}/cachetool.phar ]')) { -run("cd {{release_or_current_path}} && curl -sLO {{cachetool_url}}"); -} -return '{{release_or_current_path}}/cachetool.phar'; -``` - - -### cachetool_options -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L66) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### cachetool:clear:opcache -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L86) - -Clears OPcode cache. - -Clear opcache cache - - -### cachetool:clear:apcu -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L97) - -Clears APCu system cache. - -Clear APCU cache - - -### cachetool:clear:stat -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L108) - -Clears file status and realpath caches. - -Clear file status cache, including the realpath cache - - diff --git a/docs/contrib/chatwork.md b/docs/contrib/chatwork.md deleted file mode 100644 index 0c9213e07..000000000 --- a/docs/contrib/chatwork.md +++ /dev/null @@ -1,205 +0,0 @@ - - - - -# Chatwork Recipe - -```php -require 'contrib/chatwork.php'; -``` - -[Source](/contrib/chatwork.php) - - - -# Chatwork Recipe - -## Installing - 1. Create chatwork account by any manual in the internet - 2. Take chatwork token (Like: b29a700e2d15bef3f26ae6a5c142d1ea) and set `chatwork_token` parameter - 3. Take chatwork room id from url after clicked on the room, and set `chatwork_room_id` parameter - 4. If you want, you can edit `chatwork_notify_text`, `chatwork_success_text` or `chatwork_failure_text` - 5. Require chatwork recipe in your `deploy.php` file - -```php -# https://deployer.org/recipes.html - -require 'recipe/chatwork.php'; -``` - -Add hook on deploy: - -```php -before('deploy', 'chatwork:notify'); -``` - -## Configuration - -- `chatwork_token` – chatwork bot token, **required** -- `chatwork_room_id` — chatwork room to push messages to **required** -- `chatwork_notify_text` – notification message template - ``` - [info] - [title](*) Deployment Status: Deploying[/title] - Repo: {{repository}} - Branch: {{branch}} - Server: {{hostname}} - Release Path: {{release_path}} - Current Path: {{current_path}} - [/info] - ``` -- `chatwork_success_text` – success template, default: - ``` - [info] - [title](*) Deployment Status: Successfully[/title] - Repo: {{repository}} - Branch: {{branch}} - Server: {{hostname}} - Release Path: {{release_path}} - Current Path: {{current_path}} - [/info]" - ``` -- `chatwork_failure_text` – failure template, default: - ``` - [info] - [title](*) Deployment Status: Failed[/title] - Repo: {{repository}} - Branch: {{branch}} - Server: {{hostname}} - Release Path: {{release_path}} - Current Path: {{current_path}} - [/info]" - ``` - -## Tasks - -- `chatwork:notify` – send message to chatwork -- `chatwork:notify:success` – send success message to chatwork -- `chatwork:notify:failure` – send failure message to chatwork - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'chatwork:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('success', 'chatwork:notify:success'); -``` -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'chatwork:notify:failure'); -``` - - -## Configuration -### chatwork_token -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L91) - -Chatwork settings -:::info Required -Throws exception if not set. -::: - - - - -### chatwork_room_id -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L94) - - -:::info Required -Throws exception if not set. -::: - - - - -### chatwork_api -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L97) - - - -```php title="Default value" -return 'https://api.chatwork.com/v2/rooms/' . get('chatwork_room_id') . '/messages'; -``` - - -### chatwork_notify_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L102) - -The Messages - -```php title="Default value" -"[info]\n[title](*) Deployment Status: Deploying[/title]\nRepo: {{repository}}\nBranch: {{branch}}\nServer: {{hostname}}\nRelease Path: {{release_path}}\nCurrent Path: {{current_path}}\n[/info]" -``` - - -### chatwork_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L103) - - - -```php title="Default value" -"[info]\n[title](*) Deployment Status: Successfully[/title]\nRepo: {{repository}}\nBranch: {{branch}}\nServer: {{hostname}}\nRelease Path: {{release_path}}\nCurrent Path: {{current_path}}\n[/info]" -``` - - -### chatwork_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L104) - - - -```php title="Default value" -"[info]\n[title](*) Deployment Status: Failed[/title]\nRepo: {{repository}}\nBranch: {{branch}}\nServer: {{hostname}}\nRelease Path: {{release_path}}\nCurrent Path: {{current_path}}\n[/info]" -``` - - - -## Tasks - -### chatwork_send_message -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L107) - - - -Helpers - - -### chatwork:test -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L116) - -Tests messages. - -Tasks - - -### chatwork:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L127) - -Notifies Chatwork. - - - - -### chatwork:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L142) - -Notifies Chatwork about deploy finish. - - - - -### chatwork:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/chatwork.php#L158) - -Notifies Chatwork about deploy failure. - - - - diff --git a/docs/contrib/cimonitor.md b/docs/contrib/cimonitor.md deleted file mode 100644 index 6b981b116..000000000 --- a/docs/contrib/cimonitor.md +++ /dev/null @@ -1,223 +0,0 @@ - - - - -# Cimonitor Recipe - -```php -require 'contrib/cimonitor.php'; -``` - -[Source](/contrib/cimonitor.php) - - - -Monitor your deployments on [CIMonitor](https://github.com/CIMonitor/CIMonitor). - -![CIMonitorGif](https://www.steefmin.xyz/deployer-example.gif) - - -Add tasks on deploy: - -```php -before('deploy', 'cimonitor:notify'); -after('deploy:success', 'cimonitor:notify:success'); -after('deploy:failed', 'cimonitor:notify:failure'); -``` - -## Configuration - -- `cimonitor_webhook` – CIMonitor server webhook url, **required** - ``` - set('cimonitor_webhook', 'https://cimonitor.enrise.com/webhook/deployer'); - ``` -- `cimonitor_title` – the title of application, default the username\reponame combination from `{{repository}}` - ``` - set('cimonitor_title', ''); - ``` -- `cimonitor_user` – User object with name and email, default gets information from `git config` - ``` - set('cimonitor_user', function () { - return [ - 'name' => 'John Doe', - 'email' => 'john@enrise.com', - ]; - }); - ``` - -Various cimonitor statusses are set, in case you want to change these yourselves. See the [CIMonitor documentation](https://cimonitor.readthedocs.io/en/latest/) for the usages of different states. - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'cimonitor:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'cimonitor:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'cimonitor:notify:failure'); -``` - - -## Configuration -### cimonitor_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L63) - -Title of project based on git repo - -```php title="Default value" -$repo = get('repository'); -$pattern = '/\w+\/\w+/'; -return preg_match($pattern, $repo, $titles) ? $titles[0] : $repo; -``` - - -### cimonitor_user -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L68) - - - -```php title="Default value" -return [ -'name' => runLocally('git config --get user.name'), -'email' => runLocally('git config --get user.email'), -]; -``` - - -### cimonitor_status_info -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L76) - -CI monitor status states and job states - -```php title="Default value" -'info' -``` - - -### cimonitor_status_warning -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L77) - - - -```php title="Default value" -'warning' -``` - - -### cimonitor_status_error -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L78) - - - -```php title="Default value" -'error' -``` - - -### cimonitor_status_success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L79) - - - -```php title="Default value" -'success' -``` - - -### cimonitor_job_state_info -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L80) - - - -```php title="Default value" -get('cimonitor_status_info') -``` - - -### cimonitor_job_state_pending -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L81) - - - -```php title="Default value" -'pending' -``` - - -### cimonitor_job_state_running -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L82) - - - -```php title="Default value" -'running' -``` - - -### cimonitor_job_state_warning -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L83) - - - -```php title="Default value" -get('cimonitor_status_warning') -``` - - -### cimonitor_job_state_error -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L84) - - - -```php title="Default value" -get('cimonitor_status_error') -``` - - -### cimonitor_job_state_success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L85) - - - -```php title="Default value" -get('cimonitor_status_success') -``` - - - -## Tasks - -### cimonitor:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L88) - -Notifies CIMonitor. - - - - -### cimonitor:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L114) - -Notifies CIMonitor about deploy finish. - - - - -### cimonitor:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cimonitor.php#L142) - -Notifies CIMonitor about deploy failure. - - - - diff --git a/docs/contrib/cloudflare.md b/docs/contrib/cloudflare.md deleted file mode 100644 index 47226c85d..000000000 --- a/docs/contrib/cloudflare.md +++ /dev/null @@ -1,43 +0,0 @@ - - - - -# Cloudflare Recipe - -```php -require 'contrib/cloudflare.php'; -``` - -[Source](/contrib/cloudflare.php) - - - - -### Configuration - -- `cloudflare` – array with configuration for cloudflare - - `service_key` – Cloudflare Service Key. If this is not provided, use api_key and email. - - `api_key` – Cloudflare API key generated on the "My Account" page. - - `email` – Cloudflare Email address associated with your account. - - `api_token` – Cloudflare API Token generated on the "My Account" page. - - `domain` – The domain you want to clear (optional if zone_id is provided). - - `zone_id` – Cloudflare Zone ID (optional). - -### Usage - -Since the website should be built and some load is likely about to be applied to your server, this should be one of, -if not the, last tasks before cleanup - - - - -## Tasks - -### deploy:cloudflare -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cloudflare.php#L23) - -Clears Cloudflare Cache. - - - - diff --git a/docs/contrib/cpanel.md b/docs/contrib/cpanel.md deleted file mode 100644 index e75e507f3..000000000 --- a/docs/contrib/cpanel.md +++ /dev/null @@ -1,175 +0,0 @@ - - - - -# Cpanel Recipe - -```php -require 'contrib/cpanel.php'; -``` - -[Source](/contrib/cpanel.php) - - - -### Description -This is a recipe that uses the [cPanel 2 API](https://documentation.cPanel.net/display/DD/Guide+to+cPanel+API+2). - -Unfortunately the [UAPI](https://documentation.cPanel.net/display/DD/Guide+to+UAPI) that is recommended does not have support for creating addon domains. -The main idea behind is for staging purposes but I guess you can use it for other interesting concepts. - -The idea is, every branch possibly has its own staging domain/subdomain (staging-neat-feature.project.com) and database db_neat-feature_project so it can be tested. -This recipe can make the domain/subdomain and database creation part of the deployment process so you don't have to manually create them through an interface. - - -### Configuration -The example uses a .env file and Dotenv for configuration, but you can set the parameters as you wish -``` -set('cpanel', [ - 'host' => getenv('CPANEL_HOST'), - 'port' => getenv('CPANEL_PORT'), - 'username' => getenv('CPANEL_USERNAME'), - 'auth_type' => getenv('CPANEL_AUTH_TYPE'), - 'token' => getenv('CPANEL_TOKEN'), - 'user' => getenv('CPANEL_USER'), - 'db_user' => getenv('CPANEL_DB_USER'), - 'db_user_privileges' => getenv('CPANEL_DB_PRIVILEGES'), - 'timeout' => 500, - - 'allowInStage' => ['staging', 'beta', 'alpha'], - - 'create_domain_format' => '%s-%s-%s', - 'create_domain_values' => ['staging', 'master', get('application')], - 'subdomain_prefix' => substr(md5(get('application')), 0,4) . '-', - 'subdomain_suffix' => getenv('SUDOMAIN_SUFFIX'), - - - 'create_db_format' => '%s_%s-%s-%s', - 'create_db_values' => ['apps', 'staging','master', get('application')], - -]); -``` - -- `cpanel` – array with configuration for cPanel - - `username` – WHM account - - `user` – cPanel account that you want in charge of the domain - - `token` – WHM API token - - `create_domain_format` – Format for name creation of domain - - `create_domain_values` – The actual value reference for naming - - `subdomain_prefix` – cPanel has a weird way of dealing with addons and subdomains, you cannot create 2 addons with the same subdomain, so you need to change it in some way, example uses first 4 chars of md5(app_name) - - `subdomain_suffix` – cPanel has a weird way of dealing with addons and subdomains, so the suffix needs to be your main domain for that account for deletion purposes - - `addondir` – addon dir is different from the deploy path because cPanel "injects" /home/user/ into the path, so tilde cannot be used - - `allowInStage` – Define the stages that cPanel recipe actions are allowed in - - -#### .env file example -``` -CPANEL_HOST=xxx.xxx.xxx.xxx -CPANEL_PORT=2087 -CPANEL_USERNAME=root -CPANEL_TOKEN=xxxx -CPANEL_USER=xxx -CPANEL_AUTH_TYPE=hash -CPANEL_DB_USER=db_user -CPANEL_DB_PRIVILEGES="ALL PRIVILEGES" -SUDOMAIN_SUFFIX=.mymaindomain.com - -``` - -### Tasks - -- `cpanel:createaddondomain` Creates an addon domain -- `cpanel:deleteaddondomain` Removes an addon domain -- `cpanel:createdb` Creates a new database - -### Usage - -A complete example with configs, staging and deployment - -``` -load(); // this is used just so an .env file can be used for credentials - -require 'cpanel.php'; - - -Project name -set('application', 'myproject.com'); -Project repository -set('repository', 'git@github.com:myorg/myproject.com'); - - - - - -set('cpanel', [ - 'host' => getenv('CPANEL_HOST'), - 'port' => getenv('CPANEL_PORT'), - 'username' => getenv('CPANEL_USERNAME'), - 'auth_type' => getenv('CPANEL_AUTH_TYPE'), - 'token' => getenv('CPANEL_TOKEN'), - 'user' => getenv('CPANEL_USER'), - 'db_user' => getenv('CPANEL_DB_USER'), - 'db_user_privileges' => getenv('CPANEL_DB_PRIVILEGES'), - 'timeout' => 500, - 'allowInStage' => ['staging', 'beta', 'alpha'], - - 'create_domain_format' => '%s-%s-%s', - 'create_domain_values' => ['staging', 'master', get('application')], - 'subdomain_prefix' => substr(md5(get('application')), 0,4) . '-', - 'subdomain_suffix' => getenv('SUDOMAIN_SUFFIX'), - - - 'create_db_format' => '%s_%s-%s-%s', - 'create_db_values' => ['apps', 'staging','master', get('application')], - -]); - -host('myproject.com') - ->stage('staging') - ->set('cpanel_createdb', vsprintf(get('cpanel')['create_db_format'], get('cpanel')['create_db_values'])) - ->set('branch', 'dev-branch') - ->set('deploy_path', '~/staging/' . vsprintf(get('cpanel')['create_domain_format'], get('cpanel')['create_domain_values'])) - ->set('addondir', 'staging/' . vsprintf(get('cpanel')['create_domain_format'], get('cpanel')['create_domain_values'])); -Tasks -task('build', function () { - run('cd {{release_path}} && build'); -}); - -after('deploy:prepare', 'cpanel:createaddondomain'); -after('deploy:prepare', 'cpanel:createdb'); -``` - - - -## Tasks - -### cpanel:createdb -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cpanel.php#L195) - -Creates database though CPanel API. - - - - -### cpanel:createaddondomain -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cpanel.php#L223) - -Creates addon domain though CPanel API. - - - - -### cpanel:deleteaddondomain -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cpanel.php#L246) - -Deletes addon domain though CPanel API. - - - - diff --git a/docs/contrib/crontab.md b/docs/contrib/crontab.md deleted file mode 100644 index fb8d97d47..000000000 --- a/docs/contrib/crontab.md +++ /dev/null @@ -1,45 +0,0 @@ - - - - -# Crontab Recipe - -```php -require 'contrib/crontab.php'; -``` - -[Source](/contrib/crontab.php) - - -## Configuration -### bin/crontab -[Source](https://github.com/deployphp/deployer/blob/master/contrib/crontab.php#L28) - -Get path to bin - -```php title="Default value" -return which('crontab'); -``` - - -### crontab:identifier -[Source](https://github.com/deployphp/deployer/blob/master/contrib/crontab.php#L33) - -Set the identifier used in the crontab, application name by default - -```php title="Default value" -return get('application', 'application'); -``` - - - -## Tasks - -### crontab:sync -[Source](https://github.com/deployphp/deployer/blob/master/contrib/crontab.php#L38) - -Sync crontab jobs. - - - - diff --git a/docs/contrib/directadmin.md b/docs/contrib/directadmin.md deleted file mode 100644 index 1da4c6ed1..000000000 --- a/docs/contrib/directadmin.md +++ /dev/null @@ -1,83 +0,0 @@ - - - - -# Directadmin Recipe - -```php -require 'contrib/directadmin.php'; -``` - -[Source](/contrib/directadmin.php) - - - -### Configuration -- `directadmin` – array with configuration for DirectAdmin - - `host` – DirectAdmin host - - `port` – DirectAdmin port (default: 2222, not required) - - `scheme` – DirectAdmin scheme (default: http, not required) - - `username` – DirectAdmin username - - `password` – DirectAdmin password (it is recommended to use login keys!) - - `db_user` – Database username (required when using directadmin:createdb or directadmin:deletedb) - - `db_name` – Database namse (required when using directadmin:createdb) - - `db_password` – Database password (required when using directadmin:createdb) - - `domain_name` – Domain to create, delete or edit (required when using directadmin:createdomain, directadmin:deletedomain, directadmin:symlink-private-html or directadmin:php-version) - - `domain_ssl` – Enable SSL, options: ON/OFF, default: ON (optional when using directadmin:createdb) - - `domain_cgi` – Enable CGI, options: ON/OFF, default: ON (optional when using directadmin:createdb) - - `domain_php` – Enable PHP, options: ON/OFF, default: ON (optional when using directadmin:createdb) - - `domain_php_version` – Domain PHP Version, default: 1 (required when using directadmin:php-version) - - - - -## Tasks - -### directadmin:createdb -[Source](https://github.com/deployphp/deployer/blob/master/contrib/directadmin.php#L74) - -Creates a database on DirectAdmin. - - - - -### directadmin:deletedb -[Source](https://github.com/deployphp/deployer/blob/master/contrib/directadmin.php#L94) - -Deletes a database on DirectAdmin. - - - - -### directadmin:createdomain -[Source](https://github.com/deployphp/deployer/blob/master/contrib/directadmin.php#L109) - -Creates a domain on DirectAdmin. - - - - -### directadmin:deletedomain -[Source](https://github.com/deployphp/deployer/blob/master/contrib/directadmin.php#L127) - -Deletes a domain on DirectAdmin. - - - - -### directadmin:symlink-private-html -[Source](https://github.com/deployphp/deployer/blob/master/contrib/directadmin.php#L143) - -Symlink your private_html to public_html. - - - - -### directadmin:php-version -[Source](https://github.com/deployphp/deployer/blob/master/contrib/directadmin.php#L159) - -Changes the PHP version from a domain. - - - - diff --git a/docs/contrib/discord.md b/docs/contrib/discord.md deleted file mode 100644 index 510e0bd96..000000000 --- a/docs/contrib/discord.md +++ /dev/null @@ -1,160 +0,0 @@ - - - - -# Discord Recipe - -```php -require 'contrib/discord.php'; -``` - -[Source](/contrib/discord.php) - - - -## Installing - -Add hook on deploy: - -```php -before('deploy', 'discord:notify'); -``` - -## Configuration - -- `discord_channel` – Discord channel ID, **required** -- `discord_token` – Discord channel token, **required** - -- `discord_notify_text` – notification message template, markdown supported, default: - ```markdown - :​information_source: **{{user}}** is deploying branch `{{branch}}` to _{{target}}_ - ``` -- `discord_success_text` – success template, default: - ```markdown - :​white_check_mark: Branch `{{branch}}` deployed to _{{target}}_ successfully - ``` -- `discord_failure_text` – failure template, default: - ```markdown - :​no_entry_sign: Branch `{{branch}}` has failed to deploy to _{{target}}_ - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'discord:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'discord:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'discord:notify:failure'); -``` - - -## Configuration -### discord_webhook -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L53) - - - -```php title="Default value" -return 'https://discordapp.com/api/webhooks/{{discord_channel}}/{{discord_token}}/slack'; -``` - - -### discord_notify_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L58) - -Deploy messages - -```php title="Default value" -return [ -'text' => parse(':​information_source: **{{user}}** is deploying branch `{{branch}}` to _{{target}}_'), -]; -``` - - -### discord_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L63) - - - -```php title="Default value" -return [ -'text' => parse(':​white_check_mark: Branch `{{branch}}` deployed to _{{target}}_ successfully'), -]; -``` - - -### discord_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L68) - - - -```php title="Default value" -return [ -'text' => parse(':​no_entry_sign: Branch `{{branch}}` has failed to deploy to _{{target}}_'), -]; -``` - - -### discord_message -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L75) - -The message - -```php title="Default value" -'discord_notify_text' -``` - - - -## Tasks - -### discord_send_message -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L78) - - - -Helpers - - -### discord:test -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L86) - -Tests messages. - -Tasks - - -### discord:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L97) - -Notifies Discord. - - - - -### discord:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L105) - -Notifies Discord about deploy finish. - - - - -### discord:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/discord.php#L113) - -Notifies Discord about deploy failure. - - - - diff --git a/docs/contrib/grafana.md b/docs/contrib/grafana.md deleted file mode 100644 index 2f650e4aa..000000000 --- a/docs/contrib/grafana.md +++ /dev/null @@ -1,55 +0,0 @@ - - - - -# Grafana Recipe - -```php -require 'contrib/grafana.php'; -``` - -[Source](/contrib/grafana.php) - - - - -## Configuration options - -- **url** *(required)*: the URL to the creates annotation api endpoint. -- **token** *(required)*: authentication token. Can be created at Grafana Console. -- **time** *(optional)* – set deploy time of annotation. specify epoch milliseconds. (Defaults is set to the current time in epoch milliseconds.) -- **tags** *(optional)* – set tag of annotation. -- **text** *(optional)* – set text of annotation. (Defaults is set to "Deployed " + git log -n 1 --format="%h") - -```php -deploy.php - -set('grafana', [ - 'token' => 'eyJrIj...', - 'url' => 'http://grafana/api/annotations', - 'tags' => ['deploy', 'production'], -]); - -``` - -## Usage - -If you want to create annotation about successful end of deployment. - -```php -after('deploy:success', 'grafana:annotation'); -``` - - - - -## Tasks - -### grafana:annotation -[Source](https://github.com/deployphp/deployer/blob/master/contrib/grafana.php#L38) - -Creates Grafana annotation of deployment. - - - - diff --git a/docs/contrib/hangouts.md b/docs/contrib/hangouts.md deleted file mode 100644 index 52e8e2954..000000000 --- a/docs/contrib/hangouts.md +++ /dev/null @@ -1,130 +0,0 @@ - - - - -# Hangouts Recipe - -```php -require 'contrib/hangouts.php'; -``` - -[Source](/contrib/hangouts.php) - - - - -Add hook on deploy: - -```php -before('deploy', 'chat:notify'); -``` - -## Configuration - -- `chat_webhook` – chat incoming webhook url, **required** -- `chat_title` – the title of your notification card, default `{{application}}` -- `chat_subtitle` – the subtitle of your card, default `{{hostname}}` -- `chat_favicon` – an image for the header of your card, default `http://{{hostname}}/favicon.png` -- `chat_line1` – first line of the text in your card, default: `{{branch}}` -- `chat_line2` – second line of the text in your card, default: `{{stage}}` - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'chat:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'chat:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'chat:notify:failure'); -``` - - - -## Configuration -### chat_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L45) - -Title of project - -```php title="Default value" -return get('application', 'Project'); -``` - - -### chat_subtitle -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L49) - - - -```php title="Default value" -get('hostname') -``` - - -### favicon -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L52) - -If 'favicon' is set Google Hangouts Chat will decorate your card with an image. - -```php title="Default value" -'http://{{hostname}}/favicon.png' -``` - - -### chat_line1 -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L55) - -Deploy messages - -```php title="Default value" -'{{branch}}' -``` - - -### chat_line2 -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L56) - - - -```php title="Default value" -'{{stage}}' -``` - - - -## Tasks - -### chat:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L59) - -Notifies Google Hangouts Chat. - - - - -### chat:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L101) - -Notifies Google Hangouts Chat about deploy finish. - - - - -### chat:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hangouts.php#L143) - -Notifies Google Hangouts Chat about deploy failure. - - - - diff --git a/docs/contrib/hipchat.md b/docs/contrib/hipchat.md deleted file mode 100644 index a35bdf340..000000000 --- a/docs/contrib/hipchat.md +++ /dev/null @@ -1,85 +0,0 @@ - - - - -# Hipchat Recipe - -```php -require 'contrib/hipchat.php'; -``` - -[Source](/contrib/hipchat.php) - - - -## Configuration - -- `hipchat_token` – Hipchat V1 auth token -- `hipchat_room_id` – Room ID or name -- `hipchat_message` – Deploy message, default is `_{{user}}_ deploying `{{branch}}` to *{{target}}*` -- `hipchat_from` – Default to target -- `hipchat_color` – Message color, default is **green** -- `hipchat_url` – The URL to the message endpoint, default is https://api.hipchat.com/v1/rooms/message - -## Usage - -Since you should only notify Hipchat room of a successful deployment, the `hipchat:notify` task should be executed right at the end. - -```php -after('deploy', 'hipchat:notify'); -``` - - - -## Configuration -### hipchat_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hipchat.php#L25) - - - -```php title="Default value" -'green' -``` - - -### hipchat_from -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hipchat.php#L26) - - - -```php title="Default value" -'{{target}}' -``` - - -### hipchat_message -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hipchat.php#L27) - - - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to *{{target}}*' -``` - - -### hipchat_url -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hipchat.php#L28) - - - -```php title="Default value" -'https://api.hipchat.com/v1/rooms/message' -``` - - - -## Tasks - -### hipchat:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/hipchat.php#L31) - -Notifies Hipchat channel of deployment. - - - - diff --git a/docs/contrib/ispmanager.md b/docs/contrib/ispmanager.md deleted file mode 100644 index fcfd98fb9..000000000 --- a/docs/contrib/ispmanager.md +++ /dev/null @@ -1,245 +0,0 @@ - - - - -# Ispmanager Recipe - -```php -require 'contrib/ispmanager.php'; -``` - -[Source](/contrib/ispmanager.php) - - - -This recipe for work with ISPManager Lite panel by API. - - -## Configuration -### ispmanager_owner -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L10) - - - -```php title="Default value" -'www-root' -``` - - -### ispmanager_doc_root -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L11) - - - -```php title="Default value" -'/var/www/' . get('ispmanager_owner') . '/data/' -``` - - -### ispmanager -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L14) - -ISPManager default configuration - -```php title="Default value" -[ - 'api' => [ - 'dsn' => 'https://root:password@localhost:1500/ispmgr', - 'secure' => true, - ], - 'createDomain' => NULL, - 'updateDomain' => NULL, - 'deleteDomain' => NULL, - 'createDatabase' => NULL, - 'deleteDatabase' => NULL, - 'phpSelect' => NULL, - 'createAlias' => NULL, - 'deleteAlias' => NULL, -] -``` - - -### vhost -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L30) - -Vhost default configuration - -```php title="Default value" -[ - 'name' => '{{domain}}', - 'php_enable' => 'on', - 'aliases' => 'www.{{domain}}', - 'home' => 'www/{{domain}}', - 'owner' => get('ispmanager_owner'), - 'email' => 'webmaster@{{domain}}', - 'charset' => 'off', - 'dirindex' => 'index.php uploaded.html', - 'ssi' => 'on', - 'php' => 'on', - 'php_mode' => 'php_mode_mod', - 'basedir' => 'on', - 'php_apache_version' => 'native', - 'cgi' => 'off', - 'log_access' => 'on', - 'log_error' => 'on', -] -``` - - -### ispmanager_session -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L50) - -Storage - - - -### ispmanager_databases -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L51) - - - -```php title="Default value" -[ - 'servers' => [], - 'hosts' => [], - 'dblist' => [], -] -``` - - -### ispmanager_domains -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L57) - - - - - -### ispmanager_phplist -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L58) - - - - - -### ispmanager_aliaslist -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L59) - - - - - - -## Tasks - -### ispmanager:init -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L62) - -Installs ispmanager. - - - - -### ispmanager:db-server-list -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L85) - -Takes database servers list. - - - - -### ispmanager:db-list -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L122) - -Takes databases list. - - - - -### ispmanager:domain-list -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L144) - -Takes domain list. - - - - -### ispmanager:db-create -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L160) - -Creates new database. - - - - -### ispmanager:db-delete -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L230) - -Deletes database. - - - - -### ispmanager:domain-create -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L281) - -Creates new domain. - - - - -### ispmanager:get-php-list -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L327) - -Gets allowed PHP modes and versions. - - - - -### ispmanager:print-php-list -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L373) - -Prints allowed PHP modes and versions. - - - - -### ispmanager:domain-php-select -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L411) - -Switches PHP version for domain. - - - - -### ispmanager:domain-alias-create -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L480) - -Creates new domain alias. - - - - -### ispmanager:domain-alias-delete -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L549) - -Deletes domain alias. - - - - -### ispmanager:domain-delete -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L617) - -Deletes domain. - - - - -### ispmanager:process -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ispmanager.php#L664) - -Auto task processing. - - - - diff --git a/docs/contrib/mattermost.md b/docs/contrib/mattermost.md deleted file mode 100644 index 5b5516bac..000000000 --- a/docs/contrib/mattermost.md +++ /dev/null @@ -1,206 +0,0 @@ - - - - -# Mattermost Recipe - -```php -require 'contrib/mattermost.php'; -``` - -[Source](/contrib/mattermost.php) - - - -## Installing - -Create a Mattermost incoming webhook, through the administration panel. - -Add hook on deploy: - -``` -before('deploy', 'mattermost:notify'); -``` - -## Configuration - - - `mattermost_webhook` - incoming mattermost webook **required** - ``` - set('mattermost_webook', 'https://{your-mattermost-site}/hooks/xxx-generatedkey-xxx'); - ``` - - - `mattermost_channel` - overrides the channel the message posts in - ``` - set('mattermost_channel', 'town-square'); - ``` - - - `mattermost_username` - overrides the username the message posts as - ``` - set('mattermost_username', 'deployer'); - ``` - - - `mattermost_icon_url` - overrides the profile picture the message posts with - ``` - set('mattermost_icon_url', 'https://domain.com/your-icon.png'); - ``` - - - `mattermost_text` - notification message - ``` - set('mattermost_text', '_{{user}}_ deploying `{{branch}}` to **{{target}}**'); - ``` - - - `mattermost_success_text` – success template, default: - ``` - set('mattermost_success_text', 'Deploy to **{{target}}** successful {{mattermost_success_emoji}}'); - ``` - - - `mattermost_failure_text` – failure template, default: - ``` - set('mattermost_failure_text', 'Deploy to **{{target}}** failed {{mattermost_failure_emoji}}'); - ``` - - - `mattermost_success_emoji` – emoji added at the end of success text - - `mattermost_failure_emoji` – emoji added at the end of failure text - - For detailed information about Mattermost hooks see: https://developers.mattermost.com/integrate/incoming-webhooks/ - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'mattermost:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'mattermost:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'mattermost:notify:failure'); -``` - - - -## Configuration -### mattermost_webhook -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L80) - - - -```php title="Default value" -null -``` - - -### mattermost_channel -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L81) - - - -```php title="Default value" -null -``` - - -### mattermost_username -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L82) - - - -```php title="Default value" -'deployer' -``` - - -### mattermost_icon_url -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L83) - - - -```php title="Default value" -null -``` - - -### mattermost_success_emoji -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L85) - - - -```php title="Default value" -':​white_check_mark:' -``` - - -### mattermost_failure_emoji -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L86) - - - -```php title="Default value" -':​x:' -``` - - -### mattermost_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L88) - - - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to **{{target}}**' -``` - - -### mattermost_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L89) - - - -```php title="Default value" -'Deploy to **{{target}}** successful {{mattermost_success_emoji}}' -``` - - -### mattermost_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L90) - - - -```php title="Default value" -'Deploy to **{{target}}** failed {{mattermost_failure_emoji}}' -``` - - - -## Tasks - -### mattermost:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L93) - -Notifies mattermost. - - - - -### mattermost:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L114) - -Notifies mattermost about deploy finish. - - - - -### mattermost:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/mattermost.php#L135) - -Notifies mattermost about deploy failure. - - - - diff --git a/docs/contrib/ms-teams.md b/docs/contrib/ms-teams.md deleted file mode 100644 index e4ca8a5a9..000000000 --- a/docs/contrib/ms-teams.md +++ /dev/null @@ -1,183 +0,0 @@ - - - - -# Ms-teams Recipe - -```php -require 'contrib/ms-teams.php'; -``` - -[Source](/contrib/ms-teams.php) - - - -## Installing - -Require ms-teams recipe in your `deploy.php` file: - -Setup: -1. Open MS Teams -2. Navigate to Teams section -3. Select existing or create new team -4. Select existing or create new channel -5. Hover over channel to get three dots, click, in menu select "Connectors" -6. Search for and configure "Incoming Webhook" -7. Confirm/create and copy your Webhook URL -8. Setup deploy.php - Add in header: -```php -require 'contrib/ms-teams.php'; -set('teams_webhook', 'https://outlook.office.com/webhook/...'); -``` -Add in content: -```php -before('deploy', 'teams:notify'); -after('deploy:success', 'teams:notify:success'); -after('deploy:failed', 'teams:notify:failure'); -``` -9.) Sip your coffee - -## Configuration - -- `teams_webhook` – teams incoming webhook url, **required** - ``` - set('teams_webhook', 'https://outlook.office.com/webhook/...'); - ``` -- `teams_title` – the title of application, default `{{application}}` -- `teams_text` – notification message template, markdown supported - ``` - set('teams_text', '_{{user}}_ deploying `{{branch}}` to *{{target}}*'); - ``` -- `teams_success_text` – success template, default: - ``` - set('teams_success_text', 'Deploy to *{{target}}* successful'); - ``` -- `teams_failure_text` – failure template, default: - ``` - set('teams_failure_text', 'Deploy to *{{target}}* failed'); - ``` - -- `teams_color` – color's attachment -- `teams_success_color` – success color's attachment -- `teams_failure_color` – failure color's attachment - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'teams:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'teams:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'teams:notify:failure'); -``` - - -## Configuration -### teams_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L78) - -Title of project - -```php title="Default value" -return get('application', 'Project'); -``` - - -### teams_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L83) - -Deploy message - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to *{{target}}*' -``` - - -### teams_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L84) - - - -```php title="Default value" -'Deploy to *{{target}}* successful' -``` - - -### teams_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L85) - - - -```php title="Default value" -'Deploy to *{{target}}* failed' -``` - - -### teams_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L88) - -Color of attachment - -```php title="Default value" -'#4d91f7' -``` - - -### teams_success_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L89) - - - -```php title="Default value" -'#00c100' -``` - - -### teams_failure_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L90) - - - -```php title="Default value" -'#ff0909' -``` - - - -## Tasks - -### teams:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L93) - -Notifies Teams. - - - - -### teams:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L108) - -Notifies Teams about deploy finish. - - - - -### teams:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ms-teams.php#L123) - -Notifies Teams about deploy failure. - - - - diff --git a/docs/contrib/newrelic.md b/docs/contrib/newrelic.md deleted file mode 100644 index ccb9b48ef..000000000 --- a/docs/contrib/newrelic.md +++ /dev/null @@ -1,84 +0,0 @@ - - - - -# Newrelic Recipe - -```php -require 'contrib/newrelic.php'; -``` - -[Source](/contrib/newrelic.php) - - - -## Configuration - -- `newrelic_app_id` – newrelic's app id -- `newrelic_api_key` – newrelic's api key -- `newrelic_description` – message to send -- `newrelic_endpoint` – newrelic's REST API endpoint - -## Usage - -Since you should only notify New Relic of a successful deployment, the `newrelic:notify` task should be executed right at the end. - -```php -after('deploy', 'newrelic:notify'); -``` - - - -## Configuration -### newrelic_app_id -[Source](https://github.com/deployphp/deployer/blob/master/contrib/newrelic.php#L23) - - -:::info Required -Throws exception if not set. -::: - - - - -### newrelic_description -[Source](https://github.com/deployphp/deployer/blob/master/contrib/newrelic.php#L27) - - - -```php title="Default value" -return runLocally('git log -n 1 --format="%an: %s" | tr \'"\' "\'"'); -``` - - -### newrelic_revision -[Source](https://github.com/deployphp/deployer/blob/master/contrib/newrelic.php#L31) - - - -```php title="Default value" -return runLocally('git log -n 1 --format="%h"'); -``` - - -### newrelic_endpoint -[Source](https://github.com/deployphp/deployer/blob/master/contrib/newrelic.php#L35) - - - -```php title="Default value" -'api.newrelic.com' -``` - - - -## Tasks - -### newrelic:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/newrelic.php#L38) - -Notifies New Relic of deployment. - - - - diff --git a/docs/contrib/npm.md b/docs/contrib/npm.md deleted file mode 100644 index b8e4046ac..000000000 --- a/docs/contrib/npm.md +++ /dev/null @@ -1,52 +0,0 @@ - - - - -# Npm Recipe - -```php -require 'contrib/npm.php'; -``` - -[Source](/contrib/npm.php) - - - -## Configuration - -- `bin/npm` *(optional)*: set npm binary, automatically detected otherwise. - -## Usage - -```php -after('deploy:update_code', 'npm:install'); -``` - - - -## Configuration -### bin/npm -[Source](https://github.com/deployphp/deployer/blob/master/contrib/npm.php#L16) - - - -```php title="Default value" -return which('npm'); -``` - - - -## Tasks - -### npm:install -[Source](https://github.com/deployphp/deployer/blob/master/contrib/npm.php#L26) - -Installs npm packages. - -Uses `npm ci` command. This command is similar to npm install, -except it's meant to be used in automated environments such as -test platforms, continuous integration, and deployment -- or -any situation where you want to make sure you're doing a clean -install of your dependencies. - - diff --git a/docs/contrib/ntfy.md b/docs/contrib/ntfy.md deleted file mode 100644 index 703303dfd..000000000 --- a/docs/contrib/ntfy.md +++ /dev/null @@ -1,196 +0,0 @@ - - - - -# Ntfy Recipe - -```php -require 'contrib/ntfy.php'; -``` - -[Source](/contrib/ntfy.php) - - - -## Installing - -Require ntfy.sh recipe in your `deploy.php` file: - -Setup: -1. Setup deploy.php - Add in header: -```php -require 'contrib/ntfy.php'; -set('ntfy_topic', 'ntfy.sh/mytopic'); -``` -Add in content: -```php -before('deploy', 'ntfy:notify'); -after('deploy:success', 'ntfy:notify:success'); -after('deploy:failed', 'ntfy:notify:failure'); -``` -9.) Sip your coffee - -## Configuration - -- `ntfy_server` – ntfy server url, default `ntfy.sh` - ``` - set('ntfy_server', 'ntfy.sh'); - ``` -- `ntfy_topic` – ntfy topic, **required** - ``` - set('ntfy_topic', 'mysecrettopic'); - ``` -- `ntfy_title` – the title of the message, default `{{application}}` -- `ntfy_text` – notification message template - ``` - set('ntfy_text', '_{{user}}_ deploying `{{branch}}` to *{{target}}*'); - ``` -- `ntfy_tags` – notification message tags / emojis (comma separated) - ``` - set('ntfy_tags', `information_source`); - ``` -- `ntfy_priority` – notification message priority (integer) - ``` - set('ntfy_priority', 5); - ``` -- `ntfy_success_text` – success template, default: - ``` - set('ntfy_success_text', 'Deploy to *{{target}}* successful'); - ``` -- `ntfy_success_tags` – success tags / emojis (comma separated) - ``` - set('ntfy_success_tags', `white_check_mark,champagne`); - ``` -- `ntfy_success_priority` – success notification message priority -- `ntfy_failure_text` – failure template, default: - ``` - set('ntfy_failure_text', 'Deploy to *{{target}}* failed'); - ``` -- `ntfy_failure_tags` – failure tags / emojis (comma separated) - ``` - set('ntfy_failure_tags', `warning,skull`); - ``` -- `ntfy_failure_priority` – failure notification message priority - - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'ntfy:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'ntfy:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'ntfy:notify:failure'); -``` - - -## Configuration -### ntfy_server -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ntfy.php#L89) - - - -```php title="Default value" -'ntfy.sh' -``` - - -### ntfy_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ntfy.php#L92) - -Title of project - -```php title="Default value" -return get('application', 'Project'); -``` - - -### ntfy_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ntfy.php#L97) - -Deploy message - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to *{{target}}*' -``` - - -### ntfy_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ntfy.php#L98) - - - -```php title="Default value" -'Deploy to *{{target}}* successful' -``` - - -### ntfy_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ntfy.php#L99) - - - -```php title="Default value" -'Deploy to *{{target}}* failed' -``` - - -### ntfy_tags -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ntfy.php#L102) - -Message tags - - - -### ntfy_success_tags -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ntfy.php#L103) - - - - - -### ntfy_failure_tags -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ntfy.php#L104) - - - - - - -## Tasks - -### ntfy:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ntfy.php#L107) - -Notifies ntfy server. - - - - -### ntfy:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ntfy.php#L125) - -Notifies ntfy server about deploy finish. - - - - -### ntfy:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/ntfy.php#L143) - -Notifies ntfy server about deploy failure. - - - - diff --git a/docs/contrib/phinx.md b/docs/contrib/phinx.md deleted file mode 100644 index 8a1020da0..000000000 --- a/docs/contrib/phinx.md +++ /dev/null @@ -1,118 +0,0 @@ - - - - -# Phinx Recipe - -```php -require 'contrib/phinx.php'; -``` - -[Source](/contrib/phinx.php) - - - - -## Configuration options - -All options are in the config parameter `phinx` specified as an array (instead of the `phinx_path` variable). -All parameters are *optional*, but you can specify them with a dictionary (to change all parameters) -or by deployer dot notation (to change one option). - -### Phinx params - -- `phinx.environment` -- `phinx.date` -- `phinx.configuration` N.B. current directory is the project directory -- `phinx.target` -- `phinx.seed` -- `phinx.parser` -- `phinx.remove-all` (pass empty string as value) - -### Phinx path params - -- `phinx_path` Specify phinx path (by default phinx is searched for in $PATH, ./vendor/bin and ~/.composer/vendor/bin) - -### Example of usage - -```php -$phinx_env_vars = [ - 'environment' => 'development', - 'configuration' => './migration/.phinx.yml', - 'target' => '20120103083322', - 'remove-all' => '', -]; - -set('phinx_path', '/usr/local/phinx/bin/phinx'); -set('phinx', $phinx_env_vars); - -after('cleanup', 'phinx:migrate'); - -or set it for a specific server -host('dev') - ->user('user') - ->set('deploy_path', '/var/www') - ->set('phinx', $phinx_env_vars) - ->set('phinx_path', ''); -``` - -## Suggested Usage - -You can run all tasks before or after any -tasks (but you need to specify external configs for phinx). -If you use internal configs (which are in your project) you need -to run it after the `deploy:update_code` task is completed. - -## Read more - -For further reading see [phinx.org](https://phinx.org). Complete descriptions of all possible options can be found on the [commands page](http://docs.phinx.org/en/latest/commands.html). - - - -## Configuration -### bin/phinx -[Source](https://github.com/deployphp/deployer/blob/master/contrib/phinx.php#L80) - -Path to Phinx -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### phinx:migrate -[Source](https://github.com/deployphp/deployer/blob/master/contrib/phinx.php#L148) - -Migrats database with phinx. - - - - -### phinx:rollback -[Source](https://github.com/deployphp/deployer/blob/master/contrib/phinx.php#L169) - -Rollbacks database migrations with phinx. - - - - -### phinx:seed -[Source](https://github.com/deployphp/deployer/blob/master/contrib/phinx.php#L190) - -Seeds database with phinx. - - - - -### phinx:breakpoint -[Source](https://github.com/deployphp/deployer/blob/master/contrib/phinx.php#L210) - -Sets a migrations breakpoint with phinx. - - - - diff --git a/docs/contrib/php-fpm.md b/docs/contrib/php-fpm.md deleted file mode 100644 index f5ca98a20..000000000 --- a/docs/contrib/php-fpm.md +++ /dev/null @@ -1,75 +0,0 @@ - - - - -# Php-fpm Recipe - -```php -require 'contrib/php-fpm.php'; -``` - -[Source](/contrib/php-fpm.php) - - - - -:::caution -Do **not** reload php-fpm. Some user requests could fail or not complete in the -process of reloading. - -Instead, configure your server [properly](https://ï.at/avoid-php-fpm-reloading). If you're using Deployer's provision -recipe, it's already configured the right way and no php-fpm reload is needed. -::: - -## Configuration - -- `php_fpm_version` – The PHP-fpm version. For example: `8.0`. -- `php_fpm_service` – The full name of the PHP-fpm service. Defaults to `php{{php_fpm_version}}-fpm`. -- `php_fpm_command` – The command to run to reload PHP-fpm. Defaults to `sudo systemctl reload {{php_fpm_service}}`. - -## Usage - -Start by explicitely providing the current version of PHP-version using the `php_fpm_version`. -Alternatively, you may use any of the options above to configure how PHP-fpm should reload. - -Then, add the `php-fpm:reload` task at the end of your deployments by using the `after` method like so. - -```php -set('php_fpm_version', '8.0'); -after('deploy', 'php-fpm:reload'); -``` - - - -## Configuration -### php_fpm_version -[Source](https://github.com/deployphp/deployer/blob/master/contrib/php-fpm.php#L34) - -Automatically detects by using [bin/php](/docs/recipe/common.md#bin/php). - -```php title="Default value" -return run('{{bin/php}} -r "printf(\'%d.%d\', PHP_MAJOR_VERSION, PHP_MINOR_VERSION);"'); -``` - - -### php_fpm_service -[Source](https://github.com/deployphp/deployer/blob/master/contrib/php-fpm.php#L38) - - - -```php title="Default value" -'php{{php_fpm_version}}-fpm' -``` - - - -## Tasks - -### php-fpm:reload -[Source](https://github.com/deployphp/deployer/blob/master/contrib/php-fpm.php#L41) - -Reloads the php-fpm service. - - - - diff --git a/docs/contrib/rabbit.md b/docs/contrib/rabbit.md deleted file mode 100644 index 2a3302318..000000000 --- a/docs/contrib/rabbit.md +++ /dev/null @@ -1,73 +0,0 @@ - - - - -# Rabbit Recipe - -```php -require 'contrib/rabbit.php'; -``` - -[Source](/contrib/rabbit.php) - - - -### Installing - -```php -deploy.php - -require 'recipe/rabbit.php'; -``` - -### Configuration options - -- **rabbit** *(required)*: accepts an *array* with the connection information to [rabbitmq](http://www.rabbitmq.com) server token and team name. - - -You can provide also other configuration options: - - - *host* - default is localhost - - *port* - default is 5672 - - *username* - default is *guest* - - *password* - default is *guest* - - *channel* - no default value, need to be specified via config - - *message* - default is **Deployment to '{$host}' on *{$prod}* was successful\n($releasePath)** - - *vhost* - default is - - -```php -deploy.php - -set('rabbit', [ - 'host' => 'localhost', - 'port' => '5672', - 'username' => 'guest', - 'password' => 'guest', - 'channel' => 'notify-channel', - 'vhost' => '/my-app' -]); -``` - -### Suggested Usage - -Since you should only notify RabbitMQ channel of a successful deployment, the `deploy:rabbit` task should be executed right at the end. - -```php -deploy.php - -before('deploy:end', 'deploy:rabbit'); -``` - - - -## Tasks - -### deploy:rabbit -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rabbit.php#L58) - -Notifies RabbitMQ channel about deployment. - - - - diff --git a/docs/contrib/raygun.md b/docs/contrib/raygun.md deleted file mode 100644 index b37217e48..000000000 --- a/docs/contrib/raygun.md +++ /dev/null @@ -1,45 +0,0 @@ - - - - -# Raygun Recipe - -```php -require 'contrib/raygun.php'; -``` - -[Source](/contrib/raygun.php) - - - - -## Configuration - -- `raygun_api_key` – the API key of your Raygun application -- `raygun_version` – the version of your application that this deployment is releasing -- `raygun_owner_name` – the name of the person creating this deployment -- `raygun_email` – the email of the person creating this deployment -- `raygun_comment` – the deployment notes -- `raygun_scm_identifier` – the commit that this deployment was built off -- `raygun_scm_type` - the source control system you use - -## Usage - -To notify Raygun of a successful deployment, you can use the 'raygun:notify' task after a deployment. - -```php -after('deploy', 'raygun:notify'); -``` - - - -## Tasks - -### raygun:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/raygun.php#L27) - -Notifies Raygun of deployment. - - - - diff --git a/docs/contrib/rocketchat.md b/docs/contrib/rocketchat.md deleted file mode 100644 index e56773851..000000000 --- a/docs/contrib/rocketchat.md +++ /dev/null @@ -1,230 +0,0 @@ - - - - -# Rocketchat Recipe - -```php -require 'contrib/rocketchat.php'; -``` - -[Source](/contrib/rocketchat.php) - - - -## Installing - -Create a RocketChat incoming webhook, through the administration panel. - -Add hook on deploy: - -``` -before('deploy', 'rocketchat:notify'); -``` - -## Configuration - - - `rocketchat_webhook` - incoming rocketchat webook **required** - ``` - set('rocketchat_webhook', 'https://rocketchat.yourcompany.com/hooks/XXXXX'); - ``` - - - `rocketchat_title` - the title of the application, defaults to `{{application}}` - - `rocketchat_text` - notification message - ``` - set('rocketchat_text', '_{{user}}_ deploying {{branch}} to {{target}}'); - ``` - - - `rocketchat_success_text` – success template, default: - ``` - set('rocketchat_success_text', 'Deploy to *{{target}}* successful'); - ``` - - `rocketchat_failure_text` – failure template, default: - ``` - set('rocketchat_failure_text', 'Deploy to *{{target}}* failed'); - ``` - - - `rocketchat_color` – color's attachment - - `rocketchat_success_color` – success color's attachment - - `rocketchat_failure_color` – failure color's attachment - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'rocketchat:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'rocketchat:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'rocketchat:notify:failure'); -``` - - - -## Configuration -### rockchat_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L64) - - - -```php title="Default value" -return get('application', 'Project'); -``` - - -### rocketchat_icon_emoji -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L68) - - - -```php title="Default value" -':robot:' -``` - - -### rocketchat_icon_url -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L69) - - - -```php title="Default value" -null -``` - - -### rocketchat_channel -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L71) - - - -```php title="Default value" -null -``` - - -### rocketchat_room_id -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L72) - - - -```php title="Default value" -null -``` - - -### rocketchat_username -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L73) - - - -```php title="Default value" -null -``` - - -### rocketchat_webhook -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L74) - - - -```php title="Default value" -null -``` - - -### rocketchat_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L76) - - - -```php title="Default value" -'#000000' -``` - - -### rocketchat_success_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L77) - - - -```php title="Default value" -'#00c100' -``` - - -### rocketchat_failure_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L78) - - - -```php title="Default value" -'#ff0909' -``` - - -### rocketchat_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L80) - - - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to *{{target}}*' -``` - - -### rocketchat_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L81) - - - -```php title="Default value" -'Deploy to *{{target}}* successful' -``` - - -### rocketchat_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L82) - - - -```php title="Default value" -'Deploy to *{{target}}* failed' -``` - - - -## Tasks - -### rocketchat:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L85) - -Notifies RocketChat. - - - - -### rocketchat:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L115) - -Notifies RocketChat about deploy finish. - - - - -### rocketchat:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rocketchat.php#L145) - -Notifies RocketChat about deploy failure. - - - - diff --git a/docs/contrib/rollbar.md b/docs/contrib/rollbar.md deleted file mode 100644 index ec32b1c13..000000000 --- a/docs/contrib/rollbar.md +++ /dev/null @@ -1,56 +0,0 @@ - - - - -# Rollbar Recipe - -```php -require 'contrib/rollbar.php'; -``` - -[Source](/contrib/rollbar.php) - - - - -## Configuration - -- `rollbar_token` – access token to rollbar api -- `rollbar_comment` – comment about deploy, default to - ```php - set('rollbar_comment', '_{{user}}_ deploying `{{branch}}` to *{{target}}*'); - ``` -- `rollbar_username` – rollbar user name - -## Usage - -Since you should only notify Rollbar channel of a successful deployment, the `rollbar:notify` task should be executed right at the end. - -```php -after('deploy', 'rollbar:notify'); -``` - - - -## Configuration -### rollbar_comment -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rollbar.php#L26) - - - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to *{{target}}*' -``` - - - -## Tasks - -### rollbar:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rollbar.php#L29) - -Notifies Rollbar of deployment. - - - - diff --git a/docs/contrib/rsync.md b/docs/contrib/rsync.md deleted file mode 100644 index 310910704..000000000 --- a/docs/contrib/rsync.md +++ /dev/null @@ -1,233 +0,0 @@ - - - - -# Rsync Recipe - -```php -require 'contrib/rsync.php'; -``` - -[Source](/contrib/rsync.php) - - - -:::warning -This must not be confused with `/src/Utility/Rsync.php`, deployer's built-in rsync. Their configuration options are also very different, read carefully below. -::: - -## Configuration options - -- **rsync**: Accepts an array with following rsync options (all are optional and defaults are ok): - - *exclude*: accepts an *array* with patterns to be excluded from sending to server - - *exclude-file*: accepts a *string* containing absolute path to file, which contains exclude patterns - - *include*: accepts an *array* with patterns to be included in sending to server - - *include-file*: accepts a *string* containing absolute path to file, which contains include patterns - - *filter*: accepts an *array* of rsync filter rules - - *filter-file*: accepts a *string* containing merge-file filename. - - *filter-perdir*: accepts a *string* containing merge-file filename to be scanned and merger per each directory in rsync list on files to send - - *flags*: accepts a *string* of flags to set when calling rsync command. Please **avoid** flags that accept params, and use *options* instead. - - *options*: accepts an *array* of options to set when calling rsync command. **DO NOT** prefix options with `--` as it's automatically added. - - *timeout*: accepts an *int* defining timeout for rsync command to run locally. - -### Sample Configuration: - -Following is default configuration. By default rsync ignores only git dir and `deploy.php` file. - -```php -deploy.php - -set('rsync',[ - 'exclude' => [ - '.git', - 'deploy.php', - ], - 'exclude-file' => false, - 'include' => [], - 'include-file' => false, - 'filter' => [], - 'filter-file' => false, - 'filter-perdir'=> false, - 'flags' => 'rz', // Recursive, with compress - 'options' => ['delete'], - 'timeout' => 60, -]); -``` - -If You have multiple excludes, You can put them in file and reference that instead. If You use `deploy:rsync_warmup` You could set additional options that could speed-up and/or affect way things are working. For example: - -```php -deploy.php - -set('rsync',[ - 'exclude' => ['excludes_file'], - 'exclude-file' => '/tmp/localdeploys/excludes_file', //Use absolute path to avoid possible rsync problems - 'include' => [], - 'include-file' => false, - 'filter' => [], - 'filter-file' => false, - 'filter-perdir' => false, - 'flags' => 'rzcE', // Recursive, with compress, check based on checksum rather than time/size, preserve Executable flag - 'options' => ['delete', 'delete-after', 'force'], //Delete after successful transfer, delete even if deleted dir is not empty - 'timeout' => 3600, //for those huge repos or crappy connection -]); -``` - - -### Parameter - -- **rsync_src**: per-host rsync source. This can be server, stage or whatever-dependent. By default it's set to current directory -- **rsync_dest**: per-host rsync destination. This can be server, stage or whatever-dependent. by default it's equivalent to release deploy destination. - -### Sample configurations: - -This is default configuration: - -```php -set('rsync_src', __DIR__); -set('rsync_dest','{{release_path}}'); -``` - -If You use local deploy recipe You can set src to local release: - -```php -host('hostname') - ->hostname('10.10.10.10') - ->port(22) - ->set('deploy_path','/your/remote/path/app') - ->set('rsync_src', '/your/local/path/app') - ->set('rsync_dest','{{release_path}}'); -``` - -## Usage - -- `rsync` task - - Set `rsync_src` to locally cloned repository and rsync to `rsync_dest`. Then set this task instead of `deploy:update_code` in Your `deploy` task if Your hosting provider does not allow git. - -- `rsync:warmup` task - - If Your deploy task looks like: - - ```php - task('deploy', [ - 'deploy:prepare', - 'deploy:release', - 'rsync', - 'deploy:vendors', - 'deploy:symlink', - ])->desc('Deploy your project'); - ``` - - And Your `rsync_dest` is set to `{{release_path}}` then You could add this task to run before `rsync` task or after `deploy:release`, whatever is more convenient. - - - -## Configuration -### rsync -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L119) - - - -```php title="Default value" -[ - 'exclude' => [ - '.git', - 'deploy.php', - ], - 'exclude-file' => false, - 'include' => [], - 'include-file' => false, - 'filter' => [], - 'filter-file' => false, - 'filter-perdir' => false, - 'flags' => 'rz', - 'options' => ['delete'], - 'timeout' => 300, -] -``` - - -### rsync_src -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L135) - - - -```php title="Default value" -__DIR__ -``` - - -### rsync_dest -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L136) - - - -```php title="Default value" -'{{release_path}}' -``` - - -### rsync_excludes -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L138) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### rsync_includes -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L153) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### rsync_filter -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L168) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### rsync_options -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L186) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### rsync:warmup -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L198) - -Warmups remote Rsync target. - - - - -### rsync -[Source](https://github.com/deployphp/deployer/blob/master/contrib/rsync.php#L213) - -Rsync local->remote. - - - - diff --git a/docs/contrib/sentry.md b/docs/contrib/sentry.md deleted file mode 100644 index e4e4493d4..000000000 --- a/docs/contrib/sentry.md +++ /dev/null @@ -1,70 +0,0 @@ - - - - -# Sentry Recipe - -```php -require 'contrib/sentry.php'; -``` - -[Source](/contrib/sentry.php) - - - - -### Configuration options - -- **organization** *(required)*: the slug of the organization the release belongs to. -- **projects** *(required)*: array of slugs of the projects to create a release for. -- **token** *(required)*: authentication token. Can be created at [https://sentry.io/settings/account/api/auth-tokens/] -- **version** *(required)* – a version identifier for this release. -Can be a version number, a commit hash etc. (Defaults is set to git log -n 1 --format="%h".) -- **version_prefix** *(optional)* - a string prefixed to version. -Releases are global per organization so indipentent projects needs to prefix version number with unique string to avoid conflicts -- **environment** *(optional)* - the environment you’re deploying to. By default framework's environment is used. -For example for symfony, *symfony_env* configuration is read otherwise defaults to 'prod'. -- **ref** *(optional)* – an optional commit reference. This is useful if a tagged version has been provided. -- **refs** *(optional)* - array to indicate the start and end commits for each repository included in a release. -Head commits must include parameters *repository* and *commit*) (the HEAD sha). -They can optionally include *previousCommit* (the sha of the HEAD of the previous release), -which should be specified if this is the first time you’ve sent commit data. -- **commits** *(optional)* - array commits data to be associated with the release. -Commits must include parameters *id* (the sha of the commit), and can optionally include *repository*, -*message*, *author_name*, *author_email* and *timestamp*. By default will send all new commits, -unless it's a first release, then only first 200 will be sent. -- **url** *(optional)* – a URL that points to the release. This can be the path to an online interface to the sourcecode for instance. -- **date_released** *(optional)* – date that indicates when the release went live. If not provided the current time is assumed. -- **sentry_server** *(optional)* – sentry server (if you host it yourself). defaults to hosted sentry service. -- **date_deploy_started** *(optional)* - date that indicates when the deploy started. Defaults to current time. -- **date_deploy_finished** *(optional)* - date that indicates when the deploy ended. If not provided, the current time is used. -- **deploy_name** *(optional)* - name of the deploy -- **git_version_command** *(optional)* - the command that retrieves the git version information (Defaults is set to git log -n 1 --format="%h", other options are git describe --tags --abbrev=0) - -```php -deploy.php - -set('sentry', [ - 'organization' => 'exampleorg', - 'projects' => [ - 'exampleproj' - ], - 'token' => 'd47828...', - 'version' => '0.0.1', - -]); -``` - -### Suggested Usage - -Since you should only notify Sentry of a successful deployment, the deploy:sentry task should be executed right at the end. - -```php -deploy.php - -after('deploy', 'deploy:sentry'); -``` - - - - diff --git a/docs/contrib/slack.md b/docs/contrib/slack.md deleted file mode 100644 index 6822183da..000000000 --- a/docs/contrib/slack.md +++ /dev/null @@ -1,219 +0,0 @@ - - - - -# Slack Recipe - -```php -require 'contrib/slack.php'; -``` - -[Source](/contrib/slack.php) - - - -## Installing - -Add to Slack - - -Add hook on deploy: - -```php -before('deploy', 'slack:notify'); -``` - -## Configuration - -- `slack_webhook` – slack incoming webhook url, **required** - ``` - set('slack_webhook', 'https://hooks.slack.com/...'); - ``` -- `slack_channel` - channel to send notification to. The default is the channel configured in the webhook -- `slack_title` – the title of application, default `{{application}}` -- `slack_text` – notification message template, markdown supported - ``` - set('slack_text', '_{{user}}_ deploying `{{branch}}` to *{{target}}*'); - ``` -- `slack_success_text` – success template, default: - ``` - set('slack_success_text', 'Deploy to *{{target}}* successful'); - ``` -- `slack_failure_text` – failure template, default: - ``` - set('slack_failure_text', 'Deploy to *{{target}}* failed'); - ``` - -- `slack_color` – color's attachment -- `slack_success_color` – success color's attachment -- `slack_failure_color` – failure color's attachment -- `slack_fields` - set attachments fields for pretty output in Slack, default: - ``` - set('slack_fields', []); - ``` - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'slack:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'slack:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'slack:notify:failure'); -``` - - - -## Configuration -### slack_channel -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L69) - -Channel to publish to, when false the default channel the webhook will be used - -```php title="Default value" -false -``` - - -### slack_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L72) - -Title of project - -```php title="Default value" -return get('application', 'Project'); -``` - - -### slack_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L77) - -Deploy message - -```php title="Default value" -'_{{user}}_ deploying `{{target}}` to *{{hostname}}*' -``` - - -### slack_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L78) - - - -```php title="Default value" -'Deploy to *{{target}}* successful' -``` - - -### slack_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L79) - - - -```php title="Default value" -'Deploy to *{{target}}* failed' -``` - - -### slack_rollback_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L80) - - - -```php title="Default value" -'_{{user}}_ rolled back changes on *{{target}}*' -``` - - -### slack_fields -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L81) - - - - - -### slack_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L84) - -Color of attachment - -```php title="Default value" -'#4d91f7' -``` - - -### slack_success_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L85) - - - -```php title="Default value" -'#00c100' -``` - - -### slack_failure_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L86) - - - -```php title="Default value" -'#ff0909' -``` - - -### slack_rollback_color -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L87) - - - -```php title="Default value" -'#eba211' -``` - - - -## Tasks - -### slack:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L99) - -Notifies Slack. - - - - -### slack:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L119) - -Notifies Slack about deploy finish. - - - - -### slack:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L140) - -Notifies Slack about deploy failure. - - - - -### slack:notify:rollback -[Source](https://github.com/deployphp/deployer/blob/master/contrib/slack.php#L160) - -Notifies Slack about rollback. - - - - diff --git a/docs/contrib/supervisord-monitor.md b/docs/contrib/supervisord-monitor.md deleted file mode 100644 index 718c5bfdf..000000000 --- a/docs/contrib/supervisord-monitor.md +++ /dev/null @@ -1,128 +0,0 @@ - - - - -# Supervisord-monitor Recipe - -```php -require 'contrib/supervisord-monitor.php'; -``` - -[Source](/contrib/supervisord-monitor.php) - - - -### Description -This is a recipe that uses the [Supervisord server monitoring project](https://github.com/mlazarov/supervisord-monitor). - -With this recipe the possibility is created to restart a supervisord process through the Supervisor Monitor webtool, by using cURL. This workaround is particular usefull when the deployment user has unsuficient rights to restart a daemon process from the cli. - -### Configuration - -``` -set('supervisord', [ - 'uri' => 'https://youruri.xyz/supervisor', - 'basic_auth_user' => 'username', - 'basic_auth_password' => 'password', - 'process_name' => 'process01', -]); -``` - -or - -``` -set('supervisord_uri', 'https://youruri.xyz/supervisor'); -set('supervisord_basic_auth_user', 'username'); -set('supervisord_basic_auth_password', 'password'); -set('supervisord_process_name', 'process01'); -``` - -- `supervisord` – array with configuration for Supervisord - - `uri` – URI to the Supervisord monitor page - - `basic_auth_user` – Basic auth username to access the URI - - `basic_auth_password` – Basic auth password to access the URI - - `process_name` – the process name, as visible in the Supervisord monitor page. Multiple processes can be listed here, comma separated - -### Task - -- `supervisord-monitor:restart` Restarts given processes -- `supervisord-monitor:stop` Stops given processes -- `supervisord-monitor:start` Starts given processes - -### Usage - -A complete example with configs, staging and deployment - -``` - 'https://youruri.xyz/supervisor', - 'basic_auth_user' => 'username', - 'basic_auth_password' => 'password', - 'process_name' => 'process01', -]); - -host('staging.myproject.com') - ->set('branch', 'develop') - ->set('labels', ['stage' => 'staging']); - -host('myproject.com') - ->set('branch', 'main') - ->set('labels', ['stage' => 'production']); - -Tasks -task('build', function () { - run('cd {{release_path}} && build'); -}); - -task('deploy', [ - 'build', - 'supervisord', -]); - -task('supervisord', ['supervisord-monitor:restart']) - ->select('stage=production'); -``` - - - -## Tasks - -### supervisord-monitor:restart -[Source](https://github.com/deployphp/deployer/blob/master/contrib/supervisord-monitor.php#L133) - - - - - - -### supervisord-monitor:stop -[Source](https://github.com/deployphp/deployer/blob/master/contrib/supervisord-monitor.php#L150) - - - - - - -### supervisord-monitor:start -[Source](https://github.com/deployphp/deployer/blob/master/contrib/supervisord-monitor.php#L164) - - - - - - diff --git a/docs/contrib/telegram.md b/docs/contrib/telegram.md deleted file mode 100644 index 45ac897fe..000000000 --- a/docs/contrib/telegram.md +++ /dev/null @@ -1,155 +0,0 @@ - - - - -# Telegram Recipe - -```php -require 'contrib/telegram.php'; -``` - -[Source](/contrib/telegram.php) - - - -## Installing - 1. Create telegram bot with [BotFather](https://t.me/BotFather) and grab the token provided - 2. Send `/start` to your bot and open https://api.telegram.org/bot{$TELEGRAM_TOKEN_HERE}/getUpdates - 3. Take chat_id from response - - -Add hook on deploy: - -```php -before('deploy', 'telegram:notify'); -``` - -## Configuration - -- `telegram_token` – telegram bot token, **required** -- `telegram_chat_id` — chat ID to push messages to -- `telegram_proxy` - proxy connection string in [CURLOPT_PROXY](https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html) form like: - ``` - http://proxy:80 - socks5://user:password@host:3128 - ``` -- `telegram_title` – the title of application, default `{{application}}` -- `telegram_text` – notification message template - ``` - _{{user}}_ deploying `{{branch}}` to *{{target}}* - ``` -- `telegram_success_text` – success template, default: - ``` - Deploy to *{{target}}* successful - - ``` -- `telegram_failure_text` – failure template, default: - ``` - Deploy to *{{target}}* failed - ``` - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'telegram:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'telegram:notify:success'); -``` -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'telegram:notify:failure'); - - - - -## Configuration -### telegram_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L63) - -Title of project - -```php title="Default value" -return get('application', 'Project'); -``` - - -### telegram_token -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L68) - -Telegram settings -:::info Required -Throws exception if not set. -::: - - - - -### telegram_chat_id -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L71) - - -:::info Required -Throws exception if not set. -::: - - - - -### telegram_url -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L74) - - - -```php title="Default value" -return 'https://api.telegram.org/bot' . get('telegram_token') . '/sendmessage'; -``` - - -### telegram_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L79) - -Deploy message - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to *{{target}}*' -``` - - -### telegram_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L80) - - - -```php title="Default value" -'Deploy to *{{target}}* successful' -``` - - -### telegram_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L81) - - - -```php title="Default value" -'Deploy to *{{target}}* failed' -``` - - - -## Tasks - -### telegram:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/telegram.php#L85) - -Notifies Telegram. - - - - diff --git a/docs/contrib/webpack_encore.md b/docs/contrib/webpack_encore.md deleted file mode 100644 index 929908709..000000000 --- a/docs/contrib/webpack_encore.md +++ /dev/null @@ -1,67 +0,0 @@ - - - - -# Webpack Encore Recipe - -```php -require 'contrib/webpack_encore.php'; -``` - -[Source](/contrib/webpack_encore.php) - -* Requires - * [npm](/docs/contrib/npm.md) - * [yarn](/docs/contrib/yarn.md) - - - -## Configuration - -- **webpack_encore/package_manager** *(optional)*: set yarn or npm. We try to find if yarn or npm is available and used. - -## Usage - -```php -For Yarn -after('deploy:update_code', 'yarn:install'); -For npm -after('deploy:update_code', 'npm:install'); - -after('deploy:update_code', 'webpack_encore:build'); -``` - - -## Configuration -### webpack_encore/package_manager -[Source](https://github.com/deployphp/deployer/blob/master/contrib/webpack_encore.php#L24) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### webpack_encore/env -[Source](https://github.com/deployphp/deployer/blob/master/contrib/webpack_encore.php#L32) - - - -```php title="Default value" -'production' -``` - - - -## Tasks - -### webpack_encore:build -[Source](https://github.com/deployphp/deployer/blob/master/contrib/webpack_encore.php#L35) - -Runs webpack encore build. - - - - diff --git a/docs/contrib/workplace.md b/docs/contrib/workplace.md deleted file mode 100644 index 1664d15ea..000000000 --- a/docs/contrib/workplace.md +++ /dev/null @@ -1,145 +0,0 @@ - - - - -# Workplace Recipe - -```php -require 'contrib/workplace.php'; -``` - -[Source](/contrib/workplace.php) - - - -This recipes works with Custom Integrations and Publishing Bots. - - -Add hook on deploy: - -``` -before('deploy', 'workplace:notify'); -``` - -## Configuration - - - `workplace_webhook` - incoming workplace webhook **required** - ``` - // With custom integration - set('workplace_webhook', 'https://graph.facebook.com//feed?access_token='); - - // With publishing bot - set('workplace_webhook', 'https://graph.facebook.com/v3.0/group/feed?access_token='); - - // Use markdown on message - set('workplace_webhook', 'https://graph.facebook.com//feed?access_token=&formatting=MARKDOWN'); - ``` - - - `workplace_text` - notification message - ``` - set('workplace_text', '_{{user}}_ deploying `{{branch}}` to *{{target}}*'); - ``` - - - `workplace_success_text` – success template, default: - ``` - set('workplace_success_text', 'Deploy to *{{target}}* successful'); - ``` - - `workplace_failure_text` – failure template, default: - ``` - set('workplace_failure_text', 'Deploy to *{{target}}* failed'); - ``` - - `workplace_edit_post` – whether to create a new post for deploy result, or edit the first one created, default creates a new post: - ``` - set('workplace_edit_post', false); - ``` - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'workplace:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'workplace:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'workplace:notify:failure'); -``` - - - -## Configuration -### workplace_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L70) - -Deploy message - -```php title="Default value" -'_{{user}}_ deploying `{{branch}}` to *{{target}}*' -``` - - -### workplace_success_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L71) - - - -```php title="Default value" -'Deploy to *{{target}}* successful' -``` - - -### workplace_failure_text -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L72) - - - -```php title="Default value" -'Deploy to *{{target}}* failed' -``` - - -### workplace_edit_post -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L75) - -By default, create a new post for every message - -```php title="Default value" -false -``` - - - -## Tasks - -### workplace:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L78) - -Notifies Workplace. - - - - -### workplace:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L102) - -Notifies Workplace about deploy finish. - - - - -### workplace:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/workplace.php#L113) - -Notifies Workplace about deploy failure. - - - - diff --git a/docs/contrib/yammer.md b/docs/contrib/yammer.md deleted file mode 100644 index 4fe6eab96..000000000 --- a/docs/contrib/yammer.md +++ /dev/null @@ -1,140 +0,0 @@ - - - - -# Yammer Recipe - -```php -require 'contrib/yammer.php'; -``` - -[Source](/contrib/yammer.php) - - - - -Add hook on deploy: - -```php -before('deploy', 'yammer:notify'); -``` - -## Configuration - -- `yammer_url` – The URL to the message endpoint, default is https://www.yammer.com/api/v1/messages.json -- `yammer_token` *(required)* – Yammer auth token -- `yammer_group_id` *(required)* - Group ID -- `yammer_title` – the title of application, default `{{application}}` -- `yammer_body` – notification message template, default: - ``` - {{user}} deploying {{branch}} to {{target}} - ``` -- `yammer_success_body` – success template, default: - ``` - Deploy to {{target}} successful - ``` -- `yammer_failure_body` – failure template, default: - ``` - Deploy to {{target}} failed - ``` - -## Usage - -If you want to notify only about beginning of deployment add this line only: - -```php -before('deploy', 'yammer:notify'); -``` - -If you want to notify about successful end of deployment add this too: - -```php -after('deploy:success', 'yammer:notify:success'); -``` - -If you want to notify about failed deployment add this too: - -```php -after('deploy:failed', 'yammer:notify:failure'); -``` - - - -## Configuration -### yammer_url -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L54) - - - -```php title="Default value" -'https://www.yammer.com/api/v1/messages.json' -``` - - -### yammer_title -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L57) - -Title of project - -```php title="Default value" -return get('application', 'Project'); -``` - - -### yammer_body -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L62) - -Deploy message - -```php title="Default value" -'{{user}} deploying {{branch}} to {{target}}' -``` - - -### yammer_success_body -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L63) - - - -```php title="Default value" -'Deploy to {{target}} successful' -``` - - -### yammer_failure_body -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L64) - - - -```php title="Default value" -'Deploy to {{target}} failed' -``` - - - -## Tasks - -### yammer:notify -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L67) - -Notifies Yammer. - - - - -### yammer:notify:success -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L86) - -Notifies Yammer about deploy finish. - - - - -### yammer:notify:failure -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yammer.php#L105) - -Notifies Yammer about deploy failure. - - - - diff --git a/docs/contrib/yarn.md b/docs/contrib/yarn.md deleted file mode 100644 index 8007fbe1b..000000000 --- a/docs/contrib/yarn.md +++ /dev/null @@ -1,47 +0,0 @@ - - - - -# Yarn Recipe - -```php -require 'contrib/yarn.php'; -``` - -[Source](/contrib/yarn.php) - - - -## Configuration - -- **bin/yarn** *(optional)*: set Yarn binary, automatically detected otherwise. - -## Usage - -```php -after('deploy:update_code', 'yarn:install'); -``` - - -## Configuration -### bin/yarn -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yarn.php#L15) - - - -```php title="Default value" -return which('yarn'); -``` - - - -## Tasks - -### yarn:install -[Source](https://github.com/deployphp/deployer/blob/master/contrib/yarn.php#L21) - -Installs Yarn packages. - -In there is a {{previous_release}}, node_modules will be copied from it before installing deps with yarn. - - diff --git a/docs/getting-started.md b/docs/getting-started.md deleted file mode 100755 index a3bd1bfa1..000000000 --- a/docs/getting-started.md +++ /dev/null @@ -1,173 +0,0 @@ -# Getting Started - -In this tutorial we will cover: - -- Setting up a new host with the [provision](recipe/provision.md) recipe. -- Configuring a deployment and perfoming our first deploy. - -First, [install Deployer](installation.md): - -Now lets cd into the project and run the following command: - -```sh -dep init -``` - -Deployer will ask you a few questions, and after finishing you will have a -**deploy.php** or **deploy.yaml** file. This is our deployment recipe. -It contains hosts, tasks and requires other recipes. All framework recipes -that come with Deployer are based on the [common](recipe/common.md) recipe. - -## Provision - -:::note -If you already have a configured webserver you may skip to -[deployment](#deploy). -::: - -Let's create a new VPS on Linode, DigitalOcean, Vultr, AWS, GCP, etc. - -Make sure the image is **Ubuntu 20.04 LTS** as this version is supported by -Deployer's [provision](recipe/provision.md) recipe. - -:::tip -Configure Reverse DNS or RDNS on your server. This will allow you to ssh into -the server using the domain name instead of the IP address. -::: - -Our **deploy.php** recipe contains a host definition with a few important params: - -- `remote_user` the user name for the ssh connection, -- `deploy_path` the file path on the host where we are going to deploy. - -Let's set `remote_user` to be `deployer`. Right now our new server probably only has the `root` user. The provision recipe will -create and configure a `deployer` user for us. - -```php -host('example.org') - ->set('remote_user', 'deployer') - ->set('deploy_path', '~/example'); -``` - -To connect to the remote host we need to specify an identity key or private key. -We can add our identity key directly into the host definition, but it's better to put it -in the **~/.ssh/config** file: - -``` -Host * - IdentityFile ~/.ssh/id_rsa -``` - -Now let's provision our server. As our host doesn't have a user `deployer`, -we are going to override `remote_user` for provisioning via `-o remote_user=root`. - -```sh -dep provision -o remote_user=root -``` - -:::tip -If your server doesn't have a `root` user but your remote user can use `sudo` to -become root, then use: - -```sh -dep provision -o become=root -``` - -::: - -Deployer will ask you a few questions during provisioning: php version, -database type, etc. Next, Deployer will configure our server and create -the `deployer` user. Provisioning takes around **5 minutes** and will install -everything we need to run a website. A new website will be configured -at [deploy_path](recipe/common.md#deploy_path). - -After we have configured the webserver, let's deploy the project. - -## Deploy - -To deploy the project: - -```sh -dep deploy -``` - -If deploy failed, Deployer will print an error message and which command was unsuccessful. -Most likely we need to configure the correct database credentials in the _.env_ file or similar. - -Ssh to the host, for example, for editing the _.env_ file: - -```sh -dep ssh -``` - -:::tip -If your webserver is using an OpenSSH version older than v7.6, updating the code may fail with the error -message `unsupported option "accept-new".` In this case, override the Git SSH command with: -```php -set('git_ssh_command', 'ssh'); -``` -::: - -After everything is configured properly we can resume our deployment from the -place it stopped. However, this is not required; we can just start a new deploy: - -``` -dep deploy --start-from deploy:migrate -``` - -After our first successful deployment, we can find the following directory structure on our server: - -``` -~/example // The deploy_path. - |- current -> releases/1 // Symlink to the current release. - |- releases // Dir for all releases. - |- 1 // Actual files location. - |- ... - |- .env -> shared/.env // Symlink to shared .env file. - |- shared // Dirs for shared files between releases. - |- ... - |- .env // Example: shared .env file. - |- .dep // Deployer configuration files. -``` - -Configure you webserver to serve the `current` directory. For example, for nginx: - -``` -root /home/deployer/example/current/public; -index index.php; -location / { - try_files $uri $uri/ /index.php?$query_string; -} -``` - -If you're using the [provision recipe](recipe/provision.md), Deployer will automatically configure the Caddy -webserver to serve from the [public_path](/docs/recipe/provision/website.md#public_path). - -Now let's add a build step on our host: - -```php -task('build', function () { - cd('{{release_path}}'); - run('npm install'); - run('npm run prod'); -}); - -after('deploy:update_code', 'build'); -``` - -Deployer has a useful task for examining what is currently deployed. - -``` -$ dep releases -task releases -+---------------------+--------- deployer.org -------+--------+-----------+ -| Date (UTC) | Release | Author | Target | Commit | -+---------------------+-------------+----------------+--------+-----------+ -| 2021-11-05 14:00:22 | 1 (current) | Anton Medvedev | HEAD | 943ded2be | -+---------------------+-------------+----------------+--------+-----------+ -``` - -:::tip -During development, the [dep push](recipe/deploy/push.md) task maybe useful -to create a patch of local changes and push them to the host. -::: diff --git a/docs/hosts.md b/docs/hosts.md deleted file mode 100644 index 1c8123741..000000000 --- a/docs/hosts.md +++ /dev/null @@ -1,190 +0,0 @@ -# Hosts - -To define a new host use the [host()](api.md#host) function. Deployer keeps a list of -all defined hosts in the `Deployer::get()->hosts` collection. - -```php -host('example.org'); -``` - -Each host contains it's own configuration key-value pairs. The [host()](api.md#host) -call defines two important configs: **alias** and **hostname**. - -- **hostname** - used when connecting to remote host. -- **alias** - used as a key in `Deployer::get()->hosts` collection. - -```php -task('test', function () { - writeln('The {{alias}} is {{hostname}}'); -}); -``` - -``` -$ dep test -[example.org] The example.org is example.org -``` - -We can override hostname via `set()` method: - -```php -host('example.org') - ->set('hostname', 'example.cloud.google.com'); -``` - -The hostname will be used for the ssh connection, but the host will be referred -by its alias when running Deployer. - -``` -$ dep test -[example.org] The example.org is example.cloud.google.com -``` - -Another important ssh connection parameter is `remote_user`. - -```php -host('example.org') - ->set('hostname', 'example.cloud.google.com') - ->set('remote_user', 'deployer'); -``` - -Now Deployer will connect using something like -`ssh deployer@example.cloud.google.com` to establishing connection. - -Also, Deployer's `Host` class has special setter methods (for better IDE -autocompletion). - -```php -host('example.org') - ->setHostname('example.cloud.google.com') - ->setRemoteUser('deployer'); -``` - -## Host config - -### `alias` - -The identifier used to identify a host. -You can use actual hostname or something like `prod` or `staging`. - -### `hostname` - -Deployer uses this config for actual ssh connection. - -### `remote_user` - -Deployer uses this config for actual ssh connection. If not specified, -Deployer will be using `RemoteUser` from **~/.ssh/config** file, or current -OS username. - -### `port` - -Port of remote ssh server to connect to. Default is `22`. - -### `config_file` - -Default is `~/.ssh/config`. - -:::info Config file -For best practices, avoid storing connection parameters in the `deploy.php` file, as -these can vary based on the deployment execution location. Instead, only include the -hostname and remote_user in `deploy.php`, while maintaining other parameters in the -`~/.ssh/config` file. - -``` -Host * - IdentityFile ~/.ssh/id_rsa -``` - -::: - -### `identity_file` - -For example, `~/.ssh/id_rsa`. - -### `forward_agent` - -SSH forwarding is a way to securely tunnel network connections from your local computer to a remote server, and from the remote server to another destination. There are several types of SSH forwarding, including local, remote, and dynamic forwarding. SSH agent forwarding is a specific type of local forwarding that allows you to use your local SSH keys to authenticate on remote servers. This can be useful if you want to use your local SSH keys to connect to a remote server, but don't want to copy your keys to the remote server. - -Default is `true`. - -### `ssh_multiplexing` - -SSH multiplexing is a technique that allows a single Secure Shell (SSH) connection to be used for multiple interactive sessions or for multiple tunneled connections. This can be useful in a number of situations, such as when you want to open multiple terminal sessions to a remote server over a single SSH connection, or when you want to establish multiple secure connections to a remote server but don't want to open multiple SSH connections. - -Default is `true`. - -### `shell` - -Default is `bash -ls`. - -### `deploy_path` - -For example, `~/myapp`. - -### `labels` - -Key-value pairs for host selector. - -### `ssh_arguments` - -For example, `['-o UserKnownHostsFile=/dev/null']` - -### `ssh_control_path` - -Default is `~/.ssh/%C`. - -If **CI** env is present, default value is `/dev/shm/%C`. - -## Multiple hosts - -You can pass multiple hosts to the host function: - -```php -host('example.org', 'deployer.org', ...) - ->setRemoteUser('anton'); -``` - -## Host ranges - -If you have a lot of hosts following similar patterns, you can describe them -like this rather than listing each hostname: - -```php -host('www[01:50].example.org'); -``` - -For numeric patterns, leading zeros can be included or removed, as desired. -Ranges are inclusive. - -You can also define alphabetic ranges: - -```php -host('db[a:f].example.org'); -``` - -## Localhost - -The [localhost()](api.md#localhost) function defines a special local host. -Deployer will not connect to this host, but will execute commands locally instead. - -```php -localhost(); // Alias and hostname will be "localhost". -localhost('ci'); // Alias is "ci", hostname is "localhost". -``` - -## YAML Inventory - -You can use the [import()](api.md#import) function to keep host definitions in a -separate file. For example, _inventory.yaml_. - -```php title="deploy.php" -import('inventory.yaml'); -``` - -```yaml title="inventory.yaml" -hosts: - example.org: - remote_user: deployer - deployer.org: - remote_user: deployer -``` diff --git a/docs/installation.md b/docs/installation.md deleted file mode 100755 index e53880ebc..000000000 --- a/docs/installation.md +++ /dev/null @@ -1,31 +0,0 @@ -# Installation - -To install Deployer, run next command in your project dir: - -``` -composer require --dev deployer/deployer -``` - -To initialize deployer in your project run: - -``` -vendor/bin/dep init -``` - -:::tip Bash integration -Add next alias to your _.bashrc_ file: - -```bash -alias dep='vendor/bin/dep' -``` - -Deployer comes with autocomplete support for task names, options, and hosts. - -Run the next command to add bash completion support: - -``` -dep completion bash > /etc/bash_completion.d/deployer -``` - -Make sure what your _.bashrc_ file includes generated file in some way. -::: diff --git a/docs/recipe/README.md b/docs/recipe/README.md deleted file mode 100644 index 05a922165..000000000 --- a/docs/recipe/README.md +++ /dev/null @@ -1,28 +0,0 @@ -# All Recipes - -* [Cakephp Recipe](/docs/recipe/cakephp.md) -* [Codeigniter Recipe](/docs/recipe/codeigniter.md) -* [Common Recipe](/docs/recipe/common.md) -* [Composer Recipe](/docs/recipe/composer.md) -* [Contao Recipe](/docs/recipe/contao.md) -* [Craftcms Recipe](/docs/recipe/craftcms.md) -* [Drupal 7 Recipe](/docs/recipe/drupal7.md) -* [Drupal 8 Recipe](/docs/recipe/drupal8.md) -* [Flow Framework Recipe](/docs/recipe/flow_framework.md) -* [Fuelphp Recipe](/docs/recipe/fuelphp.md) -* [Joomla Recipe](/docs/recipe/joomla.md) -* [Laravel Recipe](/docs/recipe/laravel.md) -* [Magento 2 Recipe](/docs/recipe/magento2.md) -* [Magento Recipe](/docs/recipe/magento.md) -* [Pimcore Recipe](/docs/recipe/pimcore.md) -* [Prestashop Recipe](/docs/recipe/prestashop.md) -* [Provision Recipe](/docs/recipe/provision.md) -* [Shopware Recipe](/docs/recipe/shopware.md) -* [Silverstripe Recipe](/docs/recipe/silverstripe.md) -* [Statamic Recipe](/docs/recipe/statamic.md) -* [Sulu Recipe](/docs/recipe/sulu.md) -* [Symfony Recipe](/docs/recipe/symfony.md) -* [TYPO3 Recipe](/docs/recipe/typo3.md) -* [WordPress Recipe](/docs/recipe/wordpress.md) -* [Yii2 Recipe](/docs/recipe/yii.md) -* [Zend Framework Recipe](/docs/recipe/zend_framework.md) \ No newline at end of file diff --git a/docs/recipe/cakephp.md b/docs/recipe/cakephp.md deleted file mode 100644 index ba1374cee..000000000 --- a/docs/recipe/cakephp.md +++ /dev/null @@ -1,116 +0,0 @@ - - - - -# How to Deploy a Cakephp Project - -```php -require 'recipe/cakephp.php'; -``` - -[Source](/recipe/cakephp.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Cakephp application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Cakephp** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:init](/docs/recipe/cakephp.md#deployinit) – -* [deploy:run_migrations](/docs/recipe/cakephp.md#deployrun_migrations) – -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The cakephp recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/cakephp.php#L13) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -CakePHP 4 Project Template shared dirs - -```php title="Default value" -[ - 'logs', - 'tmp', -] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/cakephp.php#L19) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - -CakePHP 4 Project Template shared files - -```php title="Default value" -[ - 'config/.env', - 'config/app.php', -] -``` - - - -## Tasks - -### deploy:init -[Source](https://github.com/deployphp/deployer/blob/master/recipe/cakephp.php#L27) - - - -Create plugins' symlinks - - -### deploy:run_migrations -[Source](https://github.com/deployphp/deployer/blob/master/recipe/cakephp.php#L34) - - - -Run migrations - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/cakephp.php#L42) - - - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:init](/docs/recipe/cakephp.md#deployinit) -* [deploy:run_migrations](/docs/recipe/cakephp.md#deployrun_migrations) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/codeigniter.md b/docs/recipe/codeigniter.md deleted file mode 100644 index f450bafb2..000000000 --- a/docs/recipe/codeigniter.md +++ /dev/null @@ -1,90 +0,0 @@ - - - - -# How to Deploy a Codeigniter Project - -```php -require 'recipe/codeigniter.php'; -``` - -[Source](/recipe/codeigniter.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Codeigniter application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Codeigniter** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The codeigniter recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter.php#L9) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -CodeIgniter shared dirs - -```php title="Default value" -['application/cache', 'application/logs'] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter.php#L12) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -CodeIgniter writable dirs - -```php title="Default value" -['application/cache', 'application/logs'] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter.php#L18) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/common.md b/docs/recipe/common.md deleted file mode 100644 index b04befb8b..000000000 --- a/docs/recipe/common.md +++ /dev/null @@ -1,264 +0,0 @@ - - - - -# Common Recipe - -```php -require 'recipe/common.php'; -``` - -[Source](/recipe/common.php) - -* Requires - * [provision](/docs/recipe/provision.md) - * [check_remote](/docs/recipe/deploy/check_remote.md) - * [cleanup](/docs/recipe/deploy/cleanup.md) - * [clear_paths](/docs/recipe/deploy/clear_paths.md) - * [copy_dirs](/docs/recipe/deploy/copy_dirs.md) - * [info](/docs/recipe/deploy/info.md) - * [lock](/docs/recipe/deploy/lock.md) - * [push](/docs/recipe/deploy/push.md) - * [release](/docs/recipe/deploy/release.md) - * [rollback](/docs/recipe/deploy/rollback.md) - * [setup](/docs/recipe/deploy/setup.md) - * [shared](/docs/recipe/deploy/shared.md) - * [symlink](/docs/recipe/deploy/symlink.md) - * [update_code](/docs/recipe/deploy/update_code.md) - * [vendors](/docs/recipe/deploy/vendors.md) - * [writable](/docs/recipe/deploy/writable.md) - -## Configuration -### user -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L29) - -Name of current user who is running deploy. -If not set will try automatically get git user name, -otherwise output of `whoami` command. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### keep_releases -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L46) - -Number of releases to preserve in releases folder. - -```php title="Default value" -10 -``` - - -### repository -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L49) - -Repository to deploy. - - - -### default_timeout -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L54) - -Default timeout for `run()` and `runLocally()` functions. - -Set to `null` to disable timeout. - -```php title="Default value" -300 -``` - - -### env -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L70) - -Remote environment variables. -```php -set('env', [ - 'KEY' => 'something', -]); -``` - -It is possible to override it per `run()` call. - -```php -run('echo $KEY', env: ['KEY' => 'over']); -``` - - - -### dotenv -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L79) - -Path to `.env` file which will be used as environment variables for each command per `run()`. - -```php -set('dotenv', '{{current_path}}/.env'); -``` - -```php title="Default value" -false -``` - - -### deploy_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L89) - -The deploy path. - -For example can be set for a bunch of host once as: -```php -set('deploy_path', '~/{{alias}}'); -``` -:::info Required -Throws exception if not set. -::: - - - - -### current_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L99) - -Return current release path. Default to [deploy_path](/docs/recipe/common.md#deploy_path)/`current`. -```php -set('current_path', '/var/public_html'); -``` - -```php title="Default value" -'{{deploy_path}}/current' -``` - - -### bin/php -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L102) - -Path to the `php` bin. - -```php title="Default value" -if (currentHost()->hasOwn('php_version')) { -return '/usr/bin/php{{php_version}}'; -} -return which('php'); -``` - - -### bin/git -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L110) - -Path to the `git` bin. - -```php title="Default value" -return which('git'); -``` - - -### use_relative_symlink -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L116) - -Should [bin/symlink](/docs/recipe/common.md#bin/symlink) use `--relative` option or not. Will detect -automatically. - -```php title="Default value" -return commandSupportsOption('ln', '--relative'); -``` - - -### bin/symlink -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L121) - -Path to the `ln` bin. With predefined options `-nfs`. - -```php title="Default value" -return get('use_relative_symlink') ? 'ln -nfs --relative' : 'ln -nfs'; -``` - - -### sudo_askpass -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L128) - -Path to a file which will store temp script with sudo password. -Defaults to `.dep/sudo_pass`. This script is only temporary and will be deleted after -sudo command executed. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### deploy:prepare -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L137) - -Prepares a new release. - - - - -This task is group task which contains next tasks: -* [deploy:info](/docs/recipe/deploy/info.md#deployinfo) -* [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) -* [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) -* [deploy:release](/docs/recipe/deploy/release.md#deployrelease) -* [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) -* [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) -* [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) - - -### deploy:publish -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L148) - -Publishes the release. - - - - -This task is group task which contains next tasks: -* [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) -* [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) -* [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) -* [deploy:success](/docs/recipe/common.md#deploysuccess) - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L156) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - -### deploy:success -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L165) - - - -Prints success message - - -### deploy:failed -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L174) - - - -Hook on deploy failure. - - -### logs:app -[Source](https://github.com/deployphp/deployer/blob/master/recipe/common.php#L184) - -Shows application logs. - -Follows latest application logs. - - diff --git a/docs/recipe/composer.md b/docs/recipe/composer.md deleted file mode 100644 index a6ffbc8ef..000000000 --- a/docs/recipe/composer.md +++ /dev/null @@ -1,32 +0,0 @@ - - - - -# Composer Recipe - -```php -require 'recipe/composer.php'; -``` - -[Source](/recipe/composer.php) - -* Requires - * [common](/docs/recipe/common.md) - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/composer.php#L9) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/contao.md b/docs/recipe/contao.md deleted file mode 100644 index a4ca70782..000000000 --- a/docs/recipe/contao.md +++ /dev/null @@ -1,166 +0,0 @@ - - - - -# How to Deploy a Contao Project - -```php -require 'recipe/contao.php'; -``` - -[Source](/recipe/contao.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Contao application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Contao** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [contao:maintenance:enable](/docs/recipe/contao.md#contaomaintenanceenable) – Enable maintenance mode -* [contao:migrate](/docs/recipe/contao.md#contaomigrate) – Run Contao migrations -* [contao:maintenance:disable](/docs/recipe/contao.md#contaomaintenancedisable) – Disable maintenance mode -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The contao recipe is based on the [symfony](/docs/recipe/symfony.md) recipe. - -## Configuration -### public_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L11) - -Overrides [public_path](/docs/recipe/provision/website.md#public_path) from `recipe/provision/website.php`. - -The public path is the path to be set as DocumentRoot and is defined in the `composer.json` of the project -but defaults to `public` from Contao 5.0 on. -This path is relative from the [current_path](/docs/recipe/common.md#current_path), see [`recipe/provision/website.php`](/docs/recipe/provision/website.php#public_path). - -```php title="Default value" -$composerConfig = json_decode(file_get_contents('./composer.json'), true, 512, JSON_THROW_ON_ERROR); - -return $composerConfig['extra']['public-dir'] ?? 'public'; -``` - - -### bin/console -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L29) - -Overrides [bin/console](/docs/recipe/symfony.md#bin/console) from `recipe/symfony.php`. - - - -```php title="Default value" -return '{{bin/php}} {{release_or_current_path}}/vendor/bin/contao-console'; -``` - - -### contao_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L33) - - - -```php title="Default value" -return run('{{bin/console}} contao:version'); -``` - - - -## Tasks - -### contao:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L47) - -Run Contao migrations. - -This task updates the database. A database backup is saved automatically as a default. - -To automatically drop the obsolete database structures, you can override the task as follows: - -```php -task('contao:migrate', function () { - run('{{bin/php}} {{bin/console}} contao:migrate --with-deletes {{console_options}}'); -}); -``` - - -### contao:manager:download -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L53) - -Download the Contao Manager. - -Downloads the `contao-manager.phar.php` into the public path. - - -### contao:install:lock -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L59) - -Lock the Contao Install Tool. - -Locks the Contao install tool which is useful if you don't use it. - - -### contao:manager:lock -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L65) - -Lock the Contao Manager. - -Locks the Contao Manager which is useful if you only need the API of the Manager rather than the UI. - - -### contao:maintenance:enable -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L71) - -Enable maintenance mode. - - - - -### contao:maintenance:disable -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L86) - -Disable maintenance mode. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L98) - -Deploy the project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [contao:maintenance:enable](/docs/recipe/contao.md#contaomaintenanceenable) -* [contao:migrate](/docs/recipe/contao.md#contaomigrate) -* [contao:maintenance:disable](/docs/recipe/contao.md#contaomaintenancedisable) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/craftcms.md b/docs/recipe/craftcms.md deleted file mode 100644 index 9ba91c749..000000000 --- a/docs/recipe/craftcms.md +++ /dev/null @@ -1,114 +0,0 @@ - - - - -# How to Deploy a Craftcms Project - -```php -require 'recipe/craftcms.php'; -``` - -[Source](/recipe/craftcms.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Craftcms application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Craftcms** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors - - -The craftcms recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### log_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/craftcms.php#L9) - - - -```php title="Default value" -'storage/logs/*.log' -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/craftcms.php#L11) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - 'storage', - 'web/assets', -] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/craftcms.php#L16) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -['.env'] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/craftcms.php#L18) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -[ - 'config/project', - 'storage', - 'web/assets', - 'web/cpresources', -] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/craftcms.php#L64) - -deploy. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) - - diff --git a/docs/recipe/deploy/check_remote.md b/docs/recipe/deploy/check_remote.md deleted file mode 100644 index d5f37d49c..000000000 --- a/docs/recipe/deploy/check_remote.md +++ /dev/null @@ -1,25 +0,0 @@ - - - - -# Check Remote Recipe - -```php -require 'recipe/deploy/check_remote.php'; -``` - -[Source](/recipe/deploy/check_remote.php) - - - -## Tasks - -### deploy:check_remote -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/check_remote.php#L10) - -Checks remote head. - -Cancel deployment if there would be no change to the codebase. -This avoids unnecessary releases if the latest commit has already been deployed. - - diff --git a/docs/recipe/deploy/cleanup.md b/docs/recipe/deploy/cleanup.md deleted file mode 100644 index 6971f749d..000000000 --- a/docs/recipe/deploy/cleanup.md +++ /dev/null @@ -1,35 +0,0 @@ - - - - -# Cleanup Recipe - -```php -require 'recipe/deploy/cleanup.php'; -``` - -[Source](/recipe/deploy/cleanup.php) - - -## Configuration -### cleanup_use_sudo -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/cleanup.php#L5) - -Use sudo in deploy:cleanup task for rm command. - -```php title="Default value" -false -``` - - - -## Tasks - -### deploy:cleanup -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/cleanup.php#L8) - -Cleanup old releases. - - - - diff --git a/docs/recipe/deploy/clear_paths.md b/docs/recipe/deploy/clear_paths.md deleted file mode 100644 index 9d3e5841f..000000000 --- a/docs/recipe/deploy/clear_paths.md +++ /dev/null @@ -1,42 +0,0 @@ - - - - -# Clear Paths Recipe - -```php -require 'recipe/deploy/clear_paths.php'; -``` - -[Source](/recipe/deploy/clear_paths.php) - - -## Configuration -### clear_paths -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/clear_paths.php#L5) - -List of paths to remove from [release_path](/docs/recipe/deploy/release.md#release_path). - - - -### clear_use_sudo -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/clear_paths.php#L8) - -Use sudo for deploy:clear_path task? - -```php title="Default value" -false -``` - - - -## Tasks - -### deploy:clear_paths -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/clear_paths.php#L11) - -Cleanup files and/or directories. - - - - diff --git a/docs/recipe/deploy/copy_dirs.md b/docs/recipe/deploy/copy_dirs.md deleted file mode 100644 index ab3f9cccf..000000000 --- a/docs/recipe/deploy/copy_dirs.md +++ /dev/null @@ -1,33 +0,0 @@ - - - - -# Copy Dirs Recipe - -```php -require 'recipe/deploy/copy_dirs.php'; -``` - -[Source](/recipe/deploy/copy_dirs.php) - - -## Configuration -### copy_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/copy_dirs.php#L6) - -List of dirs to copy between releases. -For example you can copy `node_modules` to speedup npm install. - - - - -## Tasks - -### deploy:copy_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/copy_dirs.php#L9) - -Copies directories. - - - - diff --git a/docs/recipe/deploy/info.md b/docs/recipe/deploy/info.md deleted file mode 100644 index 91b61d2d1..000000000 --- a/docs/recipe/deploy/info.md +++ /dev/null @@ -1,24 +0,0 @@ - - - - -# Info Recipe - -```php -require 'recipe/deploy/info.php'; -``` - -[Source](/recipe/deploy/info.php) - - - -## Tasks - -### deploy:info -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/info.php#L5) - -Displays info about deployment. - - - - diff --git a/docs/recipe/deploy/lock.md b/docs/recipe/deploy/lock.md deleted file mode 100644 index ad0aa7185..000000000 --- a/docs/recipe/deploy/lock.md +++ /dev/null @@ -1,40 +0,0 @@ - - - - -# Lock Recipe - -```php -require 'recipe/deploy/lock.php'; -``` - -[Source](/recipe/deploy/lock.php) - - - -## Tasks - -### deploy:lock -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/lock.php#L7) - -Locks deploy. - - - - -### deploy:unlock -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/lock.php#L20) - -Unlocks deploy. - - - - -### deploy:is_locked -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/lock.php#L25) - -Checks if deploy is locked. - - - - diff --git a/docs/recipe/deploy/push.md b/docs/recipe/deploy/push.md deleted file mode 100644 index 061efdbac..000000000 --- a/docs/recipe/deploy/push.md +++ /dev/null @@ -1,26 +0,0 @@ - - - - -# Push Recipe - -```php -require 'recipe/deploy/push.php'; -``` - -[Source](/recipe/deploy/push.php) - - - -## Tasks - -### push -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/push.php#L8) - -Pushes local changes to remote host. - -Creates patch of local changes and pushes them on host. -And applies to current_path. Push can be done many times. -The task purpose to be used only for development. - - diff --git a/docs/recipe/deploy/release.md b/docs/recipe/deploy/release.md deleted file mode 100644 index a0d633265..000000000 --- a/docs/recipe/deploy/release.md +++ /dev/null @@ -1,111 +0,0 @@ - - - - -# Release Recipe - -```php -require 'recipe/deploy/release.php'; -``` - -[Source](/recipe/deploy/release.php) - - -## Configuration -### release_name -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L8) - -The name of the release. - -```php title="Default value" -return within('{{deploy_path}}', function () { -$latest = run('cat .dep/latest_release || echo 0'); -return strval(intval($latest) + 1); -}); -``` - - -### releases_log -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L16) - -Holds releases log from `.dep/releases_log` file. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### releases_list -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L31) - -Return list of release names on host. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### release_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L58) - -Return release path. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### release_revision -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L69) - -Current release revision. Usually a git hash. - -```php title="Default value" -return run('cat {{release_path}}/REVISION'); -``` - - -### release_or_current_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L75) - -Return the release path during a deployment -but fallback to the current path otherwise. - -```php title="Default value" -$releaseExists = test('[ -h {{deploy_path}}/release ]'); -return $releaseExists ? get('release_path') : get('current_path'); -``` - - - -## Tasks - -### deploy:release -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L82) - -Prepares release. - -Clean up unfinished releases and prepare next release - - -### releases -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L157) - -Shows releases list. - -Example output: -``` -+---------------------+------example.org ------------+--------+-----------+ -| Date (UTC) | Release | Author | Target | Commit | -+---------------------+-------------+----------------+--------+-----------+ -| 2021-11-06 20:51:45 | 1 | Anton Medvedev | HEAD | 34d24192e | -| 2021-11-06 21:00:50 | 2 (bad) | Anton Medvedev | HEAD | 392948a40 | -| 2021-11-06 23:19:20 | 3 | Anton Medvedev | HEAD | a4057a36c | -| 2021-11-06 23:24:30 | 4 (current) | Anton Medvedev | HEAD | s3wa45ca6 | -+---------------------+-------------+----------------+--------+-----------+ -``` - - diff --git a/docs/recipe/deploy/rollback.md b/docs/recipe/deploy/rollback.md deleted file mode 100644 index 8fdb2d34b..000000000 --- a/docs/recipe/deploy/rollback.md +++ /dev/null @@ -1,54 +0,0 @@ - - - - -# Rollback Recipe - -```php -require 'recipe/deploy/rollback.php'; -``` - -[Source](/recipe/deploy/rollback.php) - - -## Configuration -### rollback_candidate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/rollback.php#L19) - -Rollback candidate will be automatically chosen by looking -at output of `ls` command and content of `.dep/releases_log`. - -If rollback candidate is marked as **BAD_RELEASE**, it will be skipped. - -:::tip -You can override rollback candidate via: -``` -dep rollback -o rollback_candidate=123 -``` -::: -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### rollback -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/rollback.php#L62) - -Rollbacks to the previous release. - -Uses [rollback_candidate](/docs/recipe/deploy/rollback.md#rollback_candidate) for symlinking. Current release will be marked as -bad by creating file **BAD_RELEASE** with timestamp and [user](/docs/recipe/common.md#user). - -:::warning -You can always manually symlink [current_path](/docs/recipe/common.md#current_path) to proper release. -``` -dep run '{{bin/symlink}} releases/123 {{current_path}}' -``` -::: - - diff --git a/docs/recipe/deploy/setup.md b/docs/recipe/deploy/setup.md deleted file mode 100644 index e1c98c791..000000000 --- a/docs/recipe/deploy/setup.md +++ /dev/null @@ -1,24 +0,0 @@ - - - - -# Setup Recipe - -```php -require 'recipe/deploy/setup.php'; -``` - -[Source](/recipe/deploy/setup.php) - - - -## Tasks - -### deploy:setup -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/setup.php#L5) - -Prepares host for deploy. - - - - diff --git a/docs/recipe/deploy/shared.md b/docs/recipe/deploy/shared.md deleted file mode 100644 index 8052a5aba..000000000 --- a/docs/recipe/deploy/shared.md +++ /dev/null @@ -1,47 +0,0 @@ - - - - -# Shared Recipe - -```php -require 'recipe/deploy/shared.php'; -``` - -[Source](/recipe/deploy/shared.php) - - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/shared.php#L12) - -List of dirs what will be shared between releases. -Each release will have symlink to those dirs stored in [deploy_path](/docs/recipe/common.md#deploy_path)/shared dir. -```php -set('shared_dirs', ['storage']); -``` - - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/shared.php#L19) - -List of files what will be shared between releases. -Each release will have symlink to those files stored in [deploy_path](/docs/recipe/common.md#deploy_path)/shared dir. -```php -set('shared_files', ['.env']); -``` - - - - -## Tasks - -### deploy:shared -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/shared.php#L22) - -Creates symlinks for shared files and dirs. - - - - diff --git a/docs/recipe/deploy/symlink.md b/docs/recipe/deploy/symlink.md deleted file mode 100644 index 33c5edd48..000000000 --- a/docs/recipe/deploy/symlink.md +++ /dev/null @@ -1,35 +0,0 @@ - - - - -# Symlink Recipe - -```php -require 'recipe/deploy/symlink.php'; -``` - -[Source](/recipe/deploy/symlink.php) - - -## Configuration -### use_atomic_symlink -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/symlink.php#L5) - -Use mv -T if available. Will check automatically. - -```php title="Default value" -return commandSupportsOption('mv', '--no-target-directory'); -``` - - - -## Tasks - -### deploy:symlink -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/symlink.php#L10) - -Creates symlink to release. - - - - diff --git a/docs/recipe/deploy/update_code.md b/docs/recipe/deploy/update_code.md deleted file mode 100644 index 6efcaefe6..000000000 --- a/docs/recipe/deploy/update_code.md +++ /dev/null @@ -1,90 +0,0 @@ - - - - -# Update Code Recipe - -```php -require 'recipe/deploy/update_code.php'; -``` - -[Source](/recipe/deploy/update_code.php) - - -## Configuration -### branch -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/update_code.php#L11) - -Determines which branch to deploy. Can be overridden with CLI option `--branch`. -If not specified, will get current git HEAD branch as default branch to deploy. - -```php title="Default value" -'HEAD' -``` - - -### target -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/update_code.php#L18) - -The deploy target: a branch, a tag or a revision. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### update_code_strategy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/update_code.php#L47) - -Sets deploy:update_code strategy. -Can be one of: -- archive -- clone (if you need the origin repository `.git` dir in your [release_path](/docs/recipe/deploy/release.md#release_path)) - -```php title="Default value" -'archive' -``` - - -### git_ssh_command -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/update_code.php#L53) - -Sets environment variable _GIT_SSH_COMMAND_ for `git clone` command. -If `StrictHostKeyChecking` flag is set to `accept-new` then ssh will -automatically add new host keys to the user known hosts files, but -will not permit connections to hosts with changed host keys. - -```php title="Default value" -'ssh -o StrictHostKeyChecking=accept-new' -``` - - -### sub_directory -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/update_code.php#L65) - -Specifies a sub directory within the repository to deploy. -Works only when [`update_code_strategy`](#update_code_strategy) is set to `archive` (default). - -Example: - - set value to `src` if you want to deploy the folder that lives at `/src/api`. - - set value to `src/api` if you want to deploy the folder that lives at `/src/api`. - -Note: do not use a leading `/`! - -```php title="Default value" -false -``` - - - -## Tasks - -### deploy:update_code -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/update_code.php#L71) - -Updates code. - -Update code at [release_path](/docs/recipe/deploy/release.md#release_path) on host. - - diff --git a/docs/recipe/deploy/vendors.md b/docs/recipe/deploy/vendors.md deleted file mode 100644 index 68b386e73..000000000 --- a/docs/recipe/deploy/vendors.md +++ /dev/null @@ -1,58 +0,0 @@ - - - - -# Vendors Recipe - -```php -require 'recipe/deploy/vendors.php'; -``` - -[Source](/recipe/deploy/vendors.php) - - -## Configuration -### composer_action -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/vendors.php#L4) - - - -```php title="Default value" -'install' -``` - - -### composer_options -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/vendors.php#L6) - - - -```php title="Default value" -'--verbose --prefer-dist --no-progress --no-interaction --no-dev --optimize-autoloader' -``` - - -### bin/composer -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/vendors.php#L11) - -Returns Composer binary path in found. Otherwise try to install latest -composer version to `.dep/composer.phar`. To use specific composer version -download desired phar and place it at `.dep/composer.phar`. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### deploy:vendors -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/vendors.php#L27) - -Installs vendors. - - - - diff --git a/docs/recipe/deploy/writable.md b/docs/recipe/deploy/writable.md deleted file mode 100644 index bcf5898c3..000000000 --- a/docs/recipe/deploy/writable.md +++ /dev/null @@ -1,102 +0,0 @@ - - - - -# Writable Recipe - -```php -require 'recipe/deploy/writable.php'; -``` - -[Source](/recipe/deploy/writable.php) - - -## Configuration -### http_user -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L8) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### http_group -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L25) - -Used to make a writable directory by a server. -Used in `chgrp` mode of [writable_mode](/docs/recipe/deploy/writable.md#writable_mode) only. -Attempts automatically to detect http user in process list. -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L40) - -List of writable dirs. - - - -### writable_mode -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L49) - -One of: -- chown -- chgrp -- chmod -- acl -- sticky -- skip - -```php title="Default value" -'acl' -``` - - -### writable_use_sudo -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L52) - -Using sudo in writable commands? - -```php title="Default value" -false -``` - - -### writable_recursive -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L55) - -Use recursive mode (-R)? - -```php title="Default value" -false -``` - - -### writable_chmod_mode -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L58) - -The chmod mode. - -```php title="Default value" -'0755' -``` - - - -## Tasks - -### deploy:writable -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/writable.php#L61) - -Makes writable dirs. - - - - diff --git a/docs/recipe/drupal7.md b/docs/recipe/drupal7.md deleted file mode 100644 index dea6e45ba..000000000 --- a/docs/recipe/drupal7.md +++ /dev/null @@ -1,132 +0,0 @@ - - - - -# How to Deploy a Drupal 7 Project - -```php -require 'recipe/drupal7.php'; -``` - -[Source](/recipe/drupal7.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Drupal 7 application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Drupal 7** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The drupal7 recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### drupal_site -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L14) - -Set Drupal 7 site. Change if you use different site - -```php title="Default value" -'default' -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L17) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Drupal 7 shared dirs - -```php title="Default value" -[ - 'sites/{{drupal_site}}/files', -] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L22) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - -Drupal 7 shared files - -```php title="Default value" -[ - 'sites/{{drupal_site}}/settings.php', -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L27) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -Drupal 7 writable dirs - -```php title="Default value" -[ - 'sites/{{drupal_site}}/files', -] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L8) - - - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - -### drupal:settings -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L33) - - - -Create and upload Drupal 7 settings.php using values from secrets - - -### drupal:upload_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal7.php#L75) - - - -Upload Drupal 7 files folder - - diff --git a/docs/recipe/drupal8.md b/docs/recipe/drupal8.md deleted file mode 100644 index 40d343d1e..000000000 --- a/docs/recipe/drupal8.md +++ /dev/null @@ -1,117 +0,0 @@ - - - - -# How to Deploy a Drupal 8 Project - -```php -require 'recipe/drupal8.php'; -``` - -[Source](/recipe/drupal8.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Drupal 8 application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Drupal 8** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The drupal8 recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### drupal_site -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal8.php#L14) - -Set drupal site. Change if you use different site - -```php title="Default value" -'default' -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal8.php#L18) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Drupal 8 shared dirs - -```php title="Default value" -[ - 'sites/{{drupal_site}}/files', -] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal8.php#L23) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - -Drupal 8 shared files - -```php title="Default value" -[ - 'sites/{{drupal_site}}/settings.php', - 'sites/{{drupal_site}}/services.yml', -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal8.php#L29) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -Drupal 8 Writable dirs - -```php title="Default value" -[ - 'sites/{{drupal_site}}/files', -] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/drupal8.php#L8) - - - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/flow_framework.md b/docs/recipe/flow_framework.md deleted file mode 100644 index ae62f3b50..000000000 --- a/docs/recipe/flow_framework.md +++ /dev/null @@ -1,122 +0,0 @@ - - - - -# How to Deploy a Flow Framework Project - -```php -require 'recipe/flow_framework.php'; -``` - -[Source](/recipe/flow_framework.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Flow Framework application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Flow Framework** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:run_migrations](/docs/recipe/flow_framework.md#deployrun_migrations) – Applies database migrations -* [deploy:publish_resources](/docs/recipe/flow_framework.md#deploypublish_resources) – Publishes resources -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The flow_framework recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### flow_context -[Source](https://github.com/deployphp/deployer/blob/master/recipe/flow_framework.php#L9) - -Flow-Framework application-context - -```php title="Default value" -'Production' -``` - - -### flow_command -[Source](https://github.com/deployphp/deployer/blob/master/recipe/flow_framework.php#L12) - -Flow-Framework cli-command - -```php title="Default value" -'flow' -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/flow_framework.php#L15) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Flow-Framework shared directories - -```php title="Default value" -[ - 'Data/Persistent', - 'Data/Logs', - 'Configuration/{{flow_context}}' -] -``` - - - -## Tasks - -### deploy:run_migrations -[Source](https://github.com/deployphp/deployer/blob/master/recipe/flow_framework.php#L25) - -Applies database migrations. - -Apply database migrations - - -### deploy:publish_resources -[Source](https://github.com/deployphp/deployer/blob/master/recipe/flow_framework.php#L33) - -Publishes resources. - -Publish resources - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/flow_framework.php#L41) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:run_migrations](/docs/recipe/flow_framework.md#deployrun_migrations) -* [deploy:publish_resources](/docs/recipe/flow_framework.md#deploypublish_resources) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/fuelphp.md b/docs/recipe/fuelphp.md deleted file mode 100644 index ac9339a07..000000000 --- a/docs/recipe/fuelphp.md +++ /dev/null @@ -1,80 +0,0 @@ - - - - -# How to Deploy a Fuelphp Project - -```php -require 'recipe/fuelphp.php'; -``` - -[Source](/recipe/fuelphp.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Fuelphp application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Fuelphp** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The fuelphp recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/fuelphp.php#L9) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -FuelPHP 1.x shared dirs - -```php title="Default value" -[ - 'fuel/app/cache', 'fuel/app/logs', -] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/fuelphp.php#L17) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/joomla.md b/docs/recipe/joomla.md deleted file mode 100644 index bcb7bc664..000000000 --- a/docs/recipe/joomla.md +++ /dev/null @@ -1,100 +0,0 @@ - - - - -# How to Deploy a Joomla Project - -```php -require 'recipe/joomla.php'; -``` - -[Source](/recipe/joomla.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Joomla application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Joomla** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The joomla recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/joomla.php#L8) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -['configuration.php'] -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/joomla.php#L9) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -['images'] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/joomla.php#L10) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -['images'] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/joomla.php#L13) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/laravel.md b/docs/recipe/laravel.md deleted file mode 100644 index 22e33e9c5..000000000 --- a/docs/recipe/laravel.md +++ /dev/null @@ -1,483 +0,0 @@ - - - - -# How to Deploy a Laravel Project - -```php -require 'recipe/laravel.php'; -``` - -[Source](/recipe/laravel.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Laravel application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Laravel** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [artisan:storage:link](/docs/recipe/laravel.md#artisanstoragelink) – Creates the symbolic links configured for the application -* [artisan:config:cache](/docs/recipe/laravel.md#artisanconfigcache) – Creates a cache file for faster configuration loading -* [artisan:route:cache](/docs/recipe/laravel.md#artisanroutecache) – Creates a route cache file for faster route registration -* [artisan:view:cache](/docs/recipe/laravel.md#artisanviewcache) – Compiles all of the application\'s Blade templates -* [artisan:event:cache](/docs/recipe/laravel.md#artisaneventcache) – Discovers and cache the application\'s events and listeners -* [artisan:migrate](/docs/recipe/laravel.md#artisanmigrate) – Runs the database migrations -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The laravel recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L8) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -['storage'] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L9) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -['.env'] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L10) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -[ - 'bootstrap/cache', - 'storage', - 'storage/app', - 'storage/app/public', - 'storage/framework', - 'storage/framework/cache', - 'storage/framework/cache/data', - 'storage/framework/sessions', - 'storage/framework/views', - 'storage/logs', -] -``` - - -### log_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L22) - - - -```php title="Default value" -'storage/logs/*.log' -``` - - -### laravel_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L23) - - - -```php title="Default value" -$result = run('{{bin/php}} {{release_or_current_path}}/artisan --version'); -preg_match_all('/(\d+\.?)+/', $result, $matches); -return $matches[0][0] ?? 5.5; -``` - - - -## Tasks - -### artisan:down -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L90) - -Puts the application into maintenance / demo mode. - - - - -### artisan:up -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L93) - -Brings the application out of maintenance mode. - - - - -### artisan:​key:generate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L100) - -Sets the application key. - - - - -### artisan:passport:keys -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L103) - -Creates the encryption keys for API authentication. - - - - -### artisan:db:seed -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L110) - -Seeds the database with records. - - - - -### artisan:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L113) - -Runs the database migrations. - - - - -### artisan:migrate:fresh -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L116) - -Drops all tables and re-run all migrations. - - - - -### artisan:migrate:rollback -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L119) - -Rollbacks the last database migration. - - - - -### artisan:migrate:status -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L122) - -Shows the status of each migration. - - - - -### artisan:cache:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L129) - -Flushes the application cache. - - - - -### artisan:config:cache -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L132) - -Creates a cache file for faster configuration loading. - - - - -### artisan:config:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L135) - -Removes the configuration cache file. - - - - -### artisan:event:cache -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L138) - -Discovers and cache the application\'s events and listeners. - - - - -### artisan:event:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L141) - -Clears all cached events and listeners. - - - - -### artisan:event:list -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L144) - -Lists the application\'s events and listeners. - - - - -### artisan:optimize -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L147) - -Cache the framework bootstrap files. - - - - -### artisan:optimize:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L150) - -Removes the cached bootstrap files. - - - - -### artisan:route:cache -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L153) - -Creates a route cache file for faster route registration. - - - - -### artisan:route:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L156) - -Removes the route cache file. - - - - -### artisan:route:list -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L159) - -Lists all registered routes. - - - - -### artisan:storage:link -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L162) - -Creates the symbolic links configured for the application. - - - - -### artisan:view:cache -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L165) - -Compiles all of the application\'s Blade templates. - - - - -### artisan:view:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L168) - -Clears all compiled view files. - - - - -### artisan:queue:failed -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L175) - -Lists all of the failed queue jobs. - - - - -### artisan:queue:flush -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L178) - -Flushes all of the failed queue jobs. - - - - -### artisan:queue:restart -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L181) - -Restarts queue worker daemons after their current job. - - - - -### artisan:horizon -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L184) - -Starts a master supervisor in the foreground. - - - - -### artisan:horizon:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L187) - -Deletes all of the jobs from the specified queue. - - - - -### artisan:horizon:continue -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L190) - -Instructs the master supervisor to continue processing jobs. - - - - -### artisan:horizon:list -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L193) - -Lists all of the deployed machines. - - - - -### artisan:horizon:pause -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L196) - -Pauses the master supervisor. - - - - -### artisan:horizon:purge -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L199) - -Terminates any rogue Horizon processes. - - - - -### artisan:horizon:status -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L202) - -Gets the current status of Horizon. - - - - -### artisan:horizon:terminate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L205) - -Terminates the master supervisor so it can be restarted. - - - - -### artisan:horizon:publish -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L208) - -Publish all of the Horizon resources. - - - - -### artisan:​telescope:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L215) - -Clears all entries from Telescope. - - - - -### artisan:​telescope:prune -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L218) - -Prunes stale entries from the Telescope database. - - - - -### artisan:octane -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L225) - -Starts the octane server. - - - - -### artisan:octane:reload -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L228) - -Reloads the octane server. - - - - -### artisan:octane:stop -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L231) - -Stops the octane server. - - - - -### artisan:octane:status -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L234) - -Check the status of the octane server. - - - - -### artisan:nova:publish -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L241) - -Publish all of the Laravel Nova resources. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L247) - -Deploys your project. - -Main deploy task. - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [artisan:storage:link](/docs/recipe/laravel.md#artisanstoragelink) -* [artisan:config:cache](/docs/recipe/laravel.md#artisanconfigcache) -* [artisan:route:cache](/docs/recipe/laravel.md#artisanroutecache) -* [artisan:view:cache](/docs/recipe/laravel.md#artisanviewcache) -* [artisan:event:cache](/docs/recipe/laravel.md#artisaneventcache) -* [artisan:migrate](/docs/recipe/laravel.md#artisanmigrate) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/magento.md b/docs/recipe/magento.md deleted file mode 100644 index b512c5863..000000000 --- a/docs/recipe/magento.md +++ /dev/null @@ -1,118 +0,0 @@ - - - - -# How to Deploy a Magento Project - -```php -require 'recipe/magento.php'; -``` - -[Source](/recipe/magento.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Magento application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Magento** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:cache:clear](/docs/recipe/magento.md#deploycacheclear) – Clears cache -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The magento recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento.php#L13) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Magento shared dirs - -```php title="Default value" -['var', 'media'] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento.php#L16) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - -Magento shared files - -```php title="Default value" -['app/etc/local.xml'] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento.php#L19) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -Magento writable dirs - -```php title="Default value" -['var', 'media'] -``` - - - -## Tasks - -### deploy:cache:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento.php#L25) - -Clears cache. - -Clear cache - - -### deploy:clear_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento.php#L32) - - - -Remove files that can be used to compromise Magento - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento.php#L46) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:cache:clear](/docs/recipe/magento.md#deploycacheclear) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/magento2.md b/docs/recipe/magento2.md deleted file mode 100644 index 72bbb6993..000000000 --- a/docs/recipe/magento2.md +++ /dev/null @@ -1,745 +0,0 @@ - - - - -# How to Deploy a Magento 2 Project - -```php -require 'recipe/magento2.php'; -``` - -[Source](/recipe/magento2.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Magento 2 application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Magento 2** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:clear_paths](/docs/recipe/deploy/clear_paths.md#deployclear_paths) – Cleanup files and/or directories -* [deploy:magento](/docs/recipe/magento2.md#deploymagento) – Magento2 deployment operations - * [magento:build](/docs/recipe/magento2.md#magentobuild) – Magento2 build operations - * [magento:compile](/docs/recipe/magento2.md#magentocompile) – Compiles magento di - * [magento:deploy:assets](/docs/recipe/magento2.md#magentodeployassets) – Deploys assets - * [magento:maintenance:enable-if-needed](/docs/recipe/magento2.md#magentomaintenanceenable-if-needed) – Set maintenance mode if needed - * [magento:config:import](/docs/recipe/magento2.md#magentoconfigimport) – Config Import - * [magento:upgrade:db](/docs/recipe/magento2.md#magentoupgradedb) – Upgrades magento database - * [magento:maintenance:disable](/docs/recipe/magento2.md#magentomaintenancedisable) – Disables maintenance mode - * [magento:cache:flush](/docs/recipe/magento2.md#magentocacheflush) – Flushes Magento Cache -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -In addition the **Magento 2** recipe contains an artifact deployment. -This is a two step process where you first execute - -```php -bin/dep artifact:build [options] [localhost] -``` - -to build an artifact, which then is deployed on a server with - -```php -bin/dep artifact:deploy [host] -``` - -The `localhost` to build the artifact on has to be declared local, so either add -```php -localhost() - ->set('local', true); -``` -to your deploy.php or -```yaml -hosts: - localhost: - local: true -``` -to your deploy yaml. - -The [artifact:build](#artifact:build) command of **Magento 2** consists of: * [build:prepare](/docs/recipe/magento2.md#buildprepare) – Prepare local artifact build -* [build:remove-generated](/docs/recipe/magento2.md#buildremove-generated) – Clears generated files prior to building. -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [magento:compile](/docs/recipe/magento2.md#magentocompile) – Compiles magento di -* [magento:deploy:assets](/docs/recipe/magento2.md#magentodeployassets) – Deploys assets -* [artifact:package](/docs/recipe/magento2.md#artifactpackage) – Packages all relevant files in an artifact. - - - The [artifact:deploy](#artifact:deploy) command of **Magento 2** consists of: -* [artifact:prepare](/docs/recipe/magento2.md#artifactprepare) – Prepares an artifact on the target server - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [artifact:upload](/docs/recipe/magento2.md#artifactupload) – Uploads artifact in release folder for extraction. - * [artifact:extract](/docs/recipe/magento2.md#artifactextract) – Extracts artifact in release path. - * [deploy:additional-shared](/docs/recipe/magento2.md#deployadditional-shared) – Adds additional files and dirs to the list of shared files and dirs - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [magento:maintenance:enable-if-needed](/docs/recipe/magento2.md#magentomaintenanceenable-if-needed) – Set maintenance mode if needed -* [magento:config:import](/docs/recipe/magento2.md#magentoconfigimport) – Config Import -* [magento:upgrade:db](/docs/recipe/magento2.md#magentoupgradedb) – Upgrades magento database -* [magento:maintenance:disable](/docs/recipe/magento2.md#magentomaintenancedisable) – Disables maintenance mode -* [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release -* [artifact:finish](/docs/recipe/magento2.md#artifactfinish) – Executes the tasks after artifact is released - * [magento:cache:flush](/docs/recipe/magento2.md#magentocacheflush) – Flushes Magento Cache - * [cachetool:clear:opcache](/docs/contrib/cachetool.md#cachetoolclearopcache) – Clears OPcode cache - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - - -The magento2 recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### static_content_locales -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L25) - -By default setup:static-content:deploy uses `en_US`. -To change that, simply put `set('static_content_locales', 'en_US de_DE');` -in you deployer script. - -```php title="Default value" -'en_US' -``` - - -### magento_themes -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L42) - -You can also set the themes to run against. By default it'll deploy -all themes - `add('magento_themes', ['Magento/luma', 'Magento/backend']);` -If the themes are set as a simple list of strings, then all languages defined in [static_content_locales](/docs/recipe/magento2.md#static_content_locales) are -compiled for the given themes. -Alternatively The themes can be defined as an associative array, where the key represents the theme name and -the key contains the languages for the compilation (for this specific theme) -Example: -set('magento_themes', ['Magento/luma']); - Will compile this theme with every language from [static_content_locales](/docs/recipe/magento2.md#static_content_locales) -set('magento_themes', [ - 'Magento/luma' => null, - Will compile all languages from [static_content_locales](/docs/recipe/magento2.md#static_content_locales) for Magento/luma - 'Custom/theme' => 'en_US fr_FR' - Will compile only en_US and fr_FR for Custom/theme - 'Custom/another' => '[static_content_locales](/docs/recipe/magento2.md#static_content_locales) it_IT' - Will compile all languages from [static_content_locales](/docs/recipe/magento2.md#static_content_locales) + it_IT for Custom/another -]); - Will compile this theme with every language - -```php title="Default value" -[ - -] -``` - - -### static_deploy_options -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L47) - -Static content deployment options, e.g. '--no-parent' - - - -### split_static_deployment -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L50) - -Deploy frontend and adminhtml together as default - -```php title="Default value" -false -``` - - -### static_content_locales_backend -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L53) - -Use the default languages for the backend as default - -```php title="Default value" -'{{static_content_locales}}' -``` - - -### magento_themes_backend -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L57) - -backend themes to deploy. Only used if split_static_deployment=true -This setting supports the same options/structure as [magento_themes](/docs/recipe/magento2.md#magento_themes) - -```php title="Default value" -['Magento/backend' => null] -``` - - -### static_content_jobs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L63) - -Also set the number of conccurent jobs to run. The default is 1 -Update using: `set('static_content_jobs', '1');` - -```php title="Default value" -'1' -``` - - -### content_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L65) - - - -```php title="Default value" -return time(); -``` - - -### magento_dir -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L70) - -Magento directory relative to repository root. Use "." (default) if it is not located in a subdirectory - -```php title="Default value" -'.' -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L73) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - '{{magento_dir}}/app/etc/env.php', - '{{magento_dir}}/var/.maintenance.ip', -] -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L77) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - '{{magento_dir}}/var/composer_home', - '{{magento_dir}}/var/log', - '{{magento_dir}}/var/export', - '{{magento_dir}}/var/report', - '{{magento_dir}}/var/import', - '{{magento_dir}}/var/import_history', - '{{magento_dir}}/var/session', - '{{magento_dir}}/var/importexport', - '{{magento_dir}}/var/backups', - '{{magento_dir}}/var/tmp', - '{{magento_dir}}/pub/sitemap', - '{{magento_dir}}/pub/media', - '{{magento_dir}}/pub/static/_cache' -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L92) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -[ - '{{magento_dir}}/var', - '{{magento_dir}}/pub/static', - '{{magento_dir}}/pub/media', - '{{magento_dir}}/generated', - '{{magento_dir}}/var/page_cache' -] -``` - - -### clear_paths -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L99) - -Overrides [clear_paths](/docs/recipe/deploy/clear_paths.md#clear_paths) from `recipe/deploy/clear_paths.php`. - - - -```php title="Default value" -[ - '{{magento_dir}}/generated/*', - '{{magento_dir}}/pub/static/_cache/*', - '{{magento_dir}}/var/generation/*', - '{{magento_dir}}/var/cache/*', - '{{magento_dir}}/var/page_cache/*', - '{{magento_dir}}/var/view_preprocessed/*' -] -``` - - -### bin/magento -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L108) - - - -```php title="Default value" -'{{release_or_current_path}}/{{magento_dir}}/bin/magento' -``` - - -### magento_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L110) - - - -```php title="Default value" -// detect version -$versionOutput = run('{{bin/php}} {{bin/magento}} --version'); -preg_match('/(\d+\.?)+(-p\d+)?$/', $versionOutput, $matches); -return $matches[0] ?? '2.0'; -``` - - -### config_import_needed -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L117) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### database_upgrade_needed -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L131) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### enable_zerodowntime -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L146) - -Deploy without setting maintenance mode if possible - -```php title="Default value" -true -``` - - -### artifact_file -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L332) - -The file the artifact is saved to - -```php title="Default value" -'artifact.tar.gz' -``` - - -### artifact_dir -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L335) - -The directory the artifact is saved in - -```php title="Default value" -'artifacts' -``` - - -### artifact_excludes_file -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L339) - -Points to a file with a list of files to exclude from packaging. -The format is as with the `tar --exclude-from=[file]` option - -```php title="Default value" -'artifacts/excludes' -``` - - -### build_from_repo -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L342) - -If set to true, the artifact is built from a clean copy of the project repository instead of the current working directory - -```php title="Default value" -false -``` - - -### repository -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L345) - -Overrides [repository](/docs/recipe/common.md#repository) from `recipe/common.php`. - -Set this value if "build_from_repo" is set to true. The target to deploy must also be set with "--branch", "--tag" or "--revision" - -```php title="Default value" -null -``` - - -### artifact_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L348) - -The relative path to the artifact file. If the directory does not exist, it will be created - -```php title="Default value" -if (!testLocally('[ -d {{artifact_dir}} ]')) { -runLocally('mkdir -p {{artifact_dir}}'); -} -return get('artifact_dir') . '/' . get('artifact_file'); -``` - - -### bin/tar -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L356) - -The location of the tar command. On MacOS you should have installed gtar, as it supports the required settings -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### additional_shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L428) - -Array of shared files that will be added to the default shared_files without overriding - - - -### additional_shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L430) - -Array of shared directories that will be added to the default shared_dirs without overriding - - - - -## Tasks - -### magento:compile -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L156) - -Compiles magento di. - -To work correctly with artifact deployment, it is necessary to set the MAGE_MODE correctly in `app/etc/config.php` -e.g. -```php -'MAGE_MODE' => 'production' -``` - - -### magento:deploy:assets -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L182) - -Deploys assets. - -To work correctly with artifact deployment it is necessary to set `system/dev/js` , `system/dev/css` and `system/dev/template` -in `app/etc/config.php`, e.g.: -```php -'system' => [ - 'default' => [ - 'dev' => [ - 'js' => [ - 'merge_files' => '1', - 'minify_files' => '1' - ], - 'css' => [ - 'merge_files' => '1', - 'minify_files' => '1' - ], - 'template' => [ - 'minify_html' => '1' - ] - ] - ] -``` - - -### magento:deploy:assets:adminhtml -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L198) - -Deploys assets for backend only. - - - - -### magento:deploy:assets:frontend -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L203) - -Deploys assets for frontend only. - - - - -### magento:sync:content_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L251) - -Syncs content version. - - - - -### magento:maintenance:enable -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L261) - -Enables maintenance mode. - - - - -### magento:maintenance:disable -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L267) - -Disables maintenance mode. - - - - -### magento:maintenance:enable-if-needed -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L273) - -Set maintenance mode if needed. - - - - -### magento:config:import -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L280) - -Config Import. - - - - -### magento:upgrade:db -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L289) - -Upgrades magento database. - - - - -### magento:cache:flush -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L298) - -Flushes Magento Cache. - - - - -### deploy:magento -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L303) - -Magento2 deployment operations. - - - - -This task is group task which contains next tasks: -* [magento:build](/docs/recipe/magento2.md#magentobuild) -* [magento:maintenance:enable-if-needed](/docs/recipe/magento2.md#magentomaintenanceenable-if-needed) -* [magento:config:import](/docs/recipe/magento2.md#magentoconfigimport) -* [magento:upgrade:db](/docs/recipe/magento2.md#magentoupgradedb) -* [magento:maintenance:disable](/docs/recipe/magento2.md#magentomaintenancedisable) -* [magento:cache:flush](/docs/recipe/magento2.md#magentocacheflush) - - -### magento:build -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L313) - -Magento2 build operations. - - - - -This task is group task which contains next tasks: -* [magento:compile](/docs/recipe/magento2.md#magentocompile) -* [magento:deploy:assets](/docs/recipe/magento2.md#magentodeployassets) - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L319) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:clear_paths](/docs/recipe/deploy/clear_paths.md#deployclear_paths) -* [deploy:magento](/docs/recipe/magento2.md#deploymagento) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - -### artifact:package -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L367) - -Packages all relevant files in an artifact. - - - - -### artifact:upload -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L377) - -Uploads artifact in release folder for extraction. - - - - -### artifact:extract -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L382) - -Extracts artifact in release path. - - - - -### build:remove-generated -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L388) - -Clears generated files prior to building. - - - - -### build:prepare -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L393) - -Prepare local artifact build. - - - - -### artifact:build -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L418) - -Builds an artifact. - - - - -This task is group task which contains next tasks: -* [build:prepare](/docs/recipe/magento2.md#buildprepare) -* [build:remove-generated](/docs/recipe/magento2.md#buildremove-generated) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [magento:compile](/docs/recipe/magento2.md#magentocompile) -* [magento:deploy:assets](/docs/recipe/magento2.md#magentodeployassets) -* [artifact:package](/docs/recipe/magento2.md#artifactpackage) - - -### deploy:additional-shared -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L434) - -Adds additional files and dirs to the list of shared files and dirs. - - - - -### magento:set_cache_prefix -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L449) - -Update cache id_prefix. - -Update cache id_prefix on deploy so that you are compiling against a fresh cache -Reference Issue: https://github.com/davidalger/capistrano-magento2/issues/151 -To use this feature, add the following to your deployer scripts: -```php -after('deploy:shared', 'magento:set_cache_prefix'); -after('deploy:magento', 'magento:cleanup_cache_prefix'); -``` - - -### magento:cleanup_cache_prefix -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L489) - -Cleanup cache id_prefix env files. - -After successful deployment, move the tmp_env.php file to env.php ready for next deployment - - -### artifact:prepare -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L499) - -Prepares an artifact on the target server. - - - - -This task is group task which contains next tasks: -* [deploy:info](/docs/recipe/deploy/info.md#deployinfo) -* [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) -* [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) -* [deploy:release](/docs/recipe/deploy/release.md#deployrelease) -* [artifact:upload](/docs/recipe/magento2.md#artifactupload) -* [artifact:extract](/docs/recipe/magento2.md#artifactextract) -* [deploy:additional-shared](/docs/recipe/magento2.md#deployadditional-shared) -* [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) -* [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) - - -### artifact:finish -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L512) - -Executes the tasks after artifact is released. - - - - -This task is group task which contains next tasks: -* [magento:cache:flush](/docs/recipe/magento2.md#magentocacheflush) -* [cachetool:clear:opcache](/docs/contrib/cachetool.md#cachetoolclearopcache) -* [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) -* [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) - - -### artifact:deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L521) - -Actually releases the artifact deployment. - - - - -This task is group task which contains next tasks: -* [artifact:prepare](/docs/recipe/magento2.md#artifactprepare) -* [magento:maintenance:enable-if-needed](/docs/recipe/magento2.md#magentomaintenanceenable-if-needed) -* [magento:config:import](/docs/recipe/magento2.md#magentoconfigimport) -* [magento:upgrade:db](/docs/recipe/magento2.md#magentoupgradedb) -* [magento:maintenance:disable](/docs/recipe/magento2.md#magentomaintenancedisable) -* [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) -* [artifact:finish](/docs/recipe/magento2.md#artifactfinish) - - diff --git a/docs/recipe/pimcore.md b/docs/recipe/pimcore.md deleted file mode 100644 index 5a067f0ea..000000000 --- a/docs/recipe/pimcore.md +++ /dev/null @@ -1,89 +0,0 @@ - - - - -# How to Deploy a Pimcore Project - -```php -require 'recipe/pimcore.php'; -``` - -[Source](/recipe/pimcore.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Pimcore application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Pimcore** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:cache:clear](/docs/recipe/symfony.md#deploycacheclear) – Clears cache -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The pimcore recipe is based on the [symfony](/docs/recipe/symfony.md) recipe. - - -## Tasks - -### pimcore:rebuild-classes -[Source](https://github.com/deployphp/deployer/blob/master/recipe/pimcore.php#L15) - -Rebuilds Pimcore Classes. - - - - -### pimcore:custom-layouts-rebuild -[Source](https://github.com/deployphp/deployer/blob/master/recipe/pimcore.php#L20) - -Creates Custom Layouts. - - - - -### pimcore:cache_clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/pimcore.php#L25) - -Removes cache. - - - - -### pimcore:deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/pimcore.php#L29) - - - - - - -This task is group task which contains next tasks: -* [pimcore:rebuild-classes](/docs/recipe/pimcore.md#pimcorerebuild-classes) -* [pimcore:custom-layouts-rebuild](/docs/recipe/pimcore.md#pimcorecustom-layouts-rebuild) - - diff --git a/docs/recipe/prestashop.md b/docs/recipe/prestashop.md deleted file mode 100644 index 8faa1c12e..000000000 --- a/docs/recipe/prestashop.md +++ /dev/null @@ -1,127 +0,0 @@ - - - - -# How to Deploy a Prestashop Project - -```php -require 'recipe/prestashop.php'; -``` - -[Source](/recipe/prestashop.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Prestashop application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Prestashop** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The prestashop recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/prestashop.php#L8) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - 'config/settings.inc.php', - '.htaccess', -] -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/prestashop.php#L12) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - 'img', - 'log', - 'download', - 'upload', - 'translations', - 'mails', - 'themes/default-bootstrap/lang', - 'themes/default-bootstrap/mails', - 'themes/default-bootstrap/pdf/lang', -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/prestashop.php#L23) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -[ - 'img', - 'log', - 'cache', - 'download', - 'upload', - 'translations', - 'mails', - 'themes/default-bootstrap/lang', - 'themes/default-bootstrap/mails', - 'themes/default-bootstrap/pdf/lang', - 'themes/default-bootstrap/cache', -] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/prestashop.php#L38) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/provision.md b/docs/recipe/provision.md deleted file mode 100644 index 613f109bc..000000000 --- a/docs/recipe/provision.md +++ /dev/null @@ -1,160 +0,0 @@ - - - - -# Provision Recipe - -```php -require 'recipe/provision.php'; -``` - -[Source](/recipe/provision.php) - -* Requires - * [databases](/docs/recipe/provision/databases.md) - * [nodejs](/docs/recipe/provision/nodejs.md) - * [php](/docs/recipe/provision/php.md) - * [website](/docs/recipe/provision/website.md) - -## Configuration -### lsb_release -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L15) - -Name of lsb_release like: focal, bionic, etc. -As only Ubuntu 20.04 LTS is supported for provision should be the `focal`. - -```php title="Default value" -return run("lsb_release -s -c"); -``` - - -### sudo_password -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L216) - - - -```php title="Default value" -return askHiddenResponse(' Password for sudo: '); -``` - - -### ssh_copy_id -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L222) - -Specify which key to copy to server. -Set to `false` to disable copy of key. - -```php title="Default value" -'~/.ssh/id_rsa.pub' -``` - - - -## Tasks - -### provision -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L20) - -Provision the server. - - - - -This task is group task which contains next tasks: -* [provision:check](/docs/recipe/provision.md#provisioncheck) -* [provision:configure](/docs/recipe/provision.md#provisionconfigure) -* [provision:update](/docs/recipe/provision.md#provisionupdate) -* [provision:upgrade](/docs/recipe/provision.md#provisionupgrade) -* [provision:install](/docs/recipe/provision.md#provisioninstall) -* [provision:ssh](/docs/recipe/provision.md#provisionssh) -* [provision:firewall](/docs/recipe/provision.md#provisionfirewall) -* [provision:deployer](/docs/recipe/provision.md#provisiondeployer) -* [provision:server](/docs/recipe/provision.md#provisionserver) -* [provision:php](/docs/recipe/provision/php.md#provisionphp) -* [provision:databases](/docs/recipe/provision/databases.md#provisiondatabases) -* [provision:composer](/docs/recipe/provision/php.md#provisioncomposer) -* [provision:npm](/docs/recipe/provision/nodejs.md#provisionnpm) -* [provision:website](/docs/recipe/provision/website.md#provisionwebsite) -* [provision:verify](/docs/recipe/provision.md#provisionverify) - - -### provision:check -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L39) - -Checks pre-required state. - - - - -### provision:configure -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L59) - -Collects required params. - - - - -### provision:update -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L82) - -Adds repositories and update. - - - - -### provision:upgrade -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L104) - -Upgrades all packages. - - - - -### provision:install -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L111) - -Installs packages. - - - - -### provision:server -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L145) - -Configures a server. - - - - -### provision:ssh -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L206) - -Configures the ssh. - - - - -### provision:deployer -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L225) - -Setups a deployer user. - - - - -### provision:firewall -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L272) - -Setups a firewall. - - - - -### provision:verify -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L280) - -Verifies what provision was successful. - - - - diff --git a/docs/recipe/provision/databases.md b/docs/recipe/provision/databases.md deleted file mode 100644 index 082338fe6..000000000 --- a/docs/recipe/provision/databases.md +++ /dev/null @@ -1,90 +0,0 @@ - - - - -# Databases Recipe - -```php -require 'recipe/provision/databases.php'; -``` - -[Source](/recipe/provision/databases.php) - - -## Configuration -### db_type -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L4) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### db_name -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L14) - - - -```php title="Default value" -return ask(' DB name: '); -``` - - -### db_user -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L18) - - - -```php title="Default value" -return ask(' DB user: ', 'deployer'); -``` - - -### db_password -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L22) - - - -```php title="Default value" -return askHiddenResponse(' DB password: '); -``` - - - -## Tasks - -### provision:databases -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L27) - -Provision databases. - - - - -### provision:mysql -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L37) - -Provision MySQL. - - - - -### provision:mariadb -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L48) - -Provision MariaDB. - - - - -### provision:postgresql -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/databases.php#L59) - -Provision PostgreSQL. - - - - diff --git a/docs/recipe/provision/nodejs.md b/docs/recipe/provision/nodejs.md deleted file mode 100644 index 9bc63b7d7..000000000 --- a/docs/recipe/provision/nodejs.md +++ /dev/null @@ -1,35 +0,0 @@ - - - - -# Nodejs Recipe - -```php -require 'recipe/provision/nodejs.php'; -``` - -[Source](/recipe/provision/nodejs.php) - - -## Configuration -### nodejs_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/nodejs.php#L5) - -Node.js version from https://github.com/nodesource/distributions. - -```php title="Default value" -'node_16.x' -``` - - - -## Tasks - -### provision:npm -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/nodejs.php#L8) - -Installs npm packages. - - - - diff --git a/docs/recipe/provision/php.md b/docs/recipe/provision/php.md deleted file mode 100644 index abf3a5986..000000000 --- a/docs/recipe/provision/php.md +++ /dev/null @@ -1,51 +0,0 @@ - - - - -# Php Recipe - -```php -require 'recipe/provision/php.php'; -``` - -[Source](/recipe/provision/php.php) - - -## Configuration -### php_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/php.php#L4) - - - -```php title="Default value" -return ask(' What PHP version to install? ', '8.2', ['5.6', '7.4', '8.0', '8.1', '8.2']); -``` - - - -## Tasks - -### provision:php -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/php.php#L9) - -Installs PHP packages. - - - - -### logs:php-fpm -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/php.php#L60) - -Shows php-fpm logs. - - - - -### provision:composer -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/php.php#L65) - -Installs Composer. - - - - diff --git a/docs/recipe/provision/website.md b/docs/recipe/provision/website.md deleted file mode 100644 index ee8202b16..000000000 --- a/docs/recipe/provision/website.md +++ /dev/null @@ -1,61 +0,0 @@ - - - - -# Website Recipe - -```php -require 'recipe/provision/website.php'; -``` - -[Source](/recipe/provision/website.php) - - -## Configuration -### domain -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/website.php#L4) - - - -```php title="Default value" -return ask(' Domain: '); -``` - - -### public_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/website.php#L8) - - - -```php title="Default value" -return ask(' Public path: ', 'public'); -``` - - - -## Tasks - -### provision:website -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/website.php#L13) - -Provision website. - - - - -### logs:caddy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/website.php#L82) - -Shows caddy logs. - - - - -### logs:caddy:syslog -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/website.php#L87) - -Shows caddy syslog. - - - - diff --git a/docs/recipe/shopware.md b/docs/recipe/shopware.md deleted file mode 100644 index 144e2be7f..000000000 --- a/docs/recipe/shopware.md +++ /dev/null @@ -1,306 +0,0 @@ - - - - -# How to Deploy a Shopware Project - -```php -require 'recipe/shopware.php'; -``` - -[Source](/recipe/shopware.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Shopware application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Shopware** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [sw:deploy](/docs/recipe/shopware.md#swdeploy) – - * [sw:database:migrate](/docs/recipe/shopware.md#swdatabasemigrate) – - * [sw:plugin:refresh](/docs/recipe/shopware.md#swpluginrefresh) – - * [sw:theme:refresh](/docs/recipe/shopware.md#swthemerefresh) – - * [sw:scheduled-task:register](/docs/recipe/shopware.md#swscheduled-taskregister) – - * [sw:cache:clear](/docs/recipe/shopware.md#swcacheclear) – - * [sw:plugin:update:all](/docs/recipe/shopware.md#swpluginupdateall) – - * [sw:cache:clear](/docs/recipe/shopware.md#swcacheclear) – -* [deploy:clear_paths](/docs/recipe/deploy/clear_paths.md#deployclear_paths) – Cleanup files and/or directories -* [sw:cache:warmup](/docs/recipe/shopware.md#swcachewarmup) – -* [sw:writable:jwt](/docs/recipe/shopware.md#swwritablejwt) – -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The shopware recipe is based on the [common](/docs/recipe/common.md) recipe. - - -## Usage - -Add {{repository}} to your _deploy.php_ file: - -```php -set('repository', 'git@github.com:shopware/production.git'); -``` - -configure host: -host('SSH-HOSTNAME') - ->set('remote_user', 'SSH-USER') - ->set('deploy_path', '/var/www/shopware') // This is the path, where deployer will create its directory structure - ->set('http_user', 'www-data') // Not needed, if the `user` is the same user, the webserver is running with - ->set('http_group', 'www-data') - ->set('writable_mode', 'chmod') - ->set('writable_recursive', true) - ->set('become', 'www-data'); // You might want to change user to execute remote tasks because of access rights of created cache files - -:::note -Please remember that the installation must be modified so that it can be -[build without database](https://developer.shopware.com/docs/guides/hosting/installation-updates/deployments/build-w-o-db#compiling-the-storefront-without-database). -::: - - -## Configuration -### bin/console -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L32) - - - -```php title="Default value" -'{{bin/php}} {{release_or_current_path}}/bin/console' -``` - - -### default_timeout -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L34) - -Overrides [default_timeout](/docs/recipe/common.md#default_timeout) from `recipe/common.php`. - - - - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L37) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - -These files are shared among all releases. - -```php title="Default value" -[ - '.env', - 'install.lock', - 'public/.htaccess', - 'public/.user.ini', -] -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L45) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -These directories are shared among all releases. - -```php title="Default value" -[ - 'config/jwt', - 'files', - 'var/log', - 'public/media', - 'public/thumbnail', - 'public/sitemap', -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L56) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -These directories are made writable (the definition of "writable" requires attention). -Please note that the files in `config/jwt/*` receive special attention in the `sw:writable:jwt` task. - -```php title="Default value" -[ - 'config/jwt', - 'custom/plugins', - 'files', - 'public/bundles', - 'public/css', - 'public/fonts', - 'public/js', - 'public/media', - 'public/sitemap', - 'public/theme', - 'public/thumbnail', - 'var', -] -``` - - - -## Tasks - -### sw:cache:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L72) - - - -This task remotely executes the `cache:clear` console command on the target server. - - -### sw:cache:warmup -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L78) - - - -This task remotely executes the cache warmup console commands on the target server, so that the first user, who -visits the website, doesn't have to wait for the cache to be built up. - - -### sw:database:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L84) - - - -This task remotely executes the `database:migrate` console command on the target server. - - -### sw:plugin:refresh -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L88) - - - - - - -### sw:scheduled-task:register -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L92) - - - - - - -### sw:theme:refresh -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L96) - - - - - - -### sw:theme:compile -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L102) - - - -This task is not used per default, but can be used, e.g. in combination with `SHOPWARE_SKIP_THEME_COMPILE=1`, -to build the theme remotely instead of locally. - - -### sw:plugin:update:all -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L138) - - - - - - -### sw:writable:jwt -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L148) - - - - - - -### sw:deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L155) - - - -Grouped SW deploy tasks. - - -This task is group task which contains next tasks: -* [sw:database:migrate](/docs/recipe/shopware.md#swdatabasemigrate) -* [sw:plugin:refresh](/docs/recipe/shopware.md#swpluginrefresh) -* [sw:theme:refresh](/docs/recipe/shopware.md#swthemerefresh) -* [sw:scheduled-task:register](/docs/recipe/shopware.md#swscheduled-taskregister) -* [sw:cache:clear](/docs/recipe/shopware.md#swcacheclear) -* [sw:plugin:update:all](/docs/recipe/shopware.md#swpluginupdateall) -* [sw:cache:clear](/docs/recipe/shopware.md#swcacheclear) - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L166) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [sw:deploy](/docs/recipe/shopware.md#swdeploy) -* [deploy:clear_paths](/docs/recipe/deploy/clear_paths.md#deployclear_paths) -* [sw:cache:warmup](/docs/recipe/shopware.md#swcachewarmup) -* [sw:writable:jwt](/docs/recipe/shopware.md#swwritablejwt) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - -### sw-build-without-db:get-remote-config -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L175) - - - - - - -### sw-build-without-db:build -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L188) - - - - - - -### sw-build-without-db -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L192) - - - - - - -This task is group task which contains next tasks: -* [sw-build-without-db:get-remote-config](/docs/recipe/shopware.md#sw-build-without-dbget-remote-config) -* [sw-build-without-db:build](/docs/recipe/shopware.md#sw-build-without-dbbuild) - - diff --git a/docs/recipe/silverstripe.md b/docs/recipe/silverstripe.md deleted file mode 100644 index 659859935..000000000 --- a/docs/recipe/silverstripe.md +++ /dev/null @@ -1,136 +0,0 @@ - - - - -# How to Deploy a Silverstripe Project - -```php -require 'recipe/silverstripe.php'; -``` - -[Source](/recipe/silverstripe.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Silverstripe application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Silverstripe** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [silverstripe:buildflush](/docs/recipe/silverstripe.md#silverstripebuildflush) – Runs /dev/build?flush=all -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The silverstripe recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_assets -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L12) - - - -```php title="Default value" -if (test('[ -d {{release_or_current_path}}/public ]') || test('[ -d {{deploy_path}}/shared/public ]')) { -return 'public/assets'; -} -return 'assets'; -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L21) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Silverstripe shared dirs - -```php title="Default value" -[ - '{{shared_assets}}' -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L26) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -Silverstripe writable dirs - -```php title="Default value" -[ - '{{shared_assets}}' -] -``` - - -### silverstripe_cli_script -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L31) - -Silverstripe cli script -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - - -## Tasks - -### silverstripe:build -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L47) - -Runs /dev/build. - -Helper tasks - - -### silverstripe:buildflush -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L52) - -Runs /dev/build?flush=all. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/silverstripe.php#L60) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [silverstripe:buildflush](/docs/recipe/silverstripe.md#silverstripebuildflush) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/statamic.md b/docs/recipe/statamic.md deleted file mode 100644 index 9f0d7507b..000000000 --- a/docs/recipe/statamic.md +++ /dev/null @@ -1,222 +0,0 @@ - - - - -# How to Deploy a Statamic Project - -```php -require 'recipe/statamic.php'; -``` - -[Source](/recipe/statamic.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Statamic application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Statamic** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [artisan:storage:link](/docs/recipe/laravel.md#artisanstoragelink) – Creates the symbolic links configured for the application -* [artisan:cache:clear](/docs/recipe/laravel.md#artisancacheclear) – Flushes the application cache -* [statamic:stache:clear](/docs/recipe/statamic.md#statamicstacheclear) – Clears the "Stache" cache -* [statamic:stache:warm](/docs/recipe/statamic.md#statamicstachewarm) – Builds the "Stache" cache -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The statamic recipe is based on the [laravel](/docs/recipe/laravel.md) recipe. - -## Configuration -### statamic_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L15) - - - -```php title="Default value" -$result = run('{{bin/php}} {{release_or_current_path}}/please --version'); -preg_match_all('/(\d+\.?)+/', $result, $matches); -return $matches[0][0] ?? 'unknown'; -``` - - - -## Tasks - -### statamic:addons:discover -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L26) - -Rebuilds the cached addon package manifest. - - - - -### statamic:assets:generate-presets -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L33) - -Generates asset preset manipulations. - - - - -### statamic:assets:meta -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L36) - -Generates asset metadata files. - - - - -### statamic:git:commit -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L43) - -Git add and commit tracked content. - - - - -### statamic:glide:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L50) - -Clears the Glide image cache. - - - - -### statamic:responsive:generate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L57) - -Generates responsive images. - - - - -### statamic:responsive:regenerate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L60) - -Regenerate responsive images. - - - - -### statamic:search:insert -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L67) - -Inserts an item into its search indexes. - - - - -### statamic:search:update -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L70) - -Update a search index. - - - - -### statamic:stache:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L77) - -Clears the "Stache" cache. - - - - -### statamic:stache:doctor -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L80) - -Diagnose any problems with the Stache. - - - - -### statamic:stache:refresh -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L83) - -Clears and rebuild the "Stache" cache. - - - - -### statamic:stache:warm -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L86) - -Builds the "Stache" cache. - - - - -### statamic:static:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L93) - -Clears the static page cache. - - - - -### statamic:static:warm -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L96) - -Warms the static cache by visiting all URLs. - - - - -### statamic:support:details -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L103) - -Outputs details helpful for support requests. - - - - -### statamic:updates:run -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L110) - -Runs update scripts from specific version. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/statamic.php#L118) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [artisan:storage:link](/docs/recipe/laravel.md#artisanstoragelink) -* [artisan:cache:clear](/docs/recipe/laravel.md#artisancacheclear) -* [statamic:stache:clear](/docs/recipe/statamic.md#statamicstacheclear) -* [statamic:stache:warm](/docs/recipe/statamic.md#statamicstachewarm) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/sulu.md b/docs/recipe/sulu.md deleted file mode 100644 index cfcc503f7..000000000 --- a/docs/recipe/sulu.md +++ /dev/null @@ -1,87 +0,0 @@ - - - - -# How to Deploy a Sulu Project - -```php -require 'recipe/sulu.php'; -``` - -[Source](/recipe/sulu.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Sulu application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Sulu** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:cache:clear](/docs/recipe/symfony.md#deploycacheclear) – Clears cache -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The sulu recipe is based on the [symfony](/docs/recipe/symfony.md) recipe. - -## Configuration -### bin/websiteconsole -[Source](https://github.com/deployphp/deployer/blob/master/recipe/sulu.php#L12) - - - -```php title="Default value" -return parse('{{bin/php}} {{release_or_current_path}}/bin/websiteconsole --no-interaction'); -``` - - - -## Tasks - -### phpcr:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/sulu.php#L17) - -Migrates PHPCR. - - - - -### deploy:website:cache:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/sulu.php#L22) - -Clears cache. - - - - -### deploy:website:cache:warmup -[Source](https://github.com/deployphp/deployer/blob/master/recipe/sulu.php#L27) - -Warmups cache. - - - - diff --git a/docs/recipe/symfony.md b/docs/recipe/symfony.md deleted file mode 100644 index 8561a0cda..000000000 --- a/docs/recipe/symfony.md +++ /dev/null @@ -1,193 +0,0 @@ - - - - -# How to Deploy a Symfony Application - -```php -require 'recipe/symfony.php'; -``` - -[Source](/recipe/symfony.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Symfony application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Symfony** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:cache:clear](/docs/recipe/symfony.md#deploycacheclear) – Clears cache -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The symfony recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### symfony_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L8) - - - -```php title="Default value" -$result = run('{{bin/console}} --version'); -preg_match_all('/(\d+\.?)+/', $result, $matches); -return $matches[0][0] ?? 5.0; -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L14) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - 'var/log', -] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L18) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -[ - '.env.local' -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L22) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -[ - 'var', - 'var/cache', - 'var/log', - 'var/sessions', -] -``` - - -### log_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L29) - - - -```php title="Default value" -'var/log/*.log' -``` - - -### migrations_config -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L31) - - - - - -### doctrine_schema_validate_config -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L33) - - - - - -### bin/console -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L35) - - - -```php title="Default value" -'{{bin/php}} {{release_or_current_path}}/bin/console' -``` - - -### console_options -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L37) - - - -```php title="Default value" -return '--no-interaction'; -``` - - - -## Tasks - -### database:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L42) - -Migrates database. - - - - -### doctrine:schema:validate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L52) - -Validate the Doctrine mapping files. - - - - -### deploy:cache:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L57) - -Clears cache. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L66) - -Deploys project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:cache:clear](/docs/recipe/symfony.md#deploycacheclear) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/typo3.md b/docs/recipe/typo3.md deleted file mode 100644 index ad84e4a4e..000000000 --- a/docs/recipe/typo3.md +++ /dev/null @@ -1,123 +0,0 @@ - - - - -# How to Deploy a TYPO3 Project - -```php -require 'recipe/typo3.php'; -``` - -[Source](/recipe/typo3.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your TYPO3 application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **TYPO3** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The typo3 recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### typo3_webroot -[Source](https://github.com/deployphp/deployer/blob/master/recipe/typo3.php#L11) - -DocumentRoot / WebRoot for the TYPO3 installation - -```php title="Default value" -'Web' -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/typo3.php#L26) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Shared directories - -```php title="Default value" -[ - '{{typo3_webroot}}/fileadmin', - '{{typo3_webroot}}/typo3temp', - '{{typo3_webroot}}/uploads' -] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/typo3.php#L35) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - -Shared files - -```php title="Default value" -[ - '{{typo3_webroot}}/.htaccess' -] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/typo3.php#L42) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -Writeable directories - -```php title="Default value" -[ - '{{typo3_webroot}}/fileadmin', - '{{typo3_webroot}}/typo3temp', - '{{typo3_webroot}}/typo3conf', - '{{typo3_webroot}}/uploads' -] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/typo3.php#L17) - -Deploys your project. - -Main TYPO3 task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/wordpress.md b/docs/recipe/wordpress.md deleted file mode 100644 index 67c40ff9a..000000000 --- a/docs/recipe/wordpress.md +++ /dev/null @@ -1,100 +0,0 @@ - - - - -# How to Deploy a WordPress Project - -```php -require 'recipe/wordpress.php'; -``` - -[Source](/recipe/wordpress.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your WordPress application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **WordPress** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The wordpress recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/wordpress.php#L8) - -Overrides [shared_files](/docs/recipe/deploy/shared.md#shared_files) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -['wp-config.php'] -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/wordpress.php#L9) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -['wp-content/uploads'] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/wordpress.php#L10) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -['wp-content/uploads'] -``` - - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/wordpress.php#L13) - -Deploys your project. - - - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/yii.md b/docs/recipe/yii.md deleted file mode 100644 index af59410b9..000000000 --- a/docs/recipe/yii.md +++ /dev/null @@ -1,100 +0,0 @@ - - - - -# How to Deploy a Yii2 Project - -```php -require 'recipe/yii.php'; -``` - -[Source](/recipe/yii.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Yii2 application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Yii2** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:migrate](/docs/recipe/yii.md#deploymigrate) – Runs Yii2 migrations for your project -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The yii recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/yii.php#L9) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Yii shared dirs - -```php title="Default value" -['runtime'] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/yii.php#L12) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -Yii writable dirs - -```php title="Default value" -['runtime'] -``` - - - -## Tasks - -### deploy:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/yii.php#L15) - -Runs Yii2 migrations for your project. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/yii.php#L23) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:migrate](/docs/recipe/yii.md#deploymigrate) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/zend_framework.md b/docs/recipe/zend_framework.md deleted file mode 100644 index b9f34b88a..000000000 --- a/docs/recipe/zend_framework.md +++ /dev/null @@ -1,65 +0,0 @@ - - - - -# How to Deploy a Zend Framework Project - -```php -require 'recipe/zend_framework.php'; -``` - -[Source](/recipe/zend_framework.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Zend Framework application to a server. -It is very easy to use and has a lot of features. - -Three main features of Deployer are: -- **Provisioning** - provision your server for you. -- **Zero downtime deployment** - deploy your application without a downtime. -- **Rollbacks** - rollback your application to a previous version, if something goes wrong. - -Additionally, Deployer has a lot of other features, like: -- **Easy to use** - Deployer is very easy to use. It has a simple and intuitive syntax. -- **Fast** - Deployer is very fast. It uses parallel connections to deploy your application. -- **Secure** - Deployer uses SSH to connect to your server. -- **Supports all major PHP frameworks** - Deployer supports all major PHP frameworks. - -You can read more about Deployer in [Getting Started](/docs/getting-started.md). - -The [deploy](#deploy) task of **Zend Framework** consists of: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) – Prepares a new release - * [deploy:info](/docs/recipe/deploy/info.md#deployinfo) – Displays info about deployment - * [deploy:setup](/docs/recipe/deploy/setup.md#deploysetup) – Prepares host for deploy - * [deploy:lock](/docs/recipe/deploy/lock.md#deploylock) – Locks deploy - * [deploy:release](/docs/recipe/deploy/release.md#deployrelease) – Prepares release - * [deploy:update_code](/docs/recipe/deploy/update_code.md#deployupdate_code) – Updates code - * [deploy:shared](/docs/recipe/deploy/shared.md#deployshared) – Creates symlinks for shared files and dirs - * [deploy:writable](/docs/recipe/deploy/writable.md#deploywritable) – Makes writable dirs -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [deploy:publish](/docs/recipe/common.md#deploypublish) – Publishes the release - * [deploy:symlink](/docs/recipe/deploy/symlink.md#deploysymlink) – Creates symlink to release - * [deploy:unlock](/docs/recipe/deploy/lock.md#deployunlock) – Unlocks deploy - * [deploy:cleanup](/docs/recipe/deploy/cleanup.md#deploycleanup) – Cleanup old releases - * [deploy:success](/docs/recipe/common.md#deploysuccess) – - - -The zend_framework recipe is based on the [common](/docs/recipe/common.md) recipe. - - -## Tasks - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/zend_framework.php#L12) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/selector.md b/docs/selector.md deleted file mode 100644 index 0b9006aae..000000000 --- a/docs/selector.md +++ /dev/null @@ -1,178 +0,0 @@ -# Selector - -Deployer uses the selector to choose hosts. Each host can have a set of labels. -Labels are key-value pairs. - -For example, `stage: production` or `role: web`. - -You can use labels to select hosts. For example, `dep deploy stage=production` -will deploy to all hosts with `stage: production` label. - -Let's define two labels, **type** and **env**, to our hosts: - -```php -host('web.example.com') - ->setLabels([ - 'type' => 'web', - 'env' => 'prod', - ]); - -host('db.example.com') - ->setLabels([ - 'type' => 'db', - 'env' => 'prod', - ]); -``` - -Now let's define a task to check labels: - -```php -task('info', function () { - writeln('type:' . get('labels')['type'] . ' env:' . get('labels')['env']); -}); -``` - -Now we can run this task with a selector: - -```bash -$ dep info env=prod -task info -[web.example.com] type:web env:prod -[db.example.com] type:db env:prod -``` - -As you can see, Deployer will run this task on all hosts with the `env: prod` label. -And if we define only the `type` label, Deployer will run this task on the specified host. - -```bash -dep info type=web -task info -[web.example.com] type:web env:prod -``` - -## Selector syntax - -Label syntax is represented by [disjunctive normal form](https://en.wikipedia.org/wiki/Disjunctive_normal_form) -(**OR of ANDs**). - -For example, `type=web,env=prod` is a selector of: `type=web` **OR** `env=prod`. - -```bash -$ dep info 'type=web,env=prod' -task info -[web.example.com] type:web env:prod -[db.example.com] type:db env:prod -``` - -As you can see, both hosts are selected (as both of them have the `env: prod` label). - -We can use `&` to define **AND**. For example, `type=web & env=prod` is a selector -for hosts with `type: web` **AND** `env: prod` labels. - -```bash -$ dep info 'type=web & env=prod' -task info -[web.example.com] type:web env:prod -``` - -We can also use `!=` to negate a label. For example, `type!=web` is a selector for -all hosts which do not have a `type: web` label. - -```bash -$ dep info 'type!=web' -task info -[db.example.com] type:db env:prod -``` - -:::note -Deployer CLI can take a few selectors as arguments. For example, -`dep info type=web env=prod` is the same as `dep info 'type=web,env=prod'`. - -You can install bash autocompletion for Deployer CLI, which will help you to -write selectors. See [installation](installation.md) for more. -::: - -Deployer also has a few special selectors: - -- `all` - select all hosts -- `alias=...` - select host by alias - -If a selector does not contain an `=` sign, Deployer will assume that it is an alias. - -For example `dep info web.example.com` is the same as `dep info alias=web.example.com`. - -```bash -$ dep info web.example.com -task info -[web.example.com] type:web env:prod -``` - -```bash -$ dep info 'web.example.com' 'db.example.com' -$ # Same as: -$ dep info 'alias=web.example.com,alias=db.example.com' -```` - -## Using the select() function - -You can use the [select()](api.md#select) function to select hosts by selector in your PHP code. - -```php -task('info', function () { - $hosts = select('type=web,env=prod'); - foreach ($hosts as $host) { - writeln('type:' . $host->get('labels')['type'] . ' env:' . $host->get('labels')['env']); - } -}); -``` - -Or you can use the [on()](api.md#on) function to run a task on selected hosts. - -```php -task('info', function () { - on(select('all'), function () { - writeln('type:' . get('labels')['type'] . ' env:' . get('labels')['env']); - }); -}); -``` - -## Task selectors - -To restrict a task to run only on selected hosts, you can use the [select()](tasks.md#select) method. - -```php -task('info', function () { - // ... -})->select('type=web,env=prod'); -``` - -## Labels in YAML - -You can also define labels in a YAML recipe. For example: - -```yaml -hosts: - web.example.com: - remote_user: deployer - env: - environment: production - labels: - env: prod -``` - -But make sure to distinguish between the `env` and `labels.env` keys. -`env` is a configuration key, and `labels.env` is a label. - -```php -task('info', function () { - writeln('env:' . get('env')['environment'] . ' labels.env:' . get('labels')['env']); -}); -``` - -Will print: - -```bash -$ dep info env=prod -task info -[web.example.com] env:production labels.env:prod -``` diff --git a/docs/sidebar.js b/docs/sidebar.js deleted file mode 100644 index c465bc5ab..000000000 --- a/docs/sidebar.js +++ /dev/null @@ -1,19 +0,0 @@ -module.exports = [ - "installation", - "getting-started", - "basics", - { - type: "category", - label: "Main Concepts", - items: ["hosts", "tasks", "selector"], - }, - "ci-cd", - "yaml", - "cli", - "api", - { - type: "category", - label: "Other", - items: ["avoid-php-fpm-reloading", "UPGRADE", "KNOWN_BUGS"], - }, -]; diff --git a/docs/tasks.md b/docs/tasks.md deleted file mode 100644 index 0c07ed515..000000000 --- a/docs/tasks.md +++ /dev/null @@ -1,136 +0,0 @@ -# Tasks - -Define a task by using the [task](api.md#task) function. Also, you can give a description -for a task with the [desc](api.md#desc) function called before _task_: - -```php -desc('My task'); -task('my_task', function () { - .... -}); -``` - -To get the task or override task config, call the _task_ function without the second argument: - -```php -task('my_task')->disable(); -``` - -## Task config - -### desc() - -Sets task's description. - -```php -task('deploy', function () { - // ... -})->desc('Task description'); -``` - -Same as using [desc()](api.md#desc) function helper: - -```php -desc('Task description'); -task('deploy', function () { - // ... -}); -``` - -### once() - -Sets the task to run only on one of the selected hosts. - -### oncePerNode() - -Sets the task to run only on **one node** of the selected hosts. - -The node is identified by its [hostname](hosts.md#hostname). For instance, -multiple hosts might deploy to a single physical machine (with a unique hostname). - - -```php -host('foo')->setHostname('example.com'); -host('bar')->setHostname('example.com'); -host('pro')->setHostname('another.com'); - -task('apt:update', function () { - // This task will be executed twice, only on "foo" and "pro" hosts. - run('apt-get update'); -})->oncePerNode(); -``` - -### hidden() - -Hides the task from CLI usage page. - -### addBefore() - -Adds a before hook to the task. - -### addAfter() - -Adds an after hook to the task. - -### limit() - -Limits the number of hosts the task will be executed on in parallel. - -Default is unlimited (runs the task on all hosts in parallel). - -### select() - -Sets the task's host selector. - -### addSelector() - -Adds the task's selector. - -### verbose() - -Makes the task always verbose, as if the `-v` option is persistently enabled. - -### disable() - -Disables the task. the task will not be executed. - -### enable() - -Enables the task. - -## Task grouping - -You can combine tasks in groups: - -```php -task('deploy', [ - 'deploy:prepare', - 'deploy:update_code', - 'deploy:vendors', - 'deploy:symlink', - 'cleanup' -]); -``` - -## Task hooks - -You can define tasks to be run before or after specific tasks. - -```php -task('deploy:done', function () { - writeln('Deploy done!'); -}); - -after('deploy', 'deploy:done'); -``` - -After the `deploy` task executed, `deploy:done` will be triggered. - -:::note -You can see which hooks are enabled via the **dep tree** command. - -``` -dep tree deploy -``` - -::: diff --git a/docs/yaml.md b/docs/yaml.md deleted file mode 100644 index d597ec121..000000000 --- a/docs/yaml.md +++ /dev/null @@ -1,31 +0,0 @@ -# YAML - -Deployer supports recipes written in YAML. For validating the structure, Deployer uses -the JSON Schema declared in [schema.json](https://github.com/deployphp/deployer/blob/master/src/schema.json). - -Here is an example of a YAML recipe: - -```yaml -import: - - recipe/laravel.php - -config: - repository: "git@github.com:example/example.com.git" - remote_user: deployer - -hosts: - example.com: - deploy_path: "~/example" - -tasks: - build: - - cd: "{{release_path}}" - - run: "npm run build" - -after: - deploy:failed: deploy:unlock -``` - -YAML recipes can include recipes written in PHP. For example, some tasks maybe written in PHP and imported into YAML. - -Conversely, it's also possible to import a YAML recipe from PHP using the [import()](api.md#import) function. diff --git a/phpcs.xml b/phpcs.xml deleted file mode 100644 index df21cf250..000000000 --- a/phpcs.xml +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - src - - - - - - diff --git a/phpstan.neon b/phpstan.neon deleted file mode 100644 index 99d3c05a4..000000000 --- a/phpstan.neon +++ /dev/null @@ -1,15 +0,0 @@ -includes: - - tests/phpstan-baseline.neon - -parameters: - level: 5 - paths: - - src - - recipe - - contrib - - ignoreErrors: - - "#^Constant DEPLOYER_VERSION not found\\.$#" - - "#^Constant DEPLOYER_BIN not found\\.$#" - - "#CpanelPhp#" - - "#AMQPMessage#" diff --git a/phpunit.xml b/phpunit.xml deleted file mode 100644 index 9d98c66bf..000000000 --- a/phpunit.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - src/ - recipe/ - - - vendor/ - bin/ - - - - - tests/src/ - - - tests/legacy/ - - - tests/joy/ - - - diff --git a/tests/bootstrap.php b/tests/bootstrap.php deleted file mode 100644 index 6835938bd..000000000 --- a/tests/bootstrap.php +++ /dev/null @@ -1,40 +0,0 @@ -&1`; -`cd $repository && git add .`; -`cd $repository && git config user.name 'Anton Medvedev'`; -`cd $repository && git config user.email 'anton.medv@example.com'`; -`cd $repository && git commit -m 'first commit'`; diff --git a/tests/docker/Dockerfile b/tests/docker/Dockerfile deleted file mode 100644 index edd5914c2..000000000 --- a/tests/docker/Dockerfile +++ /dev/null @@ -1,102 +0,0 @@ -FROM php:7.3-cli-alpine AS composer -RUN apk add wget -COPY ./scripts/install-composer.sh /tmp/install-composer.sh -RUN sh /tmp/install-composer.sh - - - - - -FROM php:7.3-cli-alpine AS deployer -RUN apk add \ - git \ - openssh-client \ - rsync - -RUN ssh-keygen \ - -q \ - -b 2048 \ - -t rsa \ - -f ~/.ssh/id_rsa - -RUN git config --global user.email "e2e@deployer.test" \ - && git config --global user.name "E2E Deployer" - -ARG XDEBUG_VERSION=2.9.8 -RUN set -eux; \ - apk add --no-cache --virtual .build-deps $PHPIZE_DEPS; \ - pecl install xdebug-$XDEBUG_VERSION; \ - docker-php-ext-enable xdebug; \ - apk del .build-deps - -COPY scripts/php-code-coverage/coverage-start-wrapper.php /usr/local/etc/php/php-code-coverage/ -COPY conf/10-coverage.ini /usr/local/etc/php/conf.d/ - -COPY --from=composer /tmp/composer /bin/composer -VOLUME [ "/project" ] -WORKDIR /project - - - - - -FROM php:7.3-apache AS server -RUN apt-get update && apt-get install -y \ - acl \ - git \ - openssh-server \ - sudo \ - && rm -rf /var/lib/apt/lists/* - -# SSH login fix. Otherwise user is kicked off after login -RUN mkdir /run/sshd \ - && sed -i 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' /etc/pam.d/sshd - -# Configure Apache to expose healthcheck & configure site to use /var/www/html/current ad document root -COPY conf/healthcheck.conf /etc/apache2/sites-available/healthcheck.conf -COPY ./initial-site /var/www/html/initial-site - -ENV APACHE_DOCUMENT_ROOT /var/www/html/current/public -RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/000-default.conf \ - && sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf \ - && ln -s /var/www/html/initial-site /var/www/html/current \ - && chown -R www-data:www-data /var/www/html \ - && echo "Listen 81" >> /etc/apache2/ports.conf \ - && a2enmod rewrite \ - && a2ensite healthcheck - -RUN useradd \ - --create-home \ - deployer \ - && echo 'deployer:deployer' | chpasswd \ - && echo 'deployer ALL=(ALL) ALL' >> /etc/sudoers \ - && mkdir ~deployer/.ssh \ - && touch ~deployer/.ssh/authorized_keys \ - && chown -R deployer:deployer ~deployer/.ssh \ - && chmod 700 ~deployer/.ssh \ - && chmod 600 ~deployer/.ssh/authorized_keys \ - && usermod -a -G www-data deployer - -RUN useradd \ - --create-home \ - git \ - && mkdir ~git/.ssh \ - && touch ~git/.ssh/authorized_keys \ - && chown -R git:git ~git/.ssh \ - && chmod 700 ~git/.ssh \ - && chmod 700 ~git/.ssh/authorized_keys \ - && mkdir ~git/repository \ - && git init --bare ~git/repository \ - && chown -R git:git ~git/repository - -COPY scripts/start-servers.sh /usr/local/bin/start-servers -COPY --from=composer /tmp/composer /usr/local/bin/composer -COPY --from=deployer /root/.ssh/id_rsa.pub /tmp/root_rsa.pub - -RUN chmod a+x /usr/local/bin/start-servers \ - && cat /tmp/root_rsa.pub >> ~deployer/.ssh/authorized_keys \ - && cat /tmp/root_rsa.pub >> ~git/.ssh/authorized_keys \ - && rm -rf /tmp/root_rsa.pub - -EXPOSE 22 80 81 -CMD [ "start-servers" ] diff --git a/tests/docker/README.md b/tests/docker/README.md deleted file mode 100644 index eb7ef2342..000000000 --- a/tests/docker/README.md +++ /dev/null @@ -1,88 +0,0 @@ -# Deployer E2E testing environment - -This directory contains an end-to-end testing environment for Deployer. - -All commands mentioned in this readme, should be executed in the `docker` directory. - -## Requirements - -* Docker -* docker-compose - -## Running tests - -The E2E are started when running the `docker-compose up` command. -This will start the `server` container that has the Apache, OpenSSH & PHP 7.3 enabled. - -Once the `server` is up and running, the `deployer` container will be started and alongside it -the tests will be ran. - -## Adding new E2E tests - -The E2E test should be a part of the `e2e` test suite. -Each `e2e` test class should inherit from `AbstractE2ETest` class. - -Note: E2E tests will only run in an environment where env variable `E2E_ENV` has been set and has a truthy value. - -## Manually accessing the `deployer` container. - -The container can be accessed by running: - -``` -docker-compose run deployer sh -``` - -This command will spawn a `sh` shell inside the `deployer` container. - -## About containers - -### `deployer` container - -The `deployer` container contains: - -* git -* PHP 7.3 with XDebug enabled -* rsync -* SSH client - -It is possible to access the `server` container via ssh by running: - -``` -ssh deployer@server -``` - -`root`'s public key has been added to authorized keys for `deployer` user. - -#### Enabling XDebug - -To enable XDebug create a `docker-compose.override.yml` file with following content: - -```dockerfile -services: - deployer: - environment: - # See https://docs.docker.com/docker-for-mac/networking/#i-want-to-connect-from-a-container-to-a-service-on-the-host - # See https://github.com/docker/for-linux/issues/264 - # The `remote_host` below may optionally be replaced with `remote_connect_back=1` - XDEBUG_CONFIG: >- - remote_enable=1 - remote_host=${XDEBUG_HOST:-host.docker.internal} - remote_autostart=1 - remote_port=9000 - idekey=PHPSTORM - # This should correspond to the server declared in PHPStorm `Preferences | Languages & Frameworks | PHP | Servers` - # Then PHPStorm will use the corresponding path mappings - PHP_IDE_CONFIG: serverName=deployer-e2e -``` - -Note: you may want to set the `XDEBUG_HOST` env variable to point to your IP address when running tests in Linux. - -### `server` container - -The `server` container contains: - -* Apache (with the `DocumentRoot` set to `/var/www/html/current`) -* git -* PHP 7.3 -* SSH server with -* sudo (user `deployer` can use `sudo` after providing a password: `deployer`) diff --git a/tests/docker/conf/10-coverage.ini b/tests/docker/conf/10-coverage.ini deleted file mode 100644 index 038ce7c9e..000000000 --- a/tests/docker/conf/10-coverage.ini +++ /dev/null @@ -1,2 +0,0 @@ -auto_prepend_file = /usr/local/etc/php/php-code-coverage/coverage-start-wrapper.php -auto_append_file = /usr/local/etc/php/php-code-coverage/coverage-start-wrapper.php \ No newline at end of file diff --git a/tests/docker/conf/healthcheck.conf b/tests/docker/conf/healthcheck.conf deleted file mode 100644 index f51410f86..000000000 --- a/tests/docker/conf/healthcheck.conf +++ /dev/null @@ -1,32 +0,0 @@ - - # The ServerName directive sets the request scheme, hostname and port that - # the server uses to identify itself. This is used when creating - # redirection URLs. In the context of virtual hosts, the ServerName - # specifies what hostname must appear in the request's Host: header to - # match this virtual host. For the default virtual host (this file) this - # value is not decisive as it is used as a last resort host regardless. - # However, you must set it for any further virtual host explicitly. - #ServerName www.example.com - - ServerAdmin webmaster@localhost - DocumentRoot /var/www/html - - # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, - # error, crit, alert, emerg. - # It is also possible to configure the loglevel for particular - # modules, e.g. - #LogLevel info ssl:warn - - ErrorLog ${APACHE_LOG_DIR}/error.log - CustomLog ${APACHE_LOG_DIR}/access.log combined - - RewriteEngine on - RedirectMatch 204 /health_check - - # For most configuration files from conf-available/, which are - # enabled or disabled at a global level, it is possible to - # include a line for only one particular virtual host. For example the - # following line enables the CGI configuration for this host only - # after it has been globally disabled with "a2disconf". - #Include conf-available/serve-cgi-bin.conf - diff --git a/tests/docker/docker-compose.yml b/tests/docker/docker-compose.yml deleted file mode 100644 index cd51b193a..000000000 --- a/tests/docker/docker-compose.yml +++ /dev/null @@ -1,48 +0,0 @@ -version: '2.4' - -services: - deployer: - build: - context: "" - target: deployer - depends_on: - server: - condition: service_healthy - volumes: - - ./../../:/project - command: "sh /project/tests/e2e/coverage/start-e2e-test.sh" - networks: - - e2e - environment: - PHP_CCOV_START_FILE: '/project/tests/e2e/coverage/coverage-start.php' - PHP_CCOV_OUTPUT_FILE: '/project/tests/e2e/report/clover.xml' -# # See https://docs.docker.com/docker-for-mac/networking/#i-want-to-connect-from-a-container-to-a-service-on-the-host -# # See https://github.com/docker/for-linux/issues/264 -# # The `remote_host` below may optionally be replaced with `remote_connect_back=1` -# XDEBUG_CONFIG: >- -# remote_enable=1 -# remote_host=${XDEBUG_RHOST:-host.docker.internal} -# remote_autostart=1 -# remote_port=9000 -# idekey=PHPSTORM -# # This should correspond to the server declared in PHPStorm `Preferences | Languages & Frameworks | PHP | Servers` -# # Then PHPStorm will use the corresponding path mappings -# PHP_IDE_CONFIG: serverName=deployer-e2e - - server: - build: - context: "" - target: server - healthcheck: - test: ["CMD", "curl", "-f", "http://localhost:81/health_check"] - interval: 5s - timeout: 2s - retries: 3 - start_period: 2s - networks: - e2e: - aliases: - - server.test - -networks: - e2e: diff --git a/tests/docker/initial-site/public/index.html b/tests/docker/initial-site/public/index.html deleted file mode 100644 index 5016ba876..000000000 --- a/tests/docker/initial-site/public/index.html +++ /dev/null @@ -1,5 +0,0 @@ - - - Hello World! - - \ No newline at end of file diff --git a/tests/docker/scripts/install-composer.sh b/tests/docker/scripts/install-composer.sh deleted file mode 100644 index e2ac87df5..000000000 --- a/tests/docker/scripts/install-composer.sh +++ /dev/null @@ -1,18 +0,0 @@ -#!/bin/sh - -EXPECTED_CHECKSUM="$(wget -q -O - https://composer.github.io/installer.sig)" -php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');" -ACTUAL_CHECKSUM="$(php -r "echo hash_file('sha384', 'composer-setup.php');")" - -if [ "$EXPECTED_CHECKSUM" != "$ACTUAL_CHECKSUM" ] -then - >&2 echo 'ERROR: Invalid installer checksum' - rm composer-setup.php - exit 1 -fi - -php composer-setup.php --quiet --install-dir=/tmp --filename=composer -RESULT=$? -rm composer-setup.php -chmod a+x /tmp/composer -exit $RESULT \ No newline at end of file diff --git a/tests/docker/scripts/php-code-coverage/coverage-start-wrapper.php b/tests/docker/scripts/php-code-coverage/coverage-start-wrapper.php deleted file mode 100644 index a93060aa3..000000000 --- a/tests/docker/scripts/php-code-coverage/coverage-start-wrapper.php +++ /dev/null @@ -1,5 +0,0 @@ -tester = new ConsoleApplicationTester(__DIR__ . '/../../bin/dep', __DIR__); - } -} diff --git a/tests/e2e/ConsoleApplicationTester.php b/tests/e2e/ConsoleApplicationTester.php deleted file mode 100644 index 3136b291b..000000000 --- a/tests/e2e/ConsoleApplicationTester.php +++ /dev/null @@ -1,147 +0,0 @@ -binaryPath ], $arguments); - - $outputArgs = []; - foreach ($arguments as $key => $value) { - if (!is_numeric($key)) { - $outputArgs[] = $key; - } - - $outputArgs[] = $value; - } - - return $outputArgs; - } - - private function prepareProcess(array $arguments): Process - { - $commandLine = $this->generateCommand($arguments); - - $process = new Process($commandLine); - $process->setTimeout($this->timeout); - - if (!empty($this->inputs)) { - $inputs = self::createInputsStream($this->inputs); - $process->setInput($inputs); - } - - if (!empty($this->cwd)) { - $process->setWorkingDirectory($this->cwd); - } - - return $process; - } - - public function __construct(string $binaryPath, string $cwd = '') - { - $this->binaryPath = $binaryPath; - $this->cwd = $cwd; - } - - public function __destruct() - { - if ($this->process && $this->process->isRunning()) { - $this->process->stop(0); - } - } - - /** - * @param int $timeout timout in seconds after which process will be stopped - * @return $this - */ - public function setTimeout(int $timeout): self - { - $this->timeout = $timeout; - return $this; - } - - public function setInputs(array $inputs): self - { - $this->inputs = $inputs; - return $this; - } - - public function run(array $arguments): self - { - if ($this->process && $this->process->isRunning()) { - throw new \RuntimeException('Previous process did not end yet'); - } - - $this->process = $this->prepareProcess($arguments); - $this->process->run(); - - return $this; - } - - public function getDisplay(bool $normalize = false): string - { - if ($this->process === null) { - throw new \RuntimeException('Output not initialized, did you execute the command before requesting the display?'); - } - - $display = $this->process->getOutput(); - if ($normalize) { - $display = str_replace(\PHP_EOL, "\n", $display); - } - - return $display; - } - - public function getErrors(bool $normalize = false): string - { - if ($this->process === null) { - throw new \RuntimeException('Error output not initialized, did you execute the command before requesting the display?'); - } - - $display = $this->process->getErrorOutput(); - if ($normalize) { - $display = str_replace(\PHP_EOL, "\n", $display); - } - - return $display; - } - - public function getStatusCode() - { - if ($this->process === null) { - throw new \RuntimeException('Status code not initialized, did you execute the command before requesting the display?'); - } - - return $this->process->getExitCode(); - } -} diff --git a/tests/e2e/FunctionsE2ETest.php b/tests/e2e/FunctionsE2ETest.php deleted file mode 100644 index eec7fc4d5..000000000 --- a/tests/e2e/FunctionsE2ETest.php +++ /dev/null @@ -1,24 +0,0 @@ -tester->run([ - '-f' => self::RECIPE, - 'test:functions:run-with-placeholders', - 'all', - ]); - - $display = trim($this->tester->getDisplay()); - - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('placeholder {{bar}} xyz%', $display); - } -} diff --git a/tests/e2e/LaravelBoilerplateE2ETest.php b/tests/e2e/LaravelBoilerplateE2ETest.php deleted file mode 100644 index 7110811c4..000000000 --- a/tests/e2e/LaravelBoilerplateE2ETest.php +++ /dev/null @@ -1,37 +0,0 @@ -tester->setTimeout(180) - ->run([ - '-f' => self::RECIPE, - 'deploy', - 'all', - ]); - - $display = trim($this->tester->getDisplay()); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - - $siteContent = file_get_contents('http://server.test'); - $expectedSiteContent = "Build v8."; - self::assertStringContainsString($expectedSiteContent, $siteContent); - } - - protected function tearDown(): void - { - parent::tearDown(); - - if ($this->tester) { - $this->tester->run([ - '-f' => self::RECIPE, - 'deploy:unlock', - 'all', - ]); - } - } -} diff --git a/tests/e2e/MiscE2ETest.php b/tests/e2e/MiscE2ETest.php deleted file mode 100644 index e800d5948..000000000 --- a/tests/e2e/MiscE2ETest.php +++ /dev/null @@ -1,45 +0,0 @@ -tester->setInputs(['deployer']); - - $this->tester->run([ - '-f' => self::RECIPE, - 'test:misc:sudo-write-user', - 'all', - ]); - - $display = trim($this->tester->getDisplay()); - - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('Current user is: root', $display); - } - - /** - * @group e2e - */ - public function testSudoWithPasswordProvidedViaArgument(): void - { - $this->tester->run([ - '-f' => self::RECIPE, - 'test:misc:sudo-write-user', - '-o' => 'sudo_pass=deployer', - 'all', - ]); - - $display = trim($this->tester->getDisplay()); - - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('Current user is: root', $display); - } -} diff --git a/tests/e2e/SymfonyBoilerplateE2ETest.php b/tests/e2e/SymfonyBoilerplateE2ETest.php deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/e2e/TimeoutsE2ETest.php b/tests/e2e/TimeoutsE2ETest.php deleted file mode 100644 index ce12d6a03..000000000 --- a/tests/e2e/TimeoutsE2ETest.php +++ /dev/null @@ -1,25 +0,0 @@ -tester->run([ - '-f' => self::RECIPE, - 'test:timeouts', - 'all', - '-v', - ]); - - $display = trim($this->tester->getDisplay()); - - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('+timeout', $display); - } -} diff --git a/tests/e2e/bootstrap.php b/tests/e2e/bootstrap.php deleted file mode 100644 index f95e2e680..000000000 --- a/tests/e2e/bootstrap.php +++ /dev/null @@ -1,14 +0,0 @@ -includeDirectory('/project'); -$filter->excludeDirectory('/project/vendor'); -$filter->excludeDirectory('/project/tests'); - -$outputCoverage = new CodeCoverage( - (new Selector)->forLineCoverage($filter), - $filter -); - -$coverageReports = glob("/tmp/ccov/*.php"); -foreach ($coverageReports as $reportPath) { - /** @var CodeCoverage $partialCoverage */ - $partialCoverage = include $reportPath; - if (!$partialCoverage) { - throw new \Exception("Failed to load coverage report from file '{$reportPath}'"); - } - $outputCoverage->merge($partialCoverage); -} - -$cloverReport = new Clover(); -$cloverReport->process($outputCoverage, $outputFile); - -echo "Clover report file written to {$outputFile}\n"; - diff --git a/tests/e2e/coverage/coverage-start.php b/tests/e2e/coverage/coverage-start.php deleted file mode 100644 index 538669856..000000000 --- a/tests/e2e/coverage/coverage-start.php +++ /dev/null @@ -1,60 +0,0 @@ -includeDirectory('/project'); -$filter->excludeDirectory('/project/vendor'); -$filter->excludeDirectory('/project/tests'); -$report = new PHPReport(); - -$coverage = new CodeCoverage( - (new Selector)->forLineCoverage($filter), - $filter -); - -$outputDir = '/tmp/ccov'; -if (!is_dir($outputDir)) { - mkdir($outputDir); -} - -// use anonymous class as we don't really want to pollute class space with this stuff -(new class ($coverage, $report, $outputDir) { - /** @var CodeCoverage */ - private $coverage; - /** @var PHPReport */ - private $report; - /** @var string */ - private $outputDir; - /** @var string|null */ - private $coverageName; - - public function __construct(CodeCoverage $coverage, PHPReport $report, string $outputDir) { - $this->coverage = $coverage; - $this->report = $report; - $this->outputDir = $outputDir; - } - - public function start():void { - register_shutdown_function([$this, 'stop']); - - $coverageName = uniqid('coverage_'); - $this->coverageName = $coverageName; - $this->coverage->start($this->coverageName); - } - - public function stop():void { - $this->coverage->stop(); - - $outputFile = $this->outputDir . "/{$this->coverageName}.php"; - $this->report->process($this->coverage, $outputFile); - } -})->start(); - - - diff --git a/tests/e2e/coverage/start-e2e-test.sh b/tests/e2e/coverage/start-e2e-test.sh deleted file mode 100644 index ba82ffe23..000000000 --- a/tests/e2e/coverage/start-e2e-test.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/sh - -ROOTDIR=$(readlink -f "$(dirname "$0")/../../..") - -# Run E2E tests and grab exit code of the process -php "$ROOTDIR/vendor/bin/pest" --config "$ROOTDIR/tests/e2e/phpunit-e2e.xml" -E2E_EXIT_CODE=$? - -# Generate coverage report file -php "$ROOTDIR/tests/e2e/coverage/coverage-report.php" - -return $E2E_EXIT_CODE \ No newline at end of file diff --git a/tests/e2e/phpunit-e2e.xml b/tests/e2e/phpunit-e2e.xml deleted file mode 100644 index aac4227af..000000000 --- a/tests/e2e/phpunit-e2e.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - . - - - diff --git a/tests/e2e/recipe/functions.php b/tests/e2e/recipe/functions.php deleted file mode 100644 index e3eaa3c43..000000000 --- a/tests/e2e/recipe/functions.php +++ /dev/null @@ -1,14 +0,0 @@ - '{{bar}}', 'baz' => 'xyz%']; - - $output = run($cmd, ['env' => $env]); - output()->writeln($output); // we use this to skip \Deployer\parse() being called in normal \Deployer\writeln() -}); diff --git a/tests/e2e/recipe/hosts.php b/tests/e2e/recipe/hosts.php deleted file mode 100644 index 89906faf5..000000000 --- a/tests/e2e/recipe/hosts.php +++ /dev/null @@ -1,13 +0,0 @@ -setDeployPath('/var/www/html') - ->set('bin/php', '/usr/local/bin/php') - ->setTag('e2e') - ->setRemoteUser('deployer') - ->set('timeout', 600) - ->setSshArguments([ - '-o UserKnownHostsFile=/dev/null', - '-o StrictHostKeyChecking=no', - ]); diff --git a/tests/e2e/recipe/laravel-boilerplate.php b/tests/e2e/recipe/laravel-boilerplate.php deleted file mode 100644 index 8a31898b8..000000000 --- a/tests/e2e/recipe/laravel-boilerplate.php +++ /dev/null @@ -1,29 +0,0 @@ -disable(); - -before('deploy:shared', 'laravel:setup-env'); -before('artisan:storage:link', 'artisan:key:generate'); diff --git a/tests/e2e/recipe/misc.php b/tests/e2e/recipe/misc.php deleted file mode 100644 index c3d2a4cb8..000000000 --- a/tests/e2e/recipe/misc.php +++ /dev/null @@ -1,12 +0,0 @@ - 1 ] ); - } catch (TimeoutException $e) { - $ps = run("if ps aux | grep '[p]hp -r while(true){}'; then echo still running; else echo +timeout; fi"); - if ($ps != '+timeout') { - throw new \Exception('Process still running.'); - } - } -}); - diff --git a/tests/fixtures/project/uploaded.html b/tests/fixtures/project/uploaded.html deleted file mode 100644 index e69de29bb..000000000 diff --git a/tests/fixtures/repository/.env b/tests/fixtures/repository/.env deleted file mode 100644 index ead49fb51..000000000 --- a/tests/fixtures/repository/.env +++ /dev/null @@ -1 +0,0 @@ -ENV=prod diff --git a/tests/fixtures/repository/README.md b/tests/fixtures/repository/README.md deleted file mode 100644 index 32d99c612..000000000 --- a/tests/fixtures/repository/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Example repository - - diff --git a/tests/fixtures/repository/composer.json b/tests/fixtures/repository/composer.json deleted file mode 100644 index 4d13e3c6e..000000000 --- a/tests/fixtures/repository/composer.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "name": "ಠ_ಠ", - "require": { - "php": "^7.3" - } -} diff --git a/tests/fixtures/repository/uploads/poem.txt b/tests/fixtures/repository/uploads/poem.txt deleted file mode 100644 index e5c64ea00..000000000 --- a/tests/fixtures/repository/uploads/poem.txt +++ /dev/null @@ -1,12 +0,0 @@ -Night, street, lamp, drugstore, -A dull and meaningless light. -Go on and live another quarter century - -Nothing will change. There's no way out. - -You'll die, then start from the beginning, -It will repeat, just like before: -Night, icy ripples on a canal, -Drugstore, street, lamp. - - A. A. Blok - 10 October 1912 diff --git a/tests/joy/HostDefaultConfigTest.php b/tests/joy/HostDefaultConfigTest.php deleted file mode 100644 index 3cfdacc33..000000000 --- a/tests/joy/HostDefaultConfigTest.php +++ /dev/null @@ -1,34 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace joy; - -class HostDefaultConfigTest extends JoyTest -{ - protected function recipe(): string - { - return <<<'PHP' -getPort(); - writeln(empty($port) ? 'empty' : "port:$port"); -}); -PHP; - } - - public function testOnFunc() - { - $this->dep('test'); - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('empty', $display); - } -} diff --git a/tests/joy/JoyTest.php b/tests/joy/JoyTest.php deleted file mode 100644 index 5d95df15c..000000000 --- a/tests/joy/JoyTest.php +++ /dev/null @@ -1,76 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace joy; - -use Deployer\Deployer; -use PHPUnit\Framework\TestCase; -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Output\OutputInterface; -use Symfony\Component\Console\Tester\ApplicationTester; -use const __TEMP_DIR__; - -abstract class JoyTest extends TestCase -{ - /** - * @var ApplicationTester - */ - protected $tester; - - /** - * @var Deployer - */ - protected $deployer; - - public static function setUpBeforeClass(): void - { - self::cleanUp(); - mkdir(__TEMP_DIR__); - } - - public static function tearDownAfterClass(): void - { - self::cleanUp(); - } - - protected static function cleanUp() - { - if (is_dir(__TEMP_DIR__)) { - exec('rm -rf ' . __TEMP_DIR__); - } - } - - protected function init(string $recipe) - { - $console = new Application(); - $console->setAutoExit(false); - $this->tester = new ApplicationTester($console); - - $this->deployer = new Deployer($console); - $this->deployer->importer->import($recipe); - $this->deployer->init(); - $this->deployer->config->set('deploy_path', __TEMP_DIR__ . '/{{hostname}}'); - } - - protected function dep(string $task, array $args = []): int - { - $recipe = __TEMP_DIR__ . '/' . get_called_class() . '.php'; - file_put_contents($recipe, $this->recipe()); - $this->init($recipe); - return $this->tester->run(array_merge([ - $task, - 'selector' => 'all', - '--file' => $recipe, - '--limit' => 1 - ], $args), [ - 'verbosity' => OutputInterface::VERBOSITY_VERBOSE, - 'interactive' => false, - ]); - } - - abstract protected function recipe(): string; -} diff --git a/tests/joy/OnFuncTest.php b/tests/joy/OnFuncTest.php deleted file mode 100644 index f2d6bb1f7..000000000 --- a/tests/joy/OnFuncTest.php +++ /dev/null @@ -1,49 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace joy; - -class OnFuncTest extends JoyTest -{ - protected function recipe(): string - { - return <<<'PHP' -once(); -PHP; - } - - public function testOnFunc() - { - putenv('DEPLOYER_LOCAL_WORKER=false'); - $this->dep('test'); - putenv('DEPLOYER_LOCAL_WORKER=true'); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('[prod] foo = prod', $display); - self::assertStringContainsString('[beta] foo = beta', $display); - } -} diff --git a/tests/legacy/AbstractTest.php b/tests/legacy/AbstractTest.php deleted file mode 100644 index bc8a08590..000000000 --- a/tests/legacy/AbstractTest.php +++ /dev/null @@ -1,73 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use PHPUnit\Framework\TestCase; -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Output\Output; -use Symfony\Component\Console\Tester\ApplicationTester; - -/** - * @deprecated Use JoyTest instead. - */ -abstract class AbstractTest extends TestCase -{ - /** - * @var ApplicationTester - */ - protected $tester; - - /** - * @var Deployer - */ - protected $deployer; - - public static function setUpBeforeClass(): void - { - self::cleanUp(); - mkdir(__TEMP_DIR__); - } - - public static function tearDownAfterClass(): void - { - self::cleanUp(); - } - - protected static function cleanUp() - { - if (is_dir(__TEMP_DIR__)) { - exec('rm -rf ' . __TEMP_DIR__); - } - } - - protected function init(string $recipe) - { - $console = new Application(); - $console->setAutoExit(false); - $this->tester = new ApplicationTester($console); - - $this->deployer = new Deployer($console); - $this->deployer->importer->import($recipe); - $this->deployer->init(); - $this->deployer->config->set('deploy_path', __TEMP_DIR__ . '/{{hostname}}'); - } - - protected function dep(string $recipe, string $task) - { - $this->init($recipe); - $this->tester->run([ - $task, - 'selector' => 'all', - '-f' => $recipe, - '-l' => 1 - ], [ - 'verbosity' => Output::VERBOSITY_VERBOSE, - 'interactive' => false, - ]); - } -} diff --git a/tests/legacy/CurrentPathTest.php b/tests/legacy/CurrentPathTest.php deleted file mode 100644 index 96b7c49e4..000000000 --- a/tests/legacy/CurrentPathTest.php +++ /dev/null @@ -1,35 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -class CurrentPathTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/deploy.php'; - - public function testDeployWithDifferentCurrentPath() - { - $currentPath = __TEMP_DIR__ . '/prod/public_html'; - - $this->init(self::RECIPE); - $this->tester->run([ - 'deploy', - 'selector' => 'prod', - '-f' => self::RECIPE, - '-o' => ['current_path=' . $currentPath], - ], [ - 'verbosity' => Output::VERBOSITY_VERBOSE, - ]); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertFileExists($currentPath . '/README.md'); - self::assertFileExists($currentPath . '/config/test.yaml'); - } -} diff --git a/tests/legacy/DeployTest.php b/tests/legacy/DeployTest.php deleted file mode 100644 index e62079d22..000000000 --- a/tests/legacy/DeployTest.php +++ /dev/null @@ -1,144 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -class DeployTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/deploy.php'; - - public function testDeploy() - { - $display = $this->dep(self::RECIPE, 'deploy'); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - - foreach ($this->deployer->hosts as $host) { - $deployPath = $host->get('deploy_path'); - - self::assertDirectoryExists($deployPath . '/.dep'); - self::assertDirectoryExists($deployPath . '/releases'); - self::assertDirectoryExists($deployPath . '/shared'); - self::assertDirectoryExists($deployPath . '/current'); - self::assertDirectoryExists($deployPath . '/current/'); - self::assertFileExists($deployPath . '/current/README.md'); - self::assertDirectoryExists($deployPath . '/current/storage/logs'); - self::assertDirectoryExists($deployPath . '/current/storage/db'); - self::assertDirectoryExists($deployPath . '/shared/storage/logs'); - self::assertDirectoryExists($deployPath . '/shared/storage/db'); - self::assertFileExists($deployPath . '/shared/uploads/poem.txt'); - self::assertFileExists($deployPath . '/shared/.env'); - self::assertFileExists($deployPath . '/current/config/test.yaml'); - self::assertFileExists($deployPath . '/shared/config/test.yaml'); - self::assertEquals(1, intval(exec("cd $deployPath && ls -1 releases | wc -l"))); - } - } - - public function testDeploySelectHosts() - { - $this->init(self::RECIPE); - $this->tester->setInputs(['0,1']); - $this->tester->run(['deploy', '-f' => self::RECIPE, '-l' => 1], [ - 'verbosity' => Output::VERBOSITY_NORMAL, - 'interactive' => true, - ]); - self::assertEquals(0, $this->tester->getStatusCode(), $this->tester->getDisplay()); - } - - public function testKeepReleases() - { - for ($i = 0; $i < 3; $i++) { - $this->dep(self::RECIPE, 'deploy'); - self::assertEquals(0, $this->tester->getStatusCode(), $this->tester->getDisplay()); - } - - for ($i = 0; $i < 6; $i++) { - $this->dep(self::RECIPE, 'deploy:fail'); - self::assertEquals(1, $this->tester->getStatusCode(), $this->tester->getDisplay()); - } - - for ($i = 0; $i < 3; $i++) { - $this->dep(self::RECIPE, 'deploy'); - self::assertEquals(0, $this->tester->getStatusCode(), $this->tester->getDisplay()); - } - - foreach ($this->deployer->hosts as $host) { - $deployPath = $host->get('deploy_path'); - - self::assertEquals(3, intval(exec("cd $deployPath && ls -1 releases | wc -l"))); - } - } - - /** - * @depends testKeepReleases - */ - public function testRollback() - { - $this->dep(self::RECIPE, 'rollback'); - - self::assertEquals(0, $this->tester->getStatusCode(), $this->tester->getDisplay()); - - foreach ($this->deployer->hosts as $host) { - $deployPath = $host->get('deploy_path'); - - self::assertEquals(3, intval(exec("cd $deployPath && ls -1 releases | wc -l"))); - } - } - - public function testFail() - { - $this->dep(self::RECIPE, 'deploy:fail'); - - $display = $this->tester->getDisplay(); - self::assertEquals(1, $this->tester->getStatusCode(), $display); - - foreach ($this->deployer->hosts as $host) { - $deployPath = $host->get('deploy_path'); - - self::assertEquals('ok', exec("cd $deployPath && [ -f .dep/deploy.lock ] || echo ok"), 'fail hooks deploy:unlock did not run'); - } - } - - /** - * @depends testFail - */ - public function testCleanup() - { - $this->dep(self::RECIPE, 'deploy:cleanup'); - - self::assertEquals(0, $this->tester->getStatusCode(), $this->tester->getDisplay()); - - foreach ($this->deployer->hosts as $host) { - $deployPath = $host->get('deploy_path'); - - self::assertFileDoesNotExist($deployPath . '/release'); - } - } - - public function testIsUnlockedExitsWithOneWhenDeployIsLocked() - { - $this->dep(self::RECIPE, 'deploy:lock'); - $this->dep(self::RECIPE, 'deploy:is_locked'); - $display = $this->tester->getDisplay(); - - self::assertStringContainsString('Deploy is locked by ', $display); - self::assertSame(1, $this->tester->getStatusCode()); - } - - public function testIsUnlockedExitsWithZeroWhenDeployIsNotLocked() - { - $this->dep(self::RECIPE, 'deploy:unlock'); - $this->dep(self::RECIPE, 'deploy:is_locked'); - $display = $this->tester->getDisplay(); - - self::assertStringContainsString('Deploy is unlocked.', $display); - self::assertSame(0, $this->tester->getStatusCode()); - } -} diff --git a/tests/legacy/EnvTest.php b/tests/legacy/EnvTest.php deleted file mode 100644 index 27b4c0552..000000000 --- a/tests/legacy/EnvTest.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -class EnvTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/env.php'; - - public function testOnce() - { - $this->dep(self::RECIPE, 'test'); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('global=global', $display); - self::assertStringContainsString('local=local', $display); - self::assertStringContainsString('dotenv=Hello, world!', $display); - self::assertStringContainsString('dotenv=local', $display); - } -} diff --git a/tests/legacy/NamedArgumentsTest.php b/tests/legacy/NamedArgumentsTest.php deleted file mode 100644 index 7b19a0d96..000000000 --- a/tests/legacy/NamedArgumentsTest.php +++ /dev/null @@ -1,56 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -// TODO: Wait until Deployer 7.1 with only php8 supports. -//class NamedArgumentsTest extends AbstractTest -//{ -// const RECIPE = __DIR__ . '/recipe/named_arguments.php'; -// -// public function testRunWithNamedArguments() -// { -// $this->init(self::RECIPE); -// $this->tester->run(['named_arguments', '-f' => self::RECIPE], ['verbosity' => Output::VERBOSITY_VERBOSE]); -// -// $display = $this->tester->getDisplay(); -// self::assertEquals(0, $this->tester->getStatusCode(), $display); -// self::assertStringContainsString('Hello, world!', $display); -// } -// -// public function testRunWithOptions() -// { -// $this->init(self::RECIPE); -// $this->tester->run(['options', '-f' => self::RECIPE], ['verbosity' => Output::VERBOSITY_VERBOSE]); -// -// $display = $this->tester->getDisplay(); -// self::assertEquals(0, $this->tester->getStatusCode(), $display); -// self::assertStringContainsString('Hello, Anton!', $display); -// } -// -// public function testRunWithOptionsWithNamedArguments() -// { -// $this->init(self::RECIPE); -// $this->tester->run(['options_with_named_arguments', '-f' => self::RECIPE], ['verbosity' => Output::VERBOSITY_VERBOSE]); -// -// $display = $this->tester->getDisplay(); -// self::assertEquals(0, $this->tester->getStatusCode(), $display); -// self::assertStringContainsString('Hello, override!', $display); -// } -// -// public function testRunLocallyWithNamedArguments() -// { -// $this->init(self::RECIPE); -// $this->tester->run(['run_locally_named_arguments', '-f' => self::RECIPE], ['verbosity' => Output::VERBOSITY_VERBOSE]); -// -// $display = $this->tester->getDisplay(); -// self::assertEquals(0, $this->tester->getStatusCode(), $display); -// self::assertStringContainsString('Hello, world!', $display); -// } -//} diff --git a/tests/legacy/OncePerNodeTest.php b/tests/legacy/OncePerNodeTest.php deleted file mode 100644 index b42c88229..000000000 --- a/tests/legacy/OncePerNodeTest.php +++ /dev/null @@ -1,25 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -class OncePerNodeTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/once_per_node.php'; - - public function testOnce() - { - $this->dep(self::RECIPE, 'test_once_per_node'); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('alias: group_a_1 hostname: localhost', $display); - self::assertStringNotContainsString('alias: group_a_2 hostname: localhost', $display); - self::assertStringContainsString('alias: group_b_1 hostname: group_b_1', $display); - self::assertStringNotContainsString('alias: group_b_2 hostname: group_b_2', $display); - } -} diff --git a/tests/legacy/OnceTest.php b/tests/legacy/OnceTest.php deleted file mode 100644 index 540a21a36..000000000 --- a/tests/legacy/OnceTest.php +++ /dev/null @@ -1,22 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -class OnceTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/once.php'; - - public function testOnce() - { - $this->dep(self::RECIPE, 'test_once'); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertTrue(substr_count($display, 'SHOULD BE ONCE') == 1, $display); - } -} diff --git a/tests/legacy/ParallelTest.php b/tests/legacy/ParallelTest.php deleted file mode 100644 index 4f84f66c5..000000000 --- a/tests/legacy/ParallelTest.php +++ /dev/null @@ -1,114 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -class ParallelTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/parallel.php'; - - public static function setUpBeforeClass(): void - { - parent::setUpBeforeClass(); - putenv('DEPLOYER_LOCAL_WORKER=false'); // Allow to start workers. Don't forget to disable it later. - } - - public static function tearDownAfterClass(): void - { - putenv('DEPLOYER_LOCAL_WORKER=true'); - parent::tearDownAfterClass(); - } - - public function testWorker() - { - $this->init(self::RECIPE); - $this->tester->run([ - 'echo', - '-f' => self::RECIPE, - 'selector' => 'all' - ], [ - 'verbosity' => Output::VERBOSITY_NORMAL, - ]); - self::assertEquals(0, $this->tester->getStatusCode(), $this->tester->getDisplay()); - } - - public function testServer() - { - $this->init(self::RECIPE); - $this->tester->setInputs(['prod', 'Black bear']); - $this->tester->run([ - 'ask', - '-f' => self::RECIPE, - ], [ - 'verbosity' => Output::VERBOSITY_NORMAL, - 'interactive' => true, - ]); - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('[prod] Question: What kind of bear is best?', $display); - self::assertStringContainsString('[prod] Black bear', $display); - } - - public function testOption() - { - $this->init(self::RECIPE); - $this->tester->run( - [ - 'echo', - 'selector' => 'all', - '-o' => ['greet=Hello'], - '-f' => self::RECIPE, - //'-l' => 1, - ], - [ - 'verbosity' => Output::VERBOSITY_DEBUG, - 'interactive' => false, - ] - ); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringContainsString('[prod] Hello, prod!', $display); - self::assertStringContainsString('[beta] Hello, beta!', $display); - } - - public function testCachedHostConfig() - { - $this->init(self::RECIPE); - $this->tester->run([ - 'cache_config_test', - '-f' => self::RECIPE, - 'selector' => 'all' - ], [ - 'verbosity' => Output::VERBOSITY_NORMAL, - ]); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertTrue(substr_count($display, 'worker on prod') == 1, $display); - self::assertTrue(substr_count($display, 'worker on beta') == 1, $display); - } - - public function testHostConfigFromCallback() - { - $this->init(self::RECIPE); - $this->tester->run([ - 'host_config_from_callback', - '-f' => self::RECIPE, - 'selector' => 'all' - ], [ - 'verbosity' => Output::VERBOSITY_NORMAL, - ]); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertTrue(substr_count($display, '[prod] config value is from global') == 1, $display); - self::assertTrue(substr_count($display, '[beta] config value is from callback') == 1, $display); - } -} diff --git a/tests/legacy/SelectTest.php b/tests/legacy/SelectTest.php deleted file mode 100644 index ccb6b43b0..000000000 --- a/tests/legacy/SelectTest.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -class SelectTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/select.php'; - - public function testSelect() - { - $this->init(self::RECIPE); - $this->tester->run([ - 'test', - '-f' => self::RECIPE, - 'selector' => 'prod' - ], [ - 'verbosity' => Output::VERBOSITY_DEBUG, - ]); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertStringNotContainsString('executing on prod', $display); - self::assertStringContainsString('executing on beta', $display); - self::assertStringContainsString('executing on dev', $display); - } -} diff --git a/tests/legacy/UpdateCodeTest.php b/tests/legacy/UpdateCodeTest.php deleted file mode 100644 index cd2018d5b..000000000 --- a/tests/legacy/UpdateCodeTest.php +++ /dev/null @@ -1,33 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -class UpdateCodeTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/update_code.php'; - - public function testDeployWithDifferentUpdateCodeTask() - { - $this->init(self::RECIPE); - $this->tester->run([ - 'deploy', - 'selector' => 'prod', - '-f' => self::RECIPE, - ], [ - 'verbosity' => Output::VERBOSITY_VERBOSE, - ]); - - $display = $this->tester->getDisplay(); - $deployPath = $this->deployer->hosts->get('prod')->getDeployPath(); - - self::assertEquals(0, $this->tester->getStatusCode(), $display); - self::assertFileExists($deployPath . '/current/uploaded.html'); - } -} diff --git a/tests/legacy/YamlTest.php b/tests/legacy/YamlTest.php deleted file mode 100644 index f4854d079..000000000 --- a/tests/legacy/YamlTest.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Symfony\Component\Console\Output\Output; - -class YamlTest extends AbstractTest -{ - const RECIPE = __DIR__ . '/recipe/deploy.yaml'; - - public function testDeploy() - { - $this->init(self::RECIPE); - $this->deployer->config->set('repository', __REPOSITORY__); - $this->tester->run([ - 'deploy', - 'selector' => 'all', - '-f' => self::RECIPE - ], [ - 'verbosity' => Output::VERBOSITY_VERBOSE, - 'interactive' => false, - ]); - - $display = $this->tester->getDisplay(); - self::assertEquals(0, $this->tester->getStatusCode(), $display); - - foreach ($this->deployer->hosts as $host) { - $deployPath = $host->get('deploy_path'); - - self::assertDirectoryExists($deployPath . '/.dep'); - self::assertDirectoryExists($deployPath . '/releases'); - self::assertDirectoryExists($deployPath . '/shared'); - self::assertDirectoryExists($deployPath . '/current'); - self::assertDirectoryExists($deployPath . '/current/'); - self::assertFileExists($deployPath . '/current/README.md'); - self::assertDirectoryExists($deployPath . '/current/storage/logs'); - self::assertDirectoryExists($deployPath . '/current/storage/db'); - self::assertDirectoryExists($deployPath . '/shared/storage/logs'); - self::assertDirectoryExists($deployPath . '/shared/storage/db'); - self::assertFileExists($deployPath . '/shared/uploads/poem.txt'); - self::assertFileExists($deployPath . '/shared/.env'); - self::assertFileExists($deployPath . '/current/config/test.yaml'); - self::assertFileExists($deployPath . '/shared/config/test.yaml'); - self::assertEquals(1, intval(`cd $deployPath && ls -1 releases | wc -l`)); - } - } -} diff --git a/tests/legacy/recipe/deploy.php b/tests/legacy/recipe/deploy.php deleted file mode 100644 index 23d4907ae..000000000 --- a/tests/legacy/recipe/deploy.php +++ /dev/null @@ -1,47 +0,0 @@ -&1'); -}); - -task('deploy:fail', [ - 'deploy:prepare', - 'fail', - 'deploy:publish' -]); - -task('fail', function () { - run('false'); -}); - -fail('deploy:fail', 'deploy:unlock'); diff --git a/tests/legacy/recipe/deploy.yaml b/tests/legacy/recipe/deploy.yaml deleted file mode 100644 index cddacf5de..000000000 --- a/tests/legacy/recipe/deploy.yaml +++ /dev/null @@ -1,27 +0,0 @@ -import: recipe/common.php - -config: - application: deployer - shared_dirs: - - uploads - - storage/logs/ - - storage/db - shared_files: - - .env - - config/test.yaml - keep_releases: 3 - http_user: false - -hosts: - prod: - local: true - -tasks: - deploy: - - deploy:prepare - - deploy:vendors - - deploy:publish - - deploy:vendors: - - cd: '{{release_path}}' - - run: echo {{bin/composer}} {{composer_options}} 2>&1 diff --git a/tests/legacy/recipe/env.php b/tests/legacy/recipe/env.php deleted file mode 100644 index 09da6f9c7..000000000 --- a/tests/legacy/recipe/env.php +++ /dev/null @@ -1,22 +0,0 @@ - 'global', -]); - -task('test', function () { - info('global=' . run('echo $VAR')); - info('local=' . run('echo $VAR', ['env' => ['VAR' => 'local']])); - info('dotenv=' . run('echo $KEY')); - info('dotenv=' . run('echo $KEY', ['env' => ['KEY' => 'local']])); -}); - -before('test', function () { - run('mkdir -p {{deploy_path}}'); - run('echo KEY="\'Hello, world!\'" > {{deploy_path}}/.env'); - set('dotenv', '{{deploy_path}}/.env'); -}); diff --git a/tests/legacy/recipe/named_arguments.php b/tests/legacy/recipe/named_arguments.php deleted file mode 100644 index 204412185..000000000 --- a/tests/legacy/recipe/named_arguments.php +++ /dev/null @@ -1,22 +0,0 @@ - 'world']); -}); - -task('options', function () { - run('echo "Hello, $name!"', ['env' => ['name' => 'Anton']]); -}); - -task('options_with_named_arguments', function () { - // The `options:` arg has higher priority than named arguments. - run('echo "Hello, $name!"', ['env' => ['name' => 'override']], env: ['name' => 'world']); -}); - -task('run_locally_named_arguments', function () { - runLocally('echo "Hello, $name!"', env: ['name' => 'world']); -}); diff --git a/tests/legacy/recipe/once.php b/tests/legacy/recipe/once.php deleted file mode 100644 index 84f8bbe24..000000000 --- a/tests/legacy/recipe/once.php +++ /dev/null @@ -1,10 +0,0 @@ -once(); diff --git a/tests/legacy/recipe/once_per_node.php b/tests/legacy/recipe/once_per_node.php deleted file mode 100644 index d41c66e19..000000000 --- a/tests/legacy/recipe/once_per_node.php +++ /dev/null @@ -1,16 +0,0 @@ -setHostname('localhost'); -localhost('group_a_2') - ->setHostname('localhost'); -localhost('group_b_1') - ->setLabels(['node' => 'anna']); -localhost('group_b_2') - ->setLabels(['node' => 'anna']); - -task('test_once_per_node', function () { - writeln('alias: {{alias}} hostname: {{hostname}}'); -})->oncePerNode(); diff --git a/tests/legacy/recipe/parallel.php b/tests/legacy/recipe/parallel.php deleted file mode 100644 index f95c125e8..000000000 --- a/tests/legacy/recipe/parallel.php +++ /dev/null @@ -1,49 +0,0 @@ -set('host_level_callback_config', function () { - return 'from callback'; - }); - -// testServer: - -task('ask', function () { - $answer = ask('Question: What kind of bear is best?'); - writeln($answer); -}); - -// testWorker, testOption: - -set('greet', '_'); - -task('echo', function () { - $alias = currentHost()->getAlias(); - run("echo {{greet}}, $alias!"); -}); - -// testCachedHostConfig: - -set('upper_host', function () { - writeln('running ' . (Deployer::isWorker() ? 'worker' : 'master') . ' on ' . currentHost()->getAlias()); - return strtoupper(currentHost()->getAlias()); -}); - -task('cache_config_test', function () { - writeln('echo 1: {{upper_host}}'); -}); - -after('cache_config_test', function () { - writeln('echo 2: {{upper_host}}'); -}); - -// testHostConfigFromCallback: - -set('host_level_callback_config', 'from global'); - -task('host_config_from_callback', function () { - writeln('config value is {{host_level_callback_config}}'); -}); - diff --git a/tests/legacy/recipe/select.php b/tests/legacy/recipe/select.php deleted file mode 100644 index 8951edbfe..000000000 --- a/tests/legacy/recipe/select.php +++ /dev/null @@ -1,13 +0,0 @@ -setLabels(['env' => 'prod']); -localhost('beta')->setLabels(['env' => 'dev']); -localhost('dev')->setLabels(['env' => 'dev']); - -task('test', function () { - on(select('env=dev'), function () { - info('executing on {{alias}}'); - }); -}); diff --git a/tests/legacy/recipe/update_code.php b/tests/legacy/recipe/update_code.php deleted file mode 100644 index 637f1e83c..000000000 --- a/tests/legacy/recipe/update_code.php +++ /dev/null @@ -1,9 +0,0 @@ -\" between 100|125|200|100000 and 0 is always true\\.$#" - count: 1 - path: ../src/Command/BlackjackCommand.php - - - - message: "#^Else branch is unreachable because previous condition is always true\\.$#" - count: 1 - path: ../src/Command/BlackjackCommand.php - - - - message: "#^If condition is always true\\.$#" - count: 1 - path: ../src/Command/BlackjackCommand.php - - - - message: "#^If condition is always false\\.$#" - count: 1 - path: ../src/Command/BlackjackCommand.php - - - - message: "#^Comparison operation \"\\>\" between 0 and 0 is always false\\.$#" - count: 1 - path: ../src/Command/BlackjackCommand.php - - - - message: "#^Unsafe usage of new static\\(\\)\\.$#" - count: 2 - path: ../src/Component/PharUpdate/Exception/Exception.php - - - - message: "#^Unsafe usage of new static\\(\\)\\.$#" - count: 1 - path: ../src/Component/PharUpdate/Manifest.php - - - - message: "#^If condition is always true\\.$#" - count: 1 - path: ../src/Host/Host.php - - - - message: "#^Unreachable statement \\- code above always terminates\\.$#" - count: 1 - path: ../src/Importer/Importer.php - - - - message: "#^Unreachable statement \\- code above always terminates\\.$#" - count: 1 - path: ../src/functions.php - diff --git a/tests/src/Collection/CollectionTest.php b/tests/src/Collection/CollectionTest.php deleted file mode 100644 index 7d7da392b..000000000 --- a/tests/src/Collection/CollectionTest.php +++ /dev/null @@ -1,52 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Collection; - -use Deployer\Host\HostCollection; -use Deployer\Task\TaskCollection; -use PHPUnit\Framework\TestCase; - -class CollectionTest extends TestCase -{ - public static function collections() - { - return [ - [new Collection()], - [new TaskCollection()], - [new HostCollection()], - ]; - } - - /** - * @dataProvider collections - */ - public function testCollection($collection) - { - $this->assertInstanceOf(Collection::class, $collection); - - $object = new \stdClass(); - $collection->set('object', $object); - - $this->assertTrue($collection->has('object')); - $this->assertEquals($object, $collection->get('object')); - - $this->assertEquals(['object' => $object], $collection->select(function ($value, $key) use ($object) { - return $value === $object && $key === 'object'; - })); - } - - /** - * @dataProvider collections - * @depends testCollection - */ - public function testException($collection) - { - $this->expectException(\InvalidArgumentException::class); - $collection->get('unexpected'); - } -} diff --git a/tests/src/Command/BlackjackCommandTest.php b/tests/src/Command/BlackjackCommandTest.php deleted file mode 100644 index 6faa6331a..000000000 --- a/tests/src/Command/BlackjackCommandTest.php +++ /dev/null @@ -1,20 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Component\Pimple; - -use Deployer\Component\Pimple\Exception\FrozenServiceException; -use Deployer\Component\Pimple\Exception\InvalidServiceIdentifierException; -use Deployer\Component\Pimple\Exception\UnknownIdentifierException; -use InvalidArgumentException; -use PHPUnit\Framework\TestCase; -use ReflectionProperty; -use RuntimeException; -use function extension_loaded; - -class PimpleTest extends TestCase -{ - public function testWithString() - { - $pimple = new Container(); - $pimple['param'] = 'value'; - - $this->assertEquals('value', $pimple['param']); - } - - public function testWithClosure() - { - $pimple = new Container(); - $pimple['service'] = function () { - return new Service(); - }; - - $this->assertInstanceOf(Service::class, $pimple['service']); - } - - public function testServicesShouldBeDifferent() - { - $pimple = new Container(); - $pimple['service'] = $pimple->factory(function () { - return new Service(); - }); - - $serviceOne = $pimple['service']; - $this->assertInstanceOf(Service::class, $serviceOne); - - $serviceTwo = $pimple['service']; - $this->assertInstanceOf(Service::class, $serviceTwo); - - $this->assertNotSame($serviceOne, $serviceTwo); - } - - public function testShouldPassContainerAsParameter() - { - $pimple = new Container(); - $pimple['service'] = function () { - return new Service(); - }; - $pimple['container'] = function ($container) { - return $container; - }; - - $this->assertNotSame($pimple, $pimple['service']); - $this->assertSame($pimple, $pimple['container']); - } - - public function testIsset() - { - $pimple = new Container(); - $pimple['param'] = 'value'; - $pimple['service'] = function () { - return new Service(); - }; - - $pimple['null'] = null; - - $this->assertTrue(isset($pimple['param'])); - $this->assertTrue(isset($pimple['service'])); - $this->assertTrue(isset($pimple['null'])); - $this->assertFalse(isset($pimple['non_existent'])); - } - - public function testConstructorInjection() - { - $params = ['param' => 'value']; - $pimple = new Container($params); - - $this->assertSame($params['param'], $pimple['param']); - } - - public function testOffsetGetValidatesKeyIsPresent() - { - $this->expectException(UnknownIdentifierException::class); - $this->expectExceptionMessage('Identifier "foo" is not defined.'); - - $pimple = new Container(); - echo $pimple['foo']; - } - - /** - * @group legacy - */ - public function testLegacyOffsetGetValidatesKeyIsPresent() - { - $this->expectException(InvalidArgumentException::class); - $this->expectExceptionMessage('Identifier "foo" is not defined.'); - - $pimple = new Container(); - echo $pimple['foo']; - } - - public function testOffsetGetHonorsNullValues() - { - $pimple = new Container(); - $pimple['foo'] = null; - $this->assertNull($pimple['foo']); - } - - public function testUnset() - { - $pimple = new Container(); - $pimple['param'] = 'value'; - $pimple['service'] = function () { - return new Service(); - }; - - unset($pimple['param'], $pimple['service']); - $this->assertFalse(isset($pimple['param'])); - $this->assertFalse(isset($pimple['service'])); - } - - /** - * @dataProvider serviceDefinitionProvider - */ - public function testShare($service) - { - $pimple = new Container(); - $pimple['shared_service'] = $service; - - $serviceOne = $pimple['shared_service']; - $this->assertInstanceOf(Service::class, $serviceOne); - - $serviceTwo = $pimple['shared_service']; - $this->assertInstanceOf(Service::class, $serviceTwo); - - $this->assertSame($serviceOne, $serviceTwo); - } - - /** - * @dataProvider serviceDefinitionProvider - */ - public function testProtect($service) - { - $pimple = new Container(); - $pimple['protected'] = $pimple->protect($service); - - $this->assertSame($service, $pimple['protected']); - } - - public function testGlobalFunctionNameAsParameterValue() - { - $pimple = new Container(); - $pimple['global_function'] = 'strlen'; - $this->assertSame('strlen', $pimple['global_function']); - } - - public function testRaw() - { - $pimple = new Container(); - $pimple['service'] = $definition = $pimple->factory(function () { - return 'foo'; - }); - $this->assertSame($definition, $pimple->raw('service')); - } - - public function testRawHonorsNullValues() - { - $pimple = new Container(); - $pimple['foo'] = null; - $this->assertNull($pimple->raw('foo')); - } - - public function testRawValidatesKeyIsPresent() - { - $this->expectException(UnknownIdentifierException::class); - $this->expectExceptionMessage('Identifier "foo" is not defined.'); - - $pimple = new Container(); - $pimple->raw('foo'); - } - - /** - * @group legacy - */ - public function testLegacyRawValidatesKeyIsPresent() - { - $this->expectException(InvalidArgumentException::class); - $this->expectExceptionMessage('Identifier "foo" is not defined.'); - - $pimple = new Container(); - $pimple->raw('foo'); - } - - /** - * @dataProvider serviceDefinitionProvider - */ - public function testExtend($service) - { - $pimple = new Container(); - $pimple['shared_service'] = function () { - return new Service(); - }; - $pimple['factory_service'] = $pimple->factory(function () { - return new Service(); - }); - - $pimple->extend('shared_service', $service); - $serviceOne = $pimple['shared_service']; - $this->assertInstanceOf(Service::class, $serviceOne); - $serviceTwo = $pimple['shared_service']; - $this->assertInstanceOf(Service::class, $serviceTwo); - $this->assertSame($serviceOne, $serviceTwo); - $this->assertSame($serviceOne->value, $serviceTwo->value); - - $pimple->extend('factory_service', $service); - $serviceOne = $pimple['factory_service']; - $this->assertInstanceOf(Service::class, $serviceOne); - $serviceTwo = $pimple['factory_service']; - $this->assertInstanceOf(Service::class, $serviceTwo); - $this->assertNotSame($serviceOne, $serviceTwo); - $this->assertNotSame($serviceOne->value, $serviceTwo->value); - } - - public function testExtendDoesNotLeakWithFactories() - { - if (extension_loaded('pimple')) { - $this->markTestSkipped('Pimple extension does not support this test'); - } - $pimple = new Container(); - - $pimple['foo'] = $pimple->factory(function () { - return; - }); - $pimple['foo'] = $pimple->extend('foo', function ($foo, $pimple) { - return; - }); - unset($pimple['foo']); - - $p = new ReflectionProperty($pimple, 'values'); - $p->setAccessible(true); - $this->assertEmpty($p->getValue($pimple)); - - $p = new ReflectionProperty($pimple, 'factories'); - $p->setAccessible(true); - $this->assertCount(0, $p->getValue($pimple)); - } - - public function testExtendValidatesKeyIsPresent() - { - $this->expectException(UnknownIdentifierException::class); - $this->expectExceptionMessage('Identifier "foo" is not defined.'); - - $pimple = new Container(); - $pimple->extend('foo', function () { - }); - } - - /** - * @group legacy - */ - public function testLegacyExtendValidatesKeyIsPresent() - { - $this->expectException(InvalidArgumentException::class); - $this->expectExceptionMessage('Identifier "foo" is not defined.'); - - $pimple = new Container(); - $pimple->extend('foo', function () { - }); - } - - public function testKeys() - { - $pimple = new Container(); - $pimple['foo'] = 123; - $pimple['bar'] = 123; - - $this->assertEquals(['foo', 'bar'], $pimple->keys()); - } - - /** @test */ - public function settingAnInvokableObjectShouldTreatItAsFactory() - { - $pimple = new Container(); - $pimple['invokable'] = new Invokable(); - - $this->assertInstanceOf(Service::class, $pimple['invokable']); - } - - /** @test */ - public function settingNonInvokableObjectShouldTreatItAsParameter() - { - $pimple = new Container(); - $pimple['non_invokable'] = new NonInvokable(); - - $this->assertInstanceOf(NonInvokable::class, $pimple['non_invokable']); - } - - /** - * @dataProvider badServiceDefinitionProvider - */ - public function testFactoryFailsForInvalidServiceDefinitions($service) - { - $this->expectException(\TypeError::class); - $pimple = new Container(); - $pimple->factory($service); - } - - /** - * @group legacy - * @dataProvider badServiceDefinitionProvider - */ - public function testLegacyFactoryFailsForInvalidServiceDefinitions($service) - { - $this->expectException(\TypeError::class); - $pimple = new Container(); - $pimple->factory($service); - } - - /** - * @dataProvider badServiceDefinitionProvider - */ - public function testProtectFailsForInvalidServiceDefinitions($service) - { - $this->expectException(\TypeError::class); - $pimple = new Container(); - $pimple->protect($service); - } - - /** - * @group legacy - * @dataProvider badServiceDefinitionProvider - */ - public function testLegacyProtectFailsForInvalidServiceDefinitions($service) - { - $this->expectException(\TypeError::class); - $pimple = new Container(); - $pimple->protect($service); - } - - /** - * @dataProvider badServiceDefinitionProvider - */ - public function testExtendFailsForKeysNotContainingServiceDefinitions($service) - { - $this->expectException(InvalidServiceIdentifierException::class); - $this->expectExceptionMessage('Identifier "foo" does not contain an object definition.'); - - $pimple = new Container(); - $pimple['foo'] = $service; - $pimple->extend('foo', function () { - }); - } - - /** - * @group legacy - * @dataProvider badServiceDefinitionProvider - */ - public function testLegacyExtendFailsForKeysNotContainingServiceDefinitions($service) - { - $this->expectException(InvalidArgumentException::class); - $this->expectExceptionMessage('Identifier "foo" does not contain an object definition.'); - - $pimple = new Container(); - $pimple['foo'] = $service; - $pimple->extend('foo', function () { - }); - } - - /** - * @group legacy - * @expectedDeprecation How Pimple behaves when extending protected closures will be fixed in Pimple 4. Are you sure "foo" should be protected? - */ - public function testExtendingProtectedClosureDeprecation() - { - $pimple = new Container(); - $pimple['foo'] = $pimple->protect(function () { - return 'bar'; - }); - - $pimple->extend('foo', function ($value) { - return $value . '-baz'; - }); - - $this->assertSame('bar-baz', $pimple['foo']); - } - - /** - * @dataProvider badServiceDefinitionProvider - */ - public function testExtendFailsForInvalidServiceDefinitions($service) - { - $this->expectException(\TypeError::class); - $pimple = new Container(); - $pimple['foo'] = function () { - }; - $pimple->extend('foo', $service); - } - - /** - * @group legacy - * @dataProvider badServiceDefinitionProvider - */ - public function testLegacyExtendFailsForInvalidServiceDefinitions($service) - { - $this->expectException(\TypeError::class); - $pimple = new Container(); - $pimple['foo'] = function () { - }; - $pimple->extend('foo', $service); - } - - public function testExtendFailsIfFrozenServiceIsNonInvokable() - { - $this->expectException(FrozenServiceException::class); - $this->expectExceptionMessage('Cannot override frozen service "foo".'); - - $pimple = new Container(); - $pimple['foo'] = function () { - return new NonInvokable(); - }; - $foo = $pimple['foo']; - - $pimple->extend('foo', function () { - }); - } - - public function testExtendFailsIfFrozenServiceIsInvokable() - { - $this->expectException(FrozenServiceException::class); - $this->expectExceptionMessage('Cannot override frozen service "foo".'); - - $pimple = new Container(); - $pimple['foo'] = function () { - return new Invokable(); - }; - $foo = $pimple['foo']; - - $pimple->extend('foo', function () { - }); - } - - /** - * Provider for invalid service definitions. - */ - public function badServiceDefinitionProvider() - { - return [ - [123], - [new NonInvokable()], - ]; - } - - /** - * Provider for service definitions. - */ - public function serviceDefinitionProvider() - { - return [ - [function ($value) { - $service = new Service(); - $service->value = $value; - - return $service; - }], - [new Invokable()], - ]; - } - - public function testDefiningNewServiceAfterFreeze() - { - $pimple = new Container(); - $pimple['foo'] = function () { - return 'foo'; - }; - $foo = $pimple['foo']; - - $pimple['bar'] = function () { - return 'bar'; - }; - $this->assertSame('bar', $pimple['bar']); - } - - public function testOverridingServiceAfterFreeze() - { - $this->expectException(FrozenServiceException::class); - $this->expectExceptionMessage('Cannot override frozen service "foo".'); - - $pimple = new Container(); - $pimple['foo'] = function () { - return 'foo'; - }; - $foo = $pimple['foo']; - - $pimple['foo'] = function () { - return 'bar'; - }; - } - - /** - * @group legacy - */ - public function testLegacyOverridingServiceAfterFreeze() - { - $this->expectException(RuntimeException::class); - $this->expectExceptionMessage('Cannot override frozen service "foo".'); - - $pimple = new Container(); - $pimple['foo'] = function () { - return 'foo'; - }; - $foo = $pimple['foo']; - - $pimple['foo'] = function () { - return 'bar'; - }; - } - - public function testRemovingServiceAfterFreeze() - { - $pimple = new Container(); - $pimple['foo'] = function () { - return 'foo'; - }; - $foo = $pimple['foo']; - - unset($pimple['foo']); - $pimple['foo'] = function () { - return 'bar'; - }; - $this->assertSame('bar', $pimple['foo']); - } - - public function testExtendingService() - { - $pimple = new Container(); - $pimple['foo'] = function () { - return 'foo'; - }; - $pimple['foo'] = $pimple->extend('foo', function ($foo, $app) { - return "$foo.bar"; - }); - $pimple['foo'] = $pimple->extend('foo', function ($foo, $app) { - return "$foo.baz"; - }); - $this->assertSame('foo.bar.baz', $pimple['foo']); - } - - public function testExtendingServiceAfterOtherServiceFreeze() - { - $pimple = new Container(); - $pimple['foo'] = function () { - return 'foo'; - }; - $pimple['bar'] = function () { - return 'bar'; - }; - $foo = $pimple['foo']; - - $pimple['bar'] = $pimple->extend('bar', function ($bar, $app) { - return "$bar.baz"; - }); - $this->assertSame('bar.baz', $pimple['bar']); - } -} - -class Invokable -{ - public function __invoke($value = null) - { - $service = new Service(); - $service->value = $value; - - return $service; - } -} - -class NonInvokable -{ - public function __call($a, $b) - { - } -} - -class Service -{ - public $value; -} diff --git a/tests/src/Component/Ssh/IOArgumentsTest.php b/tests/src/Component/Ssh/IOArgumentsTest.php deleted file mode 100644 index 4a722cde1..000000000 --- a/tests/src/Component/Ssh/IOArgumentsTest.php +++ /dev/null @@ -1,34 +0,0 @@ -set('foo', 'a'); - $config['bar'] = 'b'; - - self::assertEquals('a b', $config->parse('{{foo}} {{bar}}')); - } - - public function testUnset() - { - $config = new Configuration(); - $config->set('opt', true); - unset($config['opt']); - self::assertFalse(isset($config['opt'])); - } - - public function testGet() - { - $config = new Configuration(); - $config->set('opt', true); - $config->set('fn', function () { - return 'func'; - }); - - self::assertTrue(isset($config['opt'])); - self::assertEquals(true, $config['opt']); - self::assertEquals('func', $config['fn']); - } - - public function testGetDefault() - { - $config = new Configuration(); - $config->set('name', 'alpha'); - - self::assertEquals('/alpha', $config->get('path', '/{{name}}')); - } - - public function testGetException() - { - $this->expectException(ConfigurationException::class); - - $config = new Configuration(); - $config->set('name', 'alpha'); - - self::assertEquals('/alpha', $config->get('path')); - } - - public function testGetParent() - { - $parent = new Configuration(); - $config = new Configuration($parent); - - $parent->set('opt', 'value'); - self::assertEquals('value', $parent['opt']); - self::assertEquals('value', $config['opt']); - - $parent->set('opt', 'newValue'); - self::assertEquals('newValue', $parent['opt']); - self::assertEquals('value', $config['opt']); - - $config->set('opt', 'hostValue'); - self::assertEquals('newValue', $parent['opt']); - self::assertEquals('hostValue', $config['opt']); - self::assertEquals('okay', $config->get('miss', 'okay')); - } - - public function testGetParentParent() - { - $global = new Configuration(); - $parent = new Configuration($global); - $config = new Configuration($parent); - - $global->set('global', 'value from {{path}}'); - $parent->set('path', 'parent'); - - self::assertEquals('value from parent', $config->get('global')); - } - - public function testGetParentWhatDependsOnChild() - { - $parent = new Configuration(); - $alpha = new Configuration($parent); - $beta = new Configuration($parent); - - $parent->set('deploy_path', 'path/{{name}}'); - $alpha->set('name', 'alpha'); - $beta->set('name', 'beta'); - - self::assertEquals('path/alpha', $alpha->get('deploy_path')); - self::assertEquals('path/beta', $beta->get('deploy_path')); - } - - public function testGetFromCallback() - { - $config = new Configuration(); - $config->set('func', function () { - return 'param'; - }); - self::assertEquals('param', $config['func']); - } - - public function testAdd() - { - $config = new Configuration(); - $config->set('opt', ['foo', 'bar']); - $config->add('opt', ['baz']); - self::assertEquals(['foo', 'bar', 'baz'], $config['opt']); - } - - public function testAddEmpty() - { - $config = new Configuration(); - $config->add('opt', ['baz']); - self::assertEquals(['baz'], $config['opt']); - } - - public function testAddDefaultToNotArray() - { - $this->expectException(\RuntimeException::class); - $this->expectExceptionMessage('Config option "config" isn\'t array.'); - - $config = new Configuration(); - $config->set('config', 'option'); - $config->add('config', ['three']); - } - - public function testAddToParent() - { - $parent = new Configuration(); - $alpha = new Configuration($parent); - - $parent->set('files', ['a', 'b']); - $alpha->add('files', ['c']); - - self::assertEquals(['a', 'b', 'c'], $alpha->get('files')); - } - - public function testAddToParentCallback() - { - $parent = new Configuration(); - $alpha = new Configuration($parent); - - $parent->set('files', function () { - return ['a', 'b']; - }); - $alpha->add('files', ['c']); - - self::assertEquals(['a', 'b', 'c'], $alpha->get('files')); - } - - public function testPersist() - { - $parent = new Configuration(); - $alpha = new Configuration($parent); - - $parent->set('global', 'do not include'); - $alpha->set('whoami', function () { - $this->fail('should not be called'); - }); - $alpha->set('name', 'alpha'); - - self::assertEquals(['name' => 'alpha'], $alpha->persist()); - } -} diff --git a/tests/src/DeployerTest.php b/tests/src/DeployerTest.php deleted file mode 100644 index e3b4d4da4..000000000 --- a/tests/src/DeployerTest.php +++ /dev/null @@ -1,36 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use PHPUnit\Framework\TestCase; -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -class DeployerTest extends TestCase -{ - private $deployer; - - protected function setUp(): void - { - $console = new Application(); - $input = $this->createMock(InputInterface::class); - $output = $this->createMock(OutputInterface::class); - $this->deployer = new Deployer($console, $input, $output); - } - - protected function tearDown(): void - { - unset($this->deployer); - } - - public function testInstance() - { - $this->assertEquals($this->deployer, Deployer::get()); - } -} diff --git a/tests/src/FunctionsTest.php b/tests/src/FunctionsTest.php deleted file mode 100644 index ceae06a05..000000000 --- a/tests/src/FunctionsTest.php +++ /dev/null @@ -1,185 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer; - -use Deployer\Configuration\Configuration; -use Deployer\Host\Host; -use Deployer\Host\Localhost; -use Deployer\Task\Context; -use Deployer\Task\GroupTask; -use Deployer\Task\Task; -use PHPUnit\Framework\TestCase; -use Symfony\Component\Console\Application; -use Symfony\Component\Console\Input\Input; -use Symfony\Component\Console\Output\Output; -use function Deployer\localhost; - -class FunctionsTest extends TestCase -{ - /** - * @var Deployer - */ - private $deployer; - - protected function setUp(): void - { - $console = new Application(); - - $input = $this->createMock(Input::class); - $output = $this->createMock(Output::class); - $host = new Localhost(); - - $this->deployer = new Deployer($console); - $this->deployer['input'] = $input; - $this->deployer['output'] = $output; - Context::push(new Context($host)); - } - - protected function tearDown(): void - { - Context::pop(); - unset($this->deployer); - $this->deployer = null; - } - - public function testHost() - { - host('domain.com'); - self::assertInstanceOf(Host::class, $this->deployer->hosts->get('domain.com')); - - host('a1.domain.com', 'a2.domain.com')->set('roles', 'app'); - self::assertInstanceOf(Host::class, $this->deployer->hosts->get('a1.domain.com')); - self::assertInstanceOf(Host::class, $this->deployer->hosts->get('a2.domain.com')); - - host('db[1:2].domain.com')->set('roles', 'db'); - self::assertInstanceOf(Host::class, $this->deployer->hosts->get('db1.domain.com')); - self::assertInstanceOf(Host::class, $this->deployer->hosts->get('db2.domain.com')); - } - - public function testLocalhost() - { - localhost('domain.com'); - self::assertInstanceOf(Localhost::class, $this->deployer->hosts->get('domain.com')); - } - - public function testTask() - { - task('task', function () { - }); - - $task = $this->deployer->tasks->get('task'); - self::assertInstanceOf(Task::class, $task); - - $task = task('task'); - self::assertInstanceOf(Task::class, $task); - - task('group', ['task']); - $task = $this->deployer->tasks->get('group'); - self::assertInstanceOf(GroupTask::class, $task); - - $task = task('callable', [$this, __METHOD__]); - self::assertInstanceOf(Task::class, $task); - } - - public function testBefore() - { - task('main', function () {}); - task('before', function () {}); - before('main', 'before'); - before('before', function () {}); - - $names = $this->taskToNames($this->deployer->scriptManager->getTasks('main')); - self::assertEquals(['before:before', 'before', 'main'], $names); - } - - public function testAfter() - { - task('main', function () {}); - task('after', function () {}); - after('main', 'after'); - after('after', function () {}); - - $names = $this->taskToNames($this->deployer->scriptManager->getTasks('main')); - self::assertEquals(['main', 'after', 'after:after'], $names); - } - - public function testRunLocally() - { - $output = runLocally('echo "hello"'); - self::assertEquals('hello', $output); - } - - public function testRunLocallyWithOptions() - { - Context::get()->getConfig()->set('env', ['DEPLOYER_ENV' => 'default', 'DEPLOYER_ENV_TMP' => 'default']); - - $output = runLocally('echo $DEPLOYER_ENV'); - self::assertEquals('default', $output); - $output = runLocally('echo $DEPLOYER_ENV_TMP'); - self::assertEquals('default', $output); - - $output = runLocally('echo $DEPLOYER_ENV', ['env' => ['DEPLOYER_ENV_TMP' => 'overwritten']]); - self::assertEquals('default', $output); - $output = runLocally('echo $DEPLOYER_ENV_TMP', ['env' => ['DEPLOYER_ENV_TMP' => 'overwritten']]); - self::assertEquals('overwritten', $output); - } - - public function testWithinSetsWorkingPaths() - { - Context::get()->getConfig()->set('working_path', '/foo'); - - within('/bar', function () { - $withinWorkingPath = Context::get()->getConfig()->get('working_path'); - self::assertEquals('/bar', $withinWorkingPath); - }); - - $originalWorkingPath = Context::get()->getConfig()->get('working_path'); - self::assertEquals('/foo', $originalWorkingPath); - } - - public function testWithinRestoresWorkingPathInCaseOfException() - { - Context::get()->getConfig()->set('working_path', '/foo'); - - try { - within('/bar', function () { - throw new \Exception('Dummy exception'); - }); - } catch (\Exception $exception) { - // noop - } - - $originalWorkingPath = Context::get()->getConfig()->get('working_path'); - self::assertEquals('/foo', $originalWorkingPath); - } - - public function testWithinReturningValue() - { - $output = within('/foo', function () { - return 'bar'; - }); - - self::assertEquals('bar', $output); - } - - public function testWithinWithVoidFunction() - { - $output = within('/foo', function () { - // noop - }); - - self::assertNull($output); - } - - private function taskToNames($tasks) - { - return array_map(function (Task $task) { - return $task->getName(); - }, $tasks); - } -} diff --git a/tests/src/Host/ConfigurationTest.php b/tests/src/Host/ConfigurationTest.php deleted file mode 100644 index ae5a6d82e..000000000 --- a/tests/src/Host/ConfigurationTest.php +++ /dev/null @@ -1,87 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Host; - -use Deployer\Configuration\Configuration; -use Deployer\Exception\ConfigurationException; -use PHPUnit\Framework\TestCase; - -class ConfigurationTest extends TestCase -{ - public function testConfiguration() - { - $config = new Configuration(); - $config->set('int', 42); - $config->set('string', 'value'); - $config->set('array', [1, 'two']); - $config->set('hyphen-ated', 'hyphen'); - $config->set('parse', 'is {{int}}'); - $config->set('parse-hyphen', 'has {{hyphen-ated}}'); - $config->set('callback', function () { - return 'callback'; - }); - $this->assertEquals(42, $config->get('int')); - $this->assertEquals('value', $config->get('string')); - $this->assertEquals([1, 'two'], $config->get('array')); - $this->assertEquals('default', $config->get('no', 'default')); - $this->assertEquals(null, $config->get('no', null)); - $this->assertEquals('callback', $config->get('callback')); - $this->assertEquals('is 42', $config->get('parse')); - $this->assertEquals('has hyphen', $config->get('parse-hyphen')); - - $config->set('int', 11); - $this->assertEquals('is 11', $config->get('parse')); - - $this->expectException('RuntimeException'); - $config->get('so'); - } - - public function testAddParams() - { - $config = new Configuration(); - $config->set('config', [ - 'one', - 'two' => 2, - 'nested' => [], - ]); - $config->add('config', [ - 'two' => 20, - 'nested' => [ - 'first', - ], - ]); - $config->add('config', [ - 'nested' => [ - 'second', - ], - ]); - $config->add('config', [ - 'extra', - ]); - - $expected = [ - 'one', - 'two' => 20, - 'nested' => [ - 'first', - 'second', - ], - 'extra', - ]; - $this->assertEquals($expected, $config->get('config')); - } - - public function testAddParamsToNotArray() - { - $this->expectException(ConfigurationException::class); - - $config = new Configuration(); - $config->set('config', 'option'); - $config->add('config', ['three']); - } -} diff --git a/tests/src/Host/HostTest.php b/tests/src/Host/HostTest.php deleted file mode 100644 index d1f66234c..000000000 --- a/tests/src/Host/HostTest.php +++ /dev/null @@ -1,86 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Host; - -use Deployer\Configuration\Configuration; -use PHPUnit\Framework\TestCase; - -class HostTest extends TestCase -{ - public function testHost() - { - $host = new Host('host'); - $host - ->setHostname('hostname') - ->setRemoteUser('remote_user') - ->setPort(22) - ->setConfigFile('~/.ssh/config') - ->setIdentityFile('~/.ssh/id_rsa') - ->setForwardAgent(true) - ->setSshMultiplexing(true); - - self::assertEquals('host', $host->getAlias()); - self::assertStringContainsString('host', $host->getTag()); - self::assertEquals('hostname', $host->getHostname()); - self::assertEquals('remote_user', $host->getRemoteUser()); - self::assertEquals(22, $host->getPort()); - self::assertEquals('~/.ssh/config', $host->getConfigFile()); - self::assertEquals('~/.ssh/id_rsa', $host->getIdentityFile()); - self::assertEquals(true, $host->getForwardAgent()); - self::assertEquals(true, $host->getSshMultiplexing()); - } - - public function testConfigurationAccessor() - { - $host = new Host('host'); - $host - ->set('roles', ['db', 'app']) - ->set('key', 'value') - ->set('array', [1]) - ->add('array', [2]); - - self::assertEquals(['db', 'app'], $host->get('roles')); - self::assertEquals('value', $host->get('key')); - self::assertEquals([1, 2], $host->get('array')); - } - - public function testHostAlias() - { - $host = new Host('host/alias'); - self::assertEquals('host/alias', $host->getAlias()); - self::assertEquals('host', $host->getHostname()); - } - - public function testHostWithParams() - { - $host = new Host('host'); - $value = 'new_value'; - $host - ->set('env', $value) - ->set('identity_file', '{{env}}'); - - self::assertEquals($value, $host->getIdentityFile()); - } - - public function testHostWithUserFromConfig() - { - $parent = new Configuration(); - $parent->set("deploy_user", function () { - return "test_user"; - }); - - $host = new Host('host'); - $host->config()->bind($parent); - $host - ->setHostname('host') - ->setRemoteUser('{{deploy_user}}') - ->setPort(22); - - self::assertEquals('test_user@host', $host->connectionString()); - } -} diff --git a/tests/src/Host/RangeTest.php b/tests/src/Host/RangeTest.php deleted file mode 100644 index 15cb9c0a4..000000000 --- a/tests/src/Host/RangeTest.php +++ /dev/null @@ -1,30 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Host; - -use PHPUnit\Framework\TestCase; - -class RangeTest extends TestCase -{ - public function testExpand() - { - self::assertEquals(['h1', 'h2', 'h3'], Range::expand(['h[1:3]'])); - self::assertEquals(['h1', 'h2', 'ha'], Range::expand(['h[1:2]', 'ha'])); - self::assertEquals(['h0', 'h1'], Range::expand(['h[0:1]'])); - self::assertEquals(['h1'], Range::expand(['h[1:1]'])); - self::assertEquals(['ha', 'hb', 'hc', 'hd'], Range::expand(['h[a:d]'])); - - $hostnames = Range::expand(['h[01:20]']); - self::assertContains('h01', $hostnames); - self::assertContains('h10', $hostnames); - self::assertContains('h20', $hostnames); - - self::assertCount(100, Range::expand(['h[1:100]'])); - self::assertCount(26, Range::expand(['h[a:z]'])); - } -} diff --git a/tests/src/Importer/ImporterTest.php b/tests/src/Importer/ImporterTest.php deleted file mode 100644 index 1f03602db..000000000 --- a/tests/src/Importer/ImporterTest.php +++ /dev/null @@ -1,82 +0,0 @@ -previousInput = $deployer->input; - $this->previousOutput = $deployer->output; - } - - public function tearDown(): void - { - Deployer::get()->input = $this->previousInput; - Deployer::get()->output = $this->previousOutput; - } - - public function testCanOneOverrideStaticMethod(): void - { - $extendedImporter = new class extends Importer - { - public static $config = []; - - protected static function config(array $config) - { - static::$config = $config; - } - }; - - $data = << 'bar'], $extendedImporter::$config); - } - - public function testImporterIgnoresYamlHiddenKeys(): void - { - $data = <<hosts->has('production')); - self::assertTrue(Deployer::get()->hosts->has('acceptance')); - self::assertTrue(Deployer::get()->hosts->has('production.beta')); - self::assertEquals('acceptance', Deployer::get()->hosts->get('acceptance')->getLabels()['stage']); - self::assertEquals('production', Deployer::get()->hosts->get('production')->getLabels()['stage']); - self::assertEquals('foo', Deployer::get()->hosts->get('acceptance')->getRemoteUser()); - self::assertEquals('bar', Deployer::get()->hosts->get('production')->getRemoteUser()); - } -} diff --git a/tests/src/Selector/SelectorTest.php b/tests/src/Selector/SelectorTest.php deleted file mode 100644 index d8dc61a99..000000000 --- a/tests/src/Selector/SelectorTest.php +++ /dev/null @@ -1,32 +0,0 @@ -set('labels', ['stage' => 'prod']); - $front = (new Host('prod.domain.com/front'))->set('labels', ['stage' => 'prod', 'tier' => 'frontend']); - $beta = (new Host('beta.domain.com'))->set('labels', ['stage' => 'beta']); - $dev = (new Host('dev'))->set('labels', ['stage' => 'dev']); - $multi = (new Host('multi'))->set('labels', ['stage' => ['prod', 'beta']]); - $allHosts = [$prod, $front, $beta, $dev, $multi]; - - $hosts = new HostCollection(); - foreach ($allHosts as $host) { - $hosts->set($host->getAlias(), $host); - } - $selector = new Selector($hosts); - self::assertEquals($allHosts, $selector->select('all')); - self::assertEquals([$prod, $front, $multi], $selector->select('stage=prod')); - self::assertEquals([$front], $selector->select('stage=prod & tier=frontend')); - self::assertEquals([$front, $beta, $multi], $selector->select('prod.domain.com/front, stage=beta')); - self::assertEquals([$prod, $beta, $dev, $multi], $selector->select('all & tier != frontend')); - self::assertEquals([$prod, $front, $dev], $selector->select('stage != beta')); - } -} diff --git a/tests/src/Support/HelpersTest.php b/tests/src/Support/HelpersTest.php deleted file mode 100644 index 1a4624761..000000000 --- a/tests/src/Support/HelpersTest.php +++ /dev/null @@ -1,62 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Support; - -use PHPUnit\Framework\TestCase; - -class HelpersTest extends TestCase -{ - public function testArrayFlatten() - { - self::assertEquals(['a', 'b', 'c'], array_flatten(['a', ['b', 'key' => ['c']]])); - } - - public function testArrayMergeAlternate() - { - $config = [ - 'one', - 'two' => 2, - 'nested' => [], - ]; - - $config = array_merge_alternate($config, [ - 'two' => 20, - 'nested' => [ - 'first', - ], - ]); - - $config = array_merge_alternate($config, [ - 'nested' => [ - 'second', - ], - ]); - - $config = array_merge_alternate($config, [ - 'extra' - ]); - - self::assertEquals([ - 'one', - 'two' => 20, - 'nested' => [ - 'first', - 'second', - ], - 'extra', - ], $config); - } - - public function testParseHomeDir() - { - $this->assertStringStartsWith('/', parse_home_dir('~/path')); - $this->assertStringStartsWith('/', parse_home_dir('~')); - $this->assertStringStartsWith('~', parse_home_dir('~path')); - $this->assertStringEndsWith('~', parse_home_dir('path~')); - } -} diff --git a/tests/src/Support/ObjectProxyTest.php b/tests/src/Support/ObjectProxyTest.php deleted file mode 100644 index 42322ed5e..000000000 --- a/tests/src/Support/ObjectProxyTest.php +++ /dev/null @@ -1,27 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Support; - -use PHPUnit\Framework\TestCase; - -class ObjectProxyTest extends TestCase -{ - public function testObjectProxy() - { - $mock = self::getMockBuilder('stdClass') - ->setMethods(['foo']) - ->getMock(); - $mock - ->expects(self::once()) - ->method('foo') - ->with('a', 'b'); - - $proxy = new ObjectProxy([$mock]); - $proxy->foo('a', 'b'); - } -} diff --git a/tests/src/Task/ContextTest.php b/tests/src/Task/ContextTest.php deleted file mode 100644 index 131b01db4..000000000 --- a/tests/src/Task/ContextTest.php +++ /dev/null @@ -1,36 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Task; - -use Deployer\Configuration\Configuration; -use Deployer\Host\Host; -use PHPUnit\Framework\TestCase; -use Symfony\Component\Console\Input\InputInterface; -use Symfony\Component\Console\Output\OutputInterface; - -class ContextTest extends TestCase -{ - public function testContext() - { - $host = $this->getMockBuilder(Host::class)->disableOriginalConstructor()->getMock(); - $host - ->expects($this->once()) - ->method('config') - ->willReturn($this->createMock(Configuration::class)); - - $context = new Context($host); - - $this->assertInstanceOf(Host::class, $context->getHost()); - $this->assertInstanceOf(Configuration::class, $context->getConfig()); - - Context::push($context); - - $this->assertEquals($context, Context::get()); - $this->assertEquals($context, Context::pop()); - } -} diff --git a/tests/src/Task/ScriptManagerTest.php b/tests/src/Task/ScriptManagerTest.php deleted file mode 100644 index c061ffd78..000000000 --- a/tests/src/Task/ScriptManagerTest.php +++ /dev/null @@ -1,98 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Task; - -use PHPUnit\Framework\TestCase; - -class ScriptManagerTest extends TestCase -{ - public function testGetTasks() - { - $notify = new Task('notify'); - $info = new GroupTask('info', ['notify']); - $deploy = new GroupTask('deploy', ['deploy:setup', 'deploy:release']); - $deploy->addBefore($info); - $setup = new Task('deploy:setup'); - $release = new Task('deploy:release'); - - $taskCollection = new TaskCollection(); - $taskCollection->set($notify->getName(), $notify); - $taskCollection->set($info->getName(), $info); - $taskCollection->set($deploy->getName(), $deploy); - $taskCollection->set($setup->getName(), $setup); - $taskCollection->set($release->getName(), $release); - - $scriptManager = new ScriptManager($taskCollection); - self::assertEquals([$notify, $setup, $release], $scriptManager->getTasks('deploy')); - } - - public function testOnce() - { - $a = new Task('a'); - $b = new Task('b'); - $b->once(); - $group = new GroupTask('group', ['a', 'b']); - - $taskCollection = new TaskCollection(); - $taskCollection->add($a); - $taskCollection->add($b); - $taskCollection->add($group); - - $scriptManager = new ScriptManager($taskCollection); - self::assertEquals([$a, $b], $scriptManager->getTasks('group')); - self::assertFalse($a->isOnce()); - self::assertTrue($b->isOnce()); - - $group->once(); - self::assertEquals([$a, $b], $scriptManager->getTasks('group')); - self::assertTrue($a->isOnce()); - self::assertTrue($b->isOnce()); - } - - public function testSelectsCombine() - { - $a = new Task('a'); - $b = new Task('b'); - $b->select('stage=beta'); - $group = new GroupTask('group', ['a', 'b']); - - $taskCollection = new TaskCollection(); - $taskCollection->add($a); - $taskCollection->add($b); - $taskCollection->add($group); - - $scriptManager = new ScriptManager($taskCollection); - self::assertEquals([$a, $b], $scriptManager->getTasks('group')); - self::assertNull($a->getSelector()); - self::assertEquals([[['=', 'stage', 'beta']]], $b->getSelector()); - - $group->select('role=prod'); - self::assertEquals([$a, $b], $scriptManager->getTasks('group')); - self::assertEquals([[['=', 'role', 'prod']]], $a->getSelector()); - self::assertEquals([[['=', 'stage', 'beta']],[['=', 'role', 'prod']]], $b->getSelector()); - } - - public function testThrowsExceptionIfTaskCollectionEmpty() - { - self::expectException(\InvalidArgumentException::class); - - $scriptManager = new ScriptManager(new TaskCollection()); - $scriptManager->getTasks(''); - } - - public function testThrowsExceptionIfTaskDontExists() - { - self::expectException(\InvalidArgumentException::class); - - $taskCollection = new TaskCollection(); - $taskCollection->set('testTask', new Task('testTask')); - - $scriptManager = new ScriptManager($taskCollection); - $scriptManager->getTasks('testTask2'); - } -} diff --git a/tests/src/Task/TaskTest.php b/tests/src/Task/TaskTest.php deleted file mode 100644 index 16c44f4b6..000000000 --- a/tests/src/Task/TaskTest.php +++ /dev/null @@ -1,114 +0,0 @@ - - * - * For the full copyright and license information, please view the LICENSE - * file that was distributed with this source code. - */ - -namespace Deployer\Task; - -use Deployer\Host\Host; -use PHPUnit\Framework\TestCase; -use function Deployer\invoke; -use function Deployer\task; - -class TaskTest extends TestCase -{ - protected function tearDown(): void - { - StubTask::$runned = 0; - } - - public function testTask() - { - $mock = self::getMockBuilder('stdClass') - ->setMethods(['callback']) - ->getMock(); - $mock - ->expects(self::exactly(1)) - ->method('callback'); - - $task = new Task('task_name', function () use ($mock) { - $mock->callback(); - }); - - $context = self::getMockBuilder(Context::class) - ->disableOriginalConstructor() - ->getMock(); - $task->run($context); - - self::assertEquals('task_name', $task->getName()); - - $task->desc('Task description.'); - self::assertEquals('Task description.', $task->getDescription()); - - $task->hidden(); - self::assertTrue($task->isHidden()); - - $task->once(); - self::assertTrue($task->isOnce()); - - $task->oncePerNode(); - self::assertTrue($task->isOncePerNode()); - } - - public function testInit() - { - $context = self::getMockBuilder(Context::class)->disableOriginalConstructor()->getMock(); - - // Test create task with [$object, 'method'] - $mock1 = self::getMockBuilder('stdClass') - ->setMethods(['callback']) - ->getMock(); - $mock1 - ->expects(self::once()) - ->method('callback'); - $task1 = new Task('task1', [$mock1, 'callback']); - $task1->run($context); - - // Test create task with anonymous functions - $mock2 = self::getMockBuilder('stdClass') - ->setMethods(['callback']) - ->getMock(); - $mock2 - ->expects(self::once()) - ->method('callback'); - $task2 = new Task('task2', function () use ($mock2) { - $mock2->callback(); - }); - $task2->run($context); - - self::assertEquals(0, StubTask::$runned); - $task3 = new Task('task3', new StubTask()); - $task3->run($context); - self::assertEquals(1, StubTask::$runned); - } - - public function testGroupInvoke(): void - { - $spy = new StubTask(); - - task('foo', $spy); - task('bar', $spy); - task('group', ['foo', 'bar']); - - (new Task('group:invoke', function () { - invoke('group'); - }))->run(new Context(new Host('localhost'))); - - $this->assertSame(2, StubTask::$runned); - } -} - -/** - * Stub class for task callable by __invoke() - */ -class StubTask -{ - public static $runned = 0; - - public function __invoke() - { - self::$runned++; - } -}

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¨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�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