The Pantheon CLI — a standalone utility for performing operations on the Pantheon Platform

Overview

terminus : Pantheon's Command-Line Interface

Status

Commit Build Actively Maintained

About

Terminus is Pantheon's Command Line Interface (CLI), providing at least equivalent functionality to the Pantheon's browser-based Dashboard and easier scripting.

If you would like to contribute, pull requests are welcome!

The Manual

Our documentation is kept in the Terminus Manual, located here: https://pantheon.io/docs/terminus

Requirements

Operating System Version
MacOS 10.14+
Ubuntu Latest LTS
Windows + WSL + Ubuntu TBD

Package Manager

Required Packages

These packages are required to take full advantage of Terminus.

  • Composer 2 (Needed for the plugin manager component)

  • PHP (v7.4+)

  • Git (May be needed for the plugin manager component)

Recommended Packages

  • Drush (Useful to run incompatible-with-Terminus Drush commands)

  • WP-CLI (Useful to run incompatible-with-Terminus WP-CLI commands)

Installation

Mac OS:

Terminus is published as a package under pantheon-systems/external. To install it, you should run:

brew install pantheon-systems/external/terminus

Ubuntu / WinWSL+Ubuntu:

*** TBD ***

Other installation methods

Refer to the Terminus manual for other installation methods.

