From 9d6397f25d8185622717e6e66d3eed737fd9d99b Mon Sep 17 00:00:00 2001 From: github-actions <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 12 Oct 2024 20:42:52 +0000 Subject: [PATCH] Deployer 7.4.1 --- .github/DISCUSSION_TEMPLATE/bugs.yml | 54 - .github/FUNDING.yml | 1 - .github/ISSUE_TEMPLATE/config.yml | 17 - .github/PULL_REQUEST_TEMPLATE.md | 8 - .github/warp-logo@2x.png | Bin 80535 -> 0 bytes .github/workflows/check.yml | 62 - .github/workflows/docker.yml | 65 - .github/workflows/docs.yml | 44 - .github/workflows/release.yml | 65 - .github/workflows/stale.yml | 24 - .github/workflows/sync.yml | 28 - .github/workflows/test.yml | 75 - bin/build | 95 - bin/dep | 97 - bin/docgen | 56 - composer.json | 97 +- composer.lock | 4898 ----------------- dep | Bin 0 -> 793794 bytes docs/KNOWN_BUGS.md | 59 - docs/UPGRADE.md | 274 - docs/api.md | 565 -- docs/avoid-php-fpm-reloading.md | 62 - docs/basics.md | 245 - 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 | 55 - 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 | 247 - docs/installation.md | 31 - docs/recipe/README.md | 30 - docs/recipe/cakephp.md | 116 - docs/recipe/codeigniter.md | 90 - docs/recipe/codeigniter4.md | 322 -- docs/recipe/common.md | 264 - docs/recipe/composer.md | 32 - docs/recipe/contao.md | 182 - docs/recipe/craftcms.md | 122 - 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 | 543 -- docs/recipe/magento.md | 118 - docs/recipe/magento2.md | 767 --- docs/recipe/pimcore.md | 80 - 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 | 54 - docs/recipe/provision/website.md | 61 - docs/recipe/shopware.md | 316 -- docs/recipe/silverstripe.md | 136 - docs/recipe/spiral.md | 284 - docs/recipe/statamic.md | 222 - docs/recipe/sulu.md | 87 - docs/recipe/symfony.md | 201 - 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 | 46 - 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 | 67 - tests/src/Support/ObjectProxyTest.php | 27 - tests/src/Task/ContextTest.php | 36 - tests/src/Task/ScriptManagerTest.php | 98 - tests/src/Task/TaskTest.php | 114 - 190 files changed, 29 insertions(+), 21999 deletions(-) delete mode 100644 .github/DISCUSSION_TEMPLATE/bugs.yml delete mode 100644 .github/FUNDING.yml delete mode 100644 .github/ISSUE_TEMPLATE/config.yml delete mode 100644 .github/PULL_REQUEST_TEMPLATE.md delete mode 100644 .github/warp-logo@2x.png delete mode 100644 .github/workflows/check.yml delete mode 100644 .github/workflows/docker.yml delete mode 100644 .github/workflows/docs.yml delete mode 100644 .github/workflows/release.yml delete mode 100644 .github/workflows/stale.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/codeigniter4.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/spiral.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/DISCUSSION_TEMPLATE/bugs.yml b/.github/DISCUSSION_TEMPLATE/bugs.yml deleted file mode 100644 index a4fce9406..000000000 --- a/.github/DISCUSSION_TEMPLATE/bugs.yml +++ /dev/null @@ -1,54 +0,0 @@ -body: - - type: markdown - attributes: - value: | - **Before opening a bug report, please search the existing discussions.** - - - type: input - id: deployer-version - attributes: - label: Deployer Version - description: Which version of Deployer are you using? Please provide the full version, e.g. v7.4.0. - placeholder: v7.4.0 - validations: - required: true - - - type: input - id: target-os - attributes: - label: Target OS - description: Which operating system are you using? Please provide the full version, e.g. Ubuntu 22.04. - placeholder: Ubuntu 22.04 - validations: - required: true - - - type: dropdown - id: php-version - attributes: - label: Which PHP version are you using? - options: - - PHP 8.3 - - PHP 8.2 - - PHP 8.1 - - PHP 8.0 - - PHP 7.4 - - PHP 7.3 - - PHP 7.2 - - PHP 7.1 - validations: - required: true - - - type: textarea - id: deploy-src - attributes: - label: Content of deploy.php or deploy.yaml - description: Please, provide a minimal reproducible example of deploy.php or deploy.yaml file. - validations: - required: false - - - type: textarea - attributes: - label: Steps to reproduce - description: Please provide the steps to reproduce the bug. - validations: - required: true 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/config.yml b/.github/ISSUE_TEMPLATE/config.yml deleted file mode 100644 index cf5e6f996..000000000 --- a/.github/ISSUE_TEMPLATE/config.yml +++ /dev/null @@ -1,17 +0,0 @@ -blank_issues_enabled: false -contact_links: - - name: Bug Report - url: https://github.com/deployphp/deployer/discussions/new?category=bugs - about: Submit a bug or an issue - - name: Feature request - url: https://github.com/deployphp/deployer/discussions/new?category=features - about: For ideas or feature requests - - name: Support questions & other - url: https://github.com/deployphp/deployer/discussions/new?category=help-needed - about: If you have a question or need help using the library - - name: General discussion - url: https://github.com/deployphp/deployer/discussions/new?category=general - about: Start a new discussion - - name: Documentation issue - url: https://github.com/livewire/livewire/pulls - about: For documentation issues, please open a pull request 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/warp-logo@2x.png b/.github/warp-logo@2x.png deleted file mode 100644 index 4795a2b97a7ece92c764e94edfcb4dc30273e5d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 80535 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 k$@@B)IBe@Pl;6bAZ|msXLgl`skZAEg!r?*IS* diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml deleted file mode 100644 index 4523acaa8..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@v4 - - - 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@v4 - 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@v4 - - - 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@v4 - 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 PHP_CodeSniffer - run: composer phpcs diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml deleted file mode 100644 index 106a7ab4f..000000000 --- a/.github/workflows/docker.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: docker - -on: - release: - types: [ published ] - workflow_dispatch: - inputs: - version: - description: 'Version' - required: true - -permissions: - id-token: write - attestations: write - -jobs: - build-and-push: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Get version - run: | - echo "RELEASE_VERSION=${GITHUB_REF#refs/*/v}" >> $GITHUB_ENV - if [ -n "$VERSION" ]; then - echo "RELEASE_VERSION=${{ inputs.version }}" >> $GITHUB_ENV - fi - env: - VERSION: ${{ inputs.version }} - - - name: Build phar - run: php -d phar.readonly=0 bin/build -v"$RELEASE_VERSION" - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - - name: Docker meta - id: meta - uses: docker/metadata-action@v5 - with: - images: deployphp/deployer - tags: | - type=raw,value=latest,enable={{is_default_branch}} - type=sha,format=long - type=sha - type=semver,pattern=v{{major}}.{{minor}}.{{patch}} - type=semver,pattern=v{{major}}.{{minor}} - type=semver,pattern=v{{major}} - type=ref,event=tag - - - name: Login to Docker Hub - uses: docker/login-action@v3 - with: - username: deployphp - password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Build and push - uses: docker/build-push-action@v6 - with: - context: . - platforms: linux/amd64,linux/arm64 - push: true - provenance: true - tags: ${{ steps.meta.outputs.tags }} - labels: ${{ steps.meta.outputs.labels }} diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml deleted file mode 100644 index d9d26c350..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@v4 - - - 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@v4 - 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 e761dbbab..000000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,65 +0,0 @@ -name: release - -on: - release: - types: [published] - workflow_dispatch: - inputs: - version: - description: 'Version' - required: true - -permissions: - contents: write - -jobs: - release: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Get version - run: | - echo "RELEASE_VERSION=${GITHUB_REF#refs/*/v}" >> $GITHUB_ENV - if [ -n "$VERSION" ]; then - echo "RELEASE_VERSION=${{ inputs.version }}" >> $GITHUB_ENV - fi - env: - VERSION: ${{ inputs.version }} - - - name: Build phar - run: php -d phar.readonly=0 bin/build -v"$RELEASE_VERSION" - - - name: Upload phar - run: gh release upload v"${RELEASE_VERSION}" deployer.phar - env: - GH_TOKEN: ${{ github.token }} - - - name: Add deployer.phar1 - run: | - set -x - git checkout -b dist - mv deployer.phar dep - chmod +x dep - git add -f dep - - - name: Remove obsolete files & dirs - run: | - set -x - git rm -r .github/ bin/ docs/ tests/ *.lock *.yaml *.xml *.neon - - - name: Update composer.json - 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 - 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/stale.yml b/.github/workflows/stale.yml deleted file mode 100644 index 9428a0d7c..000000000 --- a/.github/workflows/stale.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: stale -on: - schedule: - - cron: "* * * * *" - workflow_dispatch: - -jobs: - close-issues: - runs-on: ubuntu-latest - permissions: - issues: write - steps: - - uses: actions/stale@v9 - with: - days-before-issue-stale: 0 - days-before-issue-close: 0 - ignore-updates: true - close-issue-message: | - This issue has been automatically closed. Please, open a discussion for bug reports and feature requests. - - Read more: https://github.com/deployphp/deployer/discussions/3888 - days-before-pr-stale: -1 - days-before-pr-close: -1 - operations-per-run: 1440 diff --git a/.github/workflows/sync.yml b/.github/workflows/sync.yml deleted file mode 100644 index 1734560b8..000000000 --- a/.github/workflows/sync.yml +++ /dev/null @@ -1,28 +0,0 @@ -name: sync - -on: - push: - branches: [ master ] - -permissions: - contents: write - -jobs: - docs: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - - name: Install dependencies - run: composer install --prefer-dist --no-progress - - - name: Run docgen - run: php bin/docgen - - - name: Add & Commit - uses: EndBug/add-and-commit@v9 - with: - default_author: github_actions - add: 'docs' - message: '[automatic] Update docs with bin/docgen' - diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml deleted file mode 100644 index 57a517a26..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@v4 - - - 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@v4 - 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@v4 - - - 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@v4 - 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 621eb21e6..000000000 --- a/bin/build +++ /dev/null @@ -1,95 +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 Caddyfile -echo "Add file: /Caddyfile\n"; -$phar->addFile(realpath(__DIR__ . '/../recipe/provision/Caddyfile'), '/recipe/provision/Caddyfile'); -// 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..3ec76381744fc9be489bb8417a78f806c42ea547 GIT binary patch literal 793794 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

