Hello community, here is the log from the commit of package platformsh-cli for openSUSE:Factory checked in at 2017-08-16 16:18:36 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/platformsh-cli (Old) and /work/SRC/openSUSE:Factory/.platformsh-cli.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "platformsh-cli" Wed Aug 16 16:18:36 2017 rev:16 rq:516933 version:3.20.0 Changes: -------- --- /work/SRC/openSUSE:Factory/platformsh-cli/platformsh-cli.changes 2017-07-27 11:13:45.400652654 +0200 +++ /work/SRC/openSUSE:Factory/.platformsh-cli.new/platformsh-cli.changes 2017-08-16 16:18:45.422907840 +0200 @@ -1,0 +2,30 @@ +Mon Aug 14 21:33:03 UTC 2017 - [email protected] + +- Update to version 3.20.0: + * Switch to SHA-256 for file verification + * Installer: remove BC code + * Add pricing URL in create command + * Add build_pull_requests_post_merge for github integrations (#612) + * Clarify user:delete command (issue #615) + * Alias --no-wait to -W + * Add "health" integration types + * Add summary format for health integrations + * Match partial integration IDs + * Unused import + * Inspection tweaks + * Avoid re-initializing application/command in CompletionCommand + * Release v3.20.0 + +------------------------------------------------------------------- +Fri Aug 11 18:41:37 UTC 2017 - [email protected] + +- Update to version 3.19.1: + * Populate project, environment, and app from environment variables where possible (#610) + * Push command: do not activate by default in non-interactive mode + * Travis update: add 7.2, fix hhvm build + * Fix app choice for inactive environments + * Sort routes choice in route:get + * Add SHA-256 info in build command + * Release v3.19.1 + +------------------------------------------------------------------- Old: ---- platformsh-cli-3.19.0.tar.xz New: ---- platformsh-cli-3.20.0.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ platformsh-cli.spec ++++++ --- /var/tmp/diff_new_pack.lRFbxb/_old 2017-08-16 16:18:46.262789948 +0200 +++ /var/tmp/diff_new_pack.lRFbxb/_new 2017-08-16 16:18:46.270788825 +0200 @@ -17,7 +17,7 @@ Name: platformsh-cli -Version: 3.19.0 +Version: 3.20.0 Release: 0 Summary: Tool for managing Platform.sh services from the command line # See licenses.txt for dependency licenses. ++++++ _service ++++++ --- /var/tmp/diff_new_pack.lRFbxb/_old 2017-08-16 16:18:46.314782649 +0200 +++ /var/tmp/diff_new_pack.lRFbxb/_new 2017-08-16 16:18:46.314782649 +0200 @@ -2,7 +2,7 @@ <service name="tar_scm" mode="disabled"> <param name="versionformat">@PARENT_TAG@</param> <param name="versionrewrite-pattern">v(.*)</param> - <param name="revision">refs/tags/v3.19.0</param> + <param name="revision">refs/tags/v3.20.0</param> <param name="url">git://github.com/platformsh/platformsh-cli.git</param> <param name="scm">git</param> <param name="changesgenerate">enable</param> ++++++ _servicedata ++++++ --- /var/tmp/diff_new_pack.lRFbxb/_old 2017-08-16 16:18:46.350777597 +0200 +++ /var/tmp/diff_new_pack.lRFbxb/_new 2017-08-16 16:18:46.350777597 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">git://github.com/platformsh/platformsh-cli.git</param> - <param name="changesrevision">8608f91adb3f1f721a9ff418aa27276c718f68eb</param> + <param name="changesrevision">48241718f7d61b41206871f8f0a13bea2e341181</param> </service> </servicedata> ++++++ licenses.txt ++++++ --- /var/tmp/diff_new_pack.lRFbxb/_old 2017-08-16 16:18:46.406769738 +0200 +++ /var/tmp/diff_new_pack.lRFbxb/_new 2017-08-16 16:18:46.410769176 +0200 @@ -15,8 +15,8 @@ guzzlehttp/streams 3.0.0 MIT padraic/humbug_get_contents 1.0.4 BSD-3-Clause padraic/phar-updater 1.0.3 BSD-3-Clause -platformsh/client v0.11.2 MIT -platformsh/console-form v0.0.10 MIT +platformsh/client v0.11.4 MIT +platformsh/console-form v0.0.11 MIT psr/log 1.0.2 MIT react/promise v2.5.1 MIT stecman/symfony-console-completion 0.7.0 MIT ++++++ platformsh-cli-3.19.0.tar.xz -> platformsh-cli-3.20.0.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/.travis.yml new/platformsh-cli-3.20.0/.travis.yml --- old/platformsh-cli-3.19.0/.travis.yml 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/.travis.yml 2017-08-14 17:36:21.000000000 +0200 @@ -1,5 +1,5 @@ language: php - +dist: trusty sudo: false php: @@ -8,6 +8,7 @@ - hhvm - 7.0 - 7.1 + - 7.2 matrix: allow_failures: diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/README.md new/platformsh-cli-3.20.0/README.md --- old/platformsh-cli-3.19.0/README.md 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/README.md 2017-08-14 17:36:21.000000000 +0200 @@ -161,7 +161,7 @@ tunnel:open Open SSH tunnels to an app's relationships user user:add Add a user to the project - user:delete Delete a user + user:delete Delete a user from the project user:list (users) List project users user:role View or change a user's role variable diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/composer.json new/platformsh-cli-3.20.0/composer.json --- old/platformsh-cli-3.19.0/composer.json 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/composer.json 2017-08-14 17:36:21.000000000 +0200 @@ -7,7 +7,7 @@ "doctrine/cache": "~1.5", "guzzlehttp/guzzle": "^5.3", "guzzlehttp/ringphp": "^1.1", - "platformsh/console-form": "0.0.10", + "platformsh/console-form": "0.0.11", "platformsh/client": "^0.11", "symfony/console": "^3.0 !=3.2.5 !=3.2.6", "symfony/yaml": "^3.0 || ^2.6", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/composer.lock new/platformsh-cli-3.20.0/composer.lock --- old/platformsh-cli-3.19.0/composer.lock 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/composer.lock 2017-08-14 17:36:21.000000000 +0200 @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "content-hash": "f957991eaff440eb45dfa0be23d53071", + "content-hash": "8b27d8ff8b2caa88d8a69a86c857012f", "packages": [ { "name": "cocur/slugify", @@ -593,20 +593,20 @@ }, { "name": "platformsh/client", - "version": "v0.11.2", + "version": "v0.11.4", "source": { "type": "git", "url": "https://github.com/platformsh/platformsh-client-php.git", - "reference": "3c8bb553b09665fec4bc42975c624d09d9971c97" + "reference": "07bc12cf0b81a23368679b6dc274f95c74eeaef2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/platformsh/platformsh-client-php/zipball/3c8bb553b09665fec4bc42975c624d09d9971c97", - "reference": "3c8bb553b09665fec4bc42975c624d09d9971c97", + "url": "https://api.github.com/repos/platformsh/platformsh-client-php/zipball/07bc12cf0b81a23368679b6dc274f95c74eeaef2", + "reference": "07bc12cf0b81a23368679b6dc274f95c74eeaef2", "shasum": "" }, "require": { - "cocur/slugify": "~1.0", + "cocur/slugify": "^2.0 || ~1.0", "commerceguys/guzzle-oauth2-plugin": "~2.0", "cweagans/composer-patches": "~1.0", "guzzlehttp/cache-subscriber": "~0.1", @@ -638,20 +638,20 @@ } ], "description": "Platform.sh API client", - "time": "2017-07-01T15:17:33+00:00" + "time": "2017-08-10T10:50:40+00:00" }, { "name": "platformsh/console-form", - "version": "v0.0.10", + "version": "v0.0.11", "source": { "type": "git", "url": "https://github.com/platformsh/console-form.git", - "reference": "6c4af8274d97fb7e9c4eaa8d0a72e79f4bbef0f9" + "reference": "f3971c9fde735a96b7a574f101724ee4a87a1d18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/platformsh/console-form/zipball/6c4af8274d97fb7e9c4eaa8d0a72e79f4bbef0f9", - "reference": "6c4af8274d97fb7e9c4eaa8d0a72e79f4bbef0f9", + "url": "https://api.github.com/repos/platformsh/console-form/zipball/f3971c9fde735a96b7a574f101724ee4a87a1d18", + "reference": "f3971c9fde735a96b7a574f101724ee4a87a1d18", "shasum": "" }, "require": { @@ -676,7 +676,7 @@ } ], "description": "A lightweight Symfony Console form system.", - "time": "2017-04-02T11:43:41+00:00" + "time": "2017-08-10T10:49:11+00:00" }, { "name": "psr/log", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/config.yaml new/platformsh-cli-3.20.0/config.yaml --- old/platformsh-cli-3.19.0/config.yaml 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/config.yaml 2017-08-14 17:36:21.000000000 +0200 @@ -1,7 +1,7 @@ # Metadata about the CLI application itself. application: name: 'Platform.sh CLI' - version: '3.19.0' + version: '3.20.0' executable: 'platform' package_name: 'platformsh/cli' installer_url: 'https://platform.sh/cli/installer' @@ -34,6 +34,7 @@ docs_url: 'https://docs.platform.sh' docs_search_url: 'https://docs.platform.sh/?q={{ terms }}' accounts_url: 'https://accounts.platform.sh' + pricing_url: 'https://platform.sh/pricing' available_regions: - eu.platform.sh - us.platform.sh diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/dist/installer.php new/platformsh-cli-3.20.0/dist/installer.php --- old/platformsh-cli-3.19.0/dist/installer.php 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/dist/installer.php 2017-08-14 17:36:21.000000000 +0200 @@ -179,7 +179,7 @@ } output(" Checking file integrity..."); -if ($latest->sha1 !== sha1_file(CLI_PHAR)) { +if ($latest->sha256 !== hash_file('sha256', CLI_PHAR)) { unlink(CLI_PHAR); output(" The download was corrupted.", 'error'); exit(1); @@ -241,20 +241,6 @@ $currentShellConfig = ''; } - // Backwards compatibility for the old 'platform.rc'. - // @todo remove any time after about late 2016. - $oldRcLocation = str_replace('/shell-config.rc', '/platform.rc', $rcDestination); - if (file_exists($oldRcLocation)) { - @unlink($oldRcLocation); - } - if (strpos($currentShellConfig, $oldRcLocation) !== false) { - $currentShellConfig = str_replace($oldRcLocation, $rcDestination, $currentShellConfig); - if (!file_put_contents($shellConfigFile, $currentShellConfig)) { - output(" Failed to configure the shell automatically.", 'warning'); - } - } - // End backwards compatibility section. - if (strpos($currentShellConfig, $configDir . "/bin") === false) { $currentShellConfig .= PHP_EOL . PHP_EOL . "# Automatically added by the " . CLI_NAME . " installer" . PHP_EOL diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/src/Command/CommandBase.php new/platformsh-cli-3.20.0/src/Command/CommandBase.php --- old/platformsh-cli-3.19.0/src/Command/CommandBase.php 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/src/Command/CommandBase.php 2017-08-14 17:36:21.000000000 +0200 @@ -6,7 +6,6 @@ use Platformsh\Cli\Exception\LoginRequiredException; use Platformsh\Cli\Exception\ProjectNotFoundException; use Platformsh\Cli\Exception\RootNotFoundException; -use Platformsh\Cli\Local\LocalApplication; use Platformsh\Cli\Local\BuildFlavor\Drupal; use Platformsh\Client\Model\Environment; use Platformsh\Client\Model\Project; @@ -586,7 +585,7 @@ protected function addNoWaitOption($description = 'Do not wait for the operation to complete') { /** @noinspection PhpIncompatibleReturnTypeInspection */ - return $this->addOption('no-wait', null, InputOption::VALUE_NONE, $description); + return $this->addOption('no-wait', 'W', InputOption::VALUE_NONE, $description); } /** @@ -632,6 +631,16 @@ */ protected function selectEnvironment($environmentId = null, $required = true) { + $envPrefix = $this->config()->get('service.env_prefix'); + if ($environmentId === null && getenv($envPrefix . 'BRANCH')) { + $environmentId = getenv($envPrefix . 'BRANCH'); + $this->stdErr->writeln(sprintf( + 'Environment ID read from environment variable %s: %s', + $envPrefix . 'BRANCH', + $environmentId + ), OutputInterface::VERBOSITY_VERBOSE); + } + if (!empty($environmentId)) { $environment = $this->api()->getEnvironment($environmentId, $this->project, null, true); if (!$environment) { @@ -642,7 +651,6 @@ return; } - // If no ID is specified, try to auto-detect the current environment. if ($environment = $this->getCurrentEnvironment($this->project)) { $this->environment = $environment; return; @@ -678,6 +686,10 @@ $environment = $this->getSelectedEnvironment(); $apps = array_keys($environment->getSshUrls()); + if (!count($apps)) { + return null; + } + $this->debug('Found app(s): ' . implode(',', $apps)); if (count($apps) === 1) { $appName = reset($apps); @@ -798,9 +810,36 @@ $environmentId = $result['environmentId']; } - // Set the --app option based on the parsed project URL, if relevant. - if (isset($result['appId']) && $input->hasOption('app') && !$input->getOption('app')) { - $input->setOption('app', $result['appId']); + // Load the project ID from an environment variable, if available. + $envPrefix = $this->config()->get('service.env_prefix'); + if ($projectId === null && getenv($envPrefix . 'PROJECT')) { + $projectId = getenv($envPrefix . 'PROJECT'); + $this->stdErr->writeln(sprintf( + 'Project ID read from environment variable %s: %s', + $envPrefix . 'PROJECT', + $projectId + ), OutputInterface::VERBOSITY_VERBOSE); + } + + // Set the --app option. + if ($input->hasOption('app') && !$input->getOption('app')) { + // An app ID might be provided from the parsed project URL. + if (isset($result) && isset($result['appId'])) { + $input->setOption('app', $result['appId']); + $this->debug(sprintf( + 'App name detected from project URL as: %s', + $input->getOption('app') + )); + } + // Or from an environment variable. + elseif (getenv($envPrefix . 'APPLICATION_NAME')) { + $input->setOption('app', getenv($envPrefix . 'APPLICATION_NAME')); + $this->stdErr->writeln(sprintf( + 'App name read from environment variable %s: %s', + $envPrefix . 'APPLICATION_NAME', + $input->getOption('app') + ), OutputInterface::VERBOSITY_VERBOSE); + } } // Select the project. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/src/Command/CompletionCommand.php new/platformsh-cli-3.20.0/src/Command/CompletionCommand.php --- old/platformsh-cli-3.19.0/src/Command/CompletionCommand.php 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/src/Command/CompletionCommand.php 2017-08-14 17:36:21.000000000 +0200 @@ -3,7 +3,6 @@ namespace Platformsh\Cli\Command; use Platformsh\Cli\Service\Api; -use Platformsh\Cli\Application; use Platformsh\Cli\Local\LocalApplication; use Stecman\Component\Symfony\Console\BashCompletion\Completion; use Stecman\Component\Symfony\Console\BashCompletion\CompletionCommand as ParentCompletionCommand; @@ -14,15 +13,15 @@ /** @var Api */ protected $api; - /** @var CommandBase */ - protected $welcomeCommand; - /** * A list of the user's projects. * @var array */ protected $projects = []; + /** @var CommandBase|null */ + private $welcomeCommand; + /** * {@inheritdoc} */ @@ -32,22 +31,12 @@ } /** - * {@inheritdoc} - */ - protected function setUp() - { - $this->api = new Api(); - $this->projects = $this->api->isLoggedIn() ? $this->api->getProjects(false) : []; - $this->welcomeCommand = new WelcomeCommand('welcome'); - $this->welcomeCommand->setApplication(new Application()); - } - - /** * @inheritdoc */ protected function runCompletion() { - $this->setUp(); + $this->api = new Api(); + $this->projects = $this->api->isLoggedIn() ? $this->api->getProjects(false) : []; $projectIds = array_keys($this->projects); $this->handler->addHandlers([ @@ -185,18 +174,31 @@ } /** + * @return WelcomeCommand + */ + protected function getWelcomeCommand() + { + if (!isset($this->welcomeCommand)) { + $this->welcomeCommand = new WelcomeCommand('welcome'); + $this->welcomeCommand->setApplication($this->getApplication()); + } + + return $this->welcomeCommand; + } + + /** * Get a list of environments IDs that can be checked out. * * @return string[] */ public function getEnvironmentsForCheckout() { - $project = $this->welcomeCommand->getCurrentProject(); + $project = $this->getWelcomeCommand()->getCurrentProject(); if (!$project) { return []; } try { - $currentEnvironment = $this->welcomeCommand->getCurrentEnvironment($project, false); + $currentEnvironment = $this->getWelcomeCommand()->getCurrentEnvironment($project, false); } catch (\Exception $e) { $currentEnvironment = false; } @@ -221,7 +223,7 @@ public function getAppNames() { $apps = []; - if ($projectRoot = $this->welcomeCommand->getProjectRoot()) { + if ($projectRoot = $this->getWelcomeCommand()->getProjectRoot()) { foreach (LocalApplication::getApplications($projectRoot) as $app) { $name = $app->getName(); if ($name !== null) { @@ -251,7 +253,7 @@ $commandLine = $this->handler->getContext() ->getCommandLine(); $currentProjectId = $this->getProjectIdFromCommandLine($commandLine); - if (!$currentProjectId && ($currentProject = $this->welcomeCommand->getCurrentProject())) { + if (!$currentProjectId && ($currentProject = $this->getWelcomeCommand()->getCurrentProject())) { return $currentProject; } elseif (isset($this->projects[$currentProjectId])) { return $this->projects[$currentProjectId]; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/src/Command/Environment/EnvironmentPushCommand.php new/platformsh-cli-3.20.0/src/Command/Environment/EnvironmentPushCommand.php --- old/platformsh-cli-3.19.0/src/Command/Environment/EnvironmentPushCommand.php 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/src/Command/Environment/EnvironmentPushCommand.php 2017-08-14 17:36:21.000000000 +0200 @@ -105,10 +105,10 @@ // Determine whether to activate the environment after pushing. if (!$targetEnvironment || $targetEnvironment->status === 'inactive') { $activate = $input->getOption('activate') - || $questionHelper->confirm(sprintf( + || ($input->isInteractive() && $questionHelper->confirm(sprintf( 'Activate <info>%s</info> after pushing?', $target - )); + ))); } // If activating, determine what the environment's parent should be. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/src/Command/Environment/EnvironmentUrlCommand.php new/platformsh-cli-3.20.0/src/Command/Environment/EnvironmentUrlCommand.php --- old/platformsh-cli-3.19.0/src/Command/Environment/EnvironmentUrlCommand.php 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/src/Command/Environment/EnvironmentUrlCommand.php 2017-08-14 17:36:21.000000000 +0200 @@ -32,19 +32,7 @@ return 1; } - // Sort the URLs heuristically. Prefer short URLs with HTTPS. - usort($urls, function ($a, $b) { - $result = 0; - if (parse_url($a, PHP_URL_SCHEME) === 'https') { - $result -= 2; - } - if (parse_url($b, PHP_URL_SCHEME) === 'https') { - $result += 2; - } - $result += strlen($a) <= strlen($b) ? -1 : 1; - - return $result; - }); + usort($urls, [$this->api(), 'urlSort']); // Just display the URLs if --browser is 0 or if --pipe is set. if ($input->getOption('pipe') || $input->getOption('browser') === '0') { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/src/Command/Integration/IntegrationCommandBase.php new/platformsh-cli-3.20.0/src/Command/Integration/IntegrationCommandBase.php --- old/platformsh-cli-3.19.0/src/Command/Integration/IntegrationCommandBase.php 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/src/Command/Integration/IntegrationCommandBase.php 2017-08-14 17:36:21.000000000 +0200 @@ -5,6 +5,7 @@ use Platformsh\Client\Model\Integration; use Platformsh\ConsoleForm\Field\ArrayField; use Platformsh\ConsoleForm\Field\BooleanField; +use Platformsh\ConsoleForm\Field\EmailAddressField; use Platformsh\ConsoleForm\Field\Field; use Platformsh\ConsoleForm\Field\OptionsField; use Platformsh\ConsoleForm\Field\UrlField; @@ -36,6 +37,9 @@ 'github', 'hipchat', 'webhook', + 'health.email', + 'health.pagerduty', + 'health.slack', ]; return [ @@ -48,11 +52,9 @@ 'conditions' => ['type' => [ 'github', 'hipchat', + 'health.slack', ]], 'description' => 'An OAuth token for the integration', - 'validator' => function ($string) { - return base64_decode($string, true) !== false; - }, ]), 'repository' => new Field('Repository', [ 'conditions' => ['type' => [ @@ -76,6 +78,12 @@ ]], 'description' => 'GitHub: build pull requests as environments', ]), + 'build_pull_requests_post_merge' => new BooleanField('Build pull requests post-merge', [ + 'conditions' => ['type' => [ + 'github', + ]], + 'description' => 'GitHub: build pull requests based on their post-merge state', + ]), 'fetch_branches' => new BooleanField('Fetch branches', [ 'conditions' => ['type' => [ 'github', @@ -120,6 +128,43 @@ 'default' => ['*'], 'description' => 'Generic webhook: the environments relevant to the hook', ]), + 'from_address' => new EmailAddressField('From address', [ + 'conditions' => ['type' => [ + 'health.email', + ]], + 'description' => 'The From address for alert emails', + ]), + 'recipients' => new ArrayField('Recipients', [ + 'conditions' => ['type' => [ + 'health.email', + ]], + 'description' => 'The recipient email address(es)', + 'validator' => function ($emails) { + $invalid = array_filter($emails, function ($email) { + return !filter_var($email, FILTER_VALIDATE_EMAIL); + }); + if (count($invalid)) { + return sprintf('Invalid email address(es): %s', implode(', ', $invalid)); + } + + return true; + }, + ]), + 'channel' => new Field('Channel', [ + 'conditions' => ['type' => [ + 'health.slack', + ]], + 'description' => 'The Slack channel (beginning with the #)', + 'validator' => function ($string) { + return strpos($string, '#') === 0; + }, + ]), + 'routing_key' => new Field('Routing key', [ + 'conditions' => ['type' => [ + 'health.pagerduty', + ]], + 'description' => 'The PagerDuty routing key', + ]), ]; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/src/Command/Integration/IntegrationDeleteCommand.php new/platformsh-cli-3.20.0/src/Command/Integration/IntegrationDeleteCommand.php --- old/platformsh-cli-3.19.0/src/Command/Integration/IntegrationDeleteCommand.php 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/src/Command/Integration/IntegrationDeleteCommand.php 2017-08-14 17:36:21.000000000 +0200 @@ -25,17 +25,19 @@ $this->validateInput($input); $id = $input->getArgument('id'); + $project = $this->getSelectedProject(); - $integration = $this->getSelectedProject() - ->getIntegration($id); + $integration = $project->getIntegration($id); if (!$integration) { - $this->stdErr->writeln("Integration not found: <error>$id</error>"); - - return 1; + try { + $integration = $this->api()->matchPartialId($id, $project->getIntegrations(), 'Integration'); + } catch (\InvalidArgumentException $e) { + $this->stdErr->writeln($e->getMessage()); + return 1; + } } - $type = $integration->type; - $confirmText = "Delete the integration <info>$id</info> (type: $type)?"; + $confirmText = sprintf('Delete the integration <info>%s</info> (type: %s)?', $integration->id, $integration->type); /** @var \Platformsh\Cli\Service\QuestionHelper $questionHelper */ $questionHelper = $this->getService('question_helper'); if (!$questionHelper->confirm($confirmText)) { @@ -44,7 +46,7 @@ $result = $integration->delete(); - $this->stdErr->writeln("Deleted integration <info>$id</info>"); + $this->stdErr->writeln(sprintf('Deleted integration <info>%s</info>', $integration->id)); if (!$input->getOption('no-wait')) { /** @var \Platformsh\Cli\Service\ActivityMonitor $activityMonitor */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/src/Command/Integration/IntegrationGetCommand.php new/platformsh-cli-3.20.0/src/Command/Integration/IntegrationGetCommand.php --- old/platformsh-cli-3.19.0/src/Command/Integration/IntegrationGetCommand.php 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/src/Command/Integration/IntegrationGetCommand.php 2017-08-14 17:36:21.000000000 +0200 @@ -50,12 +50,14 @@ $id = $questionHelper->choose($choices, 'Enter a number to choose an integration:'); } - $integration = $this->getSelectedProject() - ->getIntegration($id); + $integration = $project->getIntegration($id); if (!$integration) { - $this->stdErr->writeln("Integration not found: <error>$id</error>"); - - return 1; + try { + $integration = $this->api()->matchPartialId($id, $project->getIntegrations(), 'Integration'); + } catch (\InvalidArgumentException $e) { + $this->stdErr->writeln($e->getMessage()); + return 1; + } } if ($property = $input->getOption('property')) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/src/Command/Integration/IntegrationListCommand.php new/platformsh-cli-3.20.0/src/Command/Integration/IntegrationListCommand.php --- old/platformsh-cli-3.19.0/src/Command/Integration/IntegrationListCommand.php 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/src/Command/Integration/IntegrationListCommand.php 2017-08-14 17:36:21.000000000 +0200 @@ -86,6 +86,18 @@ $summary = sprintf('URL: %s', $details['url']); break; + case 'health.email': + $summary = sprintf("From: %s\nTo: %s", $details['from_address'], implode(', ', $details['recipients'])); + break; + + case 'health.slack': + $summary = sprintf('Channel: %s', $details['channel']); + break; + + case 'health.pagerduty': + $summary = sprintf('Routing key: %s', $details['routing_key']); + break; + default: $summary = json_encode($details); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/src/Command/Integration/IntegrationUpdateCommand.php new/platformsh-cli-3.20.0/src/Command/Integration/IntegrationUpdateCommand.php --- old/platformsh-cli-3.19.0/src/Command/Integration/IntegrationUpdateCommand.php 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/src/Command/Integration/IntegrationUpdateCommand.php 2017-08-14 17:36:21.000000000 +0200 @@ -29,12 +29,15 @@ $this->validateInput($input); $id = $input->getArgument('id'); - $integration = $this->getSelectedProject() - ->getIntegration($id); + $project = $this->getSelectedProject(); + $integration = $project->getIntegration($id); if (!$integration) { - $this->stdErr->writeln("Integration not found: <error>$id</error>"); - - return 1; + try { + $integration = $this->api()->matchPartialId($id, $project->getIntegrations(), 'Integration'); + } catch (\InvalidArgumentException $e) { + $this->stdErr->writeln($e->getMessage()); + return 1; + } } $values = []; @@ -62,7 +65,7 @@ } $result = $integration->update($values); - $this->stdErr->writeln("Integration <info>$id</info> (<info>{$integration->type}</info>) updated"); + $this->stdErr->writeln("Integration <info>{$integration->id}</info> (<info>{$integration->type}</info>) updated"); $this->displayIntegration($integration); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/src/Command/Project/ProjectCreateCommand.php new/platformsh-cli-3.20.0/src/Command/Project/ProjectCreateCommand.php --- old/platformsh-cli-3.19.0/src/Command/Project/ProjectCreateCommand.php 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/src/Command/Project/ProjectCreateCommand.php 2017-08-14 17:36:21.000000000 +0200 @@ -56,11 +56,16 @@ ->getClient() ->getSubscriptionEstimate($options['plan'], $options['storage'], $options['environments'], 1); $costConfirm = sprintf( - 'The estimated monthly cost of this project is: <comment>%s</comment>' - . "\n\n" - . 'Are you sure you want to continue?', + 'The estimated monthly cost of this project is: <comment>%s</comment>', $estimate['total'] ); + if ($this->config()->has('service.pricing_url')) { + $costConfirm .= sprintf( + "\nPricing information: <comment>%s</comment>", + $this->config()->get('service.pricing_url') + ); + } + $costConfirm .= "\n\nAre you sure you want to continue?"; if (!$questionHelper->confirm($costConfirm)) { return 1; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/src/Command/Route/RouteGetCommand.php new/platformsh-cli-3.20.0/src/Command/Route/RouteGetCommand.php --- old/platformsh-cli-3.19.0/src/Command/Route/RouteGetCommand.php 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/src/Command/Route/RouteGetCommand.php 2017-08-14 17:36:21.000000000 +0200 @@ -58,6 +58,7 @@ foreach ($routes as $route) { $items[$route['original_url']] = $route['original_url']; } + uksort($items, [$this->api(), 'urlSort']); $originalUrl = $questionHelper->choose($items, 'Enter a number to choose a route:'); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/src/Command/Self/SelfBuildCommand.php new/platformsh-cli-3.20.0/src/Command/Self/SelfBuildCommand.php --- old/platformsh-cli-3.19.0/src/Command/Self/SelfBuildCommand.php 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/src/Command/Self/SelfBuildCommand.php 2017-08-14 17:36:21.000000000 +0200 @@ -135,13 +135,15 @@ } $sha1 = sha1_file($phar); + $sha256 = hash_file('sha256', $phar); $size = filesize($phar); $this->stdErr->writeln('The package was built successfully'); $output->writeln($phar); $this->stdErr->writeln([ sprintf('Size: %s', FormatterHelper::formatMemory($size)), - sprintf('SHA1: %s', $sha1), + sprintf('SHA-1: %s', $sha1), + sprintf('SHA-256: %s', $sha256), sprintf('Version: %s', $version), ]); return 0; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/src/Command/User/UserDeleteCommand.php new/platformsh-cli-3.20.0/src/Command/User/UserDeleteCommand.php --- old/platformsh-cli-3.19.0/src/Command/User/UserDeleteCommand.php 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/src/Command/User/UserDeleteCommand.php 2017-08-14 17:36:21.000000000 +0200 @@ -13,7 +13,7 @@ { $this ->setName('user:delete') - ->setDescription('Delete a user') + ->setDescription('Delete a user from the project') ->addArgument('email', InputArgument::REQUIRED, "The user's email address"); $this->addProjectOption()->addNoWaitOption(); $this->addExample('Delete Alice from the project', '[email protected]'); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/src/SelfUpdate/ManifestStrategy.php new/platformsh-cli-3.20.0/src/SelfUpdate/ManifestStrategy.php --- old/platformsh-cli-3.19.0/src/SelfUpdate/ManifestStrategy.php 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/src/SelfUpdate/ManifestStrategy.php 2017-08-14 17:36:21.000000000 +0200 @@ -28,7 +28,7 @@ private $allowUnstable = false; /** @var array */ - private static $requiredKeys = ['sha1', 'version', 'url']; + private static $requiredKeys = ['sha256', 'version', 'url']; /** @var int */ private $manifestTimeout = 10; @@ -45,7 +45,7 @@ * @param string $localVersion The local version. * @param string $manifestUrl The URL to a JSON manifest file. The * manifest contains an array of objects, each - * containing a 'version', 'sha1', and 'url'. + * containing a 'version', 'sha256', and 'url'. * @param bool $allowMajor Whether to allow updating between major * versions. * @param bool $allowUnstable Whether to allow updating to an unstable @@ -152,13 +152,13 @@ throw new \RuntimeException(sprintf('Failed to write file: %s', $tmpFilename)); } - $tmpSha = sha1_file($tmpFilename); - if ($tmpSha !== $versionInfo['sha1']) { + $tmpSha = hash_file('sha256', $tmpFilename); + if ($tmpSha !== $versionInfo['sha256']) { unlink($tmpFilename); throw new \RuntimeException( sprintf( - 'SHA-1 verification failed: expected %s, actual %s', - $versionInfo['sha1'], + 'SHA-256 verification failed: expected %s, actual %s', + $versionInfo['sha256'], $tmpSha ) ); @@ -170,7 +170,7 @@ * * @return array * An array keyed by the version name, whose elements are arrays - * containing version information ('name', 'sha1', and 'url'). + * containing version information ('version', 'sha256', and 'url'). */ private function getAvailableVersions() { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.19.0/src/Service/Api.php new/platformsh-cli-3.20.0/src/Service/Api.php --- old/platformsh-cli-3.19.0/src/Service/Api.php 2017-07-18 17:24:27.000000000 +0200 +++ new/platformsh-cli-3.20.0/src/Service/Api.php 2017-08-14 17:36:21.000000000 +0200 @@ -579,7 +579,7 @@ if (count($matched) > 1) { $matchedIds = array_map(function (ApiResource $resource) { - return $resource->id; + return $resource->getProperty('id'); }, $matched); throw new \InvalidArgumentException(sprintf( 'The partial ID "<error>%s</error>" is ambiguous; it matches the following %s IDs: %s', @@ -614,4 +614,25 @@ return $token; } + + /** + * Sort URLs, preferring shorter ones with HTTPS. + * + * @param string $a + * @param string $b + * + * @return int + */ + public function urlSort($a, $b) + { + $result = 0; + foreach ([$a, $b] as $key => $url) { + if (parse_url($url, PHP_URL_SCHEME) === 'https') { + $result += $key === 0 ? -2 : 2; + } + } + $result += strlen($a) <= strlen($b) ? -1 : 1; + + return $result; + } } ++++++ platformsh-cli-vendor.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/autoload.php new/vendor/autoload.php --- old/vendor/autoload.php 2017-07-27 04:20:29.062179883 +0200 +++ new/vendor/autoload.php 2017-08-14 23:33:07.732611180 +0200 @@ -4,4 +4,4 @@ require_once __DIR__ . '/composer/autoload_real.php'; -return ComposerAutoloaderInit02166adf9488991e8ec36bfe80c7524a::getLoader(); +return ComposerAutoloaderInitb6506811e4b3232d0fae5c2d61c458bc::getLoader(); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/composer/autoload_real.php new/vendor/composer/autoload_real.php --- old/vendor/composer/autoload_real.php 2017-07-27 04:20:29.062179883 +0200 +++ new/vendor/composer/autoload_real.php 2017-08-14 23:33:07.732611180 +0200 @@ -2,7 +2,7 @@ // autoload_real.php @generated by Composer -class ComposerAutoloaderInit02166adf9488991e8ec36bfe80c7524a +class ComposerAutoloaderInitb6506811e4b3232d0fae5c2d61c458bc { private static $loader; @@ -19,15 +19,15 @@ return self::$loader; } - spl_autoload_register(array('ComposerAutoloaderInit02166adf9488991e8ec36bfe80c7524a', 'loadClassLoader'), true, true); + spl_autoload_register(array('ComposerAutoloaderInitb6506811e4b3232d0fae5c2d61c458bc', 'loadClassLoader'), true, true); self::$loader = $loader = new \Composer\Autoload\ClassLoader(); - spl_autoload_unregister(array('ComposerAutoloaderInit02166adf9488991e8ec36bfe80c7524a', 'loadClassLoader')); + spl_autoload_unregister(array('ComposerAutoloaderInitb6506811e4b3232d0fae5c2d61c458bc', 'loadClassLoader')); $useStaticLoader = PHP_VERSION_ID >= 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); if ($useStaticLoader) { require_once __DIR__ . '/autoload_static.php'; - call_user_func(\Composer\Autoload\ComposerStaticInit02166adf9488991e8ec36bfe80c7524a::getInitializer($loader)); + call_user_func(\Composer\Autoload\ComposerStaticInitb6506811e4b3232d0fae5c2d61c458bc::getInitializer($loader)); } else { $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { @@ -48,19 +48,19 @@ $loader->register(true); if ($useStaticLoader) { - $includeFiles = Composer\Autoload\ComposerStaticInit02166adf9488991e8ec36bfe80c7524a::$files; + $includeFiles = Composer\Autoload\ComposerStaticInitb6506811e4b3232d0fae5c2d61c458bc::$files; } else { $includeFiles = require __DIR__ . '/autoload_files.php'; } foreach ($includeFiles as $fileIdentifier => $file) { - composerRequire02166adf9488991e8ec36bfe80c7524a($fileIdentifier, $file); + composerRequireb6506811e4b3232d0fae5c2d61c458bc($fileIdentifier, $file); } return $loader; } } -function composerRequire02166adf9488991e8ec36bfe80c7524a($fileIdentifier, $file) +function composerRequireb6506811e4b3232d0fae5c2d61c458bc($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { require $file; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/composer/autoload_static.php new/vendor/composer/autoload_static.php --- old/vendor/composer/autoload_static.php 2017-07-27 04:20:29.062179883 +0200 +++ new/vendor/composer/autoload_static.php 2017-08-14 23:33:07.732611180 +0200 @@ -4,7 +4,7 @@ namespace Composer\Autoload; -class ComposerStaticInit02166adf9488991e8ec36bfe80c7524a +class ComposerStaticInitb6506811e4b3232d0fae5c2d61c458bc { public static $files = array ( '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', @@ -183,9 +183,9 @@ public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { - $loader->prefixLengthsPsr4 = ComposerStaticInit02166adf9488991e8ec36bfe80c7524a::$prefixLengthsPsr4; - $loader->prefixDirsPsr4 = ComposerStaticInit02166adf9488991e8ec36bfe80c7524a::$prefixDirsPsr4; - $loader->classMap = ComposerStaticInit02166adf9488991e8ec36bfe80c7524a::$classMap; + $loader->prefixLengthsPsr4 = ComposerStaticInitb6506811e4b3232d0fae5c2d61c458bc::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInitb6506811e4b3232d0fae5c2d61c458bc::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInitb6506811e4b3232d0fae5c2d61c458bc::$classMap; }, null, ClassLoader::class); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/composer/installed.json new/vendor/composer/installed.json --- old/vendor/composer/installed.json 2017-07-27 04:20:28.446174003 +0200 +++ new/vendor/composer/installed.json 2017-08-14 23:33:07.104605260 +0200 @@ -656,21 +656,21 @@ }, { "name": "platformsh/client", - "version": "v0.11.2", - "version_normalized": "0.11.2.0", + "version": "v0.11.4", + "version_normalized": "0.11.4.0", "source": { "type": "git", "url": "https://github.com/platformsh/platformsh-client-php.git", - "reference": "3c8bb553b09665fec4bc42975c624d09d9971c97" + "reference": "07bc12cf0b81a23368679b6dc274f95c74eeaef2" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/platformsh/platformsh-client-php/zipball/3c8bb553b09665fec4bc42975c624d09d9971c97", - "reference": "3c8bb553b09665fec4bc42975c624d09d9971c97", + "url": "https://api.github.com/repos/platformsh/platformsh-client-php/zipball/07bc12cf0b81a23368679b6dc274f95c74eeaef2", + "reference": "07bc12cf0b81a23368679b6dc274f95c74eeaef2", "shasum": "" }, "require": { - "cocur/slugify": "~1.0", + "cocur/slugify": "^2.0 || ~1.0", "commerceguys/guzzle-oauth2-plugin": "~2.0", "cweagans/composer-patches": "~1.0", "guzzlehttp/cache-subscriber": "~0.1", @@ -679,7 +679,7 @@ "require-dev": { "phpunit/phpunit": "~4.5" }, - "time": "2017-07-01T15:17:33+00:00", + "time": "2017-08-10T10:50:40+00:00", "type": "library", "extra": { "patches": { @@ -941,17 +941,17 @@ }, { "name": "platformsh/console-form", - "version": "v0.0.10", - "version_normalized": "0.0.10.0", + "version": "v0.0.11", + "version_normalized": "0.0.11.0", "source": { "type": "git", "url": "https://github.com/platformsh/console-form.git", - "reference": "6c4af8274d97fb7e9c4eaa8d0a72e79f4bbef0f9" + "reference": "f3971c9fde735a96b7a574f101724ee4a87a1d18" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/platformsh/console-form/zipball/6c4af8274d97fb7e9c4eaa8d0a72e79f4bbef0f9", - "reference": "6c4af8274d97fb7e9c4eaa8d0a72e79f4bbef0f9", + "url": "https://api.github.com/repos/platformsh/console-form/zipball/f3971c9fde735a96b7a574f101724ee4a87a1d18", + "reference": "f3971c9fde735a96b7a574f101724ee4a87a1d18", "shasum": "" }, "require": { @@ -960,7 +960,7 @@ "require-dev": { "phpunit/phpunit": "~4" }, - "time": "2017-04-02T11:43:41+00:00", + "time": "2017-08-10T10:49:11+00:00", "type": "library", "installation-source": "dist", "autoload": { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/platformsh/client/composer.json new/vendor/platformsh/client/composer.json --- old/vendor/platformsh/client/composer.json 2017-07-01 17:17:33.000000000 +0200 +++ new/vendor/platformsh/client/composer.json 2017-08-10 12:50:40.000000000 +0200 @@ -3,7 +3,7 @@ "description": "Platform.sh API client", "license": "MIT", "require": { - "cocur/slugify": "~1.0", + "cocur/slugify": "^2.0 || ~1.0", "guzzlehttp/guzzle": "~5.3", "commerceguys/guzzle-oauth2-plugin": "~2.0", "guzzlehttp/cache-subscriber": "~0.1", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/platformsh/client/composer.lock new/vendor/platformsh/client/composer.lock --- old/vendor/platformsh/client/composer.lock 2017-07-01 17:17:33.000000000 +0200 +++ new/vendor/platformsh/client/composer.lock 2017-08-10 12:50:40.000000000 +0200 @@ -4,40 +4,40 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "This file is @generated automatically" ], - "hash": "9bf19fb8a86f0ce2d16cfb1a1e8d678f", - "content-hash": "f30956c399a3dcc2f3235c308c5fd744", + "content-hash": "03d139694c2b711bea00ded2c7c0f173", "packages": [ { "name": "cocur/slugify", - "version": "v1.4.1", + "version": "v2.5", "source": { "type": "git", "url": "https://github.com/cocur/slugify.git", - "reference": "16cdd7e792657d524cde931ea666436623b23301" + "reference": "e8167e9a3236044afebd6e8ab13ebeb3ec9ca145" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/cocur/slugify/zipball/16cdd7e792657d524cde931ea666436623b23301", - "reference": "16cdd7e792657d524cde931ea666436623b23301", + "url": "https://api.github.com/repos/cocur/slugify/zipball/e8167e9a3236044afebd6e8ab13ebeb3ec9ca145", + "reference": "e8167e9a3236044afebd6e8ab13ebeb3ec9ca145", "shasum": "" }, "require": { - "php": ">=5.3.3" + "php": ">=5.5.9" }, "require-dev": { - "codeclimate/php-test-reporter": "dev-master", - "laravel/framework": "~4.1", + "laravel/framework": "~5.1", "latte/latte": "~2.2", + "league/container": "^2.2.0", + "mikey179/vfsstream": "~1.6", "mockery/mockery": "~0.9", "nette/di": "~2.2", - "phpunit/phpunit": "~4.6", + "phpunit/phpunit": "~4.8|~5.2", + "pimple/pimple": "~1.1", "plumphp/plum": "~0.1", - "sami/sami": "~1.3", - "satooshi/php-coveralls": "0.6.*", - "silex/silex": "~1.2", - "symfony/dependency-injection": "~2.4", - "symfony/http-kernel": "~2.4", - "twig/twig": "~1", + "silex/silex": "~1.3", + "symfony/config": "~2.4|~3.0", + "symfony/dependency-injection": "~2.4|~3.0", + "symfony/http-kernel": "~2.4|~3.0", + "twig/twig": "~1.26|~2.0", "zendframework/zend-modulemanager": "~2.2", "zendframework/zend-servicemanager": "~2.2", "zendframework/zend-view": "~2.2" @@ -68,7 +68,7 @@ "slug", "slugify" ], - "time": "2016-02-11 09:53:46" + "time": "2017-03-23T21:52:55+00:00" }, { "name": "commerceguys/guzzle-oauth2-plugin", @@ -118,7 +118,7 @@ } ], "description": "An OAuth2 plugin (subscriber) for Guzzle", - "time": "2015-12-12 23:27:25" + "time": "2015-12-12T23:27:25+00:00" }, { "name": "cweagans/composer-patches", @@ -162,7 +162,7 @@ } ], "description": "Provides a way to patch Composer packages.", - "time": "2016-12-01 01:19:32" + "time": "2016-12-01T01:19:32+00:00" }, { "name": "doctrine/cache", @@ -232,7 +232,7 @@ "cache", "caching" ], - "time": "2016-10-29 11:16:17" + "time": "2016-10-29T11:16:17+00:00" }, { "name": "firebase/php-jwt", @@ -276,7 +276,7 @@ ], "description": "A simple library to encode and decode JSON Web Tokens (JWT) in PHP. Should conform to the current spec.", "homepage": "https://github.com/firebase/php-jwt", - "time": "2015-06-22 23:26:39" + "time": "2015-06-22T23:26:39+00:00" }, { "name": "guzzlehttp/cache-subscriber", @@ -328,7 +328,7 @@ "Guzzle", "cache" ], - "time": "2014-10-29 21:06:25" + "time": "2014-10-29T21:06:25+00:00" }, { "name": "guzzlehttp/guzzle", @@ -380,7 +380,7 @@ "rest", "web service" ], - "time": "2016-07-15 19:28:39" + "time": "2016-07-15T19:28:39+00:00" }, { "name": "guzzlehttp/ringphp", @@ -431,7 +431,7 @@ } ], "description": "Provides a simple API and specification that abstracts away the details of HTTP into a single PHP function.", - "time": "2015-05-20 03:37:09" + "time": "2015-05-20T03:37:09+00:00" }, { "name": "guzzlehttp/streams", @@ -481,7 +481,7 @@ "Guzzle", "stream" ], - "time": "2014-10-12 19:18:40" + "time": "2014-10-12T19:18:40+00:00" }, { "name": "react/promise", @@ -524,7 +524,7 @@ "promise", "promises" ], - "time": "2016-12-22 14:09:01" + "time": "2016-12-22T14:09:01+00:00" } ], "packages-dev": [ @@ -580,7 +580,7 @@ "constructor", "instantiate" ], - "time": "2015-06-14 21:17:01" + "time": "2015-06-14T21:17:01+00:00" }, { "name": "phpdocumentor/reflection-common", @@ -634,7 +634,7 @@ "reflection", "static analysis" ], - "time": "2015-12-27 11:43:31" + "time": "2015-12-27T11:43:31+00:00" }, { "name": "phpdocumentor/reflection-docblock", @@ -679,7 +679,7 @@ } ], "description": "With this component, a library can provide support for annotations via DocBlocks or otherwise retrieve information that is embedded in a DocBlock.", - "time": "2016-09-30 07:12:33" + "time": "2016-09-30T07:12:33+00:00" }, { "name": "phpdocumentor/type-resolver", @@ -726,7 +726,7 @@ "email": "[email protected]" } ], - "time": "2016-11-25 06:54:22" + "time": "2016-11-25T06:54:22+00:00" }, { "name": "phpspec/prophecy", @@ -789,7 +789,7 @@ "spy", "stub" ], - "time": "2016-11-21 14:58:47" + "time": "2016-11-21T14:58:47+00:00" }, { "name": "phpunit/php-code-coverage", @@ -851,7 +851,7 @@ "testing", "xunit" ], - "time": "2015-10-06 15:47:00" + "time": "2015-10-06T15:47:00+00:00" }, { "name": "phpunit/php-file-iterator", @@ -898,7 +898,7 @@ "filesystem", "iterator" ], - "time": "2016-10-03 07:40:28" + "time": "2016-10-03T07:40:28+00:00" }, { "name": "phpunit/php-text-template", @@ -939,7 +939,7 @@ "keywords": [ "template" ], - "time": "2015-06-21 13:50:34" + "time": "2015-06-21T13:50:34+00:00" }, { "name": "phpunit/php-timer", @@ -983,7 +983,7 @@ "keywords": [ "timer" ], - "time": "2016-05-12 18:03:57" + "time": "2016-05-12T18:03:57+00:00" }, { "name": "phpunit/php-token-stream", @@ -1032,7 +1032,7 @@ "keywords": [ "tokenizer" ], - "time": "2016-11-15 14:06:22" + "time": "2016-11-15T14:06:22+00:00" }, { "name": "phpunit/phpunit", @@ -1104,7 +1104,7 @@ "testing", "xunit" ], - "time": "2016-12-09 02:45:31" + "time": "2016-12-09T02:45:31+00:00" }, { "name": "phpunit/phpunit-mock-objects", @@ -1160,7 +1160,7 @@ "mock", "xunit" ], - "time": "2015-10-02 06:51:40" + "time": "2015-10-02T06:51:40+00:00" }, { "name": "sebastian/comparator", @@ -1224,7 +1224,7 @@ "compare", "equality" ], - "time": "2016-11-19 09:18:40" + "time": "2016-11-19T09:18:40+00:00" }, { "name": "sebastian/diff", @@ -1276,7 +1276,7 @@ "keywords": [ "diff" ], - "time": "2015-12-08 07:14:41" + "time": "2015-12-08T07:14:41+00:00" }, { "name": "sebastian/environment", @@ -1326,7 +1326,7 @@ "environment", "hhvm" ], - "time": "2016-08-18 05:49:44" + "time": "2016-08-18T05:49:44+00:00" }, { "name": "sebastian/exporter", @@ -1393,7 +1393,7 @@ "export", "exporter" ], - "time": "2016-06-17 09:04:28" + "time": "2016-06-17T09:04:28+00:00" }, { "name": "sebastian/global-state", @@ -1444,7 +1444,7 @@ "keywords": [ "global state" ], - "time": "2015-10-12 03:26:01" + "time": "2015-10-12T03:26:01+00:00" }, { "name": "sebastian/recursion-context", @@ -1497,7 +1497,7 @@ ], "description": "Provides functionality to recursively process PHP variables", "homepage": "http://www.github.com/sebastianbergmann/recursion-context", - "time": "2015-11-11 19:50:13" + "time": "2015-11-11T19:50:13+00:00" }, { "name": "sebastian/version", @@ -1532,7 +1532,7 @@ ], "description": "Library that helps with managing the version number of Git-hosted PHP projects", "homepage": "https://github.com/sebastianbergmann/version", - "time": "2015-06-21 13:59:46" + "time": "2015-06-21T13:59:46+00:00" }, { "name": "symfony/yaml", @@ -1587,7 +1587,7 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2016-12-10 10:07:06" + "time": "2016-12-10T10:07:06+00:00" }, { "name": "webmozart/assert", @@ -1637,7 +1637,7 @@ "check", "validate" ], - "time": "2016-11-23 20:04:58" + "time": "2016-11-23T20:04:58+00:00" } ], "aliases": [], diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/platformsh/client/src/Model/Integration.php new/vendor/platformsh/client/src/Model/Integration.php --- old/vendor/platformsh/client/src/Model/Integration.php 2017-07-01 17:17:33.000000000 +0200 +++ new/vendor/platformsh/client/src/Model/Integration.php 2017-08-10 12:50:40.000000000 +0200 @@ -15,7 +15,15 @@ protected static $required = ['type']; /** @var array */ - protected static $types = ['bitbucket', 'hipchat', 'github', 'webhook']; + protected static $types = [ + 'bitbucket', + 'hipchat', + 'github', + 'webhook', + 'health.email', + 'health.pagerduty', + 'health.slack', + ]; /** * @inheritdoc diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/vendor/platformsh/console-form/src/Field/ArrayField.php new/vendor/platformsh/console-form/src/Field/ArrayField.php --- old/vendor/platformsh/console-form/src/Field/ArrayField.php 2017-04-02 13:43:41.000000000 +0200 +++ new/vendor/platformsh/console-form/src/Field/ArrayField.php 2017-08-10 12:49:11.000000000 +0200 @@ -15,7 +15,7 @@ { $question = parent::getAsQuestion(); $question->setNormalizer(function ($value) { - return is_array($value) ? $value : preg_split('/[,;\n] */', $value); + return is_array($value) ? $value : array_filter(preg_split('/[,;\n] */', $value), 'strlen'); }); return $question; @@ -36,4 +36,20 @@ { return InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED; } + + /** + * {@inheritdoc} + */ + public function isEmpty($value) + { + return empty($value); + } + + /** + * {@inheritdoc} + */ + public function isRequired() + { + return $this->required && empty($this->default); + } }