Comments
  • Provides art command

    Provides art command

    Still need to write proper test cases. but the change to the ./bin/terminus.php is pretty important, so we may want to get this merged.

    to use the art command, just run ./bin/terminus.php art rocket and enjoy

    opened by dustinleblanc 31
  • Adds plugin loading for commands and hooks

    Adds plugin loading for commands and hooks

    This implements an EXTREMELY rudimentary plugin loader. In it's current form it

    1. Does not require plugins to have an autoloader or composer.json
    2. Requires plugin classes to be in PSR-0 style directories
    3. Uses a pretty ugly include statement to include the command class files.

    This take is not terribly sophisticated but it works and it makes very few requirements on the plugin writers. The Symfony CommandFileDiscovery class seems to have basic support for psr-0 loading which allows this to operate with very little work for us or our plugin writers. The downsides of this are that psr-0 is deprecated and the plugins have to adhere to its awkward directory structure.

    If we want a plugin manager that allows for PSR-4 directories (or some other arbitrary structure) we will need to do a bit of work to create our own command discovery class.

    The plugin structure for this take would be:

    plugin-directory/
        composer.json // Not actually used yet
        src/
            NameSpace/
                SubNameSpace/
                     Commands/
                         SomeGreatCommand.php
    
    @TeslaDethray @greg-1-anderson 
    What do you think of this compromise? Is it worth the extra effort to allow for a simpler directory structure for plugins? We can always add more sophisticated loaders later as long as we promise to still support whatever structure we specify at launch.
    
    
    
    
    Ready to Ship 
    opened by ronan 30
  • `terminus sites mass-update` No route to host

    `terminus sites mass-update` No route to host

    I've been trying to use the terminus sites mass-update command for the first time and I'm receiving a 500 error:

    $ terminus sites mass-update --upstream=https://github.com/pantheon-systems/drops-7.git        ⬡ 6.2.0
    [2016-05-31 00:26:20] [info] Looking for sites using https://github.com/pantheon-systems/drops-7.git.
        upstream: 'https://github.com/pantheon-systems/drops-7.git'
    [2016-05-31 00:27:53] [error] Server error: `GET https://dashboard.pantheon.io/api/sites/0f76af30-718d-4e15-8507-79e9f2dfaaf8/code-upstream-updates` resulted in a `500 Internal Server Error` response:
    No route to host
    
    Unreproducable 
    opened by pi-ron 26
  • Adopt the Terminus Plugin Manager into the Terminus core

    Adopt the Terminus Plugin Manager into the Terminus core

    @uberhacker Has written a really neat plugin to manage Terminus plugins called Terminus Plugin Manager. We should adopt it into our core - this is necessary functionality. We should also adopt his way of accommodating directory structures for Windows users, which will spawn its own issue.

    Feature Request 
    opened by TeslaDethray 24
  • terminus build-env:delete:ci deletes non ci-build environments

    terminus build-env:delete:ci deletes non ci-build environments

    Expected behavior

    terminus build-env:delete:ci deletes circle build environments but leaves pr environments untouched.

    Actual behavior

    - terminus build-env:delete:ci -n "$TERMINUS_SITE" --keep=2 --yes Results in all but the latest 2 ci environments being removed (including environments not prefixed with "ci-")

    opened by arosboro 23
  • 'terminus site organizations list' doesn't list organizaitons

    'terminus site organizations list' doesn't list organizaitons

    [bwood@mbp ~]$ grep -i version ~/code/drupal/bwood/cli/php/terminus.php
    define( 'TERMINUS_VERSION', '0.3.2-beta');
    

    With what org is this site associated?

    [bwood@mbp ~]$ terminus site organizations list --site=ob7-t032b-01
    
      1. None
      2. UC Berkeley - Testing
      3. UC Berkeley
      4. Drupal Distribution Testing
    
    Choose organization:
    

    If you simply hit Enter at that prompt you get a fatal error:

    [bwood@mbp ~]$ terminus site organizations list --site=ob7-t032b-01
    
      1. None
      2. UC Berkeley - Testing
      3. UC Berkeley
      4. Drupal Distribution Testing
    
    Choose organization:
    PHP Notice:  Undefined offset: 0 in phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Helpers/Input.php on line 43
    PHP Stack trace:
    PHP   1. {main}() /Users/bwood/code/drupal/bwood/cli/builds/terminus:0
    PHP   2. include() /Users/bwood/code/drupal/bwood/cli/builds/terminus:4
    PHP   3. include() phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/boot-phar.php:5
    PHP   4. Terminus\Runner->run() phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/terminus.php:29
    PHP   5. Terminus\Runner->_run_command() phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Runner.php:155
    PHP   6. Terminus\Runner->run_command($args = *uninitialized*, $assoc_args = *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Runner.php:75
    PHP   7. Terminus\Dispatcher\Subcommand->invoke($args = *uninitialized*, $assoc_args = *uninitialized*, $extra_args = *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Runner.php:68
    PHP   8. call_user_func(*uninitialized*, *uninitialized*, *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Dispatcher/Subcommand.php:220
    PHP   9. Terminus\Dispatcher\CommandFactory::Terminus\Dispatcher\{closure}($args = *uninitialized*, $assoc_args = *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Dispatcher/Subcommand.php:220
    PHP  10. call_user_func(*uninitialized*, *uninitialized*, *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Dispatcher/CommandFactory.php:35
    PHP  11. Site_Command->organizations($args = *uninitialized*, $assoc_args = *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Dispatcher/CommandFactory.php:35
    PHP  12. Terminus\Helpers\Input::orgname($args = *uninitialized*, $key = *uninitialized*, $default = *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/commands/site.php:306
    PHP Fatal error:  Class 'Terminus\SiteWorkflow' not found in phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Site.php on line 328
    PHP Stack trace:
    PHP   1. {main}() /Users/bwood/code/drupal/bwood/cli/builds/terminus:0
    PHP   2. include() /Users/bwood/code/drupal/bwood/cli/builds/terminus:4
    PHP   3. include() phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/boot-phar.php:5
    PHP   4. Terminus\Runner->run() phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/terminus.php:29
    PHP   5. Terminus\Runner->_run_command() phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Runner.php:155
    PHP   6. Terminus\Runner->run_command($args = *uninitialized*, $assoc_args = *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Runner.php:75
    PHP   7. Terminus\Dispatcher\Subcommand->invoke($args = *uninitialized*, $assoc_args = *uninitialized*, $extra_args = *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Runner.php:68
    PHP   8. call_user_func(*uninitialized*, *uninitialized*, *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Dispatcher/Subcommand.php:220
    PHP   9. Terminus\Dispatcher\CommandFactory::Terminus\Dispatcher\{closure}($args = *uninitialized*, $assoc_args = *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Dispatcher/Subcommand.php:220
    PHP  10. call_user_func(*uninitialized*, *uninitialized*, *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Dispatcher/CommandFactory.php:35
    PHP  11. Site_Command->organizations($args = *uninitialized*, $assoc_args = *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Dispatcher/CommandFactory.php:35
    PHP  12. Terminus\Site->addMembership($type = *uninitialized*, $name = *uninitialized*, $role = *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/commands/site.php:307
    

    If you choose an org, you get a different error:

    [bwood@mbp ~]$ terminus site organizations list --site=ob7-t032b-01
    
      1. None
      2. UC Berkeley - Testing
      3. UC Berkeley
      4. Drupal Distribution Testing
    
    Choose organization: 2
    PHP Fatal error:  Class 'Terminus\SiteWorkflow' not found in phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Site.php on line 328
    PHP Stack trace:
    PHP   1. {main}() /Users/bwood/code/drupal/bwood/cli/builds/terminus:0
    PHP   2. include() /Users/bwood/code/drupal/bwood/cli/builds/terminus:4
    PHP   3. include() phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/boot-phar.php:5
    PHP   4. Terminus\Runner->run() phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/terminus.php:29
    PHP   5. Terminus\Runner->_run_command() phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Runner.php:155
    PHP   6. Terminus\Runner->run_command($args = *uninitialized*, $assoc_args = *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Runner.php:75
    PHP   7. Terminus\Dispatcher\Subcommand->invoke($args = *uninitialized*, $assoc_args = *uninitialized*, $extra_args = *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Runner.php:68
    PHP   8. call_user_func(*uninitialized*, *uninitialized*, *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Dispatcher/Subcommand.php:220
    PHP   9. Terminus\Dispatcher\CommandFactory::Terminus\Dispatcher\{closure}($args = *uninitialized*, $assoc_args = *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Dispatcher/Subcommand.php:220
    PHP  10. call_user_func(*uninitialized*, *uninitialized*, *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Dispatcher/CommandFactory.php:35
    PHP  11. Site_Command->organizations($args = *uninitialized*, $assoc_args = *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/Terminus/Dispatcher/CommandFactory.php:35
    PHP  12. Terminus\Site->addMembership($type = *uninitialized*, $name = *uninitialized*, $role = *uninitialized*) phar:///Users/bwood/code/drupal/bwood/cli/builds/terminus/php/commands/site.php:307
    
    Issue: Bug 
    opened by bwood 23
  • Terminus import:database fails with

    Terminus import:database fails with "400 Bad Request"

    FYI, I've replaced the Signature and AWSAccessKeyID parts of the URL with FOO just to prevent it from being a valid URL that could be downloaded by someone else.

    I'm running an import:database command using a database backup URL I grabbed from the Live tab of one of our other sites: terminus import:database -vvv --yes ucws.jpatching "https://pantheon-backups.s3.amazonaws.com/1fb30e38-f900-4372-93a7-6b93cbd2c911/live/1541459818_backup/uc-news_live_2018-11-05T23-16-58_UTC_database.sql.gz?Signature=FOO&Expires=1541466502&AWSAccessKeyId=FOO"

    Expected behavior

    The import succeeds.

    Actual behavior

    Short version: 400 Bad Request response: "Bad params"

    Verbose version:

     [debug] Plugin Autoload: %dir is a Terminus source file.
     [debug] #### REQUEST ####
    Headers: {"Content-type":"application\/json","User-Agent":"Terminus\/1.9.0 (php_version=7.2.11&script=bin\/terminus)","Authorization":"**HIDDEN**"}
    URI: https://terminus.pantheon.io:443/api/site-names/ucws
    Method: GET
    Body: null
     [debug] #### RESPONSE ####
    Headers: {"Server":["nginx"],"Date":["Tue, 06 Nov 2018 00:08:44 GMT"],"Content-Type":["application\/json; charset=utf-8"],"Transfer-Encoding":["chunked"],"Connection":["keep-alive"],"X-Pantheon-Trace-Id":["1fa74e30-e158-11e8-bf4e-173e561cb64e"],"X-Frame-Options":["deny"],"Access-Control-Allow-Methods":["GET"],"Access-Control-Allow-Headers":["Origin, Content-Type, Accept"],"Cache-Control":["private, max-age=0, no-cache, no-store"],"Pragma":["no-cache"],"Vary":["Accept-Encoding"],"Strict-Transport-Security":["max-age=31536000"]}
    Data: {"id":"ba5ef322-5b49-43e9-876c-ff640080ffc1","name":"ucws"}
    Status Code: 200
     [debug] #### REQUEST ####
    Headers: {"Content-type":"application\/json","User-Agent":"Terminus\/1.9.0 (php_version=7.2.11&script=bin\/terminus)","Authorization":"**HIDDEN**"}
    URI: https://terminus.pantheon.io:443/api/sites/ba5ef322-5b49-43e9-876c-ff640080ffc1?site_state=true
    Method: GET
    Body: null
     [debug] #### RESPONSE ####
    Headers: {"Server":["nginx"],"Date":["Tue, 06 Nov 2018 00:08:44 GMT"],"Content-Type":["application\/json"],"Content-Length":["16434"],"Connection":["keep-alive"],"X-Pantheon-Trace-Id":["1fe54190-e158-11e8-8cdc-35f792086f85"],"X-Frame-Options":["deny"],"Access-Control-Allow-Methods":["GET"],"Access-Control-Allow-Headers":["Origin, Content-Type, Accept"],"Cache-Control":["private, max-age=0, no-cache, no-store"],"Pragma":["no-cache"],"Vary":["Accept-Encoding"],"Strict-Transport-Security":["max-age=31536000"]}
    Data: {"created":1528318690,"created_by_user_id":"e4c78d83-b045-40c1-ac8a-d5b7ea339c76","drush_version":8,"framework":"drupal8","holder_id":"dd539496-9e3a-4b32-bb7c-34a3f40b7d39","holder_type":"organization","instrument":"b04d0816-a3c4-416c-8ddd-725e2f2d5d4d","last_code_push":{"timestamp":"2018-11-05T20:45:12","user_uuid":"3dc742cb-a35c-465b-9254-69f4f44abfef"},"name":"ucws","organization":"dd539496-9e3a-4b32-bb7c-34a3f40b7d39","owner":"e4c78d83-b045-40c1-ac8a-d5b7ea339c76","php_version":"55","plan_name":"Sandbox","preferred_availability_zone":"us-central1-c","preferred_zone":"us-central1","service_level":"free","upstream":{"repository_branch":"master","machine_name":"drupal8","product_id":"8a129104-9d37-4082-aaf8-e6f31154644e","url":"git:\/\/github.com\/pantheon-systems\/drops-8.git","label":"Drupal 8","organization_id":"","framework":"drupal8","branch":"master","repository_url":"git:\/\/github.com\/pantheon-systems\/drops-8.git","type":"core","id":"8a129104-9d37-4082-aaf8-e6f31154644e"},"label":"UCWS","id":"ba5ef322-5b49-43e9-876c-ff640080ffc1","holder":{"billing_url":"","change_service_url":"","instrument":"b04d0816-a3c4-416c-8ddd-725e2f2d5d4d","maxdevsites":"2","name":"University of Calgary","org_logo":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFUAAABVCAYAAAA49ahaAAASEklEQVR4Xu2cB3RV1baG\/7NPTSOkEGqC9EgPikhHmhoIHUE60qvgpYWOgrQLhCJdVFDpSJDeEjoKSglF6Qk1YCBAyun7jn+9tzGGkuSOnJeMx55jMJKcszP3Wt+a859zrbODRpZlGaplKwGNCjVbeQpnKtTsZ6pCdQFTFaoK1RUEXOBT1VQVqgsIuMClGqkqVBcQcIFLNVJVqC4g4AKXaqSqUF1AwAUu1UhVobqAgAtcqpGqQnUBARe4zFWR6nQ6kZycLP7dvn0bly5dQszZs4iLjYXdbodGA\/j5+aN0cBlUrFgJQUFB8PHxgYeHBwwGgwvw\/HcucwVUm82GDRs2YP78+bh9\/RrKSRIqAHjTzYQAJ2CSAb1OC6dThkV24AmASw47LlptOCHLcHjlQatWrTBkyBAULFjwvyORjb+Vo1DNZjMmTJiAQz9tQqPkZNQyuqGApIPdCQTpNLBpZPATtGTIuGEHfDRAYa0GTgDuGg1u22Xk0Wlw2mJHgmzDWpsVUkgVTJ06FRUrVsxGTFlzlaNQDx06hGlhYViYvwCm2xJQsq4T8VYrSpeXcDPaAMt5Pfq6eaGz5g669JCwY5+MZjf8URV6LPRIROUwM3bvldCylQPH1hrR+IEXEiUnFucviMPHjmWNRDZeneNQI1u0xCAfX4wuFocfFjuwao0GNd7RQ+9mwcCm3qjj6YVG8xJwIsYDKU4nrp+zo8nxvLje\/x56tbDj06lGzPyXBdt+l3BtVADe9zFiUEB+RB0+nI2YsuYqV0Ad7OOLkUFxWL3MgTU\/afBudQNkqxlDW3nDz2BEYKcnkKwe8Mlrw6jZSdjkVwRxn9xDr052DJtsxLRwCyKjJMSND0CjvCpUMFIH+\/rifccNVCljwJmzMrwNOpQNcSL+oAGLfPxxsHgqlicmoEPFPKgS5YVkpwPTisYDj3U4FZuKIF8j\/Ivb0SDGDw09TWqkEuowPz9csNtRRNJiq8OMhnoTvJwayFrABA1Yre4D8JE10GpkSJIGT+1O5NFJWJ6SjLZu7ki0OeCh1Yi2S03\/Fi0x0s8PDgAWWcbkSnfhdtkdunvAedhw02qGwwhIOoiWSmOV4A0tgiUjArQ6+HYzI3itN6rrTeDDNglwqlB3tGyFvvn8Mf3RIyyMT0BwcQO6NpPg46NDt1ALjB5sUmU+9vE\/1cIpQU7R4O5DPbqMdmLWUA0qt0tBVXdPTCnkj9JaLbr553u9C1Xr+vVRtLQeQ7pqULOaEyd\/0yNPXif+vKaFXi+jVxsrTp3XY\/dRCwoFGNCtjR1nL0hYvkGPfl3sGDFVj6+nmnE1VsK3GzXYEelE0NtVcPjIkayV7Gy8Oser\/w\/zGiBiooSzFzQoX1SGu4+Mz+eb0KSeHVYAo6cBv8SYkWp2Cr0s\/YYeQ\/uaEFrLgZVrdejc1oZAbwcOnNKieiUHYq7oMWxeJUQfeI2h7l\/9HiZ8KmHsHAMK+smIvWtA\/EMH1u1MQZfmBuw75sDVm8T7tw3s5IU9R6zw9NCiWgUDPusso8NIK3YulWE2a9BxUgj2R73mUMd+qkX\/8XpsjXbi3BYJHYdrsevIE1QuY0BQIT12HUmBzSZDq9XAaNBiyTgvdBj1CIUDTBjdz4RTFx3YfsCKE2u0olN47aFGr66HwJJuODfNBz5dnyL+jh1fDndix34DIqNskCQjTEYn6rwlIe6uEwdP2nDtFvD5AB1KBMkoVMCJFRt0SDrghqd5zRg304IOI0MQFf2aRurJkycRuawONClAh6OB+CzfHRQrBnQMc6BGiAO1O0koGWjEU7MTG3clIaiAHh\/UNWLjrlRErdShRBEnGn2iR\/\/OGkgR\/jhvSEL\/b1PQe2otbN22KxtLT9Zc5WihevjwIVqHlka9ClZ0jCqAE3YbnP0TsPcosPRLC75dZ0DvSUnPzahUUSPObNbgpz06pKRqsX+VDnMlf8wyPEToUAv2xw3FxIkTs0YiG6\/OUahWqxXBwWUxqns8EhfkRRdvd6x4mooFjgeYMVyL5g1sKPO+jL8S7WCXqtMCZouMQys9UKGMAyGtNfA0G7HdJz8skDE9OB6JVhnj\/30E5cuXz0ZMWXOVo1C5Axo3bhzcn8zBrSsGfHGtIELv38HyTXbMW6DBks9t2BFlxML1EkoU0aJQgB5zv0\/ArWhgXIQRn7QBxizS4IuYApiXnITQCUnoMckD165dg5ubW9ZIZOPVOQqV80hKSkKdmpUxf8x9zJygxQR7Pmx1JiOxbjJSU+2YO9qBPuPdYHPaUTLQBE9TKhrXcWLuKj2kOAldH\/hiS7IZIWMSsX2vE40\/WoqOHTtCw6Y2hyzHoXLey5Ytw\/pvB2HjIgmfhRvQ5IIvYrQWJNRKxeDuZnyzRsLxMzI83SX8GOFAz3AdTE\/0GHLbH3Pkh2g\/MQV37gKrdlXHvn17cwjl37fNFVA5nFatWqNq4B6MHGjBsBl6BG7xg6ZvAjbvkLB7hQUGvcSNP\/ZEG2HXyDi0wBMJsGPOymQkPpZQv4cbIrcdRpkyZVSoCoGEhASUKxuMVVMsSHZaMfoLA45ttOPEaR2SLDJa1LXgQYqEep0NOBNpwagpJpy\/Cmz+wYzgOjIiFq5H8+bNcxwoB5BrIpWDYYGpXbMapg62omlDC3wNTsAAdAt3w8xwK5b+oEPP9g7kd7fDBg1OxerRZ5QDfYdEoFevXpAkRnPOW66CShx\/\/PEH2rQKw4iud9ElzAaeqly5p8WI2TpULCVjYl8LVQCxCTp0GKbDx598iX79+kGr1eY8zf8dQa6DynH9+eefaNE8DP1a38aAdnZotTJWbzWhbWMbdDonLt3UoVO4EZ17TsKgQYNyDUxlILkSKgf39OlTNG7cGAb7Wfy8TEYerR3QAz\/t8UDHEUnYuWsf6tSpk+uA5jpNTU\/IYrHgm2++wawZ4ahV2YLzlx0oVCIUc+dGoGjRorkSaK6HqlC7cuUK1q9fj8qVK+PDDz\/MtTBzffrnenKvGGCu1dT\/91B58HHmzBkUKlQIAQEBuH\/\/vnjUkenIxx09PT1RuHBh8Qgkfw4JCUF8fDwePHiAsmXL4tdffxVf8+TJAz7hx3PUqlWrimsTExOf7dPpjwchvJ6PTvLxSPpS2iWeE\/D5qzfeeANvvvmm+Ej69OnTKFKkiLiG7Ziy5+fXChUq4NSpU3jnnXeEL24w2Avz3mmNfnjdX3\/9hSpVqsDf31+8fe7cOVEwabyG43N3d89wvTMVqXxutHTp0hg7diy6deuG5cuXY\/r06WISH330kbj577\/\/LiC1b99etERLlizBd999hyNHjogqTqhz587F0qVLsWjRIvz2229o2LAhrl69KhaKEKibfObU19dXfGWh4mQOHjwooFWvXl2Aos8FCxagdevWKFWqlDg75SOUI0aMEPfOly+fALNnzx706dNHLHZkZCQ++OADBAcHi99VjAvFMXMODBrOYcWKFWjWrJnoLuLi4sQzsLS1a9cKDhlZpqESyqhRowTUr7\/+GjNnzsT58+cF1N27d6NevXqYMmUK2rVrh4sXLwp4q1atEpFFWGPGjBEDfvfdd9GiRQvhq1GjRqhduzaaNm0Kk8kkwBOin5+f8E2QrPIHDhwQ7\/Pa1atXo2TJkuJ1vV4vII0fPx6dOnUSc61Zs6Z4TrVt27bi5zt37gjw3bt3x86dOwU8+lJs69atAiojmIvLYJk9ezZu3LghFiEsLAxNmjQRY6GfzJx+ZRoq02306NHo2rXrc1B5iPHVV1+hb9++2LJly3NQnzx5gsDAQMTExIh0ZnqXKFFCQD1+\/LhI+WLFiuGXX34RUBll9MnUu3v3rgDMCfP+XFB+YvDjjz+iTZs2z0FlNHND0KFDh2fg+DDx4MGDsWnTJrRs2fIfgcb35s2bJ7KO4I4dOyZgEioXn1JlNBrF79y7dy9TT2xnCionyhSmdrFvJLwLFy6ICOLEqFmhoaFCq4oXLy7eSxupHBCBUBIaNGgg0ogrTqicJBeK+3bCVSKV13I\/Tz\/MhtTUVBHxTHmmOSfIn9NH6ougpqSkiIViKit6qZA9fPgw6tevj6NHj4oF7927N6KjowVkyhMzgPfneL28vLIvUjkArhwhPH78GHnz5hWpRIA8EH7rrbdEyjH9N2\/eLPSS8JmqlAYao5TX7d2799lOiKnFySiRwMkwxRjVjBjqI1PzxIkTYjIff\/wxbt26JYoddZmnUgQRHh4urqMREBedIBQjVMoFZSk9VPqaM2eOSHsuLKXl+++\/F5nEiO3Spcs\/oj4jPeX7mYpUxRE\/U2LqsZAof7jAR8yZNtQ3GifACsnBsoIrH2swArkg7ACU0yRGH4ugYryW79EHdY8g+T3vRf+8lhWc3YbiV3lfp9MJN\/TJa5Wf+RrvrYzrZZrIgsV\/lJm040vvK9uhKg5ZlfmPN1Qmn\/5mnAgXgQNUgCvX8D0C4gQzOq5zOByievM6LtbLrlfuR58v+ksV3i\/tf8GV9t4ZjUd5n\/fOtkKVFtisWbMQERGBR48eCVjUOHYCStuhXHv9+nXRArG3o1SkNVZaajBTdeHChS9dfFbmkSNHIjY2VkyG7RQLC2UkvbGY1a1bV7RWaYuLcl21atXAgqkYs4ufuE6ePFnIGLsW+mDBfe+99\/7hnkeL+\/btw5o1a0Qfm5FlOv2ZzuzbWK0rVaoktIyaR+1j489WhVqr2IABAwQwwqBWpj1RoraxfWIr9fPPPz83RkYVixe1jb4Ji53A\/v37RRqzS0jfwLPis\/9k2lPT0\/91ChedY1E+uqZscUNDPWfHwh717bffFprKnluxbdu2iXFS\/\/lnSZn5e61MQaU2sr3gDViM2GMqacjCxCLEj5oVu3nzphgcDz9YXVlFucqKKVA5UE4ovfFPdtgtMAvY6yr6Sb\/8kJB9aVrNJCAWuAIFCogdFjsVLlZaqSDUGjVqiDkoxtaOvS9rBDchkyZNwowZM8RXzof6zAhnW8dDnbRB86pozRRUpiurIdOVaZCRse8bPny4aKj79++PqKgo0T1w8LRXQaV+sU2iZnMiaeG96L68ninLPpRywY6DEc570I9ihMqNx44dO569xt9l5FKq2G7xXsxCFmNmIReQgCl5Q4cOzWjaz97PFFSmPPWRDTfbmoysXLlyokhxYtxisjclZEZBRlCp1dRF7ogYpTQWK46BGUNjBHI8hEBZIjxGEdOe0cwAYDRzW50Waq1atf4hN8q88ufPL6Aytbdv3y52UNyZUWMJmfKVFcsUVO61OSCmKlP2VcZBUYNWrlwpeljqI4WfBzBMsYygMtW472d\/yN0TjenN\/TxbHhonzwMbguTEWQzZt\/bs2VOAZyHjoQ\/vpxyAMFL5Hg9jaFwMZTNAieI9lde5IaFMsJhRv19UGF\/FIFNQqZkUfhYDpvarjDrI7SAjSRF1pjFhMWoZAa9Kf06WkcP7KRHChWGKEgpTmJC5o2K\/St3mwQmrMnc8NJ4x8H6UAS4sjVA5Ht6faU8Z4D0YBOk3BFwMRj8jljUjq5YpqIwQth08puNEKfiK8Xjv7NmzIsWpRdzDM325K1KMk2CXwEJCoBw0qz9Pgnh6lN6YDZw0t6EskEpvSEkhcAUqwfFMgr5YvdMad2Gs5tzBKVAJlLpL4xaYp22s6AyEtMas4nz5OiUvq5YpqHTKokNRZ9SwA+DEOXDuw5mKBMWt3uLFi8Xr6VOGQs\/+lm0M+1uCoF6x9UprTENqIt9jsRo4cCB69OghvmeWKN0AI5VHiSwkXChW\/7TGAsnzAxYcdiIvKlTse6nhnFvaVun\/DCoHzKaa\/SMPTFgsCJiHLATJ6OXgWaQYzel3PoRJ7ePvs2i97FFHni\/wvID34OEG9Zy+GO3UOO7x2bBzu8ts8Pb2FtKQvn9k30xo9MfNB\/WXkrRr198PA\/NYkv0zx8WipZxB8HyBGUdtXbduXVYDNWt7f3pn6nHA3MdT0wiH\/4kBtfDy5ctCn7h\/Tm\/UQ2odo5TRqBSt9NdRFxXpYNVnFLLosNIzJbmIyjjog1CV19L7YpRSOhjF\/J5FSylIyrUcE8fOo0alfVPmwoV7me9Xkc50+md5uV7jX1ChumDxVagqVBcQcIFLNVJVqC4g4AKXaqSqUF1AwAUu1UhVobqAgAtcqpGqQnUBARe4VCNVheoCAi5wqUaqCtUFBFzgUo1UF0D9DzudCpgCZzD2AAAAAElFTkSuQmCC","org_logo_height":85,"org_logo_width":85,"terms_of_service":"","id":"dd539496-9e3a-4b32-bb7c-34a3f40b7d39","key":"dd539496-9e3a-4b32-bb7c-34a3f40b7d39","service_level":"enterprise","machine_name":"university-of-calgary","has_multidev":false,"support_plan":"regular_support","show_org_name_header":"yes","base_domain":null,"requires_onboarding":false,"has_change_management":false,"profile":{"machine_name":"university-of-calgary","change_service_url":"","name":"University of Calgary","email_domain":null,"org_logo_width":85,"org_logo_height":85,"base_domain":null,"billing_url":"","terms_of_service":"","org_logo":"data:image\/png;base64,iVBORw0KGgoAAAANSUhEUgAAAFUAAABVCAYAAAA49ahaAAASEklEQVR4Xu2cB3RV1baG\/7NPTSOkEGqC9EgPikhHmhoIHUE60qvgpYWOgrQLhCJdVFDpSJDeEjoKSglF6Qk1YCBAyun7jn+9tzGGkuSOnJeMx55jMJKcszP3Wt+a859zrbODRpZlGaplKwGNCjVbeQpnKtTsZ6pCdQFTFaoK1RUEXOBT1VQVqgsIuMClGqkqVBcQcIFLNVJVqC4g4AKXaqSqUF1AwAUu1UhVobqAgAtcqpGqQnUBARe4zFWR6nQ6kZycLP7dvn0bly5dQszZs4iLjYXdbodGA\/j5+aN0cBlUrFgJQUFB8PHxgYeHBwwGgwvw\/HcucwVUm82GDRs2YP78+bh9\/RrKSRIqAHjTzYQAJ2CSAb1OC6dThkV24AmASw47LlptOCHLcHjlQatWrTBkyBAULFjwvyORjb+Vo1DNZjMmTJiAQz9tQqPkZNQyuqGApIPdCQTpNLBpZPATtGTIuGEHfDRAYa0GTgDuGg1u22Xk0Wlw2mJHgmzDWpsVUkgVTJ06FRUrVsxGTFlzlaNQDx06hGlhYViYvwCm2xJQsq4T8VYrSpeXcDPaAMt5Pfq6eaGz5g669JCwY5+MZjf8URV6LPRIROUwM3bvldCylQPH1hrR+IEXEiUnFucviMPHjmWNRDZeneNQI1u0xCAfX4wuFocfFjuwao0GNd7RQ+9mwcCm3qjj6YVG8xJwIsYDKU4nrp+zo8nxvLje\/x56tbDj06lGzPyXBdt+l3BtVADe9zFiUEB+RB0+nI2YsuYqV0Ad7OOLkUFxWL3MgTU\/afBudQNkqxlDW3nDz2BEYKcnkKwe8Mlrw6jZSdjkVwRxn9xDr052DJtsxLRwCyKjJMSND0CjvCpUMFIH+\/rifccNVCljwJmzMrwNOpQNcSL+oAGLfPxxsHgqlicmoEPFPKgS5YVkpwPTisYDj3U4FZuKIF8j\/Ivb0SDGDw09TWqkEuowPz9csNtRRNJiq8OMhnoTvJwayFrABA1Yre4D8JE10GpkSJIGT+1O5NFJWJ6SjLZu7ki0OeCh1Yi2S03\/Fi0x0s8PDgAWWcbkSnfhdtkdunvAedhw02qGwwhIOoiWSmOV4A0tgiUjArQ6+HYzI3itN6rrTeDDNglwqlB3tGyFvvn8Mf3RIyyMT0BwcQO6NpPg46NDt1ALjB5sUmU+9vE\/1cIpQU7R4O5DPbqMdmLWUA0qt0tBVXdPTCnkj9JaLbr553u9C1Xr+vVRtLQeQ7pqULOaEyd\/0yNPXif+vKaFXi+jVxsrTp3XY\/dRCwoFGNCtjR1nL0hYvkGPfl3sGDFVj6+nmnE1VsK3GzXYEelE0NtVcPjIkayV7Gy8Oser\/w\/zGiBiooSzFzQoX1SGu4+Mz+eb0KSeHVYAo6cBv8SYkWp2Cr0s\/YYeQ\/uaEFrLgZVrdejc1oZAbwcOnNKieiUHYq7oMWxeJUQfeI2h7l\/9HiZ8KmHsHAMK+smIvWtA\/EMH1u1MQZfmBuw75sDVm8T7tw3s5IU9R6zw9NCiWgUDPusso8NIK3YulWE2a9BxUgj2R73mUMd+qkX\/8XpsjXbi3BYJHYdrsevIE1QuY0BQIT12HUmBzSZDq9XAaNBiyTgvdBj1CIUDTBjdz4RTFx3YfsCKE2u0olN47aFGr66HwJJuODfNBz5dnyL+jh1fDndix34DIqNskCQjTEYn6rwlIe6uEwdP2nDtFvD5AB1KBMkoVMCJFRt0SDrghqd5zRg304IOI0MQFf2aRurJkycRuawONClAh6OB+CzfHRQrBnQMc6BGiAO1O0koGWjEU7MTG3clIaiAHh\/UNWLjrlRErdShRBEnGn2iR\/\/OGkgR\/jhvSEL\/b1PQe2otbN22KxtLT9Zc5WihevjwIVqHlka9ClZ0jCqAE3YbnP0TsPcosPRLC75dZ0DvSUnPzahUUSPObNbgpz06pKRqsX+VDnMlf8wyPEToUAv2xw3FxIkTs0YiG6\/OUahWqxXBwWUxqns8EhfkRRdvd6x4mooFjgeYMVyL5g1sKPO+jL8S7WCXqtMCZouMQys9UKGMAyGtNfA0G7HdJz8skDE9OB6JVhnj\/30E5cuXz0ZMWXOVo1C5Axo3bhzcn8zBrSsGfHGtIELv38HyTXbMW6DBks9t2BFlxML1EkoU0aJQgB5zv0\/ArWhgXIQRn7QBxizS4IuYApiXnITQCUnoMckD165dg5ubW9ZIZOPVOQqV80hKSkKdmpUxf8x9zJygxQR7Pmx1JiOxbjJSU+2YO9qBPuPdYHPaUTLQBE9TKhrXcWLuKj2kOAldH\/hiS7IZIWMSsX2vE40\/WoqOHTtCw6Y2hyzHoXLey5Ytw\/pvB2HjIgmfhRvQ5IIvYrQWJNRKxeDuZnyzRsLxMzI83SX8GOFAz3AdTE\/0GHLbH3Pkh2g\/MQV37gKrdlXHvn17cwjl37fNFVA5nFatWqNq4B6MHGjBsBl6BG7xg6ZvAjbvkLB7hQUGvcSNP\/ZEG2HXyDi0wBMJsGPOymQkPpZQv4cbIrcdRpkyZVSoCoGEhASUKxuMVVMsSHZaMfoLA45ttOPEaR2SLDJa1LXgQYqEep0NOBNpwagpJpy\/Cmz+wYzgOjIiFq5H8+bNcxwoB5BrIpWDYYGpXbMapg62omlDC3wNTsAAdAt3w8xwK5b+oEPP9g7kd7fDBg1OxerRZ5QDfYdEoFevXpAkRnPOW66CShx\/\/PEH2rQKw4iud9ElzAaeqly5p8WI2TpULCVjYl8LVQCxCTp0GKbDx598iX79+kGr1eY8zf8dQa6DynH9+eefaNE8DP1a38aAdnZotTJWbzWhbWMbdDonLt3UoVO4EZ17TsKgQYNyDUxlILkSKgf39OlTNG7cGAb7Wfy8TEYerR3QAz\/t8UDHEUnYuWsf6tSpk+uA5jpNTU\/IYrHgm2++wawZ4ahV2YLzlx0oVCIUc+dGoGjRorkSaK6HqlC7cuUK1q9fj8qVK+PDDz\/MtTBzffrnenKvGGCu1dT\/91B58HHmzBkUKlQIAQEBuH\/\/vnjUkenIxx09PT1RuHBh8Qgkfw4JCUF8fDwePHiAsmXL4tdffxVf8+TJAz7hx3PUqlWrimsTExOf7dPpjwchvJ6PTvLxSPpS2iWeE\/D5qzfeeANvvvmm+Ej69OnTKFKkiLiG7Ziy5+fXChUq4NSpU3jnnXeEL24w2Avz3mmNfnjdX3\/9hSpVqsDf31+8fe7cOVEwabyG43N3d89wvTMVqXxutHTp0hg7diy6deuG5cuXY\/r06WISH330kbj577\/\/LiC1b99etERLlizBd999hyNHjogqTqhz587F0qVLsWjRIvz2229o2LAhrl69KhaKEKibfObU19dXfGWh4mQOHjwooFWvXl2Aos8FCxagdevWKFWqlDg75SOUI0aMEPfOly+fALNnzx706dNHLHZkZCQ++OADBAcHi99VjAvFMXMODBrOYcWKFWjWrJnoLuLi4sQzsLS1a9cKDhlZpqESyqhRowTUr7\/+GjNnzsT58+cF1N27d6NevXqYMmUK2rVrh4sXLwp4q1atEpFFWGPGjBEDfvfdd9GiRQvhq1GjRqhduzaaNm0Kk8kkwBOin5+f8E2QrPIHDhwQ7\/Pa1atXo2TJkuJ1vV4vII0fPx6dOnUSc61Zs6Z4TrVt27bi5zt37gjw3bt3x86dOwU8+lJs69atAiojmIvLYJk9ezZu3LghFiEsLAxNmjQRY6GfzJx+ZRoq02306NHo2rXrc1B5iPHVV1+hb9++2LJly3NQnzx5gsDAQMTExIh0ZnqXKFFCQD1+\/LhI+WLFiuGXX34RUBll9MnUu3v3rgDMCfP+XFB+YvDjjz+iTZs2z0FlNHND0KFDh2fg+DDx4MGDsWnTJrRs2fIfgcb35s2bJ7KO4I4dOyZgEioXn1JlNBrF79y7dy9TT2xnCionyhSmdrFvJLwLFy6ICOLEqFmhoaFCq4oXLy7eSxupHBCBUBIaNGgg0ogrTqicJBeK+3bCVSKV13I\/Tz\/MhtTUVBHxTHmmOSfIn9NH6ougpqSkiIViKit6qZA9fPgw6tevj6NHj4oF7927N6KjowVkyhMzgPfneL28vLIvUjkArhwhPH78GHnz5hWpRIA8EH7rrbdEyjH9N2\/eLPSS8JmqlAYao5TX7d2799lOiKnFySiRwMkwxRjVjBjqI1PzxIkTYjIff\/wxbt26JYoddZmnUgQRHh4urqMREBedIBQjVMoFZSk9VPqaM2eOSHsuLKXl+++\/F5nEiO3Spcs\/oj4jPeX7mYpUxRE\/U2LqsZAof7jAR8yZNtQ3GifACsnBsoIrH2swArkg7ACU0yRGH4ugYryW79EHdY8g+T3vRf+8lhWc3YbiV3lfp9MJN\/TJa5Wf+RrvrYzrZZrIgsV\/lJm040vvK9uhKg5ZlfmPN1Qmn\/5mnAgXgQNUgCvX8D0C4gQzOq5zOByievM6LtbLrlfuR58v+ksV3i\/tf8GV9t4ZjUd5n\/fOtkKVFtisWbMQERGBR48eCVjUOHYCStuhXHv9+nXRArG3o1SkNVZaajBTdeHChS9dfFbmkSNHIjY2VkyG7RQLC2UkvbGY1a1bV7RWaYuLcl21atXAgqkYs4ufuE6ePFnIGLsW+mDBfe+99\/7hnkeL+\/btw5o1a0Qfm5FlOv2ZzuzbWK0rVaoktIyaR+1j489WhVqr2IABAwQwwqBWpj1RoraxfWIr9fPPPz83RkYVixe1jb4Ji53A\/v37RRqzS0jfwLPis\/9k2lPT0\/91ChedY1E+uqZscUNDPWfHwh717bffFprKnluxbdu2iXFS\/\/lnSZn5e61MQaU2sr3gDViM2GMqacjCxCLEj5oVu3nzphgcDz9YXVlFucqKKVA5UE4ovfFPdtgtMAvY6yr6Sb\/8kJB9aVrNJCAWuAIFCogdFjsVLlZaqSDUGjVqiDkoxtaOvS9rBDchkyZNwowZM8RXzof6zAhnW8dDnbRB86pozRRUpiurIdOVaZCRse8bPny4aKj79++PqKgo0T1w8LRXQaV+sU2iZnMiaeG96L68ninLPpRywY6DEc570I9ihMqNx44dO569xt9l5FKq2G7xXsxCFmNmIReQgCl5Q4cOzWjaz97PFFSmPPWRDTfbmoysXLlyokhxYtxisjclZEZBRlCp1dRF7ogYpTQWK46BGUNjBHI8hEBZIjxGEdOe0cwAYDRzW50Waq1atf4hN8q88ufPL6Aytbdv3y52UNyZUWMJmfKVFcsUVO61OSCmKlP2VcZBUYNWrlwpeljqI4WfBzBMsYygMtW472d\/yN0TjenN\/TxbHhonzwMbguTEWQzZt\/bs2VOAZyHjoQ\/vpxyAMFL5Hg9jaFwMZTNAieI9lde5IaFMsJhRv19UGF\/FIFNQqZkUfhYDpvarjDrI7SAjSRF1pjFhMWoZAa9Kf06WkcP7KRHChWGKEgpTmJC5o2K\/St3mwQmrMnc8NJ4x8H6UAS4sjVA5Ht6faU8Z4D0YBOk3BFwMRj8jljUjq5YpqIwQth08puNEKfiK8Xjv7NmzIsWpRdzDM325K1KMk2CXwEJCoBw0qz9Pgnh6lN6YDZw0t6EskEpvSEkhcAUqwfFMgr5YvdMad2Gs5tzBKVAJlLpL4xaYp22s6AyEtMas4nz5OiUvq5YpqHTKokNRZ9SwA+DEOXDuw5mKBMWt3uLFi8Xr6VOGQs\/+lm0M+1uCoF6x9UprTENqIt9jsRo4cCB69OghvmeWKN0AI5VHiSwkXChW\/7TGAsnzAxYcdiIvKlTse6nhnFvaVun\/DCoHzKaa\/SMPTFgsCJiHLATJ6OXgWaQYzel3PoRJ7ePvs2i97FFHni\/wvID34OEG9Zy+GO3UOO7x2bBzu8ts8Pb2FtKQvn9k30xo9MfNB\/WXkrRr198PA\/NYkv0zx8WipZxB8HyBGUdtXbduXVYDNWt7f3pn6nHA3MdT0wiH\/4kBtfDy5ctCn7h\/Tm\/UQ2odo5TRqBSt9NdRFxXpYNVnFLLosNIzJbmIyjjog1CV19L7YpRSOhjF\/J5FSylIyrUcE8fOo0alfVPmwoV7me9Xkc50+md5uV7jX1ChumDxVagqVBcQcIFLNVJVqC4g4AKXaqSqUF1AwAUu1UhVobqAgAtcqpGqQnUBARe4VCNVheoCAi5wqUaqCtUFBFzgUo1UF0D9DzudCpgCZzD2AAAAAElFTkSuQmCC"},"settings":{"show_org_name_header":"yes","service_level":"enterprise","base_domain":null,"email_domain":null}},"settings":{"allow_domains":false,"preferred_availability_zone":"us-central1-c","site_id":"ba5ef322-5b49-43e9-876c-ff640080ffc1","stunnel":false,"min_backups":0,"owner":"e4c78d83-b045-40c1-ac8a-d5b7ea339c76","secure_runtime_access":false,"pingdom":0,"allow_indexserver":false,"created_by_user_id":"e4c78d83-b045-40c1-ac8a-d5b7ea339c76","failover_appserver":0,"migration_started_at":null,"cacheserver":1,"support_plan":"regular_support","instrument":"b04d0816-a3c4-416c-8ddd-725e2f2d5d4d","on_server_development":false,"drush_version":8,"migration_method":null,"current_num_domains":0,"appserver":1,"allow_read_slaves":false,"preferred_zone":"us-central1","php_version":"55","php_channel":"stable","allow_cacheserver":false,"upstream":{"url":"git:\/\/github.com\/pantheon-systems\/drops-8.git","product_id":"8a129104-9d37-4082-aaf8-e6f31154644e","branch":"master"},"ssl_enabled":null,"plan_name":"Sandbox","service_level":"free","dedicated_ip":null,"dbserver":1,"migration_origin_url":null,"framework":"drupal8","max_total_domains":0,"key":"ba5ef322-5b49-43e9-876c-ff640080ffc1","max_num_cdes":10,"migration_completed_at":null,"guilty_of_abuse":null,"indexserver":1,"pingdom_chance":0,"holder_id":"dd539496-9e3a-4b32-bb7c-34a3f40b7d39","name":"ucws","created":1528318690,"max_backups":0,"holder_type":"organization","replica_verification_strategy":"pt-heartbeat","id":"ba5ef322-5b49-43e9-876c-ff640080ffc1","organization":"dd539496-9e3a-4b32-bb7c-34a3f40b7d39","pingdom_manually_enabled":false,"last_code_push":{"timestamp":"2018-11-05T20:45:12","user_uuid":"3dc742cb-a35c-465b-9254-69f4f44abfef"}},"base_domain":null,"attributes":{"label":"UCWS","m3_ui":true},"add_ons":[{"id":"NewRelic","label":"New Relic"}]}
    Status Code: 200
     [debug] #### REQUEST ####
    Headers: {"Content-type":"application\/json","User-Agent":"Terminus\/1.9.0 (php_version=7.2.11&script=bin\/terminus)","Authorization":"**HIDDEN**"}
    URI: https://terminus.pantheon.io:443/api/sites/ba5ef322-5b49-43e9-876c-ff640080ffc1/environments
    Method: GET
    Body: null
     [debug] #### RESPONSE ####
    Headers: {"Server":["nginx"],"Date":["Tue, 06 Nov 2018 00:08:45 GMT"],"Content-Type":["application\/json; charset=utf-8"],"Transfer-Encoding":["chunked"],"Connection":["keep-alive"],"X-Pantheon-Trace-Id":["2059ae40-e158-11e8-8cdc-35f792086f85"],"X-Frame-Options":["deny"],"Access-Control-Allow-Methods":["GET"],"Access-Control-Allow-Headers":["Origin, Content-Type, Accept"],"Cache-Control":["private, max-age=0, no-cache, no-store"],"Pragma":["no-cache"],"Vary":["Accept-Encoding"],"Strict-Transport-Security":["max-age=31536000"]}
    Data: {"schulich":{"dns_zone":"pantheonsite.io","drush_version":8,"environment_created":1529687411,"environment_variables":{"DOCROOT":"web","drush_version":8,"php_version":7.2},"maintenance":{"enabled":false},"php_version":"72","randseed":"TST3ILF1ROQDHQN34E83KA1PMN8XQ1OG","styx_cluster":"styx-fe2.pantheon.io","target_commit":"68299d85cc24320842cfe3c311cbed590f1c5db9","target_ref":"refs\/heads\/schulich","key":"ba5ef322-5b49-43e9-876c-ff640080ffc1!schulich","is_initialized":true,"styx_clusters_for_cache_clear":["edge.live.getpantheon.com","styx-fe1.pantheon.io","styx-fe2.pantheon.io","styx-fe4.pantheon.io","styx-fe3.pantheon.io","styx-01.pantheon.io"],"lock":{"username":null,"password":null,"locked":false}},"staging":{"dns_zone":"pantheonsite.io","drush_version":8,"environment_created":1528826766,"environment_variables":{"DOCROOT":"web","drush_version":8,"php_version":7.2},"maintenance":{"enabled":false},"php_version":"72","randseed":"IFELFN68SHQF6BPYYNJF07D4Y71XA7FY","styx_cluster":"styx-fe2.pantheon.io","target_commit":"3f5a3400e212934c4022bce7312de9374e746f0a","target_ref":"refs\/heads\/staging","key":"ba5ef322-5b49-43e9-876c-ff640080ffc1!staging","is_initialized":true,"styx_clusters_for_cache_clear":["edge.live.getpantheon.com","styx-fe1.pantheon.io","styx-fe2.pantheon.io","styx-fe4.pantheon.io","styx-fe3.pantheon.io","styx-01.pantheon.io"],"lock":{"username":null,"password":null,"locked":false}},"dan":{"dns_zone":"pantheonsite.io","drush_version":8,"environment_created":1531514718,"environment_variables":{"DOCROOT":"web","drush_version":8,"php_version":7.2},"php_version":"72","randseed":"HBMM91ZWCO4BXQJQ4HEI3E7LKZOQOKC7","styx_cluster":"styx-fe2.pantheon.io","target_commit":"d260d08fc71f68d074a66ec600793bffb4cf956d","target_ref":"refs\/heads\/dan","key":"ba5ef322-5b49-43e9-876c-ff640080ffc1!dan","is_initialized":true,"styx_clusters_for_cache_clear":["edge.live.getpantheon.com","styx-fe1.pantheon.io","styx-fe2.pantheon.io","styx-fe4.pantheon.io","styx-fe3.pantheon.io","styx-01.pantheon.io"],"lock":{"username":null,"password":null,"locked":false}},"dev":{"diffstat":{},"dns_zone":"pantheonsite.io","drush_version":8,"environment_created":1528318691,"environment_variables":{"DOCROOT":"web","drush_version":8,"php_version":7.2},"on_server_development":false,"php_version":"72","quicksilver_configuration":{},"randseed":"THE4BCLV29C70QUH7CPI65JN8OEECBB3","styx_cluster":"styx-fe2.pantheon.io","target_commit":"0469838289a1df4eba8e14a473eb22bb8f9c1aaa","target_ref":"refs\/heads\/master","key":"ba5ef322-5b49-43e9-876c-ff640080ffc1!dev","is_initialized":true,"styx_clusters_for_cache_clear":["edge.live.getpantheon.com","styx-fe1.pantheon.io","styx-fe2.pantheon.io","styx-fe4.pantheon.io","styx-fe3.pantheon.io","styx-01.pantheon.io"],"lock":{"username":"dev","password":"dev","locked":true}},"csm":{"dns_zone":"pantheonsite.io","drush_version":8,"environment_created":1529687434,"environment_variables":{"DOCROOT":"web","drush_version":8,"php_version":7.2},"maintenance":{"enabled":false},"php_version":"72","randseed":"CAEVQX5P7O5OBPLMFTM4PDC6F6HXRIX6","styx_cluster":"styx-fe2.pantheon.io","target_commit":"8ba53a423676c32b05254b125bcf1910bbd5eb05","target_ref":"refs\/heads\/csm","key":"ba5ef322-5b49-43e9-876c-ff640080ffc1!csm","is_initialized":true,"styx_clusters_for_cache_clear":["edge.live.getpantheon.com","styx-fe1.pantheon.io","styx-fe2.pantheon.io","styx-fe4.pantheon.io","styx-fe3.pantheon.io","styx-01.pantheon.io"],"lock":{"username":null,"password":null,"locked":false}},"livewhale":{"dns_zone":"pantheonsite.io","drush_version":8,"environment_created":1529596863,"environment_variables":{"DOCROOT":"web","drush_version":8,"php_version":7.2},"php_version":"72","randseed":"VVN8TAHO5EW2NMSD16UJMT43J49AMPF8","styx_cluster":"styx-fe2.pantheon.io","target_commit":"99e835dfcf225f66b44db54a93bde1614687fb9e","target_ref":"refs\/heads\/livewhale","key":"ba5ef322-5b49-43e9-876c-ff640080ffc1!livewhale","is_initialized":true,"styx_clusters_for_cache_clear":["edge.live.getpantheon.com","styx-fe1.pantheon.io","styx-fe2.pantheon.io","styx-fe4.pantheon.io","styx-fe3.pantheon.io","styx-01.pantheon.io"],"lock":{"username":null,"password":null,"locked":false}},"test":{"dns_zone":"pantheonsite.io","drush_version":8,"environment_created":1528318693,"environment_variables":{"DOCROOT":"web","drush_version":8,"php_version":7.2},"php_version":"72","randseed":"NF2UR1S1KGS8ZEA3MWK4GV09XVNSTGYA","styx_cluster":"styx-fe3.pantheon.io","target_commit":"0469838289a1df4eba8e14a473eb22bb8f9c1aaa","target_ref":"refs\/tags\/pantheon_test_18","key":"ba5ef322-5b49-43e9-876c-ff640080ffc1!test","is_initialized":true,"styx_clusters_for_cache_clear":["edge.live.getpantheon.com","styx-fe1.pantheon.io","styx-fe2.pantheon.io","styx-fe4.pantheon.io","styx-fe3.pantheon.io","styx-01.pantheon.io"],"lock":{"username":"test","password":"test","locked":true}},"jpatching":{"dns_zone":"pantheonsite.io","drush_version":8,"environment_created":1529447277,"environment_variables":{"DOCROOT":"web","drush_version":8,"php_version":7.2},"maintenance":{"enabled":false},"php_version":"72","randseed":"LQ2O9TIPPX04K7CGRWFB6IEZWC6W6YUN","styx_cluster":"styx-fe2.pantheon.io","target_commit":"11879ee9ebf376236b2b61403f310ee552797b0f","target_ref":"refs\/heads\/jpatching","key":"ba5ef322-5b49-43e9-876c-ff640080ffc1!jpatching","is_initialized":true,"styx_clusters_for_cache_clear":["edge.live.getpantheon.com","styx-fe1.pantheon.io","styx-fe2.pantheon.io","styx-fe4.pantheon.io","styx-fe3.pantheon.io","styx-01.pantheon.io"],"lock":{"username":null,"password":null,"locked":false}},"training":{"dns_zone":"pantheonsite.io","drush_version":8,"environment_created":1536161122,"environment_variables":{"DOCROOT":"web","drush_version":8,"php_version":7.2},"php_version":"72","randseed":"MAVOSP1RRUVQ10TSDXYXTBS81ECO1QCZ","styx_cluster":"styx-fe2.pantheon.io","target_commit":"306eebb24eb0ba88f7c0264359a067af7d5f7a28","target_ref":"refs\/heads\/training","key":"ba5ef322-5b49-43e9-876c-ff640080ffc1!training","is_initialized":true,"styx_clusters_for_cache_clear":["edge.live.getpantheon.com","styx-fe1.pantheon.io","styx-fe2.pantheon.io","styx-fe4.pantheon.io","styx-fe3.pantheon.io","styx-01.pantheon.io"],"lock":{"username":null,"password":null,"locked":false}},"live":{"dns_zone":"pantheonsite.io","drush_version":8,"environment_created":1528318694,"environment_variables":{"DOCROOT":"web","drush_version":8,"php_version":7.2},"maintenance":{"enabled":false},"php_version":"72","randseed":"ESNYZZZTFOH3OTDT22M1V0EYLAQW65ZY","styx_cluster":"styx-fe3.pantheon.io","target_commit":"0469838289a1df4eba8e14a473eb22bb8f9c1aaa","target_ref":"refs\/tags\/pantheon_live_18","key":"ba5ef322-5b49-43e9-876c-ff640080ffc1!live","is_initialized":true,"styx_clusters_for_cache_clear":["edge.live.getpantheon.com","styx-fe1.pantheon.io","styx-fe2.pantheon.io","styx-fe4.pantheon.io","styx-fe3.pantheon.io","styx-01.pantheon.io"],"lock":{"username":null,"password":null,"locked":false}},"arts":{"dns_zone":"pantheonsite.io","drush_version":8,"environment_created":1529687425,"environment_variables":{"DOCROOT":"web","drush_version":8,"php_version":7.2},"maintenance":{"enabled":false},"php_version":"72","randseed":"3C7CN0NEENCFK0TFE4XD7K194WGGWWD4","styx_cluster":"styx-fe2.pantheon.io","target_commit":"377001e7f9982f9f1557eab17c04007e40749f39","target_ref":"refs\/heads\/arts","key":"ba5ef322-5b49-43e9-876c-ff640080ffc1!arts","is_initialized":true,"styx_clusters_for_cache_clear":["edge.live.getpantheon.com","styx-fe1.pantheon.io","styx-fe2.pantheon.io","styx-fe4.pantheon.io","styx-fe3.pantheon.io","styx-01.pantheon.io"],"lock":{"username":null,"password":null,"locked":false}}}
    Status Code: 200
     [debug] #### REQUEST ####
    Headers: {"Content-type":"application\/json","User-Agent":"Terminus\/1.9.0 (php_version=7.2.11&script=bin\/terminus)","Authorization":"**HIDDEN**"}
    URI: https://terminus.pantheon.io:443/api/sites/ba5ef322-5b49-43e9-876c-ff640080ffc1/environments/jpatching/workflows
    Method: POST
    Body: {"type":"import_database","params":{"url":"https:\/\/pantheon-backups.s3.amazonaws.com\/1fb30e38-f900-4372-93a7-6b93cbd2c911\/live\/1541459818_backup\/uc-news_live_2018-11-05T23-16-58_UTC_database.sql.gz?Signature=FOO&Expires=1541466502&AWSAccessKeyId=FOO"}}
     [error]  Client error: `POST https://terminus.pantheon.io/api/sites/ba5ef322-5b49-43e9-876c-ff640080ffc1/environments/jpatching/workflows` resulted in a `400 Bad Request` response:
    "Bad params\n"
    

    Steps to reproduce the behavior

    Run the import:database command above with a valid URL for a database backup from the Pantheon Dashboard.

    terminus self:info output:

     ------------------------- -------------------------------------------------- 
      PHP binary                /usr/local/bin/php                                
      PHP version               7.2.5                                             
      php.ini used              /usr/local/etc/php/php.ini                        
      Terminus project config                                                     
      Terminus root dir         /root/.composer/vendor/pantheon-systems/terminus  
      Terminus version          1.9.0                                             
      Operating system          #1 SMP Wed Jun 6 16:55:56 UTC 2018                
     ------------------------- -------------------------------------------------- 
    

    Notes

    Importing this same URL using the Pantheon Dashboard works as expected:

    • Database/Files => Import
    • Paste URL into "MySQL database" text box
    • Click Import
    Issue: Bug 
    opened by taeram 21
  • [WIP] Adds machine token commands for 1.0

    [WIP] Adds machine token commands for 1.0

    ~~Requires: https://github.com/pantheon-systems/terminus/pull/1179~~

    This PR:

    • Implements machine-token:list, machine-token:delete
    • Adds unit tests for above
    • Creates a new non-static Session object
    • Adds basis for DI of session object

    Still todo:

    • Actual injection of session object using Robo container
    • Get behat tests working
    • ~~Get output working (requires rebase onto robo-runner branch)~~
    Ready to Ship 
    opened by ronan 21
  • Generate Drush Aliases for all Sites in an Org?

    Generate Drush Aliases for all Sites in an Org?

    Currently the generation of Drush aliases relies on an API call that only puts sites a user is a direct team member of into the file.

    https://github.com/pantheon-systems/cli/blob/80f31bb1c4ae61a6f2dac5ccebd6113f374ad66b/php/Terminus/Commands/SitesCommand.php#L46

    Members of organizations do not have an easy way to get an aliases file for all the sites in the org, and when there are many sites the terminus drush ____ command is not very performant.

    We could construct an alias file for all sites in an organization that would work for most purposes. It could save to $HOME/.drush/{orgname}.aliases.drushrc.php.

    This would be a pretty heavy operation since it would require multiple API calls per site. If we wanted to support this we might need to develop something new on the backend to allow it to be efficient.

    Feature Request 
    opened by joshkoenig 21
  • Fatal error: Uncaught Error: Attempt to assign property

    Fatal error: Uncaught Error: Attempt to assign property "id" on null in phar:///usr/local/bin/terminus/src/Collections/TerminusCollection.php:95

    Expected behavior

    I am building out php8 support for lando / terminus and our pantheon recipe. I am using the 3.x beta1 version. I am trying to run any terminus command and have it work.

    Actual behavior

    Whenever I run any command (I ssh'd into lando appserver itself), I get this fun error:

    Fatal error: Uncaught Error: Attempt to assign property "id" on null in phar:///usr/local/bin/terminus/src/Collections/TerminusCollection.php:95
    Stack trace:
    #0 phar:///usr/local/bin/terminus/src/Collections/TerminusCollection.php(81): Pantheon\Terminus\Collections\TerminusCollection->fetch()
    #1 phar:///usr/local/bin/terminus/src/Hooks/Authorizer.php(32): Pantheon\Terminus\Collections\TerminusCollection->all()
    #2 phar:///usr/local/bin/terminus/vendor/consolidation/annotated-command/src/Hooks/Dispatchers/InitializeHookDispatcher.php(47): Pantheon\Terminus\Hooks\Authorizer->ensureLogin(Object(Symfony\Component\Console\Input\ArgvInput), Object(Consolidation\AnnotatedCommand\AnnotationData))
    #3 phar:///usr/local/bin/terminus/vendor/consolidation/annotated-command/src/Hooks/Dispatchers/InitializeHookDispatcher.php(36): Consolidation\AnnotatedCommand\Hooks\Dispatchers\InitializeHookDispatcher->doInitializeHook(Array, Object(Symfony\Component\Console\Input\ArgvInput), Object(Consolidation\AnnotatedCommand\AnnotationData))
    #4 phar:///usr/local/bin/terminus/vendor/consolidation/annotated-command/src/Hooks/Dispatchers/InitializeHookDispatcher.php(29): Consolidation\AnnotatedCommand\Hooks\Dispatchers\InitializeHookDispatcher->callInitializeHook(Array, Object(Symfony\Component\Console\Input\ArgvInput), Object(Consolidation\AnnotatedCommand\AnnotationData))
    #5 phar:///usr/local/bin/terminus/vendor/consolidation/annotated-command/src/CommandProcessor.php(145): Consolidation\AnnotatedCommand\Hooks\Dispatchers\InitializeHookDispatcher->initialize(Object(Symfony\Component\Console\Input\ArgvInput), Object(Consolidation\AnnotatedCommand\AnnotationData))
    #6 phar:///usr/local/bin/terminus/vendor/consolidation/annotated-command/src/AnnotatedCommand.php(298): Consolidation\AnnotatedCommand\CommandProcessor->initializeHook(Object(Symfony\Component\Console\Input\ArgvInput), Array, Object(Consolidation\AnnotatedCommand\AnnotationData))
    #7 phar:///usr/local/bin/terminus/vendor/symfony/console/Command/Command.php(225): Consolidation\AnnotatedCommand\AnnotatedCommand->initialize(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #8 phar:///usr/local/bin/terminus/vendor/symfony/console/Application.php(938): Symfony\Component\Console\Command\Command->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #9 phar:///usr/local/bin/terminus/vendor/symfony/console/Application.php(266): Symfony\Component\Console\Application->doRunCommand(Object(Consolidation\AnnotatedCommand\AnnotatedCommand), Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #10 phar:///usr/local/bin/terminus/vendor/symfony/console/Application.php(142): Symfony\Component\Console\Application->doRun(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #11 phar:///usr/local/bin/terminus/vendor/consolidation/robo/src/Runner.php(282): Symfony\Component\Console\Application->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput))
    #12 phar:///usr/local/bin/terminus/src/Terminus.php(443): Robo\Runner->run(Object(Symfony\Component\Console\Input\ArgvInput), Object(Symfony\Component\Console\Output\ConsoleOutput), Object(Robo\Application), Array)
    #13 phar:///usr/local/bin/terminus/bin/terminus(61): Pantheon\Terminus\Terminus->run()
    #14 /usr/local/bin/terminus(12): require('phar:///usr/loc...')
    

    I have redone our Docker images for Lando, to build it from source as seen here: https://github.com/lando/pantheon/pull/6, and I can tweak the code in Terminus on the TerminusCollection fetch method to:

        public function fetch()
        {
            foreach ($this->getData() as $id => $model_data) {
                if ($model_data === NULL) {
                    continue;
                }
    
                if (!isset($model_data->id)) {
                    $model_data->id = $id;
                }
                $this->add($model_data);
            }
            return $this;
        }
    

    And will work well. Curious as to why we have a model data of NULL in php 8.0 only. I have tried this same setup with php 7.4 and it works just fine. This doesn't appear to be a lando specific issue.

    Should I put in a PR to make this adjustment or is something else going on here?

    Steps to reproduce the behavior

    Use any drupal 9 recipe with php 8.0 and lando. Override your .lando.yml to use the edge php 8.0 image,

    opened by labboy0276 20
  • TERMINUS_ROOT not set throws exception

    TERMINUS_ROOT not set throws exception

    Expected behavior

    Expect terminus to run using cygwin with php 5.5.28

    Actual behavior

    Fatal error: Uncaught exception 'Pantheon\Terminus\Exceptions\TerminusException' with message 'Could not locate root to set TERMINUS_ROOT.' in C:\cygwin64\home\wiz\terminus\src\Config\DefaultsConfig.php:70
    Stack trace:
    #0 C:\cygwin64\home\wiz\terminus\src\Config\DefaultsConfig.php(18): Pantheon\Terminus\Config\DefaultsConfig->getTerminusRoot()
    #1 C:\cygwin64\home\wiz\terminus\bin\terminus(36): Pantheon\Terminus\Config\DefaultsConfig->__construct()
    #2 {main}
      thrown in C:\cygwin64\home\wiz\terminus\src\Config\DefaultsConfig.php on line 70
    

    Steps to reproduce the behavior

    $ bin/terminus -vvv

    Unreproducable 
    opened by spiderwisp 20
  • Unable to install plugins with terminus 3.0.8

    Unable to install plugins with terminus 3.0.8

    Platform

    (X) MacOS Terminus 3.0.8

    Installed Via

    (X) Homebrew (X) Standalone Terminus PHAR

    PHP Version

    (X) 7.4x

    Command Executed

    terminus self:plugin:install terminus-build-tools-plugin

    Expected behavior

    Install terminus-build-tools-plugin

    Actual behavior

    salifutraore@Salifus-MacBook-Pro ~ % terminus self:plugin:install terminus-build-tools-plugin -vvv
    [debug] Running composer --version...
     [debug] Returned:
    Composer version 2.4.2 2022-09-14 16:11:15
    
     [debug] Running composer --version...
     [debug] Returned:
    Composer version 2.4.2 2022-09-14 16:11:15
    
     [debug] Running composer --version...
     [debug] Returned:
    Composer version 2.4.2 2022-09-14 16:11:15
    
     [debug] Running composer --working-dir=/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/plugins-3.x init --name=pantheon-systems/terminus-plugins -n...
     [debug] Returned:
    
     [debug] Running composer --working-dir=/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/plugins-3.x config minimum-stability dev...
     [debug] Returned:
    
     [debug] Running composer --working-dir=/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/plugins-3.x config prefer-stable true...
     [debug] Returned:
    
     [debug] Running composer --working-dir=/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies init --name=pantheon-systems/terminus-dependencies -n...
     [debug] Returned:
    
     [debug] Running composer --working-dir=/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies config minimum-stability dev...
     [debug] Returned:
    
     [debug] Running composer --working-dir=/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies config prefer-stable true...
     [debug] Returned:
    
     [debug] Running composer config -d /private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/plugins-3.x repositories...
     [debug] Returned:
    {"packagist.org":{"type":"composer","url":"https://repo.packagist.org"}}
    
     [debug] Running composer require -d /private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies composer/semver:3.3.2 consolidation/annotated-command:4.5.6 consolidation/comments:1.0.2 consolidation/config:2.1.1 consolidation/filter-via-dot-access-data:2.0.2 consolidation/log:2.1.1 consolidation/output-formatters:4.2.2 consolidation/robo:3.0.10 consolidation/self-update:2.0.5 consolidation/site-alias:3.1.5 czproject/git-php:v4.0.5 dflydev/dot-access-data:v3.0.1 grasmash/expander:2.0.3 guzzlehttp/guzzle:7.4.5 guzzlehttp/promises:1.5.1 guzzlehttp/psr7:2.4.0 justinrainbow/json-schema:5.2.12 league/container:3.4.1 monolog/monolog:2.8.0 nikic/php-parser:v4.14.0 psr/container:1.1.2 psr/event-dispatcher:1.0.0 psr/http-client:1.0.1 psr/http-factory:1.0.1 psr/http-message:1.0.1 psr/log:1.1.4 psy/psysh:v0.10.12 ralouphie/getallheaders:3.0.3 rogervila/array-diff-multidimensional:2.1.0 symfony/console:v5.4.11 symfony/deprecation-contracts:v2.5.2 symfony/event-dispatcher:v5.4.9 symfony/event-dispatcher-contracts:v2.5.2 symfony/filesystem:v5.4.11 symfony/finder:v5.4.11 symfony/polyfill-ctype:v1.26.0 symfony/polyfill-intl-grapheme:v1.26.0 symfony/polyfill-intl-normalizer:v1.26.0 symfony/polyfill-mbstring:v1.26.0 symfony/polyfill-php73:v1.26.0 symfony/polyfill-php80:v1.26.0 symfony/process:v5.4.11 symfony/service-contracts:v2.5.2 symfony/string:v5.4.11 symfony/var-dumper:v5.4.11 symfony/yaml:v5.4.11 twig/twig:v3.4.2...
     [debug] Returned:
    
     [error]  Error executing command "composer require -d /private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies composer/semver:3.3.2 consolidation/annotated-command:4.5.6 consolidation/comments:1.0.2 consolidation/config:2.1.1 consolidation/filter-via-dot-access-data:2.0.2 consolidation/log:2.1.1 consolidation/output-formatters:4.2.2 consolidation/robo:3.0.10 consolidation/self-update:2.0.5 consolidation/site-alias:3.1.5 czproject/git-php:v4.0.5 dflydev/dot-access-data:v3.0.1 grasmash/expander:2.0.3 guzzlehttp/guzzle:7.4.5 guzzlehttp/promises:1.5.1 guzzlehttp/psr7:2.4.0 justinrainbow/json-schema:5.2.12 league/container:3.4.1 monolog/monolog:2.8.0 nikic/php-parser:v4.14.0 psr/container:1.1.2 psr/event-dispatcher:1.0.0 psr/http-client:1.0.1 psr/http-factory:1.0.1 psr/http-message:1.0.1 psr/log:1.1.4 psy/psysh:v0.10.12 ralouphie/getallheaders:3.0.3 rogervila/array-diff-multidimensional:2.1.0 symfony/console:v5.4.11 symfony/deprecation-contracts:v2.5.2 symfony/event-dispatcher:v5.4.9 symfony/event-dispatcher-contracts:v2.5.2 symfony/filesystem:v5.4.11 symfony/finder:v5.4.11 symfony/polyfill-ctype:v1.26.0 symfony/polyfill-intl-grapheme:v1.26.0 symfony/polyfill-intl-normalizer:v1.26.0 symfony/polyfill-mbstring:v1.26.0 symfony/polyfill-php73:v1.26.0 symfony/polyfill-php80:v1.26.0 symfony/process:v5.4.11 symfony/service-contracts:v2.5.2 symfony/string:v5.4.11 symfony/var-dumper:v5.4.11 symfony/yaml:v5.4.11 twig/twig:v3.4.2": Changed CWD to /private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies
    Running 2.4.2 (2022-09-14 16:11:15) with PHP 8.1.11 on Darwin / 19.6.0
    Reading ./composer.json (/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies/composer.json)
    Loading config file /Users/salifutraore/.composer/auth.json
    Loading config file ./composer.json (/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies/composer.json)
    Checked CA file /usr/local/etc/ca-certificates/cert.pem: valid
    Executing command (/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies): 'git' 'branch' '-a' '--no-color' '--no-abbrev' '-v'
    Executing command (/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies): git describe --exact-match --tags
    Executing command (CWD): git --version
    Executing command (/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies): git log --pretty="%H" -n1 HEAD --no-show-signature
    Executing command (/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies): hg branch
    Executing command (/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies): fossil branch list
    Executing command (/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies): fossil tag list
    Executing command (/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies): svn info --xml
    Reading /Users/salifutraore/.composer/composer.json
    Loading config file /Users/salifutraore/.composer/auth.json
    Loading config file /Users/salifutraore/.composer/composer.json (/Users/salifutraore/.composer/composer.json)
    Loading config file /Users/salifutraore/.composer/auth.json
    Reading /Users/salifutraore/.composer/auth.json
    Reading /Users/salifutraore/.composer/vendor/composer/installed.json
    Loading plugin Dealerdirect\Composer\Plugin\Installers\PHPCodeSniffer\Plugin (from dealerdirect/phpcodesniffer-composer-installer, installed globally)
    ./composer.json has been updated
    Unloading plugin Dealerdirect\Composer\Plugin\Installers\PHPCodeSniffer\Plugin
    Reading ./composer.json (/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies/composer.json)
    Loading config file /Users/salifutraore/.composer/auth.json
    Loading config file ./composer.json (/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies/composer.json)
    Executing command (/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies): 'git' 'branch' '-a' '--no-color' '--no-abbrev' '-v'
    Executing command (/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies): git describe --exact-match --tags
    Executing command (/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies): git log --pretty="%H" -n1 HEAD --no-show-signature
    Executing command (/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies): hg branch
    Executing command (/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies): fossil branch list
    Executing command (/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies): fossil tag list
    Executing command (/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies): svn info --xml
    Reading /Users/salifutraore/.composer/composer.json
    Loading config file /Users/salifutraore/.composer/auth.json
    Loading config file /Users/salifutraore/.composer/composer.json (/Users/salifutraore/.composer/composer.json)
    Loading config file /Users/salifutraore/.composer/auth.json
    Reading /Users/salifutraore/.composer/auth.json
    Reading /Users/salifutraore/.composer/vendor/composer/installed.json
    Loading plugin Dealerdirect\Composer\Plugin\Installers\PHPCodeSniffer\Plugin_composer_tmp0 (from dealerdirect/phpcodesniffer-composer-installer, installed globally)
    Running composer update composer/semver consolidation/annotated-command consolidation/comments consolidation/config consolidation/filter-via-dot-access-data consolidation/log consolidation/output-formatters consolidation/robo consolidation/self-update consolidation/site-alias czproject/git-php dflydev/dot-access-data grasmash/expander guzzlehttp/guzzle guzzlehttp/promises guzzlehttp/psr7 justinrainbow/json-schema league/container monolog/monolog nikic/php-parser psr/container psr/event-dispatcher psr/http-client psr/http-factory psr/http-message psr/log psy/psysh ralouphie/getallheaders rogervila/array-diff-multidimensional symfony/console symfony/deprecation-contracts symfony/event-dispatcher symfony/event-dispatcher-contracts symfony/filesystem symfony/finder symfony/polyfill-ctype symfony/polyfill-intl-grapheme symfony/polyfill-intl-normalizer symfony/polyfill-mbstring symfony/polyfill-php73 symfony/polyfill-php80 symfony/process symfony/service-contracts symfony/string symfony/var-dumper symfony/yaml twig/twig
    Loading composer repositories with package information
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/packages.json from cache
    Downloading https://repo.packagist.org/packages.json if modified
    [304] https://repo.packagist.org/packages.json
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-composer~semver.json from cache
    Downloading https://repo.packagist.org/p2/composer/semver.json if modified
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-consolidation~annotated-command.json from cache
    Downloading https://repo.packagist.org/p2/consolidation/annotated-command.json if modified
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-consolidation~comments.json from cache
    Downloading https://repo.packagist.org/p2/consolidation/comments.json if modified
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-consolidation~config.json from cache
    Downloading https://repo.packagist.org/p2/consolidation/config.json if modified
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-consolidation~filter-via-dot-access-data.json from cache
    Downloading https://repo.packagist.org/p2/consolidation/filter-via-dot-access-data.json if modified
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-consolidation~log.json from cache
    Downloading https://repo.packagist.org/p2/consolidation/log.json if modified
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-consolidation~output-formatters.json from cache
    Downloading https://repo.packagist.org/p2/consolidation/output-formatters.json if modified
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-consolidation~robo.json from cache
    Downloading https://repo.packagist.org/p2/consolidation/robo.json if modified
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-consolidation~self-update.json from cache
    Downloading https://repo.packagist.org/p2/consolidation/self-update.json if modified
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-consolidation~site-alias.json from cache
    Downloading https://repo.packagist.org/p2/consolidation/site-alias.json if modified
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-czproject~git-php.json from cache
    Downloading https://repo.packagist.org/p2/czproject/git-php.json if modified
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-dflydev~dot-access-data.json from cache
    Downloading https://repo.packagist.org/p2/dflydev/dot-access-data.json if modified
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-grasmash~expander.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-guzzlehttp~guzzle.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-guzzlehttp~promises.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-guzzlehttp~psr7.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-justinrainbow~json-schema.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-league~container.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-monolog~monolog.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-nikic~php-parser.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-psr~container.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-psr~event-dispatcher.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-psr~http-client.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-psr~http-factory.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-psr~http-message.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-psr~log.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-psy~psysh.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-ralouphie~getallheaders.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-rogervila~array-diff-multidimensional.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~console.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~deprecation-contracts.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~event-dispatcher.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~event-dispatcher-contracts.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~filesystem.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~finder.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~polyfill-ctype.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~polyfill-intl-grapheme.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~polyfill-intl-normalizer.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~polyfill-mbstring.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~polyfill-php73.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~polyfill-php80.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~process.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~service-contracts.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~string.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~var-dumper.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~yaml.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-twig~twig.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-composer~semver~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-consolidation~annotated-command~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-consolidation~comments~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-consolidation~config~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-consolidation~filter-via-dot-access-data~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-consolidation~log~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-consolidation~output-formatters~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-consolidation~robo~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-consolidation~self-update~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-consolidation~site-alias~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-czproject~git-php~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-dflydev~dot-access-data~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-grasmash~expander~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-guzzlehttp~guzzle~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-guzzlehttp~promises~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-guzzlehttp~psr7~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-justinrainbow~json-schema~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-league~container~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-monolog~monolog~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-nikic~php-parser~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-psr~container~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-psr~event-dispatcher~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-psr~http-client~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-psr~http-factory~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-psr~http-message~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-psr~log~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-psy~psysh~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-ralouphie~getallheaders~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-rogervila~array-diff-multidimensional~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~console~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~deprecation-contracts~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~event-dispatcher~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~event-dispatcher-contracts~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~filesystem~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~finder~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~polyfill-ctype~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~polyfill-intl-grapheme~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~polyfill-intl-normalizer~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~polyfill-mbstring~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~polyfill-php73~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~polyfill-php80~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~process~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~service-contracts~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~string~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~var-dumper~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-symfony~yaml~dev.json from cache
    Reading /Users/salifutraore/Library/Caches/composer/repo/https---repo.packagist.org/provider-twig~twig~dev.json from cache
    [304] https://repo.packagist.org/p2/composer/semver.json
    [304] https://repo.packagist.org/p2/consolidation/annotated-command.json
    [304] https://repo.packagist.org/p2/consolidation/comments.json
    [304] https://repo.packagist.org/p2/consolidation/config.json
    [304] https://repo.packagist.org/p2/consolidation/filter-via-dot-access-data.json
    [304] https://repo.packagist.org/p2/consolidation/log.json
    [304] https://repo.packagist.org/p2/consolidation/output-formatters.json
    [304] https://repo.packagist.org/p2/consolidation/robo.json
    Downloading https://repo.packagist.org/p2/grasmash/expander.json if modified
    Downloading https://repo.packagist.org/p2/guzzlehttp/guzzle.json if modified
    Downloading https://repo.packagist.org/p2/guzzlehttp/promises.json if modified
    Downloading https://repo.packagist.org/p2/guzzlehttp/psr7.json if modified
    Downloading https://repo.packagist.org/p2/justinrainbow/json-schema.json if modified
    Downloading https://repo.packagist.org/p2/league/container.json if modified
    Downloading https://repo.packagist.org/p2/monolog/monolog.json if modified
    Downloading https://repo.packagist.org/p2/nikic/php-parser.json if modified
    [304] https://repo.packagist.org/p2/consolidation/self-update.json
    [304] https://repo.packagist.org/p2/consolidation/site-alias.json
    Downloading https://repo.packagist.org/p2/psr/container.json if modified
    Downloading https://repo.packagist.org/p2/psr/event-dispatcher.json if modified
    [304] https://repo.packagist.org/p2/czproject/git-php.json
    [304] https://repo.packagist.org/p2/dflydev/dot-access-data.json
    Downloading https://repo.packagist.org/p2/psr/http-client.json if modified
    Downloading https://repo.packagist.org/p2/psr/http-factory.json if modified
    [304] https://repo.packagist.org/p2/grasmash/expander.json
    [304] https://repo.packagist.org/p2/guzzlehttp/guzzle.json
    [304] https://repo.packagist.org/p2/guzzlehttp/promises.json
    [304] https://repo.packagist.org/p2/guzzlehttp/psr7.json
    [304] https://repo.packagist.org/p2/justinrainbow/json-schema.json
    [304] https://repo.packagist.org/p2/league/container.json
    [304] https://repo.packagist.org/p2/monolog/monolog.json
    [304] https://repo.packagist.org/p2/nikic/php-parser.json
    [304] https://repo.packagist.org/p2/psr/container.json
    [304] https://repo.packagist.org/p2/psr/event-dispatcher.json
    Downloading https://repo.packagist.org/p2/psr/http-message.json if modified
    Downloading https://repo.packagist.org/p2/psr/log.json if modified
    Downloading https://repo.packagist.org/p2/psy/psysh.json if modified
    Downloading https://repo.packagist.org/p2/ralouphie/getallheaders.json if modified
    Downloading https://repo.packagist.org/p2/rogervila/array-diff-multidimensional.json if modified
    Downloading https://repo.packagist.org/p2/symfony/console.json if modified
    Downloading https://repo.packagist.org/p2/symfony/deprecation-contracts.json if modified
    Downloading https://repo.packagist.org/p2/symfony/event-dispatcher.json if modified
    Downloading https://repo.packagist.org/p2/symfony/event-dispatcher-contracts.json if modified
    Downloading https://repo.packagist.org/p2/symfony/filesystem.json if modified
    [304] https://repo.packagist.org/p2/psr/http-client.json
    [304] https://repo.packagist.org/p2/psr/http-factory.json
    Downloading https://repo.packagist.org/p2/symfony/finder.json if modified
    Downloading https://repo.packagist.org/p2/symfony/polyfill-ctype.json if modified
    [304] https://repo.packagist.org/p2/psr/http-message.json
    [304] https://repo.packagist.org/p2/psr/log.json
    [304] https://repo.packagist.org/p2/psy/psysh.json
    [304] https://repo.packagist.org/p2/ralouphie/getallheaders.json
    [304] https://repo.packagist.org/p2/rogervila/array-diff-multidimensional.json
    Downloading https://repo.packagist.org/p2/symfony/polyfill-intl-grapheme.json if modified
    Downloading https://repo.packagist.org/p2/symfony/polyfill-intl-normalizer.json if modified
    Downloading https://repo.packagist.org/p2/symfony/polyfill-mbstring.json if modified
    Downloading https://repo.packagist.org/p2/symfony/polyfill-php73.json if modified
    Downloading https://repo.packagist.org/p2/symfony/polyfill-php80.json if modified
    [304] https://repo.packagist.org/p2/symfony/console.json
    [304] https://repo.packagist.org/p2/symfony/deprecation-contracts.json
    [304] https://repo.packagist.org/p2/symfony/event-dispatcher.json
    [304] https://repo.packagist.org/p2/symfony/event-dispatcher-contracts.json
    [304] https://repo.packagist.org/p2/symfony/filesystem.json
    Downloading https://repo.packagist.org/p2/symfony/process.json if modified
    Downloading https://repo.packagist.org/p2/symfony/service-contracts.json if modified
    Downloading https://repo.packagist.org/p2/symfony/string.json if modified
    Downloading https://repo.packagist.org/p2/symfony/var-dumper.json if modified
    Downloading https://repo.packagist.org/p2/symfony/yaml.json if modified
    [304] https://repo.packagist.org/p2/symfony/finder.json
    [304] https://repo.packagist.org/p2/symfony/polyfill-ctype.json
    [304] https://repo.packagist.org/p2/symfony/polyfill-intl-grapheme.json
    [304] https://repo.packagist.org/p2/symfony/polyfill-intl-normalizer.json
    [304] https://repo.packagist.org/p2/symfony/polyfill-mbstring.json
    [304] https://repo.packagist.org/p2/symfony/polyfill-php73.json
    [304] https://repo.packagist.org/p2/symfony/polyfill-php80.json
    Downloading https://repo.packagist.org/p2/twig/twig.json if modified
    Downloading https://repo.packagist.org/p2/composer/semver~dev.json if modified
    Downloading https://repo.packagist.org/p2/consolidation/annotated-command~dev.json if modified
    Downloading https://repo.packagist.org/p2/consolidation/comments~dev.json if modified
    Downloading https://repo.packagist.org/p2/consolidation/config~dev.json if modified
    Downloading https://repo.packagist.org/p2/consolidation/filter-via-dot-access-data~dev.json if modified
    Downloading https://repo.packagist.org/p2/consolidation/log~dev.json if modified
    [304] https://repo.packagist.org/p2/symfony/process.json
    [304] https://repo.packagist.org/p2/symfony/service-contracts.json
    [304] https://repo.packagist.org/p2/symfony/string.json
    [304] https://repo.packagist.org/p2/symfony/var-dumper.json
    [304] https://repo.packagist.org/p2/symfony/yaml.json
    Downloading https://repo.packagist.org/p2/consolidation/output-formatters~dev.json if modified
    Downloading https://repo.packagist.org/p2/consolidation/robo~dev.json if modified
    Downloading https://repo.packagist.org/p2/consolidation/self-update~dev.json if modified
    Downloading https://repo.packagist.org/p2/consolidation/site-alias~dev.json if modified
    Downloading https://repo.packagist.org/p2/czproject/git-php~dev.json if modified
    [304] https://repo.packagist.org/p2/twig/twig.json
    [304] https://repo.packagist.org/p2/composer/semver~dev.json
    [304] https://repo.packagist.org/p2/consolidation/annotated-command~dev.json
    [304] https://repo.packagist.org/p2/consolidation/comments~dev.json
    [304] https://repo.packagist.org/p2/consolidation/config~dev.json
    [304] https://repo.packagist.org/p2/consolidation/filter-via-dot-access-data~dev.json
    [304] https://repo.packagist.org/p2/consolidation/log~dev.json
    Downloading https://repo.packagist.org/p2/dflydev/dot-access-data~dev.json if modified
    Downloading https://repo.packagist.org/p2/grasmash/expander~dev.json if modified
    Downloading https://repo.packagist.org/p2/guzzlehttp/guzzle~dev.json if modified
    Downloading https://repo.packagist.org/p2/guzzlehttp/promises~dev.json if modified
    Downloading https://repo.packagist.org/p2/guzzlehttp/psr7~dev.json if modified
    Downloading https://repo.packagist.org/p2/justinrainbow/json-schema~dev.json if modified
    Downloading https://repo.packagist.org/p2/league/container~dev.json if modified
    [304] https://repo.packagist.org/p2/consolidation/output-formatters~dev.json
    [304] https://repo.packagist.org/p2/consolidation/robo~dev.json
    [304] https://repo.packagist.org/p2/consolidation/self-update~dev.json
    [304] https://repo.packagist.org/p2/consolidation/site-alias~dev.json
    [304] https://repo.packagist.org/p2/czproject/git-php~dev.json
    Downloading https://repo.packagist.org/p2/monolog/monolog~dev.json if modified
    Downloading https://repo.packagist.org/p2/nikic/php-parser~dev.json if modified
    Downloading https://repo.packagist.org/p2/psr/container~dev.json if modified
    Downloading https://repo.packagist.org/p2/psr/event-dispatcher~dev.json if modified
    Downloading https://repo.packagist.org/p2/psr/http-client~dev.json if modified
    [304] https://repo.packagist.org/p2/dflydev/dot-access-data~dev.json
    [304] https://repo.packagist.org/p2/grasmash/expander~dev.json
    [304] https://repo.packagist.org/p2/guzzlehttp/guzzle~dev.json
    [304] https://repo.packagist.org/p2/guzzlehttp/promises~dev.json
    [304] https://repo.packagist.org/p2/guzzlehttp/psr7~dev.json
    [304] https://repo.packagist.org/p2/justinrainbow/json-schema~dev.json
    [304] https://repo.packagist.org/p2/league/container~dev.json
    Downloading https://repo.packagist.org/p2/psr/http-factory~dev.json if modified
    Downloading https://repo.packagist.org/p2/psr/http-message~dev.json if modified
    Downloading https://repo.packagist.org/p2/psr/log~dev.json if modified
    Downloading https://repo.packagist.org/p2/psy/psysh~dev.json if modified
    Downloading https://repo.packagist.org/p2/ralouphie/getallheaders~dev.json if modified
    Downloading https://repo.packagist.org/p2/rogervila/array-diff-multidimensional~dev.json if modified
    Downloading https://repo.packagist.org/p2/symfony/console~dev.json if modified
    [304] https://repo.packagist.org/p2/monolog/monolog~dev.json
    [304] https://repo.packagist.org/p2/nikic/php-parser~dev.json
    Downloading https://repo.packagist.org/p2/symfony/deprecation-contracts~dev.json if modified
    Downloading https://repo.packagist.org/p2/symfony/event-dispatcher~dev.json if modified
    [304] https://repo.packagist.org/p2/psr/container~dev.json
    [304] https://repo.packagist.org/p2/psr/event-dispatcher~dev.json
    [304] https://repo.packagist.org/p2/psr/http-client~dev.json
    Downloading https://repo.packagist.org/p2/symfony/event-dispatcher-contracts~dev.json if modified
    Downloading https://repo.packagist.org/p2/symfony/filesystem~dev.json if modified
    Downloading https://repo.packagist.org/p2/symfony/finder~dev.json if modified
    [304] https://repo.packagist.org/p2/psr/http-factory~dev.json
    [304] https://repo.packagist.org/p2/psr/http-message~dev.json
    [304] https://repo.packagist.org/p2/psr/log~dev.json
    [304] https://repo.packagist.org/p2/psy/psysh~dev.json
    [304] https://repo.packagist.org/p2/ralouphie/getallheaders~dev.json
    [304] https://repo.packagist.org/p2/rogervila/array-diff-multidimensional~dev.json
    [304] https://repo.packagist.org/p2/symfony/console~dev.json
    Downloading https://repo.packagist.org/p2/symfony/polyfill-ctype~dev.json if modified
    Downloading https://repo.packagist.org/p2/symfony/polyfill-intl-grapheme~dev.json if modified
    Downloading https://repo.packagist.org/p2/symfony/polyfill-intl-normalizer~dev.json if modified
    Downloading https://repo.packagist.org/p2/symfony/polyfill-mbstring~dev.json if modified
    Downloading https://repo.packagist.org/p2/symfony/polyfill-php73~dev.json if modified
    Downloading https://repo.packagist.org/p2/symfony/polyfill-php80~dev.json if modified
    Downloading https://repo.packagist.org/p2/symfony/process~dev.json if modified
    [304] https://repo.packagist.org/p2/symfony/deprecation-contracts~dev.json
    [304] https://repo.packagist.org/p2/symfony/event-dispatcher~dev.json
    Downloading https://repo.packagist.org/p2/symfony/service-contracts~dev.json if modified
    Downloading https://repo.packagist.org/p2/symfony/string~dev.json if modified
    [304] https://repo.packagist.org/p2/symfony/event-dispatcher-contracts~dev.json
    Downloading https://repo.packagist.org/p2/symfony/var-dumper~dev.json if modified
    [304] https://repo.packagist.org/p2/symfony/filesystem~dev.json
    [304] https://repo.packagist.org/p2/symfony/finder~dev.json
    [304] https://repo.packagist.org/p2/symfony/polyfill-ctype~dev.json
    Downloading https://repo.packagist.org/p2/symfony/yaml~dev.json if modified
    Downloading https://repo.packagist.org/p2/twig/twig~dev.json if modified
    [304] https://repo.packagist.org/p2/symfony/polyfill-intl-grapheme~dev.json
    [304] https://repo.packagist.org/p2/symfony/polyfill-intl-normalizer~dev.json
    [304] https://repo.packagist.org/p2/symfony/polyfill-mbstring~dev.json
    [304] https://repo.packagist.org/p2/symfony/polyfill-php73~dev.json
    [304] https://repo.packagist.org/p2/symfony/polyfill-php80~dev.json
    [304] https://repo.packagist.org/p2/symfony/process~dev.json
    [304] https://repo.packagist.org/p2/symfony/service-contracts~dev.json
    [304] https://repo.packagist.org/p2/symfony/string~dev.json
    [304] https://repo.packagist.org/p2/symfony/var-dumper~dev.json
    [304] https://repo.packagist.org/p2/symfony/yaml~dev.json
    [304] https://repo.packagist.org/p2/twig/twig~dev.json
    Built pool.
    Running pool optimizer.
    Updating dependencies
    Generating rules
    Resolving dependencies through SAT
    Looking at all rules.
    
    Dependency resolution completed in 0.001 seconds
    Analyzed 143 packages to resolve dependencies
    Analyzed 269 rules to resolve dependencies
    Lock file operations: 47 installs, 0 updates, 0 removals
    Installs: consolidation/comments:1.0.2, dflydev/dot-access-data:v3.0.1, consolidation/filter-via-dot-access-data:2.0.2, symfony/polyfill-ctype:v1.26.0, symfony/deprecation-contracts:v2.5.2, symfony/yaml:v5.4.11, symfony/polyfill-php80:v1.26.0, symfony/process:v5.4.11, symfony/finder:v5.4.11, symfony/polyfill-mbstring:v1.26.0, symfony/filesystem:v5.4.11, psr/event-dispatcher:1.0.0, symfony/event-dispatcher-contracts:v2.5.2, symfony/event-dispatcher:v5.4.9, symfony/polyfill-intl-normalizer:v1.26.0, symfony/polyfill-intl-grapheme:v1.26.0, symfony/string:v5.4.11, psr/container:1.1.2, symfony/service-contracts:v2.5.2, symfony/polyfill-php73:v1.26.0, symfony/console:v5.4.11, league/container:3.4.1, composer/semver:3.3.2, consolidation/self-update:2.0.5, consolidation/output-formatters:4.2.2, psr/log:1.1.4, consolidation/log:2.1.1, grasmash/expander:2.0.3, consolidation/config:2.1.1, consolidation/annotated-command:4.5.6, consolidation/robo:3.0.10, consolidation/site-alias:3.1.5, czproject/git-php:v4.0.5, psr/http-message:1.0.1, psr/http-client:1.0.1, ralouphie/getallheaders:3.0.3, psr/http-factory:1.0.1, guzzlehttp/psr7:2.4.0, guzzlehttp/promises:1.5.1, guzzlehttp/guzzle:7.4.5, justinrainbow/json-schema:5.2.12, monolog/monolog:2.8.0, nikic/php-parser:v4.14.0, symfony/var-dumper:v5.4.11, psy/psysh:v0.10.12, rogervila/array-diff-multidimensional:2.1.0, twig/twig:v3.4.2
      - Locking composer/semver (3.3.2)
      - Locking consolidation/annotated-command (4.5.6)
      - Locking consolidation/comments (1.0.2)
      - Locking consolidation/config (2.1.1)
      - Locking consolidation/filter-via-dot-access-data (2.0.2)
      - Locking consolidation/log (2.1.1)
      - Locking consolidation/output-formatters (4.2.2)
      - Locking consolidation/robo (3.0.10)
      - Locking consolidation/self-update (2.0.5)
      - Locking consolidation/site-alias (3.1.5)
      - Locking czproject/git-php (v4.0.5)
      - Locking dflydev/dot-access-data (v3.0.1)
      - Locking grasmash/expander (2.0.3)
      - Locking guzzlehttp/guzzle (7.4.5)
      - Locking guzzlehttp/promises (1.5.1)
      - Locking guzzlehttp/psr7 (2.4.0)
      - Locking justinrainbow/json-schema (5.2.12)
      - Locking league/container (3.4.1)
      - Locking monolog/monolog (2.8.0)
      - Locking nikic/php-parser (v4.14.0)
      - Locking psr/container (1.1.2)
      - Locking psr/event-dispatcher (1.0.0)
      - Locking psr/http-client (1.0.1)
      - Locking psr/http-factory (1.0.1)
      - Locking psr/http-message (1.0.1)
      - Locking psr/log (1.1.4)
      - Locking psy/psysh (v0.10.12)
      - Locking ralouphie/getallheaders (3.0.3)
      - Locking rogervila/array-diff-multidimensional (2.1.0)
      - Locking symfony/console (v5.4.11)
      - Locking symfony/deprecation-contracts (v2.5.2)
      - Locking symfony/event-dispatcher (v5.4.9)
      - Locking symfony/event-dispatcher-contracts (v2.5.2)
      - Locking symfony/filesystem (v5.4.11)
      - Locking symfony/finder (v5.4.11)
      - Locking symfony/polyfill-ctype (v1.26.0)
      - Locking symfony/polyfill-intl-grapheme (v1.26.0)
      - Locking symfony/polyfill-intl-normalizer (v1.26.0)
      - Locking symfony/polyfill-mbstring (v1.26.0)
      - Locking symfony/polyfill-php73 (v1.26.0)
      - Locking symfony/polyfill-php80 (v1.26.0)
      - Locking symfony/process (v5.4.11)
      - Locking symfony/service-contracts (v2.5.2)
      - Locking symfony/string (v5.4.11)
      - Locking symfony/var-dumper (v5.4.11)
      - Locking symfony/yaml (v5.4.11)
      - Locking twig/twig (v3.4.2)
    Writing lock file
    Installing dependencies from lock file (including require-dev)
    Reading ./composer.lock (/private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies/composer.lock)
    Package operations: 47 installs, 0 updates, 0 removals
    Installs: consolidation/comments:1.0.2, dflydev/dot-access-data:v3.0.1, consolidation/filter-via-dot-access-data:2.0.2, symfony/polyfill-ctype:v1.26.0, symfony/deprecation-contracts:v2.5.2, symfony/yaml:v5.4.11, symfony/polyfill-php80:v1.26.0, symfony/process:v5.4.11, symfony/finder:v5.4.11, symfony/polyfill-mbstring:v1.26.0, symfony/filesystem:v5.4.11, psr/event-dispatcher:1.0.0, symfony/event-dispatcher-contracts:v2.5.2, symfony/event-dispatcher:v5.4.9, symfony/polyfill-intl-normalizer:v1.26.0, symfony/polyfill-intl-grapheme:v1.26.0, symfony/string:v5.4.11, psr/container:1.1.2, symfony/service-contracts:v2.5.2, symfony/polyfill-php73:v1.26.0, symfony/console:v5.4.11, league/container:3.4.1, composer/semver:3.3.2, consolidation/self-update:2.0.5, consolidation/output-formatters:4.2.2, psr/log:1.1.4, consolidation/log:2.1.1, grasmash/expander:2.0.3, consolidation/config:2.1.1, consolidation/annotated-command:4.5.6, consolidation/robo:3.0.10, consolidation/site-alias:3.1.5, czproject/git-php:v4.0.5, psr/http-message:1.0.1, psr/http-client:1.0.1, ralouphie/getallheaders:3.0.3, psr/http-factory:1.0.1, guzzlehttp/psr7:2.4.0, guzzlehttp/promises:1.5.1, guzzlehttp/guzzle:7.4.5, justinrainbow/json-schema:5.2.12, monolog/monolog:2.8.0, symfony/var-dumper:v5.4.11, nikic/php-parser:v4.14.0, psy/psysh:v0.10.12, rogervila/array-diff-multidimensional:2.1.0, twig/twig:v3.4.2
    Reading /Users/salifutraore/Library/Caches/composer/files/consolidation/comments/f0839969cf54f54f45c9902ae1b44808f13d4598.zip from cache
      - Loading consolidation/comments (1.0.2) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/dflydev/dot-access-data/3ac51859ad98df3ec223003fc8e4c2f751b54426.zip from cache
      - Loading dflydev/dot-access-data (v3.0.1) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/consolidation/filter-via-dot-access-data/15ef8555f765e8d678402c3c43b858650e686713.zip from cache
      - Loading consolidation/filter-via-dot-access-data (2.0.2) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/symfony/polyfill-ctype/81dd04d88f1f9151715ddca6520173db239a8db9.zip from cache
      - Loading symfony/polyfill-ctype (v1.26.0) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/symfony/deprecation-contracts/7901e5c1b07f210519f820a73a327361a010e87b.zip from cache
      - Loading symfony/deprecation-contracts (v2.5.2) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/symfony/yaml/b1a2d2eceb4cd966e3c5826b9cc0e4ea73083d62.zip from cache
      - Loading symfony/yaml (v5.4.11) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/symfony/polyfill-php80/88d0ad37590cd0c06a4c9545d82479c4f874e0d0.zip from cache
      - Loading symfony/polyfill-php80 (v1.26.0) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/symfony/process/6c7fd7b98670dbb939ef91441b44f1ffb31c1372.zip from cache
      - Loading symfony/process (v5.4.11) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/symfony/finder/20b9923ab8ac0aa0be50c88121314d49434987b4.zip from cache
      - Loading symfony/finder (v5.4.11) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/symfony/polyfill-mbstring/54165ccd6617b49a7c13c7ce6515c2f36a6ecec4.zip from cache
      - Loading symfony/polyfill-mbstring (v1.26.0) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/symfony/filesystem/ae7efa2609f5b90953daa3db72e09a4ebd64ef2c.zip from cache
      - Loading symfony/filesystem (v5.4.11) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/psr/event-dispatcher/8f60a8cd1b7ff4e8f9782d70d78dee877a526529.zip from cache
      - Loading psr/event-dispatcher (1.0.0) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/symfony/event-dispatcher-contracts/390a184a70acf9d01a5c527181a807a7caec0db8.zip from cache
      - Loading symfony/event-dispatcher-contracts (v2.5.2) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/symfony/event-dispatcher/5af10bd43d0459850555e5a5aabbfc710ddfbb2b.zip from cache
      - Loading symfony/event-dispatcher (v5.4.9) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/symfony/polyfill-intl-normalizer/4eef99810616b77605bb089d8dfd1f79ebf9b434.zip from cache
      - Loading symfony/polyfill-intl-normalizer (v1.26.0) from cache
      - Downloading symfony/polyfill-intl-grapheme (v1.26.0)
    Using GitHub token authentication
    Downloading https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2
      - Downloading symfony/string (v5.4.11)
    Downloading https://api.github.com/repos/symfony/string/zipball/5eb661e49ad389e4ae2b6e4df8d783a8a6548322
    Reading /Users/salifutraore/Library/Caches/composer/files/psr/container/c7b72f2e0f05d2f90784a26bd6061183617518f5.zip from cache
      - Loading psr/container (1.1.2) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/symfony/service-contracts/7eaa59375569220e7c3f20dec665053292d31683.zip from cache
      - Loading symfony/service-contracts (v2.5.2) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/symfony/polyfill-php73/e9f3cb5a1b380103827f2240b4cb74700fa09411.zip from cache
      - Loading symfony/polyfill-php73 (v1.26.0) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/symfony/console/f584b50193599dff5e8d58e0157d6059197d235a.zip from cache
      - Loading symfony/console (v5.4.11) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/league/container/a49931544c8799abcb3c9d68477989f754055be2.zip from cache
      - Loading league/container (3.4.1) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/composer/semver/29fa63f52104d4c4bf687735fbaaf52f0a232c4b.zip from cache
      - Loading composer/semver (3.3.2) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/consolidation/self-update/f8599efd125e3bde80d502a52659ecea17b2b5a5.zip from cache
      - Loading consolidation/self-update (2.0.5) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/consolidation/output-formatters/9c15b1232e4050fbedc45de9800541de0150cc12.zip from cache
      - Loading consolidation/output-formatters (4.2.2) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/psr/log/73bdffd901b564d0a2f7244baecb66a2572fcfc4.zip from cache
      - Loading psr/log (1.1.4) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/consolidation/log/54918f15a5fe2101ed58b1fe9a3f9cecf9cd39fb.zip from cache
      - Loading consolidation/log (2.1.1) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/grasmash/expander/55e52e731524902b35a9fc347a05dbdf03bd5d3b.zip from cache
      - Loading grasmash/expander (2.0.3) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/consolidation/config/a9cdd2dfa24cf1cd3dd1a9835fc7cef58b7419d1.zip from cache
      - Loading consolidation/config (2.1.1) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/consolidation/annotated-command/2ea0553f3b73aa3a5b38f3554924d6ddece513e9.zip from cache
      - Loading consolidation/annotated-command (4.5.6) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/consolidation/robo/3e166b10b9d0520ec872a7e93ae14354db8c588b.zip from cache
      - Loading consolidation/robo (3.0.10) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/consolidation/site-alias/f20441808c61bad1c04fa8528c2417802fa53204.zip from cache
      - Loading consolidation/site-alias (3.1.5) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/czproject/git-php/7990f59b77b988c2205125e83f4c2e09175f05b0.zip from cache
      - Loading czproject/git-php (v4.0.5) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/psr/http-message/cc1d4e9ee13f2053b80c08976256789bf3be5256.zip from cache
      - Loading psr/http-message (1.0.1) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/psr/http-client/9ef0ac1a0bb8280477e24c9232fac374ed3024ac.zip from cache
      - Loading psr/http-client (1.0.1) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/ralouphie/getallheaders/ddc5f4c7ab3d868f5060717336a0d93475d53175.zip from cache
      - Loading ralouphie/getallheaders (3.0.3) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/psr/http-factory/554dafa2f4680a78fa693cedcbe62bc6873809db.zip from cache
      - Loading psr/http-factory (1.0.1) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/guzzlehttp/psr7/cc2081f4cf4c959d41c5a47de4e9f9d07a30eb72.zip from cache
      - Loading guzzlehttp/psr7 (2.4.0) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/guzzlehttp/promises/4387746adaf4b82103267bd305f9cd3e1e2e56be.zip from cache
      - Loading guzzlehttp/promises (1.5.1) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/guzzlehttp/guzzle/9da1e87c4f53511b26348053d976ca5661f04b27.zip from cache
      - Loading guzzlehttp/guzzle (7.4.5) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/justinrainbow/json-schema/c2d14f6e9cc1bf9733252d0613fce004f531279b.zip from cache
      - Loading justinrainbow/json-schema (5.2.12) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/monolog/monolog/8be15cb4c5912b19f2b030398fe4b7c51e6d3b5a.zip from cache
      - Loading monolog/monolog (2.8.0) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/symfony/var-dumper/f81f3b3aeae54f81fc3befba3549385906abb93a.zip from cache
      - Loading symfony/var-dumper (v5.4.11) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/nikic/php-parser/8eaff525be82522f19fba8ffb0e035e0241cc815.zip from cache
      - Loading nikic/php-parser (v4.14.0) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/psy/psysh/8ec23e5af71dfa682cb2304a13172f649c733998.zip from cache
      - Loading psy/psysh (v0.10.12) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/rogervila/array-diff-multidimensional/009dced6228d2dc053b0bfae66b82bad3345bc99.zip from cache
      - Loading rogervila/array-diff-multidimensional (2.1.0) from cache
    Reading /Users/salifutraore/Library/Caches/composer/files/twig/twig/3a2c5038c55b5d6fdea07426f31fd513ac03c327.zip from cache
      - Loading twig/twig (v3.4.2) from cache
    [302] https://api.github.com/repos/symfony/polyfill-intl-grapheme/zipball/433d05519ce6990bf3530fba6957499d327395c2
    Following redirect (1) https://codeload.github.com/symfony/polyfill-intl-grapheme/legacy.zip/433d05519ce6990bf3530fba6957499d327395c2
    [302] https://api.github.com/repos/symfony/string/zipball/5eb661e49ad389e4ae2b6e4df8d783a8a6548322
    Following redirect (1) https://codeload.github.com/symfony/string/legacy.zip/5eb661e49ad389e4ae2b6e4df8d783a8a6548322
    [200] https://codeload.github.com/symfony/polyfill-intl-grapheme/legacy.zip/433d05519ce6990bf3530fba6957499d327395c2
    Writing /Users/salifutraore/Library/Caches/composer/files/symfony/polyfill-intl-grapheme/d3a40f7624005537657f7b2390e399d9892be5cd.zip into cache from /private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies/vendor/composer/tmp-3071d91b24feadeb255944c37333d305
    [200] https://codeload.github.com/symfony/string/legacy.zip/5eb661e49ad389e4ae2b6e4df8d783a8a6548322
    Writing /Users/salifutraore/Library/Caches/composer/files/symfony/string/2a7f0b698f41c710fca0173642668366ee0ce42e.zip into cache from /private/var/folders/5q/qxy6vp2d1rsgjjm3_3r41kkm0000gn/T/terminusbek2qe/terminus-dependencies/vendor/composer/tmp-ee0dca1ce6437710c9e4d84dff1a799f
    
    In Cache.php line 191:
                                                                                   
      [ErrorException]                                                             
      copy(/Users/salifutraore/Library/Caches/composer/files/symfony/polyfill-int  
      l-grapheme/d3a40f7624005537657f7b2390e399d9892be5cd.zip): Failed to open st  
      ream: Permission denied                                                      
                                                                                   
    
    Exception trace:
      at phar:///usr/local/bin/composer/src/Composer/Cache.php:191
     Composer\Util\ErrorHandler::handle() at n/a:n/a
     copy() at phar:///usr/local/bin/composer/src/Composer/Cache.php:191
     Composer\Cache->copyFrom() at phar:///usr/local/bin/composer/src/Composer/Downloader/FileDownloader.php:228
     Composer\Downloader\FileDownloader->Composer\Downloader\{closure}() at phar:///usr/local/bin/composer/vendor/react/promise/src/FulfilledPromise.php:28
     React\Promise\FulfilledPromise->then() at phar:///usr/local/bin/composer/vendor/react/promise/src/Promise.php:134
     React\Promise\Promise::React\Promise\{closure}() at phar:///usr/local/bin/composer/vendor/react/promise/src/Promise.php:168
     React\Promise\Promise->settle() at phar:///usr/local/bin/composer/vendor/react/promise/src/Promise.php:231
     React\Promise\Promise::React\Promise\{closure}() at phar:///usr/local/bin/composer/vendor/react/promise/src/FulfilledPromise.php:42
     React\Promise\FulfilledPromise->done() at phar:///usr/local/bin/composer/vendor/react/promise/src/Promise.php:135
     React\Promise\Promise::React\Promise\{closure}() at phar:///usr/local/bin/composer/vendor/react/promise/src/Promise.php:168
     React\Promise\Promise->settle() at phar:///usr/local/bin/composer/vendor/react/promise/src/Promise.php:231
     React\Promise\Promise::React\Promise\{closure}() at phar:///usr/local/bin/composer/src/Composer/Util/Http/CurlDownloader.php:438
     Composer\Util\Http\CurlDownloader->tick() at phar:///usr/local/bin/composer/src/Composer/Util/HttpDownloader.php:371
     Composer\Util\HttpDownloader->countActiveJobs() at phar:///usr/local/bin/composer/src/Composer/Util/Loop.php:89
     Composer\Util\Loop->wait() at phar:///usr/local/bin/composer/src/Composer/Installer/InstallationManager.php:444
     Composer\Installer\InstallationManager->waitOnPromises() at phar:///usr/local/bin/composer/src/Composer/Installer/InstallationManager.php:306
     Composer\Installer\InstallationManager->downloadAndExecuteBatch() at phar:///usr/local/bin/composer/src/Composer/Installer/InstallationManager.php:242
     Composer\Installer\InstallationManager->execute() at phar:///usr/local/bin/composer/src/Composer/Installer.php:786
     Composer\Installer->doInstall() at phar:///usr/local/bin/composer/src/Composer/Installer.php:616
     Composer\Installer->doUpdate() at phar:///usr/local/bin/composer/src/Composer/Installer.php:281
     Composer\Installer->run() at phar:///usr/local/bin/composer/src/Composer/Command/RequireCommand.php:467
     Composer\Command\RequireCommand->doUpdate() at phar:///usr/local/bin/composer/src/Composer/Command/RequireCommand.php:330
     Composer\Command\RequireCommand->execute() at phar:///usr/local/bin/composer/vendor/symfony/console/Command/Command.php:298
     Symfony\Component\Console\Command\Command->run() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:1028
     Symfony\Component\Console\Application->doRunCommand() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:299
     Symfony\Component\Console\Application->doRun() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:370
     Composer\Console\Application->doRun() at phar:///usr/local/bin/composer/vendor/symfony/console/Application.php:171
     Symfony\Component\Console\Application->run() at phar:///usr/local/bin/composer/src/Composer/Console/Application.php:138
     Composer\Console\Application->run() at phar:///usr/local/bin/composer/bin/composer:88
     require() at /usr/local/bin/composer:29
    
    require [--dev] [--dry-run] [--prefer-source] [--prefer-dist] [--prefer-install PREFER-INSTALL] [--fixed] [--no-suggest] [--no-progress] [--no-update] [--no-install] [--no-audit] [--audit-format AUDIT-FORMAT] [--update-no-dev] [-w|--update-with-dependencies] [-W|--update-with-all-dependencies] [--with-dependencies] [--with-all-dependencies] [--ignore-platform-req IGNORE-PLATFORM-REQ] [--ignore-platform-reqs] [--prefer-stable] [--prefer-lowest] [--sort-packages] [-o|--optimize-autoloader] [-a|--classmap-authoritative] [--apcu-autoloader] [--apcu-autoloader-prefix APCU-AUTOLOADER-PREFIX] [--] [<packages>...]```
    opened by SalifT 1
  • Usage of import:site to recover from Pantheon backup

    Usage of import:site to recover from Pantheon backup

    terminus import:site --help does not explain what contents are expected in the site archive at url

    I could find this archive in the tests https://dev-site-archive-d7.pantheonsite.io/sites/default/files/site-archive-d7.tar.g

    Is it safe to assume that this expects the web root including a pantheon.sql file?

    If this was to be used to recover from a backup, it would be more useful to specify urls for db, code and files.

    opened by miiimooo 1
  • PHP 8.2 support

    PHP 8.2 support

    Platform

    ( ) MacOS ( x) Linux ( ) Winderz

    Installed Via

    ( ) Homebrew ( ) Apt Package ( X) Manually

    PHP Version

    ( ) 7.4x ( ) 8.0 ( ) 8.1 (x) 8.2

    Command Executed

    Installing terminus, then installing secrets and rsync plugin fall on their face:

    Deprecated: Creation of dynamic property Consolidation\AnnotatedCommand\Parser\Internal\BespokeDocBlockParser::$commandInfo is deprecated in phar:///var/www/html/terminus/vendor/consolidation/annotated-command/src/Parser/Internal/BespokeDocBlockParser.php on line 35
    
    Deprecated: Creation of dynamic property Consolidation\AnnotatedCommand\Parser\Internal\BespokeDocBlockParser::$reflection is deprecated in phar:///var/www/html/terminus/vendor/consolidation/annotated-command/src/Parser/Internal/BespokeDocBlockParser.php on line 36
    
      curl -L https://github.com/pantheon-systems/terminus/releases/download/3.0.7/terminus.phar --output terminus\
      && chmod 755 terminus \
      && ./terminus self-update \
      && mv terminus /usr/local/bin/terminus \
      && terminus self:plugin:install terminus-secrets-plugin \
      && terminus self:plugin:install terminus-rsync-plugin
    

    Expected behavior

    I'm trying to get terminus to install on PHP 8.2, which just went ~beta2~RC01 recently.

    Actual behavior

    If your issue is with a command not working, please run the command again with the -vvv option (--debug in 0.x) and copy everything from the command down to the next prompt and paste it here between a pair of ``` marks.

    opened by heddn 4
  • New Feature Request:  Retrieving Let's Encrypt Domain Validation DNS TXT Name and Value using Terminus

    New Feature Request: Retrieving Let's Encrypt Domain Validation DNS TXT Name and Value using Terminus

    Platform

    ( ) MacOS (x) Linux ( ) Winderz

    Installed Via

    ( ) Homebrew ( ) Apt Package (x) Manually

    PHP Version

    (x) 7.4x ( ) 8.0 ( ) 8.1

    Command Executed

    None - New feature request

    Expected behavior

    None - New feature request

    Actual behavior

    None - New feature request

    Hello,

    I am provisioning new Pantheon sites using Terminus. Part of the provisioning is using the 'terminus domain:dns' comand to retrieve a site environment's DNS information and entering that into our institution's DNS system. I'd also like to be able to retrieve the site environment's Let's Encrypt domain validation DNS TXT name and value, so I can enter that into our DNS system, as well. This information is available from the Pantheon Dashboard via a URL of the form

    https://dashboard.pantheon.io/sites/{site_id}#{env}/DomainsHTTPS/ownership/{custom_hostname}

    I'd be glad to write a plug-in for this, once an appropriate Terminus API endpoint is available to pull the information.

    Thanks, Keith

    opened by folsomke 2
Releases(3.1.2)
  • 3.1.2(Jan 3, 2023)

  • 3.1.1(Nov 8, 2022)

    Changed

    • Update plan:set docs to sku instead of id (#2407)

    Fixed

    • Remove Kint from terminus (#2405)
    • Site:org:add should not need user org membership if a label is provided (#2404)
    • Look for status code in ssh-key:add response (#2406)
    Source code(tar.gz)
    Source code(zip)
    terminus.phar(9.37 MB)
  • 3.1.0(Oct 18, 2022)

  • 3.0.9(Oct 6, 2022)

    Changed

    • Verbose option description to make it clearer (#2383)

    Fixed

    • Terminus plugin manager composer commands should not be affected by current directory (#2386)
    • Omit reload warning if running reload command (#2388)
    • Deprecation warnings on PHP 8.1 (#2391)
    Source code(tar.gz)
    Source code(zip)
    terminus.phar(9.01 MB)
  • 3.0.8(Aug 22, 2022)

    Changed

    • Install plugins can now be done from git url (#2362)

    Fixed

    • Make sure local:clone gets the right branch (#2375)
    • Plugin update should work without args or with 'all' args (#2369)
    • Make backup:restore command work with element = all (#2381)
    Source code(tar.gz)
    Source code(zip)
    terminus.phar(9.00 MB)
  • 3.0.7(Mar 29, 2022)

    Changed

    • Change alias for local:commitAndPush to lcp to avoid aliases conflict (#2341)
    • Make framework value more human friendly for site:info command (#2351)

    Fixed

    • Check upstream updates before getting upstream status to get composer updates info (#2349)
    • Fix bug that didn't allow merging a multidev env with only numbers in the name (#2350)
    Source code(tar.gz)
    Source code(zip)
    terminus.phar(9.00 MB)
  • 3.0.6(Feb 18, 2022)

  • 3.0.5(Feb 8, 2022)

    Added

    • Added the --element usage for backup:create (#2317)
    • Add GitHub Pull Request Template and move Issue Template (#2325)

    Changed

    • Replace git:// urls with https:// urls (#2319)

    Fixed

    • Fix bug where site:list was unable to properly filter by tags when part of site team (#2316)
    • Fix bug where --simulate option was being ignored (#2321)
    • Fix bug where site:delete command always fails (#2324)
    • Fix bug where self:update reports it only works with the phar version of Terminus (#2328)
    Source code(tar.gz)
    Source code(zip)
    terminus.phar(7.03 MB)
  • 2.6.6(Feb 8, 2022)

  • 3.0.4(Jan 18, 2022)

    Added

    • Added self:plugin:migrate command (#2299)
    • Add php 8.1 support (#2295)

    Changed

    • Set memory limit with ini_set() rather than /usr/bin/env -S (#2303)
    • Optimize Terminus phar build (#2307)
    • Do not require composer/composer as a direct dependency of Terminus (#2308)
    • Avoid dependency on ext-curl in Terminus (#2310)
    • Improve error verbosity in Sites::get() (#2311)
    • Retry API request on "Connection refused" and "Operation timed out" errors (#2313)

    Fixed

    • self:update command should now work when plugins have been installed (#2297)
    • Fix filestore scandir problem (#2309)
    Source code(tar.gz)
    Source code(zip)
    terminus.phar(7.03 MB)
  • 3.0.3(Dec 18, 2021)

  • 3.0.2(Dec 17, 2021)

    Added

    • Add aliases for Terminus plugin commands (#2274)
    • Add PHP 8.1 support (#2284)

    Changed

    • Allow upstream:updates:apply to default to dev environment if no environment explicitly provided (#2282)

    Fixed

    • Change env:wake to use https on the platform domain (#2283)
    • Minor fixup to help output of dashboard:view and self:console (#2277)
    Source code(tar.gz)
    Source code(zip)
    terminus.phar(29.15 MB)
  • 2.6.5(Dec 17, 2021)

  • 3.0.1(Dec 8, 2021)

  • 3.0.0(Dec 8, 2021)

    Added

    • Look up host for 'terminus drush' / 'terminus wp' commands via an alternate nameserver, if selected (#2253)
    • Typehint param and return value in lookupHostViaAlternateNameserver (#2253)
    • Symfony Library updates (5.x)
    • Adds plugin manager, contributed by Ed Reel (#2054)
      • New command self:plugin:install to install Terminus plugins.
      • New command self:plugin:list to list installed Terminus plugins.
      • New command self:plugin:search to locate Terminus plugins to install.
      • New command self:plugin:uninstall to uninstall Terminus plugins.
      • New command self:plugin:update to update already-installed Terminus plugins.

    Changed

    • Update auth:login command so that to not produce a false negative on successful login (#2231)
    • Update CODEOWNERS per 2.x branch (#2243)
    • Update composer dependencies version variable in post-update script (#2239)
    • Update phar builder and package dependencies (#2255)
    • Show dependencies warning if folder does not exist (#2239)
    • Implement cleanupOldDependenciesFolders function after running dependencies update (#2239)
    • Update terminusPluginsDependenciesVersion var comment (#2239)
    • Update warning message text (#2239)
    • Print warning only if terminus has plugins (#2239)
    • Improve hasPlugins, factory, and cleanupOldDependenciesFolders functions (#2239)
    • Return json_decode as array (#2239)
    • Restore openUrl function from LocalMachineHelper (#2248)
    • Draft debian linux packaging (#2255, #2238)
    • Update version compatibility check and messaging (#2267)

    Removed

    • Remove code related to D9ify (#2246)

    Fixed

    • Fix SavedTokens::getData() on auth:login (#2231)
    • Fix failing SSHKeyCommandsTest (#2231)
    • Fix fatal error in Environment::cacheserverConnectionInfo() (#2242)
    • Fix issue with Phar builder as well as DEB dependencies (#2255)
    • Fix coding standards (#2239)
    Source code(tar.gz)
    Source code(zip)
    terminus(29.11 MB)
  • 2.6.4(Dec 8, 2021)

  • 3.0.0-beta1(Oct 18, 2021)

    Added

    • D9ify command (see docs)
    • Symfony Library updates (5.x)
    • Adds plugin manager, contributed by Ed Reel (#2054)
      • New command self:plugin:install to install Terminus plugins.
      • New command self:plugin:list to list installed Terminus plugins.
      • New command self:plugin:search to locate Terminus plugins to install.
      • New command self:plugin:uninstall to uninstall Terminus plugins.
      • New command self:plugin:update to update already-installed Terminus plugins.
    Source code(tar.gz)
    Source code(zip)
    terminus(29.28 MB)
  • 2.6.2(Oct 18, 2021)

  • 2.6.1(Aug 4, 2021)

  • 3.0.0-alpha8(Jul 7, 2021)

  • 3.0.0-alpha7(Jul 7, 2021)

  • 3.0.0-alpha6(Jun 21, 2021)

  • 3.0-alpha5(Jun 21, 2021)

  • 3.0.0-alpha4(Jun 21, 2021)

  • v3.0.0-alpha3(Jun 21, 2021)

  • 3.0.0-alpha2(Jun 21, 2021)

  • testtag(Jun 21, 2021)

  • testrelease3(Jun 21, 2021)

  • testrelease2(Jun 21, 2021)

  • testrelease(Jun 21, 2021)

Owner
Pantheon
The WebOps platform where marketers and developers drive results
Pantheon
Engine for performing and rendering text diffs

Text_Diff Engine for performing and rendering text diffs This package provides a text-based diff engine and renderers for multiple diff output formats

PEAR - PHP Extension and Application Repository 15 Jan 4, 2022
PHP Text Analysis is a library for performing Information Retrieval (IR) and Natural Language Processing (NLP) tasks using the PHP language

php-text-analysis PHP Text Analysis is a library for performing Information Retrieval (IR) and Natural Language Processing (NLP) tasks using the PHP l

null 464 Dec 28, 2022
A back-off strategy interface for retrying operations.

EventSauce BackOff This library provides an interface for encapsulated back-off strategies. composer require eventsauce/backoff Leveraging the back-of

EventSauce 59 Dec 19, 2022
Simplifies GST calculation and operations

Simplifies GST calculation and operations Installation You can install the package via composer: composer require gaurangsharma/gst-calculator Usage u

Gaurang Sharma 1 Oct 21, 2021
Learning about - Basic HTML & CSS, JSON, XML, Session & Cookies, CRUD Operations in Php using MySQL and Create MVC from scratch

This Project is based on course CSC 3215. Learning about - Basic HTML & CSS, JSON, XML, Session & Cookies, CRUD Operations in Php using MySQL and Create MVC (Model–View–Controller) from scratch. Just learning about web technologies, Not focusing on UI (Bootstrap or other 3rd-Party UI libraries or frameworks).

Alvi Hasan 5 Sep 21, 2022
StringBuffer is a PHP class providing operations for efficient string buffering

StringBuffer is a PHP class providing operations for efficient string buffering

null 1 May 26, 2022
The plugin allows to execute math operations in the server or console.

General The plugin allows to execute math operations in the server or console with /calculator command Arithmetic Operators List of supported arithmet

NhanAZ's PocketMine-MP Plugins 3 Oct 20, 2022
Pat eu cookies law - 🌝 EU Cookie Law Compliance: A Textpattern plugin (or standalone script) for Third-Party Cookies (RGPD compliance)

pat_eu_cookies_law EU Cookie Law Compliance: A Textpattern plugin (or a standalone script) for Third-Party Cookies. A simple solution that respects th

Patrick LEFEVRE 3 Aug 16, 2020
A simple, standalone, modern PHP class inspector and mapper library, wrapping PHPs native reflection in a fluent interface

A simple, standalone, modern PHP class inspector and mapper library, wrapping PHPs native reflection in a fluent interface.

smpl 9 Sep 1, 2022
A standalone Amazon S3 (REST) client for PHP 5/CURL

Amazon S3 PHP Class Usage OO method (e,g; $s3->getObject(...)): $s3 = new S3($awsAccessKey, $awsSecretKey); Statically (e,g; S3::getObject(...)): S3::

Donovan Schönknecht 1k Jan 3, 2023
PHP Standalone Validation Library

Rakit Validation - PHP Standalone Validation Library PHP Standalone library for validating data. Inspired by Illuminate\Validation Laravel. Features A

Rakit Lab 727 Dec 30, 2022
Easy to use utility functions for everyday PHP projects. This is a port of the Lodash JS library to PHP

Lodash-PHP Lodash-PHP is a port of the Lodash JS library to PHP. It is a set of easy to use utility functions for everyday PHP projects. Lodash-PHP tr

Lodash PHP 474 Dec 31, 2022
Utility that helps you switch git configurations with ease.

git-profile Utility that helps you switch git configurations with ease Preface It is possible that you have multiple git configurations. For example:

Zeeshan Ahmad 240 Jul 18, 2022
[READ-ONLY] CakePHP Utility classes such as Inflector, Text, Hash, Security and Xml. This repo is a split of the main code that can be found in https://github.com/cakephp/cakephp

CakePHP Utility Classes This library provides a range of utility classes that are used throughout the CakePHP framework What's in the toolbox? Hash A

CakePHP 112 Feb 15, 2022
Small utility library that handles metadata minification and expansion.

composer/metadata-minifier Small utility library that handles metadata minification and expansion.

Composer 134 Dec 26, 2022
A utility package that helps inspect functions in PHP.

A utility package that helps inspect functions in PHP. This package provides some utilities for inspecting functions (callables) in PHP. You can use i

Ryan Chandler 14 May 24, 2022
m4b-tool is a command line utility to merge, split and chapterize audiobook files such as mp3, ogg, flac, m4a or m4b

m4b-tool m4b-tool is a is a wrapper for ffmpeg and mp4v2 to merge, split or and manipulate audiobook files with chapters. Although m4b-tool is designe

Andreas 798 Jan 8, 2023
Php-timer - Utility class for timing

phpunit/php-timer Utility class for timing things, factored out of PHPUnit into a stand-alone component. Installation You can add this library as a lo

Sebastian Bergmann 7.4k Jan 5, 2023
Xr - Lightweight debug server utility built on ReactPHP.

XR ?? Subscribe to the newsletter to don't miss any update regarding Chevere. XR is a dump server utility built on top of ReactPHP. Features ✨ Dump si

Chevere 195 Dec 17, 2022