|^P z9r$E1d@0n#cbD4+;>dfOurejz8DoqcBBAW^@;lnbgZ77Vw7BNB*^Y6ZAqna4*8}}~ ziT1+QV=Temub`9VjS5mQ^8GP#f<(-C5wCzGxqnzmk0vm{>Hs@Q(n-AmzCPj8^5fvX zh*8JVz1Y)q+omzLcUb?`x~Ao=Sn-)I6~Pu&vu+ivjRlHu@KX$5oP$ClB=6jZ#k|5K zg5oBvdKY=C3F2M@Dy?i-+}fJ@I$|XQ$163_jdC7j29>1tM8%(ikM1}z!gHVu>7R!? z9u2oLoM>@C^w+&jgC!2YiON>cyFs=1F^nIoBbH2zMVfiTP zecka)YW(0AzjnFh-T0R)sb5~(%Jh6WPm61Gl8PG`-f!Qzlw`}Yyn1<=#suhsadUzj&5hz zTrB7}v<8`+(%M?7JwdCbbzw+3vbEMq-%*2i&f*_((#8`KL2Ff(7KsL3nYR@JUm=Pq4>X<8WW69c`a?9MCof)5E=ngm3I4OF5vwUm6=KQ@+e!GxNROo8;jbp(o<Bt+Zti-VgNlNe6b5mw;y-CNtlvUhqAum7v&?@{aE8~#|IOP35?MI)$zA ztT7X}t3dG64-MvL&nEN?xS6sEWu&apD=zv6VHInFDF`G56* zie7xmHZK|SH9B|)fYn6@W*3t_XL2FnxdA>79` z0*50pYMw7>(QJ(L7qzpCR{3Vr6Gtk$Y0#4o4G`4sgFXO`sW1eNrBUFAN?EF>^h;st zGDDJBLwoVqZn^0wxw=A9Q6vvCA=5BE3K(;CPJeK7W*B;@XDtV#c0VuU?tI*8{x5uO z1AnQj%2@9{wnbTL&gmY?$%vG?2?(%Z6$1o>t2DTyf$rds&Rx6*B2zgxMMBlR~6q_`y=VRcF$^IcLD@z9aJ2*8 z=-*uwtkNj{);i(g?8Kc6Q{cew9lWt(MLM~rgG65Qv!FR8vnLI&1Thf1$})*7M9=4&BgA-%|%PO^NZdKqUqcI zuuJg*9NxgXH%GW*dc=XQa*)bScO$XI?8N|G8Yel9{{oGXOKZb05QOjg6-y7X1GRl` z3Z=C7LLc-P6loKS=!LX)FvkDAiesl~X-f^hj7Brxu5Ryq?V05UqvrzQ5xsUDh81H~ z1#c0-v{1Z)+5&I6(tM+_gm;a0vh-n&5Y$sb*LX4-TqD+=oh;$eqWNEJ|!3thHcu_66T zVibAy5Rel_n7V*miq^;@9*xA~KF{Ph*UeuzX~cZ@3;uF8jogjRuTE>}`&01RbE=1- zntGEinh?;^ba0hGj#mdjeLOyAr6u2wRcCtX(kRvu#M44hmY42v^@$LoGF~Il!9gVS zY5apCQJ3s1r;y(vVX;WkM%ikrOj6%ZyUz)<>mN?W zetz$Vd0Tf?m$k|wbxI?AV%NAM`c;+{1$@;Mz!~UNs0e}skJkMn81F2cP97Ungu6H% zhL?;mNTIpsQ;WnLHrsr(`X&VGO9#ezC{xPvUkX9dVSR1Tvv1V1hfxh-v?-Ca6dycq z`wmRqAc1PjB0AO{b#T5$5-g2&Qar>&BGb1z)UE}Y!zlxPp2p96hy6W2J0(E^znNd~ za#({%6)ZuBY2il&UGc{2V!_<0rJc158*?_>QO2i0#X30=C>mMLU^jc4EpN_76mQ|# zn}YYsqEucZ`M#C4<3J_ON>LLf4NGhjyN6=@?zNL1cA7u}iSJL< z$=FF@&&VX*_;n6OjiM5wSDLlDfCD+>_qvR*L zhi?2}G*p2gkm_URk;(CQvO*2d&MWzYuNEP!+^Z#jk8!t6D=xCY2|Xv!n|RG3)AfLT zxhO6p`>D+;Fz6mt*VhyEDH@f=<_NC7nXx^F;Au{JF;=@H)LZl){NKQtQ*6?&G4%^& zQcX|mKn%R^uNZnDsYIJQsq`)nBqSsd;s#GoOX8AMvmaVJL{;g3XOpHP0-tur_INz< z=1*vXa@rCHT@n6LX#JjIsZ>o|<=JDTpd&FF&w{OwsK=6QSt`-I%d^w}nn}8lU18g~ zN{n~NmpCY-h@Hzfo6XI`t$M+##^G>k`5&}2$0PpX^AmPgn}}8TnJrcItD`*etP?nI z9{y7*QcIeX>RI}XO(oo^CA9paT)#Rzk@X*x z*i!R%EBj%$N;|w!ayYckxU*09@R0uz5ta}+iKfD z5PjEIOhky*U^{uP>z3ezHV_&}O8d~1u$D%a$ZB`li(M1^@12!oS$3+28rw*_GiTJc7Ol@S(Bf7kV z1(zub$ZE$5rGqjDSD-=IC@(TtB1i>k!Q~3Usc;9W%5cdoP6NXCqO`!*s?02SDKSNB zx!Hn2fn;M_KoH!ab>v%BrGtW#lQ77$ErmeYW`Nl=%Fw1PSrnMQT0*ImLnz2F8O1%GVb|eRO7D%z=7fdpEdux4OG2*3i zi)JW$yQM%og`WsvDK;o!WUSX(83(oq|7$cMxSbA+k27V(PA8)YeJ;3l?Xt~!F4P|^ zNx6H!3LbBN+&$erd`nt{c36%=UR-pH|Ajw3&2a?t`5dnL1v?aLaPPDDy4|~8Pn?=$ zw3oXwwVIYPS1jJI7s$#y$9fsIng#P6{r&>AS#49?I1>KOujqAA8Ba2=K(d=5km7(8 zRBe(iVDD;|p(euCFg`r8OOlz)68`(PWZ9N%581uCr7B>{t?oyyetD$4d!H`SEk>49 zq$HqlLen@|Q@+2om5J(gdiph>sf-df;^(dktd{4P9h0se3*GtOWY$wkEc&f{aKZO>977f(;EQ`FCPOe7T&4uEGk zEg%vGICGc}&x~34_6=yTNMO|I?w50oNg??IiT#L4^~Wge!YddX*(dy~{;5@-C2=T< zwF!umJDBri3176;Vtj_2z(U zn1x;682q`KZ8PQP61f z4c@jN3+Nw}AG+RO+f;<|p9r0jFPg<`2qP{aVx^`Wz&6Spv~5#hfk7w=g@pcCfqXga zbj=p$(_2Hv%x-~ti^IzKK9@XN`ubNX-h)o19wP`XSnf4jSt8Rp#^_3=x=a9*kQS~j zGztus5+kP%lnd(LHIlE4yK){*Dx5k`I3>ZNT9sBx1hlPE?Pl?(dNkdhyp0=vr#>J(I{dyJ@(XT?cR)f`0Ys?qgPQPL_DZi8vyMS6Q6xpnz zbiWL7SAkonBX)19w1-X(_4@{;UQ3bAZm~}5;&b1FQ4fnV92^{|AcFTs`vmlMTPizU z7-*3}E@Gk$XpG1!aB{(ul?pE?o2H)<6+a!-)jZpA9{3wjcOguussT zXPjflEO!UvG!kfT0KbY1i`yCq+(i-=MAUb!5PhzDmOb$C(Z-AzFHZk`etG`+Q>WXA z6suY5Xn`=}5yP;De3`1nEAiV*!W=Q)lHgt?p_&(%_2_wts)(zo(eo2NGjjh>=+%Kb7=A z>6Jv>7a=(*#{Y+YQ{sxO#?!=DbsNinmcN`Tt%8LwEwswe3BE}RV!c!eGpP3(wQw|t z+mCK6J)_$wVB85s0Mi7yl&YF`A?p?Ok=9TjcDJXGbjsn>&BG8 zDWwivAo5fW308R?q4!as2dn46EeX>JR&N@SCXaVbQc!e0Gx|xb%oWUG*W`XtnQ&0n z3^BA7c-Dq4D5lYBfljlDgvf$Lt#&&*>S_Am7`ySDZQY)8N-rGHoxxzxsY7o<2u8L37x4 zkKK=gN=()z7yeU^B-rLqz*??&Wi-}QS5m)s_qbgS{UIz1`!-F9~N_0fv5{Ag9E zDTssRaINI)TfFZC7GBx>&`=8DRbstk8hl) z*4FA8(4eO zRfFF}*ZTGybUUM+aeqASkKW+pK-M@$q6}|qE?7j)w z)$Qy}c9pt4Y_K^W?LMnc?5@b(>wvuZN46plzoDV5McDprvRXTjx17LDi8o6w;_$$_ zFVM`iIwaa;U0JG8uIEXd={D+i(>m#I%Rlh#2YpYYZV4!Rz{B48$J5_Ge>zn>S)U$i zqj-1-F_&f`os%qavylI{E+Y^ zk$(B@96L3ilK_RzFF*hEW;E_qt@7G#k2e;@(kA+cSm&+`U|;o!QtR((1Rc_~=U`iv znXv99)MI68(;Y?YrAV!KZ@3O|IPToycIIjLucMRM#p%zdN0+A?`CSRydxz{Q;fKZS zcfo4&*aW;u2!n0VQ<%!y0l?j?T-faAAcw=3lSU@%G z-s|cN)&C{q=M2F|DqhO!WIn?JN%>VIQO0c0S%Sga?H{7Wqc|eMZ=WOlYcD4SD(k%- zbS_HP)5)2Dddew)ddfKf78O_91@ap|cd`8ik)RRZ+^YNueN#cg>{Ug0 zAaC4;!tH1@o#Kb)2-l$2fe{@l=Qo&BToYLYGNhRJCS`ti0ra9eZwMRLqf&OC{cK%L zv(DAMA%0FE?1}2$!}<=|a#Y6LjF@7crGi=Nm6dpWDuhE#T;~bLIL~~bm3BSP4&<}qe@c3d3#6(R`QnsK0mXPP z;c;?$GWbumByb-HG6%ehE!H}=u8)XH8*LY0qqw~}DNJCvLkzmhQ(PjOrkPHX66;7D z^YJ4lHC|uO*>AVg9njObIA^wRBE{OOw2Oybzbw1G$Vy!}2JiTY3Eth^p;3lu2zVHr z`?=s8Kt7g`ALpna@Ts_Du)X*adYg~CWtwf`W$?qiv$WpB(BlChkz=AtOeQK+tzOYk z!r|?_d1NSYbJYiyBC{zWi)IR|y{0OPO!HopD6aroT2T-O8RORAO*eN&R}lS|EH1~N zUw?n!e;Z`nB*tRB>Kb2B335{OqSMwFINClMEk`E@XI+%zg!5#nE@h(5$p|`1VJ%kM zKrNI|$z!WovUar+>4g>F*I2i5)UhQ@>=hz!b>a?(o~bT|^{c$7(Oj|ZfUYN=I+ys( zC;MnS+DgVh#Ztje!!QiJ_baRlEvbO^&KMkE;=&E>M9~ydcdgc?Rg^4DH}0l z3?)IyDS0pXQbN*ENig;llS@im{7{%Axr0;-Zb?7`*m_{zjp{D4?HXyKpiyNl{*goHx1--WK&9RCw z7CwZ(@zXVOtq@|r_eKj#h<&h*fhxg$g#N(m^|f9b40g{t&_%;tjkA__d#P8~7-%*V zMXYGpMuOCwqm;)QUNW>2j5m%0xrDtfCwg)@?=xqwa5yf7QeAyrXO80^&S8H6!|>~enqwN_ng+e#39_pg{3Q^}CneU7hNXlgEjmX@YBP?`{} zX5G><5XCa4=JWu78tJz>s z==$Hg#jlX(CXu2(&8)@EHjAX#-d)Komx2p}C!uA^@4gf!FHHI8S{SY(%z%NXQ}~o< z12TeDqBLw`W?++~DJ(hYm?^%(li6@CK=G6_&Gm%57A%YpZ=6HSp3r5RrHNRBkzitp zS2n6Pk^&_HcDt3O@sKkU@AuO(1zOptK@d<4@T9r%J$L&+F}!p5=}{c^$i4gVth63< z+0k{AS(K#wFHmz~|0g#a#FCqE@zlqxva-}xT!+4Qr8qMLz~RymNp;}mpfO>yYY&|a z(`(;z056>t#)}FOQvZNIhTQ=08M(W!NCDvbPkB5(o5C8oO z@4Q_RnG>jB(^G5lK;Yat>clTXV^W)AO3`kRkJgvHrM@d+*XTH*s*9P zz(9%VO+$|=P|$2m#uxcXqPB*Zx?ZI>Q|C9O4k*JNo!o@y5^eZBx*1Jd?N^Eki8} z74n*vg`+Zr6LljPw!6bgXPd1mlasJo(XUVxBi)p{+HP+$30-Itm*HtZ?PY|`3=-d~ zO`_Z2tCk4L+H~^>+C&cN8w`+7gTZl{-ENtPX}QPu`_oSEtzJWr&JlOt4L9R-Zg$P+ zz-eA7pEIRVe{0#T4WW@y^D{$YR3hM7c=i0++#Q|#{4kPNb0GK6?iUO2xKF5;+5?E5 z)DYIXGAc{n!zVgMW?hjCeR>);r@|c!yEYds4Oddp+Fyh|S6t(7y3<;{ZsKj=6U_ak zd~vc7ma9YGs&Wl?KclI`a`r6(GMgdq_7E+E{ruPp;BT2H98|V+#c4}Z<2ie2c~bw> zpsF_OwVj;;`z{NdGgrxD2z`A4zklNbAg@jV{?_WS$-4_)FONN*{s5g<+iu%95PkPo zOua!R7nZ%aki?>fGiS~W z&(MGVmB)F9k&Mcm1Qaf4p7J#n?>e1AHjiH?-vXMegtM>boJGl^5JW%K%kPZ&Y@J1% ztbH4VN}8@PJ$R71!4G4aR^QL0h|*C zj}-Wl3Xy~%Ww1(A4Cf!Gz>PQXJ%}{oCZmh(6Emi(i9d{K~M;R$Y7Bu zct1J2sKOD6;UZF`>JR|B9CjpCu47+0eQ@+%r-x}+1g@jV0@qoQrhRB7IvRaG`*=5* z-%S3!o8C+=aO*8uG|sh;%7viIMB=9x`nf61k2|ZOzQonvdnudDhC{fGX}JQ52;^@B zq~xcMpD<_O0zXv92bLyli?O4E1*Sl54>ldZpA-8I#^5*@!z`7Ak9C1+;D|uKOd@b! z(JWVMx3ue3u6Es(Z|$zF^^6%@+oquYb(BOiluK6 zIb+l)hVfvx7_kpx!WKw(9ifyOOmmL7=4FnWIStd}a5T$tlayuF4xw2&DI{u{EFN{; z5QZ+K4vrPnxwOi=GaKLw7f%wq28mc{p6>l)MfD%t-;S;Kb~v|H_rWcvQBOzEK_=fw zmZx;2KVv8A4NH<1)NGR?@S*I=6=A9YXpl!d4Y3X?CJIt?k7+9KhkDoGIe$ZvC;!i< z*;&E9;);$SViZ+gQH z>yXO8b?g>t_ULLWBA;C6Py~(-Dt&;ek(96@K2{=i(&~iLqFJepYLQyBMq;m;dG`4W zcGm@J#JCZxy`i@_DAfC`KO!f%TKosj8DP&-RbXIwS>u7ERG%8p4szIaw9P# zHL3>qxslw%^N05korPYsGh7tR?cReImiaxv_wSHBX$kgnyVfles!SuhJTw(Ds>{lAQ^xiwZW3NRI~jX0#tfV3*vhW~Q@-6l8{hRM z5WH`?@E&;QhazHdS630Bs6a1+V>-q;BzxEW0o(0vOUvFGbdOq<{GwEPx`oOcN2}6D z={^!o4?L%)9Wj9lNeNbtn~>spX5}=G)*xjx6R$sOB1{|RGRF)t)m$$ z8pPasIX&o!VHHp_q;He|0bP+>Yuqpph2Q-v22+q0*1PY`r7Ycr7E%aFUP>C4i9BA3 z$dZucBxc$F-jSW87lFaj=zMc@=KM?0p>o($3aALS6s#X9o>kR)4PPT+rUU`A(%?I= zUZDl0(H;00T?=7Int!vV9=rqXQ(hJ6hHDstHKpi54Kb3-dnV}>T(bxiI(Q^#y(8$+ zjgSqyn8bIQAY*!BdJH~MA@J29QOiy22%V46(lc2fdd9A*mXean34W_x_d-t+lqRC{Ptf85U^_%!K zvuCROxId$oAA4~;{vG(~B>vRyMTq_oDW&}*MgbR>(4kGV1mQyoB28!aqG=*o%;uTI z!^0$he;QBd2gWBJx=Ea^CFBwDJ6aR-xSFnTSh6OieeuF`i|hd|;eTK2?f09zpZlBL z)oydUE3Z89_ZwwUL2iRE5WMq>QB=i7N=na3+Z@_2^i);IGD|@LV|n2aA^u()FiP7! zSYCT(c4nV1wz7#)EwNRa@J_brZsg8Ml4bZ{0uM!p+Mt+!PP!pw28&+t6=mn(TIjBA zl_?$*re2B_kq=CHAd3S^)i9-Avmn+|ysa8tQ^1jLm{|Dlpee=gL4iFO-PfIgOfe?# z^$=Nj!FQM$`@E^S4^lJgN@OD<-1GZkGhz<6BL4YKae z?%NDdwbOZ6Y1@aX_F*+3Fo^>e#*S>KEJFNyuSp!609vg!(kL0nKG*m7oD;^M%1zl5 zWJh&LG74X5$>o8nrvO+$r@vmW(*EDs%Rd<{4U@t@;godPgCV?1&Q~PcLPkW+a$+d# z8RxK~Kq@15#ITHTet>KvH5ITr0GD#h#M-VV24rQ*3U380xn4phcRNG^`!sHoqK za$2T}a!NGS3oh5o5dv6@KMGLSn_wDtL~SV|X&4T_eEzz4efjg{^N*L|@Bx@eKEA7+Yva)y}e^RAbPH$ED$;hLfyId~q4fp70y_fCtqFpih_}lNn0<4C& zw5O>_;_KP*0~D3WEa8w0;MfDa`dOtE((+o90TWo^&7NYSDuFPR5cS6&Z+bd=$M@e;062A@OVm(nbpLVu1PMh(w#(K_T z?^=&}69%5@`pD~g_F4&h@Lt~~QJN-^qhJM_RYH2A8H@w+J1G)Sg#S`VGs3p45+3g=mhf+_ohz}oz|i4Fg~ zL=F2&pRSY1ZL;+{kd;&hKizRBlIqmC4(^LqEsAxlt376-kQcq42U54oo@C`|B<%(1z$2EH2$H>G-O41N;u1)cm7Q}wygUgy2rr|~| zgdeISx-wABjXNpF40i9fc#pijm5HvhjA}h??nTANsT*@q{tLxeS#R4$5PtWsm=Hlp zHKN=W2ntwrf*?m*AU%*YXaUQ$*5pduirQs&m!<_-|GhKIo0N030jh_ZC3miGzBxAE zJy$$*G>@#(JGkEAd&Bh& z*Rw`KNLWURD&!KFjA6;5bO~D(a|3Dx`+cqFiryU#PVkwve4AMVEVpXQtcX~e?#Ot| zEgFNw+6;0uMd~xHB5n+%!r0l#iQzWz>A)2o@TaiKWn_ht5KLfy0{D9vp(`S07M(Z; zev4toJn$CMn}W_|;ALp~Rzak;+o>~i2W!nU2w#GK!7dSWp@|yaxLVo--z9SR?6c48l~wED>mToGcBZr#lxRp9q4E-#oyj!GA~`E2;PzD zb6{Gt-IYni$_5?R@uWK{RuB+eyPy%8)REH9CR!CBc>#+zxwK--U*1MMBS?bg5dFO8 zO!{_=F)?C>;J~bZ{MVE-!!hGF&tTa=zC_&QN~|Gc8YL~V!D|Go@D8Qx8b!5igPoro zCZBat$Vr6|u1Kkw}9XGEWB@5XUPzOpIiy;cY=71W~SyxZ!1S1mT;>P`WuX z5dSUVWjIcBh>iQw`2N+mj~_edvB^h){}Yz5>0?V@Ei;?IkKK$ptG^yEBN9P&{-uNr ze84m7ab_AmyU@-DN1SW*i57<8u{Qb%JOw{|Awi{^MpqmEF@;3K(G{*Ny5-qc5PIeTaHw>Nu%3Xohef)N9f@c{djPGUghp1 zOVfYW)eRCm2sT1hlnr%QVX*8WznuB~LW|!3Sm}K!t3^>D(@J&?~2jy2H%~g>;8UF`QD(< zBZQ3UrrJi1Ge&P9LMJk1RWU!vfsBI8s}{%JMFm$~VorS#`}?pwj_b(Ow@ItEEu< zB2jEBx&%FZBB47C!huu5^39VkzMdlma_&vAWjtc{wTy}~zaa^Jc^m!#CgYJJ z`pv={GwMC|I>3HTi!E8ILHv?hRp28wE615phVjcQ{6e14H1onOK^fJ3wG zpKg>V%%BR*Zao1cDoKBbr-0Cq)NHl6BlJ=l7aZJJ$Sh@(7vu4S5|LXD&om5S4 z)G!de@2?ngSZ5`Y2#zg+10cbP3b;|Ub(6`)B5PY?XVZ4ce`lPJ{iJGDpW>PEo0<1! z^6rDJ>`cowIxBO8PiSj%k90YkIrOo}&Dt7=w3NA5MvK=Vly+X$wOE|R7#m_-2uhL- z(k)vdNi1QBloZN&zG=e-vm$hExGC+C2Kd2H;D$c}*jhbcA{%dNBMYQHWtPEr^bKhT zAIHRStF)whu+mqcG?b>%MGD`1h14pp!L!pF7%PWbdUQS@O{D`@>p}q>b(0oov&oa% zO43aVKMgdD3=OF#;3rSj_V(GhwpNh`gIqf>QT>9p{ZxL*e?IdYV9uLx^+9X;LD zb(BV9YHD;G<;5uzFrP!-Pz{Ou0hRaGU1Zq`{SL;^DjSE2^Ztc{P7k5QdUHndu}aU7 zV8VN;fL&M~9?U!zBX^ExR~Lp{!1mJpiN%0(G1(s*!B@xfH~K-@W9=su1@8^-4DUi? z_X>@i$sU;}pM6me62XWJt>Rt2`f>$q1-$d9!qc0kbhtFMWW@-zKhSXC zYRcXdcJg04wvGQWHokp7e-ly$^8NvRQ9VxsF$~@BS9of!Rog?1e2AqB14}oAP?RPv z7r0A;lN41||2xjLMce?{{OtGa_j30T+E6*wV+=|otT1$bk91pAgrC_GO79q#a`m{D z5|$tu?fc%lB@+dYDPw9usBOR~=I|o+){56DcbW#Ct%cYsLIcK9tRkjboB&yXfk4?M z+vAAzMK-BThrehS=nta7sB5v#E*61n=+> zS!B^|cDj(Dp2DF5e!Qd>+Q8vJ*rAFX2uYoZ&?OmEYL7>lOt`(VuHj6$m@AArJ%osBJ{CC_i2kUdWWF${+H{0eVAPE~IQBnG;4=)zi6QJPr2KrRVR4%B~-(*uc< znDFMuuU~&WKIJj1XeKJzSb`npkgmiJN-@39o=K-DT@zohXI@o`vlf24yr%4xHzr3e^r5pc}Xun4E*Rruq~IYwSou zS1_bY`P2H7eKqGmzs!Ho|Lpr-K@SJxBUDq~BpH;WVmn+ORp6RthRo@eY(?p5vJTy? z+Quo6_|ES$QQNl=oLY;A3A9ukTG8hu0G(9CbI z(^a|`duuLI&*$ufr&032vxB|8jQ^_$Gwvoaym#G`(~qvp#>|=c$$Fi{V_4`Mbk7=( zVPc$T;e6tI{)*>G5~($Ng{XG=JiGUKnukgJ`8bIe;j+j){8hd_=$igE1B@3%biOL` zAi3LN#mAy^(jSS)=`TPJ@D@2c{_y_I>09^o-Pwna7w-Gn>|}Q0&i>={!ae?QGGmAA z*Ms`Zvp>$7Fy9@WzQ35gKYD*WbKk+3dvttp`p=pB;nT(0 zrwjMp`CFLnti3SKdF&zc*Ga%xD46Hx;VpMGpxOI>x(dNJr+?1ev!jbYaH*H36Q27M z9^Wdl$oUuV&fFc=xcNHO;`D-`?_}H$Q!bn#y9BhBJkFC}ovQ&1PbRD;S$gyP0}J@V zE25kUo)_s<S6)73B3!4@151mX zT?3%LBjLCTjvFPu7ZF+xL4jS}lbJI(xJGDU%pQ`01xgE;@Ut+@$9ua#ayn`IPXOtA zG4mpkAa#H$qRZisu{>c}0YgiWoXE!}AHv*;B83Zr@!*$QHDcGqWW`ulz9wG3ldmRG zvGx!*{d?~DH#`nd1VrlT!bHQ%IAP|&qvRoHQ3&Es7EHjQjhAAGb7R6H0)`g=S0Juo z%mZZH=DCb%1p~8X?FDm?yeRE!JhiC#S zLL`1jvtf(Odl<6270+l9yWtNk<7vhP;36to85%cO9pHX?BBG1}pcfT&8c&Hh36%Ba zOE_2}1r=X}zJxnKc(Z#CSvSRJ(wS`n0%?FS|2+hzD(*z@?oBiBavnV9uUjDU>(M* zd<_;VS#l%{Cw3T_$!6Kc>AA%MI9!^jozPeLAFZ3NqgQ5mu}d@J)^ZTE(ogse%^ zuq)#%5goG+sAAxKz|?_7w3Bj}X9cO*1(^q)=U_LPDAF{^lnD}Od=yV7U|0)3FTh{{ zEsu|NdBRb)NZBCgvSr%!LGJdlN2Ujgi}f7j1Qs6n;TIX|0Q-{6wNo0C0WQ6fU@u8P zY2f7?SOK(6?LHP^AirOdTirHePtMRopy&e7MYSkmUz*$jd)&jLn?Yodfx`&byblYX z6rG9>EP%k%&yx%dey3M?uSgr9NJF9!&Ll&n$fZjIS6IwT zsC9Y3YouUI6euEBaE=0Z5k~4blDVk_3rn7!Ce1)=XrFfLWs|WH&y7QzilR05g1H;E zLKtXK62UWfm4JoauvwHWHx2W9)Z$GukkOlGKwPoY3>VH1a(vTF2n3~`Yy-9(aXddo zDmG1l=(cM(E#?!@FTVCRPFeFH^ftnvBQkL*J8~*X-(_L$%_F{D*4v?fGlKBUGdvcX zn3Tes7W#g~z06I$e6<1j68z-F&MfMlinu66!!$A%9*RIFR=-rHKChJOL%(9CW8saG2l6vFQ#VE+kN%pLy=>i zbcn{j4+!BlV38nRkI1wq+z{r2*gEB5*|bABEF;wa0m-2(V9SJ{P_^8j^lBdK7`!NyMI%BfsQ z#+??^*F)2xkybN;Ng{K9ButS94 zxTMa(AUd(Xc$Q#s4r4gbH$+K6zVO72*i$u~yCl1Tur$NaE0Wtmil2uI&o{G~p^n=) zT3inVlvnZXyQ8nafh{OgZ->(oYA8KzMNtd=fIY*Tu)qCHf!CoS zybFqTI`WDet_@k=yoL8u=pZ12nki8AJs#)Fuhx*Ls z#H-d)2bl7|xVz^5CKM!O%=tS3n=i^ASM{?a4T`{G9?wPl*huY~s$tvV*_WyDMWT)& zR;C?!JkW+NHx(ZSHH#bHCO5oe>uFiy&_;aw5?vyx%svNW+OY9{QpCB$vQg0i(lXw(~$$FI|+kzVMlhgM_u~>xnIHy`sq712-Q~sDTrz}Js z?3qSb(gQHip!DhnMQxzb+gCpM&$7a+R@skMb9Ev3NgF`jBG!-^C`>_@*xw;vr~9qn zq;y}EMio?|Zewj58C;PY-g;5NMPomMU52H#;RhIM|JEKM9Lm4 zsGDk75$T{^9^lB!-?*niEjHiGI!3QtmMG&f)i?N-9?XTeP0bb>xTs4%MKyk+CRmZJ_u|`oz zPHOZDJ6;fry*Wq4>5gDGQ(HOT8D-3(m0P#jX3Ut%JiD`$lh7RpQs30BIrlw$4>{aj zQbYmz9Z0--D&Xp|c_H)aR<5tT6sCH(Ld9jhDzyb`bjd~m+wXIKmB7~Z&~3o34rF&h zUHx}2i?TKg4%i~>HNu%td<#nhx$OTnPZbX=Og#q-ZRHrMwp_m6N7#a&!q;z?VH>G$fn^-l@ zV4{L?Dlf<^wIidJZDmrK>DtL0d}Fy=RnMtQ013!ES^w%vXiKIXr74pzup(4vhXN{Y z!ZhVoa%}SBla!)SQB$04^F|4L8q7B{rc*}L9jRzHbcoAVm9h4qF5lOlK%6=DSv(6{Tybg|b~O?*9F;N)*BZ5jX?mPPISYrTC% zUF#X8BIRJK%Qbb&s8O63VN_mR?q-JSa~sF6K4|J+_ZFoOkvD=30trJaZ4DZlq?JYG z`s+r>VeY9@`iG>*SehkYAXaL!vf4)h!dp!UF7-C*E##U(l8MIK+J$dzq!dscb}@%c zY^AaE7NGE@OvS@G3ga6yYBCkBybXSMW2j9rc#`x1iNdK$XU)DIY@Ov^pl9e_ zCcL%4(oLg-hmMkq@Lhz_Xh1us+ao}Oa(Z+hy~ctbligjK0@)`83|q=~DkGx^j#_?I z7)Q+QjYjhfbaB-i;&bjTdsxeX$Bf^Gm;v-8mKAw`Aa->bN>sKt;VC0DOctU9#=5_^ z(zhVtvcZYpgNo42*&VhV0(L$mi8&7%B1PbxF7>AzlAu4aG!s4a9STGrA5EnN%YN1J zt>uFC4NPI9w6&;mNwh@XK`vV-VnE*%U@3XoK7r=l754LDLl+XD)B{x;zgd8Q4g31Q z!TBG~sqb5?C`ezyNhF;DT;WJAVZjhj2XL&`%%{F}2=pzes2V+T?8fO}o!WbbV(2>v zy}>6*^xZ1N?g}~H;rZ)R&6yD9R1pTLGOK1>AVImO(B?w+YtQtP(QIGh69qb zwo$^vr#>LideSSmsq11DHUp!nDW+x~H;_8=|EjS<=3Z=cyy-rJjT5Id6-8N{J$tth2e(~Pf^ zTRt*+=-LOz#LVo5tD|rx<1kXysA9DY4ja3cF7WOPQXRTJAszZF0VB$UV$cHQGBd! zHe}C}ENUvJR&FpbrkMKBHOD-ojX4!-?I^cxe4S<^pgCmf+G!xEG=hOab+cVtfj2tN zvjvBrCQ+awKW33pX|ICYQ_i$zJw)0a;lVqJ>j|Vi1I=8(!o#JKu4C%l0}L z4WEMqwmm-s2i+x2EKssO3Q*GJRK*4=*dcJWZ~48O$tyjnRc)xijpPEW7o)HA8r)fK zVxDfgFc&J4I@U?-8aL(YD-Ft(Sr}kjGT!Y1YAQPsiIf0ZW%MXg@i1FbpCV#fnQ^g_ zFc9WPzTj}y;82|kQSd2S<#{TmlL?&5RWTm}h)LjqefOdz$Ij{$7z(*gGSc6FPC{HL zCNKZ(B?7!isAx{v)&eq+B7_gaoCW$|6vTplcm5Nd07}oV;Slh#Fc`i5l;cP)( z*Rih!Op}S!FT)svx~sEMCQ7KYwqx`xT|i7sZdeay2Sno&o^3!CS#MRKqb!qZWs)5) zC~X<_Ntt6NQf* z=8)3Vz6HR*TchqO9;y0$qIm||<^>PL#hBllm49jntTKI+R5N@+?x--Wbq!{V5<2S| zB(G<=+eQK7JETn@*04b3bs7`s9@HJW_4V;W7kBbhk(;mZM&@~>!3yvN2PmV zyhtns8tTWeypIz9#`0S0x2-0l>+P1IvijWuXsIowFLJK_BOJOD zB5kVOyedKh3l|q*OqcW~6Rj;E)o}UWe94x8X_CsovW>EGo|X{^kL)~GA%J7jc;x2= z)|xdPqJA%Ge)iL%uhIBWmz1U0_l!1@IWWqnm3e6FBGU19yN9M-{W0?aW@^S7W$ik zerEP@!rfkA4OB*VX5+bQ{>{g3!T*e$sl$@LedF=|!?NcwG>S_Sq@eQq4ZExE) z5dQ98K^O%nueOwzwat>HL6@XhfHXDQZu?++0xg|oE)uDdlwY#+zxSvY$Bm^VXl%fc z#pig>-SN@s{QF5dOl;%>6*?j( zCxjlj`?S*;?2J~y92Sd5`GNwIDM6UNb}0F0$_(lM*(YTch>?T~ZCD(mr*2IFx@16K zxvy>9Z`@z)<-px3F1y8LkB&M=t#9~kg`fk6UK9>>PK4)h%_7hgagzs;DmmlU^`Xt7 z_84ZX;z#$7ty5&h#Y8&ol8K8b=c@L#OQRPRIXW7ws?$bym1S=nB+N|P-Fh^Lc_Wmm zxCskk)&xz`qzQ_`CWI#}ZN!9Wj3XIqqp&!Q_)>pu+?+-afC^ZMWrrqQ%jSsDEjO^= z1TT_C)*D_q9hKV7ghN?sdMJ}h$E3F;l(>W^<@1>9x>7>N>KVk0lH<4d>+JlGi+5N4 z`%fRQzMNm3<*QUkfmH>?P?j@%*sQ#BI?p4gQcQT1DX@a;onBt7;%MtElte>FdYn-0 zfl^Z09w3#m0zD?~FExwj{=3Udj}i||;9;^}m92;3vkNX4yb^RBPsla4nWdk*)&Okx%d2S3VtI4YPc{2n~o9y<%M zl>Usx84L%-Qyj}^oqx^Z&cNbBZ^qQnv*wnyXV2YI;==YKE2@JoYbtYRv1VX#`9N#f z44}6AVVBi*lO`b!s)51&aQCJTril#6oBe%aOW?(PoD)@B=vr2#?Mu^a`mLD0dv7t$ zF;2@)b)WYmXZLO({XCU(O>n;*zX;~MHjUc5!xE|;M)PP4<2YDM%3$!I?j2ka&sr#( z!|-W2)7K5c)x6&vfE_nUPk$y;V^V$Sc{uT`{v}8idFAv2irm^vf2d_LBP-i<$`tW3 zZPN%??2S3T*49F^Sx6B;AJml{pK$3rja5x=+b|5h=T~q+0Xab3tcP8)B|Wqluv^h# z=%EV?Rib09vgAo}f}qWRpQQRLZi>|>$>e){q)GbQRaI1z2}dTW!NfWvn9JP0Lc6@2 zeVt4cEzwq#A>3dk^&X9XY0)Kw>yipZ&LOWAb3!XfX7D@#{}^<&Q9$ieLf|I)Er58s z!>mPD^`jIltEemfPjMTaAvk-Ub7;^VBS*^;a%=Qf*ub*GM=Kl#yNe7}Yg)9XlQCgp6#YCGB&OdNb7TuOq=5Qvsu#?^|0mp2b(WkO)g(d1EmNmu!PBV_G>> z&L&xQ^W!ed-~!0}y7ecsmP6!_IJ7=JuOx@g1J>TBDS9Uaed*wg^l=HSddP*sU8_6F z<08+!vH&IVoc{U(Y09+JW=Z9a?(HDp5sxqM15rA2h0!|#%N00N<9fgzgkxE`eG=mw ziERZFQ;ui{1P4HAafA{o*9rNqYsClBSV7eW?GPQFo$+ldeO-R5sju&=j$@ZIs_f1; z)-sIAb)f}AKP>l!V8wvnX|QyQR}j{%1uABq z2}1I~$DGZG)c9iPtYpgZ;+lWUJZB6w*j56ngC7Arxd!fHvwJ4NYJ_2d+XBgNTF}3U zcVI~_H8uRVdr+(Q7%c8Ex3?AJckNbPZ`v>vedkwPp&~=oR7~2#R-j#I!WxMNmZa;d zQdK5#+o)h?vBQKa{`+hPN=DOlXzQLD9*E=naqhk6IB6dxcS(ifDd7nY30NeVusKOv zl?o@Kj-v6km?s47!A(X(5i<()20Tr$&ap=IM-cc8#j7q=tdOGLd zC%-(vX^f+B@lnFKxJ}90@T#T%QX;aH0_OL}cPtJ`9l`k>7GQNjFo-D^crrNx3G)f4 zJ!m#sl|`dakt(;eqIDXXK*m;v2Y@#HGfvV!@>hlj3Kfc$eSH!u!JPkKY4k$8lQ@b9 z_2iToSRip?DJjR@GWg#@KWVLy)-YlJNr28jldRrtyBOge7 z1NBFXPG>pomG2sRZoSBT=#1TyA_4^at30{_ZDt%!;%O}E@5%}~o%>(-SY-+V7r!nsw#}BASssdX9Qiz zsfu_?SSIxT$7b_t*&LOzs>6d}C=PT+)s!(Ys)9jaR6X`=GqB;zw>@xr;0^+?zd3&3 z1A2H^@@ug`pHOpO{}4Eq?FLTIu`TFc0IG2k%Kp|+YgDZ&==oaXxZNaHvC3>8JJzuw>RdcQL4jhv4HRnE6S1-?e!!QuM=PUN+P*u&LH$dXj3kL)$NEJdTa_p^QNW8{& zsH&>}&c-e36U2#}vNJogGrqoYwact*F*vCZCg>VkqQA;Aj~|`!SdwMDEGM_qvV;+c zLQ&h29kEdGn$$WM9+hzz#1LLYTsj(y*9+!~!61VHOh|Pt+BhYOP{0hU^fxCDu|{}$ zez+flu_4N)kkk&IscTC+2qFE^Um`?YY5q#%j;&-fKu8Tp7 z`6z$vg;Vv14nNW+qJ#z>uZg{ufh}?Q!B9c%>gBhAcz4GbV|AYUQXe6$1k?ZOaOje> zs*d?LU5zmg!Y~X)_nab|i&Vi5NGx4gSrLjtVyT5THg=2D+v5TYc=LPy{`&*B>`EL^ zIVSWCa!)hL&N;!y)CmSE#zSb1rx5(w!zR%%P+40L>@4P7fne$w6>5J5(@cs2mzC*^ znkx9bRX@`to`r6hMld}_y;qRmb_qLg^WC>B$WajLANs_SN%W8MbnQEBjV`S(ZI3Ze z12GJR_xy@%KBTJbfW*>;m9;{Vo47rf=m~*@H^2A2XZhu|j@3z@tk`+&S>WGnV!fkW@MNhU|DxRSkm+B-C2Dbi`wz`uWmaER&J;VC z-LZWRkiOj|>b%XmKUJk_r(yF~oe!DYXzJ2`1D#h*Z{s!)z3W%Z1_5LTk=4Csi(X>e96lFw#$A3x7#Fo8JD>gBRl6WSS*n#l7}Y%r4=ZF~t2ac0EA zWlI}Bj%nGV8^u*!%oeip3bA#y5e23swCTl!e&Sxymcn2@%cb$QBA`#VA--&1S2$0F zC3RAX9*0{yn1^_R>M8JHWuz1H3J1osS}kOeYE%D%nd>l4LH3eN8?<#}GVDD`FD@du zfX|Hr0X`AH*%B(Bkerw98?9^OFo#+@Su1{rdPN_?sEg`y=h+k<9>>wM zukIG8-!vMtQ8=<~4DAm7Q1qjB;LsA;9w4#s{A{p7VR5E~D>s{z83~W^INZe_R~o9e z!WI1e^S2DW=~4U_r^0VxPJ^_7OYPS0;8rMAJ0Qwti1~!Or?a$)`o}bdpVpjT(Nqpr z2)QT4N+`!w>dQzhpri%#2m+#bq?-8}j`k=PWMCLf&zQ*+;vw-}Nn8TKX9mp9sU08sfyFojh@Rp|nRs?!2)uR4>>&bQM-_G_j>%Tul8}4%E z<0n}d;jMa#MLF7R6jSRH^{NWE_qc;@+2KpjRZ~cH37i?4IS#1|%iaRlkl8wFr{`6> zf+-my?_1Kwp>WKBw}^jg64PUg1oJgFezj(7rqt^ojXuO6*|;5O9O|#Akj3y7*L%@+ z3*2oC#>g`BaPaZY2W!O>ElWpC@?HIfDgDKBdgu@h*hZ&hBa!*er9Ej7_Ym7+)=)Lq z?BxGL?kpr^VTixC7Nq9)_TYf_90_xC!?_>_^qxlB%vmW^fp#+VW2>8NPbFW-ohL_E z17B`MR^ncLeyJK;VoS)(uhMWUq@|XmA-T2Cq|;Bl{t3{5=JCYUOHB-+ zAyM(3(_wbXNvC`q{6OtAGLb=7+*ohJ-l@NW9@ssOubioAa0-PL?5zSC?(x>NRd@~xCE!Fg@^d-D z!b}R1XW7;DILjb`DAn6)A;mT!%ZT(?QN)qLoY$zM0ZgJ?3d3YH?bBhJ!tDy7ZssM= zp=M?UT!XP9`)nl45i}ZL8m?sCR4B|?N_rQC)huwq1=6E%MzdU2wbZDR_gab>$c6W% z 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

H!X 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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 726fbfd49..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. Replace `default_stage` with `default_selector`, and adjust the value accordingly (for example: "prod" to "stage=prod"). -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 971f3e372..000000000 --- a/docs/avoid-php-fpm-reloading.md +++ /dev/null @@ -1,62 +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 -} -``` - -## Fix for Apache - -Enable `revalidate_path` in `php.ini`: - -```ini -opcache.revalidate_path=1 -``` diff --git a/docs/basics.md b/docs/basics.md deleted file mode 100644 index f68cd75af..000000000 --- a/docs/basics.md +++ /dev/null @@ -1,245 +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**. - -Hosts can also be [selected via labels](hosts.md#labels), also a default host selection can be configured. - -``` -$ 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 -$ -``` - -If no host is provided and no default_selector is set, Deployer will show an interactive prompt for selecting hosts. -If your recipe contains only one host, Deployer will automatically choose it. -To select all hosts specify `all`. - -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 dbca8ab3e..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 configuration file. The file must be named .cachetool.yml or .cachetool.yaml. CacheTool will look for this file on the current directory and in any parent directory until it finds one. If the paths above fail it will try to load /etc/cachetool.yml or /etc/cachetool.yaml configuration file. - - ```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#L88) - -Clears OPcode cache. - -Clear opcache cache - - -### cachetool:clear:apcu -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L99) - -Clears APCu system cache. - -Clear APCu cache - - -### cachetool:clear:stat -[Source](https://github.com/deployphp/deployer/blob/master/contrib/cachetool.php#L110) - -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 45017d838..000000000 --- a/docs/contrib/crontab.md +++ /dev/null @@ -1,55 +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'); -``` - - -### crontab:use_sudo -[Source](https://github.com/deployphp/deployer/blob/master/contrib/crontab.php#L38) - -Use sudo to run crontab. When running crontab with sudo, you can use the `-u` parameter to change a crontab for a different user. - -```php title="Default value" -false -``` - - - -## Tasks - -### crontab:sync -[Source](https://github.com/deployphp/deployer/blob/master/contrib/crontab.php#L41) - -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 d6047d748..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 435437220..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 a DNS record for your domain that points to the IP address of your server. -This will allow you to ssh into the server using your 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 921a64906..000000000 --- a/docs/hosts.md +++ /dev/null @@ -1,247 +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 labels - -Hosts can receive labels to identify a subselection of all available hosts. This is a flexible approach to manage and deploy multiple hosts. -The label names and values can be chosen freely. For example, a stage name can be applied: - -```php -host('example.org') - ->setLabels(['stage' => 'prod']) -; - -host('staging.example.org') - ->setLabels(['stage' => 'staging']) -; - -``` -The example above can be simplified without labels, by giving the host prod and staging as name, and using setHostname(...). - -But for for multi server setups, labels become much more powerful: - -```php -host('admin.example.org') - ->setLabels(['stage' => 'prod', 'role' => 'web']) -; - -host('web[1:5].example.org') - ->setLabels(['stage' => 'prod', 'role' => 'web']) -; - -host('db[1:2].example.org') - ->setLabels(['stage' => 'prod', 'role' => 'db']) -; - -host('test.example.org') - ->setLabels(['stage' => 'test', 'role' => 'web']) -; - -host('special.example.org') - ->setLabels(['role' => 'special']) -; -``` - -When calling `dep deploy`, you can filter the hosts to deploy by passing a select string: - -``` -$ dep deploy stage=prod&role=web,role=special -``` - -To check for multiple labels that have to be set on the same host, you can use the `&` operator. -To add another selection, you can use `,` as a separator. - -Also you can configure a default selection string, that is used when running 'dep deploy' without arguments. - -```php -set('default_selector', "stage=prod&role=web,role=special"); -``` - - -## 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 e6674e870..000000000 --- a/docs/recipe/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# All Recipes - -* [Cakephp Recipe](/docs/recipe/cakephp.md) -* [Codeigniter 4 Recipe](/docs/recipe/codeigniter4.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) -* [Spiral Recipe](/docs/recipe/spiral.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 6ea0ddb18..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/shopware.md#deployupdate_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 d0cdb4b92..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/shopware.md#deployupdate_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/codeigniter4.md b/docs/recipe/codeigniter4.md deleted file mode 100644 index dfa3bfc81..000000000 --- a/docs/recipe/codeigniter4.md +++ /dev/null @@ -1,322 +0,0 @@ - - - - -# How to Deploy a Codeigniter 4 Project - -```php -require 'recipe/codeigniter4.php'; -``` - -[Source](/recipe/codeigniter4.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Codeigniter 4 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 4** 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/shopware.md#deployupdate_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 -* [spark:optimize](/docs/recipe/codeigniter4.md#sparkoptimize) – Optimize for production. -* [spark:migrate](/docs/recipe/codeigniter4.md#sparkmigrate) – Locates and runs all new migrations against the database. -* [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 codeigniter4 recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### public_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L10) - -Overrides [public_path](/docs/recipe/provision/website.md#public_path) from `recipe/provision/website.php`. - -Default Configurations - -```php title="Default value" -'public' -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L12) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - - - -```php title="Default value" -['writable'] -``` - - -### shared_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L14) - -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/codeigniter4.php#L16) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - - - -```php title="Default value" -[ - 'writable/cache', - 'writable/debugbar', - 'writable/logs', - 'writable/session', - 'writable/uploads' -] -``` - - -### log_files -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L24) - - - -```php title="Default value" -'writable/logs/*.log' -``` - - -### codeigniter4_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L26) - - - -```php title="Default value" -$result = run('{{bin/php}} {{release_or_current_path}}/spark'); -preg_match_all('/(\d+\.?)+/', $result, $matches); -return $matches[0][0] ?? 5.5; -``` - - - -## Tasks - -### spark:cache:info -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L94) - -Shows file cache information in the current system. - - - - -### spark:config:check -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L97) - -Check your Config values. - - - - -### spark:env -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L100) - -Retrieves the current environment, or set a new one. - - - - -### spark:filter:check -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L103) - -Check filters for a route. - - - - -### spark:lang:find -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L106) - -Find and save available phrases to translate. - - - - -### spark:namespaces -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L109) - -Verifies your namespaces are setup correctly. - - - - -### spark:phpini:check -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L112) - -Check your php.ini values. - - - - -### spark:routes -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L115) - -Displays all routes. - - - - -### spark:​key:generate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L123) - -Generates a new encryption key and writes it in an `.env` file. - - - - -### spark:optimize -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L126) - -Optimize for production. - - - - -### spark:publish -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L129) - -Discovers and executes all predefined Publisher classes. - - - - -### spark:db:create -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L137) - -Create a new database schema. - - - - -### spark:db:seed -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L140) - -Runs the specified seeder to populate known data into the database. - - - - -### spark:db:table -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L143) - -Retrieves information on the selected table. - - - - -### spark:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L146) - -Locates and runs all new migrations against the database. - - - - -### spark:migrate:refresh -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L149) - -Does a rollback followed by a latest to refresh the current state of the database. - - - - -### spark:migrate:rollback -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L152) - -Runs the "down" method for all migrations in the last batch. - - - - -### spark:migrate:status -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L155) - -Displays a list of all migrations and whether they\'ve been run or not. - - - - -### spark:cache:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L163) - -Clears the current system caches. - - - - -### spark:debugbar:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L166) - -Clears all debugbar JSON files. - - - - -### spark:logs:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L169) - -Clears all log files. - - - - -### spark:custom -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L176) - -Run a custom spark command. - -Custom Spark Command for shield or setting packages - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/codeigniter4.php#L184) - -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) -* [spark:optimize](/docs/recipe/codeigniter4.md#sparkoptimize) -* [spark:migrate](/docs/recipe/codeigniter4.md#sparkmigrate) -* [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 c28aa560d..000000000 --- a/docs/recipe/contao.md +++ /dev/null @@ -1,182 +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/shopware.md#deployupdate_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" -$result = run('{{bin/console}} --version'); -preg_match_all('/(\d+\.?)+/', $result, $matches); -return $matches[0][0] ?? 'n/a'; -``` - - -### symfony_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L39) - -Overrides [symfony_version](/docs/recipe/symfony.md#symfony_version) from `recipe/symfony.php`. - - - -```php title="Default value" -$result = run('{{bin/console}} about'); -preg_match_all('/(\d+\.?)+/', $result, $matches); -return $matches[0][0] ?? 5.0; -``` - - - -## Tasks - -### contao:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L55) - -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#L61) - -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#L67) - -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#L73) - -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#L79) - -Enable maintenance mode. - - - - -### contao:maintenance:disable -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L94) - -Disable maintenance mode. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/contao.php#L106) - -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 f4884cc19..000000000 --- a/docs/recipe/craftcms.md +++ /dev/null @@ -1,122 +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/shopware.md#deployupdate_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 - -### craft:gc -[Source](https://github.com/deployphp/deployer/blob/master/recipe/craftcms.php#L120) - -Runs garbage collection. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/craftcms.php#L127) - -Deploys Craft CMS. - - - - -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 f5bbd6c96..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#L9) - -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#L17) - -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#L32) - -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#L59) - -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#L70) - -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#L76) - -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#L83) - -Prepares release. - -Clean up unfinished releases and prepare next release - - -### releases -[Source](https://github.com/deployphp/deployer/blob/master/recipe/deploy/release.php#L158) - -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 893df44c2..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`. - - 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 4d4bbb33f..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/shopware.md#deployupdate_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 7f270cd0c..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/shopware.md#deployupdate_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 dc512decc..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/shopware.md#deployupdate_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 c0c831505..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/shopware.md#deployupdate_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 143cadba2..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/shopware.md#deployupdate_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 39c4a6e1f..000000000 --- a/docs/recipe/laravel.md +++ /dev/null @@ -1,543 +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/shopware.md#deployupdate_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#L9) - -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#L10) - -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#L11) - -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#L23) - - - -```php title="Default value" -'storage/logs/*.log' -``` - - -### laravel_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L24) - - - -```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; -``` - - -### public_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L29) - -Overrides [public_path](/docs/recipe/provision/website.md#public_path) from `recipe/provision/website.php`. - - - -```php title="Default value" -'public' -``` - - - -## Tasks - -### artisan:down -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L92) - -Puts the application into maintenance / demo mode. - - - - -### artisan:up -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L95) - -Brings the application out of maintenance mode. - - - - -### artisan:​key:generate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L102) - -Sets the application key. - - - - -### artisan:passport:keys -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L105) - -Creates the encryption keys for API authentication. - - - - -### artisan:db:seed -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L112) - -Seeds the database with records. - - - - -### artisan:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L115) - -Runs the database migrations. - - - - -### artisan:migrate:fresh -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L118) - -Drops all tables and re-run all migrations. - - - - -### artisan:migrate:rollback -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L121) - -Rollbacks the last database migration. - - - - -### artisan:migrate:status -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L124) - -Shows the status of each migration. - - - - -### artisan:cache:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L131) - -Flushes the application cache. - - - - -### artisan:config:cache -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L134) - -Creates a cache file for faster configuration loading. - - - - -### artisan:config:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L137) - -Removes the configuration cache file. - - - - -### artisan:event:cache -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L140) - -Discovers and cache the application\'s events and listeners. - - - - -### artisan:event:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L143) - -Clears all cached events and listeners. - - - - -### artisan:event:list -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L146) - -Lists the application\'s events and listeners. - - - - -### artisan:optimize -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L149) - -Cache the framework bootstrap files. - - - - -### artisan:optimize:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L152) - -Removes the cached bootstrap files. - - - - -### artisan:route:cache -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L155) - -Creates a route cache file for faster route registration. - - - - -### artisan:route:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L158) - -Removes the route cache file. - - - - -### artisan:route:list -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L161) - -Lists all registered routes. - - - - -### artisan:storage:link -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L164) - -Creates the symbolic links configured for the application. - - - - -### artisan:view:cache -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L167) - -Compiles all of the application\'s Blade templates. - - - - -### artisan:view:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L170) - -Clears all compiled view files. - - - - -### artisan:queue:failed -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L177) - -Lists all of the failed queue jobs. - - - - -### artisan:queue:flush -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L180) - -Flushes all of the failed queue jobs. - - - - -### artisan:queue:restart -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L183) - -Restarts queue worker daemons after their current job. - - - - -### artisan:horizon -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L186) - -Starts a master supervisor in the foreground. - - - - -### artisan:horizon:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L189) - -Deletes all of the jobs from the specified queue. - - - - -### artisan:horizon:continue -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L192) - -Instructs the master supervisor to continue processing jobs. - - - - -### artisan:horizon:list -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L195) - -Lists all of the deployed machines. - - - - -### artisan:horizon:pause -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L198) - -Pauses the master supervisor. - - - - -### artisan:horizon:purge -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L201) - -Terminates any rogue Horizon processes. - - - - -### artisan:horizon:status -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L204) - -Gets the current status of Horizon. - - - - -### artisan:horizon:terminate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L207) - -Terminates the master supervisor so it can be restarted. - - - - -### artisan:horizon:publish -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L210) - -Publish all of the Horizon resources. - - - - -### artisan:​telescope:clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L217) - -Clears all entries from Telescope. - - - - -### artisan:​telescope:prune -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L220) - -Prunes stale entries from the Telescope database. - - - - -### artisan:octane -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L227) - -Starts the octane server. - - - - -### artisan:octane:reload -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L230) - -Reloads the octane server. - - - - -### artisan:octane:stop -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L233) - -Stops the octane server. - - - - -### artisan:octane:status -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L236) - -Check the status of the octane server. - - - - -### artisan:nova:publish -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L243) - -Publish all of the Laravel Nova resources. - - - - -### artisan:reverb:start -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L250) - -Starts the Reverb server. - - - - -### artisan:reverb:restart -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L253) - -Restarts the Reverb server. - - - - -### artisan:pulse:check -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L260) - -Starts the Pulse server. - - - - -### artisan:pulse:restart -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L263) - -Restarts the Pulse server. - - - - -### artisan:pulse:purge -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L266) - -Purges all Pulse data from storage. - - - - -### artisan:pulse:work -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L269) - -Process incoming Pulse data from the ingest stream. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/laravel.php#L275) - -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 618322bcf..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/shopware.md#deployupdate_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 0dc7fba9e..000000000 --- a/docs/recipe/magento2.md +++ /dev/null @@ -1,767 +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/shopware.md#deployupdate_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 -* [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#L26) - -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#L43) - -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#L48) - -Static content deployment options, e.g. '--no-parent' - - - -### split_static_deployment -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L51) - -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#L54) - -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#L58) - -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#L64) - -Also set the number of concurrent 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#L66) - - - -```php title="Default value" -return time(); -``` - - -### magento_dir -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L71) - -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#L74) - -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#L78) - -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#L93) - -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#L100) - -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#L109) - - - -```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#L111) - - - -```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#L118) - - -:::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#L132) - - -:::info Autogenerated -The value of this configuration is autogenerated on access. -::: - - - - -### enable_zerodowntime -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L157) - -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#L346) - -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#L349) - -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#L353) - -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#L356) - -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#L359) - -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#L362) - -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#L370) - -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#L442) - -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#L444) - -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#L167) - -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#L193) - -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#L210) - -Deploys assets for backend only. - - - - -### magento:deploy:assets:frontend -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L215) - -Deploys assets for frontend only. - - - - -### magento:sync:content_version -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L263) - -Syncs content version. - - - - -### magento:maintenance:enable -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L273) - -Enables maintenance mode. - - - - -### magento:maintenance:disable -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L279) - -Disables maintenance mode. - - - - -### magento:maintenance:enable-if-needed -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L285) - -Set maintenance mode if needed. - - - - -### magento:config:import -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L292) - -Config Import. - - - - -### magento:upgrade:db -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L301) - -Upgrades magento database. - - - - -### magento:cache:flush -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L311) - -Flushes Magento Cache. - - - - -### deploy:magento -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L316) - -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:build -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L325) - -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#L331) - -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#L381) - -Packages all relevant files in an artifact. - - - - -### artifact:upload -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L391) - -Uploads artifact in release folder for extraction. - - - - -### artifact:extract -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L396) - -Extracts artifact in release path. - - - - -### build:remove-generated -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L402) - -Clears generated files prior to building. - - - - -### build:prepare -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L407) - -Prepare local artifact build. - - - - -### artifact:build -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L432) - -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#L448) - -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#L463) - -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#L503) - -Cleanup cache id_prefix env files. - -After successful deployment, move the tmp_env.php file to env.php ready for next deployment - - -### magento:cron:stop -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L519) - -Remove cron from crontab and kill running cron jobs. - -Remove cron from crontab and kill running cron jobs -To use this feature, add the following to your deployer scripts: - ```php - after('magento:maintenance:enable-if-needed', 'magento:cron:stop'); - ``` - - -### magento:cron:install -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L535) - -Install cron in crontab. - -Install cron in crontab -To use this feature, add the following to your deployer scripts: - ```php - after('magento:upgrade:db', 'magento:cron:install'); - ``` - - -### artifact:prepare -[Source](https://github.com/deployphp/deployer/blob/master/recipe/magento2.php#L541) - -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#L554) - -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#L563) - -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 2d5a966ac..000000000 --- a/docs/recipe/pimcore.md +++ /dev/null @@ -1,80 +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/shopware.md#deployupdate_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:cache_clear -[Source](https://github.com/deployphp/deployer/blob/master/recipe/pimcore.php#L20) - -Removes cache. - - - - -### pimcore:deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/pimcore.php#L24) - - - - - - -This task is group task which contains next tasks: -* [pimcore:rebuild-classes](/docs/recipe/pimcore.md#pimcorerebuild-classes) - - diff --git a/docs/recipe/prestashop.md b/docs/recipe/prestashop.md deleted file mode 100644 index cb74a3153..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/shopware.md#deployupdate_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 3d18fa644..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#L16) - -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#L233) - - - -```php title="Default value" -return askHiddenResponse(' Password for sudo: '); -``` - - -### ssh_copy_id -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L239) - -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#L21) - -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#L40) - -Checks pre-required state. - - - - -### provision:configure -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L63) - -Collects required params. - - - - -### provision:update -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L99) - -Adds repositories and update. - - - - -### provision:upgrade -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L121) - -Upgrades all packages. - - - - -### provision:install -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L128) - -Installs packages. - - - - -### provision:server -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L162) - -Configures a server. - - - - -### provision:ssh -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L223) - -Configures the ssh. - - - - -### provision:deployer -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L242) - -Setups a deployer user. - - - - -### provision:firewall -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L289) - -Setups a firewall. - - - - -### provision:verify -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision.php#L297) - -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 943f1024e..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_20.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 ee7a0306e..000000000 --- a/docs/recipe/provision/php.md +++ /dev/null @@ -1,54 +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#L5) - - - -```php title="Default value" -$defaultphpVersion = file_exists('composer.json') -? explode('|', preg_replace('/[^0-9.|]+/', '', json_decode(file_get_contents('composer.json'), true)['require']['php'] ?? '8.3'))[0] -: '8.3'; -return ask(' What PHP version to install? ', $defaultphpVersion, ['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#L13) - -Installs PHP packages. - - - - -### logs:php-fpm -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/php.php#L66) - -Shows php-fpm logs. - - - - -### provision:composer -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/php.php#L71) - -Installs Composer. - - - - diff --git a/docs/recipe/provision/website.md b/docs/recipe/provision/website.md deleted file mode 100644 index 4a4c7bd94..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#L7) - - - -```php title="Default value" -return ask(' Domain: '); -``` - - -### public_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/website.php#L11) - - - -```php title="Default value" -return ask(' Public path: ', 'public'); -``` - - - -## Tasks - -### provision:website -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/website.php#L16) - -Provision website. - - - - -### logs:caddy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/website.php#L56) - -Shows caddy logs. - - - - -### logs:caddy:syslog -[Source](https://github.com/deployphp/deployer/blob/master/recipe/provision/website.php#L61) - -Shows caddy syslog. - - - - diff --git a/docs/recipe/shopware.md b/docs/recipe/shopware.md deleted file mode 100644 index 136005dc4..000000000 --- a/docs/recipe/shopware.md +++ /dev/null @@ -1,316 +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/shopware.md#deployupdate_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: -```php -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#L34) - - - -```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#L36) - -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#L39) - -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.local', - 'install.lock', - 'public/.htaccess', - 'public/.user.ini', -] -``` - - -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L47) - -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#L58) - -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#L74) - - - -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#L80) - - - -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#L86) - - - -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#L90) - - - - - - -### sw:scheduled-task:register -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L94) - - - - - - -### sw:theme:refresh -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L98) - - - - - - -### sw:theme:compile -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L104) - - - -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#L116) - - - - - - -### sw:writable:jwt -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L126) - - - - - - -### sw:deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L133) - - - -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#L144) - -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) - - -### deploy:update_code -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L153) - - - - - - -### sw-build-without-db:get-remote-config -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L163) - - - - - - -### sw-build-without-db:build -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L176) - - - - - - -### sw-build-without-db -[Source](https://github.com/deployphp/deployer/blob/master/recipe/shopware.php#L180) - - - - - - -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 f3dc561f0..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/shopware.md#deployupdate_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/spiral.md b/docs/recipe/spiral.md deleted file mode 100644 index 7b869ee93..000000000 --- a/docs/recipe/spiral.md +++ /dev/null @@ -1,284 +0,0 @@ - - - - -# How to Deploy a Spiral Project - -```php -require 'recipe/spiral.php'; -``` - -[Source](/recipe/spiral.php) - -Deployer is a free and open source deployment tool written in PHP. -It helps you to deploy your Spiral 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 **Spiral** 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/shopware.md#deployupdate_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:environment](/docs/recipe/spiral.md#deployenvironment) – Create .env file if it doesn\'t exist -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) – Installs vendors -* [spiral:encrypt-key](/docs/recipe/spiral.md#spiralencrypt-key) – Generate new encryption key, if it doesn\'t exist -* [spiral:configure](/docs/recipe/spiral.md#spiralconfigure) – Configure project -* [deploy:download-rr](/docs/recipe/spiral.md#deploydownload-rr) – Download RoadRunner -* [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 spiral recipe is based on the [common](/docs/recipe/common.md) recipe. - -## Configuration -### shared_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L10) - -Overrides [shared_dirs](/docs/recipe/deploy/shared.md#shared_dirs) from `recipe/deploy/shared.php`. - -Spiral shared dirs - -```php title="Default value" -['runtime'] -``` - - -### writable_dirs -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L13) - -Overrides [writable_dirs](/docs/recipe/deploy/writable.md#writable_dirs) from `recipe/deploy/writable.php`. - -Spiral writable dirs - -```php title="Default value" -['runtime', 'public'] -``` - - -### roadrunner_path -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L16) - -Path to the RoadRunner server - -```php title="Default value" -'{{release_or_current_path}}' -``` - - - -## Tasks - -### deploy:environment -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L19) - -Create .env file if it doesn\'t exist. - - - - -### spiral:configure -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L61) - -Configure project. - -Spiral Framework console commands - - -### spiral:cycle -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L64) - -Update (init) cycle schema from database and annotated classes. - - - - -### spiral:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L67) - -Perform all outstanding migrations. - - - - -### spiral:update -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L70) - -Update project state. - - - - -### spiral:cache:clean -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L73) - -Clean application runtime cache. - - - - -### spiral:i18n:reset -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L76) - -Reset translation cache. - - - - -### spiral:encrypt-key -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L79) - -Generate new encryption key, if it doesn\'t exist. - - - - -### spiral:views:compile -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L82) - -Warm-up view cache. - - - - -### spiral:views:reset -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L85) - -Clear view cache. - - - - -### cycle:migrate -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L91) - -Generate ORM schema migrations. - -Cycle ORM and migrations console commands - - -### cycle:render -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L94) - -Render available CycleORM schemas. - - - - -### cycle:sync -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L97) - -Sync Cycle ORM schema with database without intermediate migration (risk operation). - - - - -### migrate:init -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L100) - -Init migrations component (create migrations table). - - - - -### migrate:replay -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L103) - -Replay (down, up) one or multiple migrations. - - - - -### migrate:rollback -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L106) - -Rollback one (default) or multiple migrations. - - - - -### migrate:status -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L109) - -Get list of all available migrations and their statuses. - - - - -### roadrunner:serve -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L115) - -Start RoadRunner server. - -RoadRunner console commands - - -### roadrunner:stop -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L120) - -Stop RoadRunner server. - - - - -### roadrunner:reset -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L123) - -Reset workers of all services. - - - - -### deploy:download-rr -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L129) - -Download RoadRunner. - -Download and restart RoadRunner - - -### deploy:restart-rr -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L135) - -Restart RoadRunner. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/spiral.php#L149) - -Deploys your project. - -Main task - - -This task is group task which contains next tasks: -* [deploy:prepare](/docs/recipe/common.md#deployprepare) -* [deploy:environment](/docs/recipe/spiral.md#deployenvironment) -* [deploy:vendors](/docs/recipe/deploy/vendors.md#deployvendors) -* [spiral:encrypt-key](/docs/recipe/spiral.md#spiralencrypt-key) -* [spiral:configure](/docs/recipe/spiral.md#spiralconfigure) -* [deploy:download-rr](/docs/recipe/spiral.md#deploydownload-rr) -* [deploy:publish](/docs/recipe/common.md#deploypublish) - - diff --git a/docs/recipe/statamic.md b/docs/recipe/statamic.md deleted file mode 100644 index 0389bafe6..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/shopware.md#deployupdate_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 d344dd2ec..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/shopware.md#deployupdate_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 403ddd73d..000000000 --- a/docs/recipe/symfony.md +++ /dev/null @@ -1,201 +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/shopware.md#deployupdate_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:env -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L66) - -Optimize environment variables. - - - - -### deploy -[Source](https://github.com/deployphp/deployer/blob/master/recipe/symfony.php#L73) - -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 ec7b663a9..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/shopware.md#deployupdate_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 9b32c8697..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/shopware.md#deployupdate_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 052c4761b..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/shopware.md#deployupdate_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 4f59fd7e1..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/shopware.md#deployupdate_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 7b0d16c6e..000000000 --- a/tests/docker/docker-compose.yml +++ /dev/null @@ -1,46 +0,0 @@ -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 0dc15d97e..000000000 --- a/tests/src/Support/HelpersTest.php +++ /dev/null @@ -1,67 +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~')); - } - - public function testEscapeShellArgument() - { - $this->assertEquals('\'{"foobar":"Lorem ipsum\'\\\'\'s dolor"}\'', escape_shell_argument(json_encode(['foobar' => 'Lorem ipsum\'s dolor']))); - } -} 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++; - } -}