Hello community, here is the log from the commit of package platformsh-cli for openSUSE:Factory checked in at 2018-03-28 10:32:30 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/platformsh-cli (Old) and /work/SRC/openSUSE:Factory/.platformsh-cli.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "platformsh-cli" Wed Mar 28 10:32:30 2018 rev:40 rq:591308 version:3.31.3 Changes: -------- --- /work/SRC/openSUSE:Factory/platformsh-cli/platformsh-cli.changes 2018-03-22 12:10:50.285369972 +0100 +++ /work/SRC/openSUSE:Factory/.platformsh-cli.new/platformsh-cli.changes 2018-03-28 10:32:41.942202317 +0200 @@ -1,0 +2,20 @@ +Tue Mar 27 02:39:37 UTC 2018 - [email protected] + +- Update to version 3.31.3: + * Release v3.31.3 + * Document experimental_commands key [skip changelog] + * Allow all_experiments to come first [skip changelog] + * Add mechanism to define commands as experimental [skip changelog] + * [self:release] Improve changelog generation [skip changelog] + * Symfony dependencies update + * [self:install] Only include shell-config if it exists; update config snippet automatically + * [activity:get] Do not require an environment if an ID is provided + * Adapt wrapWithDecoration for literal tags + * Release v3.31.2 + * Update API client [skip changelog] + * Improve variable creation + * Decode HTML entities in activity descriptions + * Release v3.31.1 + * Fix decoration when single element wraps onto multiple lines + +------------------------------------------------------------------- Old: ---- platformsh-cli-3.31.0.tar.xz New: ---- platformsh-cli-3.31.3.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ platformsh-cli.spec ++++++ --- /var/tmp/diff_new_pack.7ECo6k/_old 2018-03-28 10:32:43.030163188 +0200 +++ /var/tmp/diff_new_pack.7ECo6k/_new 2018-03-28 10:32:43.034163044 +0200 @@ -17,7 +17,7 @@ Name: platformsh-cli -Version: 3.31.0 +Version: 3.31.3 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.7ECo6k/_old 2018-03-28 10:32:43.074161605 +0200 +++ /var/tmp/diff_new_pack.7ECo6k/_new 2018-03-28 10:32:43.074161605 +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.31.0</param> + <param name="revision">refs/tags/v3.31.3</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.7ECo6k/_old 2018-03-28 10:32:43.094160886 +0200 +++ /var/tmp/diff_new_pack.7ECo6k/_new 2018-03-28 10:32:43.094160886 +0200 @@ -1,6 +1,6 @@ <servicedata> <service name="tar_scm"> <param name="url">git://github.com/platformsh/platformsh-cli.git</param> - <param name="changesrevision">d57ebed7395b7b70104b8d06c3be4c42d0c4c987</param> + <param name="changesrevision">b11d88cf518d761c2737a0be50081ec548b1069a</param> </service> </servicedata> ++++++ licenses.txt ++++++ --- /var/tmp/diff_new_pack.7ECo6k/_old 2018-03-28 10:32:43.158158585 +0200 +++ /var/tmp/diff_new_pack.7ECo6k/_new 2018-03-28 10:32:43.162158441 +0200 @@ -17,19 +17,19 @@ padraic/humbug_get_contents 1.1.2 BSD-3-Clause padraic/phar-updater v1.0.5 BSD-3-Clause paragonie/random_compat v2.0.11 MIT -platformsh/client v0.17.1 MIT +platformsh/client v0.17.2 MIT platformsh/console-form v0.0.20 MIT psr/container 1.0.0 MIT psr/log 1.0.2 MIT react/promise v2.5.1 MIT stecman/symfony-console-completion 0.7.0 MIT -symfony/config v3.4.4 MIT -symfony/console v3.4.4 MIT -symfony/debug v3.4.4 MIT -symfony/dependency-injection v3.4.4 MIT -symfony/event-dispatcher v3.4.4 MIT -symfony/filesystem v3.4.4 MIT -symfony/finder v3.4.4 MIT +symfony/config v3.4.6 MIT +symfony/console v3.4.6 MIT +symfony/debug v3.4.6 MIT +symfony/dependency-injection v3.4.6 MIT +symfony/event-dispatcher v3.4.6 MIT +symfony/filesystem v3.4.6 MIT +symfony/finder v3.4.6 MIT symfony/polyfill-mbstring v1.7.0 MIT -symfony/process v3.4.4 MIT -symfony/yaml v3.4.4 MIT +symfony/process v3.4.6 MIT +symfony/yaml v3.4.6 MIT ++++++ platformsh-cli-3.31.0.tar.xz -> platformsh-cli-3.31.3.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.31.0/composer.lock new/platformsh-cli-3.31.3/composer.lock --- old/platformsh-cli-3.31.0/composer.lock 2018-03-20 20:43:46.000000000 +0100 +++ new/platformsh-cli-3.31.3/composer.lock 2018-03-27 03:39:09.000000000 +0200 @@ -711,16 +711,16 @@ }, { "name": "platformsh/client", - "version": "v0.17.1", + "version": "v0.17.2", "source": { "type": "git", "url": "https://github.com/platformsh/platformsh-client-php.git", - "reference": "37d986f5909fbdd80c57b1765670607c9b36373f" + "reference": "78f7b14818fe6e5c171855c217dfddf738d50302" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/platformsh/platformsh-client-php/zipball/37d986f5909fbdd80c57b1765670607c9b36373f", - "reference": "37d986f5909fbdd80c57b1765670607c9b36373f", + "url": "https://api.github.com/repos/platformsh/platformsh-client-php/zipball/78f7b14818fe6e5c171855c217dfddf738d50302", + "reference": "78f7b14818fe6e5c171855c217dfddf738d50302", "shasum": "" }, "require": { @@ -756,7 +756,7 @@ } ], "description": "Platform.sh API client", - "time": "2018-03-15T16:06:08+00:00" + "time": "2018-03-22T15:23:59+00:00" }, { "name": "platformsh/console-form", @@ -986,16 +986,16 @@ }, { "name": "symfony/config", - "version": "v3.4.4", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/symfony/config.git", - "reference": "72689b934d6c6ecf73eca874e98933bf055313c9" + "reference": "05e10567b529476a006b00746c5f538f1636810e" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/config/zipball/72689b934d6c6ecf73eca874e98933bf055313c9", - "reference": "72689b934d6c6ecf73eca874e98933bf055313c9", + "url": "https://api.github.com/repos/symfony/config/zipball/05e10567b529476a006b00746c5f538f1636810e", + "reference": "05e10567b529476a006b00746c5f538f1636810e", "shasum": "" }, "require": { @@ -1008,6 +1008,7 @@ }, "require-dev": { "symfony/dependency-injection": "~3.3|~4.0", + "symfony/event-dispatcher": "~3.3|~4.0", "symfony/finder": "~3.3|~4.0", "symfony/yaml": "~3.0|~4.0" }, @@ -1044,20 +1045,20 @@ ], "description": "Symfony Config Component", "homepage": "https://symfony.com", - "time": "2018-01-21T19:05:02+00:00" + "time": "2018-02-14T10:03:57+00:00" }, { "name": "symfony/console", - "version": "v3.4.4", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/symfony/console.git", - "reference": "26b6f419edda16c19775211987651cb27baea7f1" + "reference": "067339e9b8ec30d5f19f5950208893ff026b94f7" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/console/zipball/26b6f419edda16c19775211987651cb27baea7f1", - "reference": "26b6f419edda16c19775211987651cb27baea7f1", + "url": "https://api.github.com/repos/symfony/console/zipball/067339e9b8ec30d5f19f5950208893ff026b94f7", + "reference": "067339e9b8ec30d5f19f5950208893ff026b94f7", "shasum": "" }, "require": { @@ -1113,20 +1114,20 @@ ], "description": "Symfony Console Component", "homepage": "https://symfony.com", - "time": "2018-01-29T09:03:43+00:00" + "time": "2018-02-26T15:46:28+00:00" }, { "name": "symfony/debug", - "version": "v3.4.4", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/symfony/debug.git", - "reference": "53f6af2805daf52a43b393b93d2f24925d35c937" + "reference": "9b1071f86e79e1999b3d3675d2e0e7684268b9bc" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/debug/zipball/53f6af2805daf52a43b393b93d2f24925d35c937", - "reference": "53f6af2805daf52a43b393b93d2f24925d35c937", + "url": "https://api.github.com/repos/symfony/debug/zipball/9b1071f86e79e1999b3d3675d2e0e7684268b9bc", + "reference": "9b1071f86e79e1999b3d3675d2e0e7684268b9bc", "shasum": "" }, "require": { @@ -1169,20 +1170,20 @@ ], "description": "Symfony Debug Component", "homepage": "https://symfony.com", - "time": "2018-01-18T22:16:57+00:00" + "time": "2018-02-28T21:49:22+00:00" }, { "name": "symfony/dependency-injection", - "version": "v3.4.4", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/symfony/dependency-injection.git", - "reference": "4b2717ee2499390e371e1fc7abaf886c1c83e83d" + "reference": "12e901abc1cb0d637a0e5abe9923471361d96b07" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/4b2717ee2499390e371e1fc7abaf886c1c83e83d", - "reference": "4b2717ee2499390e371e1fc7abaf886c1c83e83d", + "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/12e901abc1cb0d637a0e5abe9923471361d96b07", + "reference": "12e901abc1cb0d637a0e5abe9923471361d96b07", "shasum": "" }, "require": { @@ -1240,20 +1241,20 @@ ], "description": "Symfony DependencyInjection Component", "homepage": "https://symfony.com", - "time": "2018-01-29T09:16:57+00:00" + "time": "2018-03-04T03:54:53+00:00" }, { "name": "symfony/event-dispatcher", - "version": "v3.4.4", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/symfony/event-dispatcher.git", - "reference": "26b87b6bca8f8f797331a30b76fdae5342dc26ca" + "reference": "58990682ac3fdc1f563b7e705452921372aad11d" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/26b87b6bca8f8f797331a30b76fdae5342dc26ca", - "reference": "26b87b6bca8f8f797331a30b76fdae5342dc26ca", + "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/58990682ac3fdc1f563b7e705452921372aad11d", + "reference": "58990682ac3fdc1f563b7e705452921372aad11d", "shasum": "" }, "require": { @@ -1303,20 +1304,20 @@ ], "description": "Symfony EventDispatcher Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:37:34+00:00" + "time": "2018-02-14T10:03:57+00:00" }, { "name": "symfony/filesystem", - "version": "v3.4.4", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/symfony/filesystem.git", - "reference": "e078773ad6354af38169faf31c21df0f18ace03d" + "reference": "253a4490b528597aa14d2bf5aeded6f5e5e4a541" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/filesystem/zipball/e078773ad6354af38169faf31c21df0f18ace03d", - "reference": "e078773ad6354af38169faf31c21df0f18ace03d", + "url": "https://api.github.com/repos/symfony/filesystem/zipball/253a4490b528597aa14d2bf5aeded6f5e5e4a541", + "reference": "253a4490b528597aa14d2bf5aeded6f5e5e4a541", "shasum": "" }, "require": { @@ -1352,20 +1353,20 @@ ], "description": "Symfony Filesystem Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:37:34+00:00" + "time": "2018-02-22T10:48:49+00:00" }, { "name": "symfony/finder", - "version": "v3.4.4", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/symfony/finder.git", - "reference": "613e26310776f49a1773b6737c6bd554b8bc8c6f" + "reference": "a479817ce0a9e4adfd7d39c6407c95d97c254625" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/finder/zipball/613e26310776f49a1773b6737c6bd554b8bc8c6f", - "reference": "613e26310776f49a1773b6737c6bd554b8bc8c6f", + "url": "https://api.github.com/repos/symfony/finder/zipball/a479817ce0a9e4adfd7d39c6407c95d97c254625", + "reference": "a479817ce0a9e4adfd7d39c6407c95d97c254625", "shasum": "" }, "require": { @@ -1401,7 +1402,7 @@ ], "description": "Symfony Finder Component", "homepage": "https://symfony.com", - "time": "2018-01-03T07:37:34+00:00" + "time": "2018-03-05T18:28:11+00:00" }, { "name": "symfony/polyfill-mbstring", @@ -1464,16 +1465,16 @@ }, { "name": "symfony/process", - "version": "v3.4.4", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/symfony/process.git", - "reference": "09a5172057be8fc677840e591b17f385e58c7c0d" + "reference": "cc4aea21f619116aaf1c58016a944e4821c8e8af" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/process/zipball/09a5172057be8fc677840e591b17f385e58c7c0d", - "reference": "09a5172057be8fc677840e591b17f385e58c7c0d", + "url": "https://api.github.com/repos/symfony/process/zipball/cc4aea21f619116aaf1c58016a944e4821c8e8af", + "reference": "cc4aea21f619116aaf1c58016a944e4821c8e8af", "shasum": "" }, "require": { @@ -1509,20 +1510,20 @@ ], "description": "Symfony Process Component", "homepage": "https://symfony.com", - "time": "2018-01-29T09:03:43+00:00" + "time": "2018-02-12T17:55:00+00:00" }, { "name": "symfony/yaml", - "version": "v3.4.4", + "version": "v3.4.6", "source": { "type": "git", "url": "https://github.com/symfony/yaml.git", - "reference": "eab73b6c21d27ae4cd037c417618dfd4befb0bfe" + "reference": "6af42631dcf89e9c616242c900d6c52bd53bd1bb" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/yaml/zipball/eab73b6c21d27ae4cd037c417618dfd4befb0bfe", - "reference": "eab73b6c21d27ae4cd037c417618dfd4befb0bfe", + "url": "https://api.github.com/repos/symfony/yaml/zipball/6af42631dcf89e9c616242c900d6c52bd53bd1bb", + "reference": "6af42631dcf89e9c616242c900d6c52bd53bd1bb", "shasum": "" }, "require": { @@ -1567,22 +1568,22 @@ ], "description": "Symfony Yaml Component", "homepage": "https://symfony.com", - "time": "2018-01-21T19:05:02+00:00" + "time": "2018-02-16T09:50:28+00:00" } ], "packages-dev": [ { "name": "consolidation/annotated-command", - "version": "2.8.2", + "version": "2.8.3", "source": { "type": "git", "url": "https://github.com/consolidation/annotated-command.git", - "reference": "e97c38717eae23a2bafcf3f09438290eee6ebeb4" + "reference": "8f8f5da2ca06fbd3a85f7d551c49f844b7c59437" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/e97c38717eae23a2bafcf3f09438290eee6ebeb4", - "reference": "e97c38717eae23a2bafcf3f09438290eee6ebeb4", + "url": "https://api.github.com/repos/consolidation/annotated-command/zipball/8f8f5da2ca06fbd3a85f7d551c49f844b7c59437", + "reference": "8f8f5da2ca06fbd3a85f7d551c49f844b7c59437", "shasum": "" }, "require": { @@ -1594,6 +1595,7 @@ "symfony/finder": "^2.5|^3|^4" }, "require-dev": { + "greg-1-anderson/composer-test-scenarios": "^1", "phpunit/phpunit": "^4.8", "satooshi/php-coveralls": "^1.0.2 | dev-master", "squizlabs/php_codesniffer": "^2.7" @@ -1620,20 +1622,20 @@ } ], "description": "Initialize Symfony Console commands from annotated command class methods.", - "time": "2017-11-29T16:23:23+00:00" + "time": "2018-02-23T16:32:04+00:00" }, { "name": "consolidation/output-formatters", - "version": "3.1.13", + "version": "3.2.0", "source": { "type": "git", "url": "https://github.com/consolidation/output-formatters.git", - "reference": "3188461e965b32148c8fb85261833b2b72d34b8c" + "reference": "da889e4bce19f145ca4ec5b1725a946f4eb625a9" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/3188461e965b32148c8fb85261833b2b72d34b8c", - "reference": "3188461e965b32148c8fb85261833b2b72d34b8c", + "url": "https://api.github.com/repos/consolidation/output-formatters/zipball/da889e4bce19f145ca4ec5b1725a946f4eb625a9", + "reference": "da889e4bce19f145ca4ec5b1725a946f4eb625a9", "shasum": "" }, "require": { @@ -1642,11 +1644,17 @@ "symfony/finder": "^2.5|^3|^4" }, "require-dev": { - "phpunit/phpunit": "^4.8", - "satooshi/php-coveralls": "^1.0.2 | dev-master", + "g-1-a/composer-test-scenarios": "^2", + "phpunit/phpunit": "^5.7.27", + "satooshi/php-coveralls": "^2", "squizlabs/php_codesniffer": "^2.7", + "symfony/console": "3.2.3", + "symfony/var-dumper": "^2.8|^3|^4", "victorjonsson/markdowndocs": "^1.3" }, + "suggest": { + "symfony/var-dumper": "For using the var_dump formatter" + }, "type": "library", "extra": { "branch-alias": { @@ -1669,7 +1677,7 @@ } ], "description": "Format text by applying transformations provided by plug-in formatters.", - "time": "2017-11-29T15:25:38+00:00" + "time": "2018-03-20T15:18:32+00:00" }, { "name": "dnoegel/php-xdg-base-dir", @@ -1956,16 +1964,16 @@ }, { "name": "nikic/php-parser", - "version": "v3.1.4", + "version": "v3.1.5", "source": { "type": "git", "url": "https://github.com/nikic/PHP-Parser.git", - "reference": "e57b3a09784f846411aa7ed664eedb73e3399078" + "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/e57b3a09784f846411aa7ed664eedb73e3399078", - "reference": "e57b3a09784f846411aa7ed664eedb73e3399078", + "url": "https://api.github.com/repos/nikic/PHP-Parser/zipball/bb87e28e7d7b8d9a7fda231d37457c9210faf6ce", + "reference": "bb87e28e7d7b8d9a7fda231d37457c9210faf6ce", "shasum": "" }, "require": { @@ -2003,7 +2011,7 @@ "parser", "php" ], - "time": "2018-01-25T21:31:33+00:00" + "time": "2018-02-28T20:30:58+00:00" }, { "name": "pear/console_table", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.31.0/config.yaml new/platformsh-cli-3.31.3/config.yaml --- old/platformsh-cli-3.31.0/config.yaml 2018-03-20 20:43:46.000000000 +0100 +++ new/platformsh-cli-3.31.3/config.yaml 2018-03-27 03:39:09.000000000 +0200 @@ -1,7 +1,7 @@ # Metadata about the CLI application itself. application: name: 'Platform.sh CLI' - version: '3.31.0' + version: '3.31.3' executable: 'platform' package_name: 'platformsh/cli' installer_url: 'https://platform.sh/cli/installer' @@ -11,14 +11,20 @@ env_prefix: 'PLATFORMSH_CLI_' tmp_sub_dir: 'platformsh-cli-tmp' github_repo: 'platformsh/platformsh-cli' + release_branch: 'master' # The default interactive login method: either 'browser' or 'password'. # This can be overridden in the user config file. login_method: browser - # Disabled commands. + # Disabled commands (a list of full command names). disabled_commands: [] + # Experimental commands (a list of full command names). Enable these in the + # user config file: the array 'enable_commands' inside the 'experimental' + # section. + experimental_commands: [] + # Configuration for working with projects locally. local: local_dir: '.platform/local' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.31.0/dist/manifest.json new/platformsh-cli-3.31.3/dist/manifest.json --- old/platformsh-cli-3.31.0/dist/manifest.json 2018-03-20 20:43:46.000000000 +0100 +++ new/platformsh-cli-3.31.3/dist/manifest.json 2018-03-27 03:39:09.000000000 +0200 @@ -1,10 +1,10 @@ [ { "name": "platform.phar", - "sha1": "1daee0a6b40cc488dbb990b2410d4e75d73c7b72", - "sha256": "27fac1887197d02c5420895505a15a30475d0783f1d9103243e19bb0179dc666", - "url": "https://github.com/platformsh/platformsh-cli/releases/download/v3.31.0/platform.phar", - "version": "3.31.0", + "sha1": "40b9b2857a6e0c0e3f733119bc14a9c95fc75527", + "sha256": "1969c0e399818e12bbe38e7852d984dcd2f281e0c525448c0412b6e37452765a", + "url": "https://github.com/platformsh/platformsh-cli/releases/download/v3.31.3/platform.phar", + "version": "3.31.3", "php": { "min": "5.5.9" }, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.31.0/src/Command/Activity/ActivityGetCommand.php new/platformsh-cli-3.31.3/src/Command/Activity/ActivityGetCommand.php --- old/platformsh-cli-3.31.0/src/Command/Activity/ActivityGetCommand.php 2018-03-20 20:43:46.000000000 +0100 +++ new/platformsh-cli-3.31.3/src/Command/Activity/ActivityGetCommand.php 2018-03-27 03:39:09.000000000 +0200 @@ -2,6 +2,7 @@ namespace Platformsh\Cli\Command\Activity; use Platformsh\Cli\Command\CommandBase; +use Platformsh\Cli\Service\ActivityMonitor; use Platformsh\Cli\Service\PropertyFormatter; use Platformsh\Cli\Service\Table; use Platformsh\Client\Model\Activity; @@ -34,7 +35,7 @@ protected function execute(InputInterface $input, OutputInterface $output) { - $this->validateInput($input, $input->getOption('all')); + $this->validateInput($input, $input->getOption('all') || $input->getArgument('id')); $id = $input->getArgument('id'); if ($id) { @@ -66,7 +67,14 @@ $properties = $activity->getProperties(); - $properties['description'] = $activity->getDescription(false); + if (!$input->getOption('property') && !$table->formatIsMachineReadable()) { + $properties['description'] = ActivityMonitor::getFormattedDescription($activity, true); + } else { + $properties['description'] = ActivityMonitor::getFormattedDescription($activity, false); + if ($input->getOption('property')) { + $properties['description_html'] = $activity->description; + } + } // Calculate the duration of the activity. if (!isset($properties['duration'])) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.31.0/src/Command/Activity/ActivityLogCommand.php new/platformsh-cli-3.31.3/src/Command/Activity/ActivityLogCommand.php --- old/platformsh-cli-3.31.0/src/Command/Activity/ActivityLogCommand.php 2018-03-20 20:43:46.000000000 +0100 +++ new/platformsh-cli-3.31.3/src/Command/Activity/ActivityLogCommand.php 2018-03-27 03:39:09.000000000 +0200 @@ -39,7 +39,7 @@ protected function execute(InputInterface $input, OutputInterface $output) { - $this->validateInput($input, $input->getOption('all')); + $this->validateInput($input, $input->getOption('all') || $input->getArgument('id')); $id = $input->getArgument('id'); if ($id) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.31.0/src/Command/CommandBase.php new/platformsh-cli-3.31.3/src/Command/CommandBase.php --- old/platformsh-cli-3.31.0/src/Command/CommandBase.php 2018-03-20 20:43:46.000000000 +0100 +++ new/platformsh-cli-3.31.3/src/Command/CommandBase.php 2018-03-27 03:39:09.000000000 +0200 @@ -1265,8 +1265,7 @@ */ public function isEnabled() { - return !$this->config()->has('application.disabled_commands') - || !in_array($this->getName(), $this->config()->get('application.disabled_commands')); + return $this->config()->isCommandEnabled($this->getName()); } /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.31.0/src/Command/Self/SelfInstallCommand.php new/platformsh-cli-3.31.3/src/Command/Self/SelfInstallCommand.php --- old/platformsh-cli-3.31.0/src/Command/Self/SelfInstallCommand.php 2018-03-20 20:43:46.000000000 +0100 +++ new/platformsh-cli-3.31.3/src/Command/Self/SelfInstallCommand.php 2018-03-27 03:39:09.000000000 +0200 @@ -56,7 +56,16 @@ } } - if (strpos($currentShellConfig, $configDir . "/bin") !== false) { + $suggestedShellConfig = sprintf( + 'export PATH=%s:"$PATH"', + escapeshellarg($configDir . '/bin') + ); + $suggestedShellConfig .= PHP_EOL . sprintf( + '[ -f %1$s ] && . %1$s', + escapeshellarg($rcDestination) + ); + + if (strpos($currentShellConfig, $suggestedShellConfig) !== false) { $this->stdErr->writeln(sprintf('Already configured: <info>%s</info>', $shellConfigFile)); $this->stdErr->writeln(''); $this->stdErr->writeln(sprintf( @@ -67,9 +76,6 @@ return 0; } - $suggestedShellConfig = 'export PATH=' . escapeshellarg($configDir . '/bin') . ':"$PATH"' . PHP_EOL - . '. ' . escapeshellarg($rcDestination); - /** @var \Platformsh\Cli\Service\QuestionHelper $questionHelper */ $questionHelper = $this->getService('question_helper'); if ($shellConfigFile === false || !$questionHelper->confirm('Do you want to update the file automatically?')) { @@ -94,10 +100,24 @@ return 1; } - $newShellConfig = rtrim($currentShellConfig, PHP_EOL) - . PHP_EOL . PHP_EOL - . '# BEGIN SNIPPET: Automatically added by the ' . $this->config()->get('application.name') - . PHP_EOL . $suggestedShellConfig . ' # END SNIPPET' . PHP_EOL; + $begin = '# BEGIN SNIPPET: Automatically added by the ' . $this->config()->get('application.name'); + $end = '# END SNIPPET'; + + $beginPos = strpos($currentShellConfig, $begin); + $endPos = strpos($currentShellConfig, $end, $beginPos ?: 0); + if ($beginPos !== false && $endPos !== false && $endPos > $beginPos) { + $newShellConfig = substr_replace( + $currentShellConfig, + $begin . PHP_EOL . $suggestedShellConfig . ' ' . $end, + $beginPos, + $endPos + strlen($end) - $beginPos + ); + } else { + $newShellConfig = rtrim($currentShellConfig, PHP_EOL) + . PHP_EOL . PHP_EOL + . $begin . PHP_EOL . $suggestedShellConfig . ' ' . $end + . PHP_EOL; + } copy($shellConfigFile, $shellConfigFile . '.cli.bak'); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.31.0/src/Command/Self/SelfReleaseCommand.php new/platformsh-cli-3.31.3/src/Command/Self/SelfReleaseCommand.php --- old/platformsh-cli-3.31.0/src/Command/Self/SelfReleaseCommand.php 2018-03-20 20:43:46.000000000 +0100 +++ new/platformsh-cli-3.31.3/src/Command/Self/SelfReleaseCommand.php 2018-03-27 03:39:09.000000000 +0200 @@ -16,6 +16,8 @@ { $defaultRepo = $this->config()->has('application.github_repo') ? $this->config()->get('application.github_repo') : null; + $defaultReleaseBranch = $this->config()->has('application.release_branch') + ? $this->config()->get('application.release_branch') : 'master'; $this ->setName('self:release') @@ -24,8 +26,9 @@ ->addOption('repo', null, InputOption::VALUE_REQUIRED, 'The GitHub repository', $defaultRepo) ->addOption('manifest', null, InputOption::VALUE_REQUIRED, 'The manifest file to update') ->addOption('manifest-mode', null, InputOption::VALUE_REQUIRED, 'How to update the manifest file', 'update-latest') - ->addOption('release-branch', null, InputOption::VALUE_REQUIRED, 'Override the release branch', 'master') - ->addOption('last-version', null, InputOption::VALUE_REQUIRED, 'Specify the last version number'); + ->addOption('release-branch', null, InputOption::VALUE_REQUIRED, 'Override the release branch', $defaultReleaseBranch) + ->addOption('last-version', null, InputOption::VALUE_REQUIRED, 'Specify the last version number') + ->addOption('no-check-changes', null, InputOption::VALUE_NONE, 'Skip check for uncommitted changes'); } public function isEnabled() @@ -61,13 +64,15 @@ $git->execute(['merge', 'development'], CLI_ROOT, true); } - $gitStatus = $git->execute(['status', '--porcelain'], CLI_ROOT, true); - if (is_string($gitStatus) && !empty($gitStatus)) { - foreach (explode("\n", $gitStatus) as $statusLine) { - if (strpos($statusLine, ' config.yaml') === false) { - $this->stdErr->writeln('There are uncommitted changes in Git. Cannot proceed.'); + if (!$input->getOption('no-check-changes')) { + $gitStatus = $git->execute(['status', '--porcelain'], CLI_ROOT, true); + if (is_string($gitStatus) && !empty($gitStatus)) { + foreach (explode("\n", $gitStatus) as $statusLine) { + if (strpos($statusLine, ' config.yaml') === false) { + $this->stdErr->writeln('There are uncommitted changes in Git. Cannot proceed.'); - return 1; + return 1; + } } } } @@ -200,7 +205,7 @@ $pharPublicFilename = $this->config()->get('application.executable') . '.phar'; - $changelog = $this->getReleaseChangelog($lastVersion); + $changelog = $this->getReleaseChangelog($lastVersion, $repoApiUrl); $questionText = "\nChangelog:\n\n" . $changelog . "\n\nIs this changelog correct?"; /** @var \Platformsh\Cli\Service\QuestionHelper $questionHelper */ $questionHelper = $this->getService('question_helper'); @@ -330,10 +335,11 @@ /** * @param string $lastVersion The last version number. + * @param string $repoApiUrl * * @return string */ - private function getReleaseChangelog($lastVersion) + private function getReleaseChangelog($lastVersion, $repoApiUrl) { $lastVersionTag = 'v' . ltrim($lastVersion, 'v'); $filename = CLI_ROOT . '/release-changelog.md'; @@ -349,7 +355,7 @@ } } if (empty($changelog)) { - $changelog = $this->getGitChangelog($lastVersionTag); + $changelog = $this->getGitChangelog($lastVersionTag, $repoApiUrl); (new Filesystem())->dumpFile($filename, $changelog); } @@ -374,24 +380,42 @@ /** * @param string $since + * @param string $repoApiUrl * * @return string */ - private function getGitChangelog($since) + private function getGitChangelog($since, $repoApiUrl) { + $http = new Client(); + $ref = $http->get($repoApiUrl . '/git/refs/tags/' . rawurlencode($since), [ + 'headers' => [ + 'Authorization' => 'token ' . getenv('GITHUB_TOKEN'), + 'Content-Type' => 'application/json', + ], + 'debug' => $this->stdErr->isDebug(), + ])->json(); + $sha = $ref['object']['sha']; + /** @var \Platformsh\Cli\Service\Git $git */ $git = $this->getService('git'); $changelog = $git->execute([ 'log', - '--pretty=format:* %s', + '--pretty=tformat:* %s%n%b', '--no-merges', '--invert-grep', '--grep=(Release v|\[skip changelog\])', '--perl-regexp', '--regexp-ignore-case', - $since . '...HEAD' + $sha . '...HEAD' ], CLI_ROOT); + if (!is_string($changelog)) { + return ''; + } - return is_string($changelog) ? $changelog : ''; + $changelog = preg_replace('/^[^\*\n]/m', ' $0', $changelog); + $changelog = preg_replace('/\n+\*/', "\n*", $changelog); + $changelog = trim($changelog); + + return $changelog; } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.31.0/src/Command/Variable/VariableCommandBase.php new/platformsh-cli-3.31.3/src/Command/Variable/VariableCommandBase.php --- old/platformsh-cli-3.31.0/src/Command/Variable/VariableCommandBase.php 2018-03-20 20:43:46.000000000 +0100 +++ new/platformsh-cli-3.31.3/src/Command/Variable/VariableCommandBase.php 2018-03-27 03:39:09.000000000 +0200 @@ -149,10 +149,20 @@ $fields['level'] = new OptionsField('Level', [ 'description' => 'The level at which to set the variable', + 'shortcut' => 'l', 'options' => [ self::LEVEL_PROJECT => 'Project-wide', self::LEVEL_ENVIRONMENT => 'Environment-specific', ], + 'normalizer' => function ($value) { + foreach ([self::LEVEL_PROJECT, self::LEVEL_ENVIRONMENT] as $validLevel) { + if (stripos($validLevel, $value) === 0) { + return $validLevel; + } + } + + return $value; + }, ]); $fields['environment'] = new OptionsField('Environment', [ 'conditions' => [ @@ -165,7 +175,6 @@ }, 'asChoice' => false, 'includeAsOption' => false, - 'default' => $this->hasSelectedEnvironment() ? $this->getSelectedEnvironment()->id : null, ]); $fields['name'] = new Field('Name', [ 'description' => 'The variable name', diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.31.0/src/Command/Variable/VariableCreateCommand.php new/platformsh-cli-3.31.3/src/Command/Variable/VariableCreateCommand.php --- old/platformsh-cli-3.31.0/src/Command/Variable/VariableCreateCommand.php 2018-03-20 20:43:46.000000000 +0100 +++ new/platformsh-cli-3.31.3/src/Command/Variable/VariableCreateCommand.php 2018-03-27 03:39:09.000000000 +0200 @@ -34,6 +34,12 @@ { $this->validateInput($input, true); + // Set the default for the environment form field. + if ($this->hasSelectedEnvironment() && ($field = $this->form->getField('environment'))) { + $field->set('default', $this->getSelectedEnvironment()->id); + } + + // Merge the 'name' argument with the --name option. if ($input->getArgument('name')) { if ($input->getOption('name')) { $this->stdErr->writeln('You cannot use both the <error>name</error> argument and <error>--name</error> option.'); @@ -43,7 +49,8 @@ $input->setOption('name', $input->getArgument('name')); } - if (($name = $input->getOption('name')) && $this->getExistingVariable($name, $input->getOption('level'))) { + // Check whether the variable already exists, if a name is provided. + if (($name = $input->getOption('name')) && $this->getExistingVariable($name, $input->getOption('level'), false)) { $this->stdErr->writeln('The variable already exists: <error>' . $name . '</error>'); $executable = $this->config()->get('application.executable'); @@ -82,6 +89,25 @@ unset($values['environment']); } + // Validate the is_json setting against the value. + if (isset($values['value']) && !empty($values['is_json'])) { + if (json_decode($values['value']) === null && json_last_error()) { + $this->stdErr->writeln('The value is not valid JSON: <error>' . $values['value'] . '</error>'); + + return 1; + } + } + + // Validate the variable name for "env:"-prefixed variables. + $envPrefixLength = 4; + if (substr($values['name'], 0, $envPrefixLength) === 'env:' + && !preg_match('/^[a-z][a-z0-9_]*$/i', substr($values['name'], $envPrefixLength))) { + $this->stdErr->writeln('The environment variable name is invalid: <error>' . substr($values['name'], $envPrefixLength) . '</error>'); + $this->stdErr->writeln('Environment variable names can only contain letters (A-Z), digits (0-9), and underscores. The first character must be a letter.'); + + return 1; + } + $level = $values['level']; unset($values['level']); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.31.0/src/Command/Variable/VariableUpdateCommand.php new/platformsh-cli-3.31.3/src/Command/Variable/VariableUpdateCommand.php --- old/platformsh-cli-3.31.0/src/Command/Variable/VariableUpdateCommand.php 2018-03-20 20:43:46.000000000 +0100 +++ new/platformsh-cli-3.31.3/src/Command/Variable/VariableUpdateCommand.php 2018-03-27 03:39:09.000000000 +0200 @@ -62,6 +62,17 @@ } } + // Validate the is_json setting against the value. + if ((isset($variable->value) || isset($values['value'])) + && (!empty($values['is_json']) || $variable->is_json)) { + $value = isset($values['value']) ? $values['value'] : $variable->value; + if (json_decode($value) === null && json_last_error()) { + $this->stdErr->writeln('The value is not valid JSON: <error>' . $value . '</error>'); + + return 1; + } + } + if (!$values) { $this->stdErr->writeln('No changes were provided.'); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.31.0/src/Console/AdaptiveTable.php new/platformsh-cli-3.31.3/src/Console/AdaptiveTable.php --- old/platformsh-cli-3.31.0/src/Console/AdaptiveTable.php 2018-03-20 20:43:46.000000000 +0100 +++ new/platformsh-cli-3.31.3/src/Console/AdaptiveTable.php 2018-03-27 03:39:09.000000000 +0200 @@ -175,6 +175,9 @@ $lastTagClose = 0; foreach ($matches[0] as $match) { list($tagChunk, $tagOffset) = $match; + if (substr($formattedText, $tagOffset - 1, 1) === '\\') { + continue; + } $plainText .= substr($formattedText, $lastTagClose, $tagOffset - $lastTagClose); $tagChunks[$tagOffset] = $tagChunk; $lastTagClose = $tagOffset + strlen($tagChunk); @@ -193,6 +196,8 @@ $breakPosition = $spacePos + 1; } else { $breakPosition = $maxLength; + // Adjust for \< which will be converted to < later. + $breakPosition += substr_count($remaining, '\\<', 0, $breakPosition); } $line = substr($remaining, 0, $breakPosition); $remaining = substr($remaining, $breakPosition); @@ -230,8 +235,8 @@ // Ensure that tags are closed at the end of each line and re-opened at // the beginning of the next one. - $wrapped = preg_replace_callback("#(<" . $tagRegex . ">)([^<\n]+)\n(.+)#", function (array $matches) { - return $matches[1] . $matches[2] . "</>\n" . $matches[1] . $matches[3]; + $wrapped = preg_replace_callback('@(<' . $tagRegex . '>)(((?!(?<!\\\)</).)+)@s', function (array $matches) { + return $matches[1] . str_replace("\n", "</>\n" . $matches[1], $matches[2]); }, $wrapped); return $wrapped; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.31.0/src/Service/ActivityMonitor.php new/platformsh-cli-3.31.3/src/Service/ActivityMonitor.php --- old/platformsh-cli-3.31.0/src/Service/ActivityMonitor.php 2018-03-20 20:43:46.000000000 +0100 +++ new/platformsh-cli-3.31.3/src/Service/ActivityMonitor.php 2018-03-27 03:39:09.000000000 +0200 @@ -282,16 +282,22 @@ */ public static function getFormattedDescription(Activity $activity, $withDecoration = true) { - $value = $activity->hasProperty('description') - ? $activity->getProperty('description') - : $activity->getDescription(true); if (!$withDecoration) { - return strip_tags($value); + return $activity->getDescription(false); } + $value = $activity->getDescription(true); - // Replace description HTML fields with underlined plain text. - $value = preg_replace('/<[^\/][^>]*>/', '<options=underscore>', $value); - $value = preg_replace('/<\/[^>]+>/', '</>', $value); + // Replace description HTML elements with Symfony Console decoration + // tags. + $value = preg_replace('@<[^/>]+>@', '<options=underscore>', $value); + $value = preg_replace('@</[^>]+>@', '</>', $value); + + // Replace literal tags like "<info&;gt;" with escaped tags like + // "\<info>". + $value = preg_replace('@<(/?[a-z][a-z0-9,_=;-]*+)>@i', '\\\<$1>', $value); + + // Decode other HTML entities. + $value = html_entity_decode($value, ENT_QUOTES, 'utf-8'); return $value; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.31.0/src/Service/Config.php new/platformsh-cli-3.31.3/src/Service/Config.php --- old/platformsh-cli-3.31.0/src/Service/Config.php 2018-03-20 20:43:46.000000000 +0100 +++ new/platformsh-cli-3.31.3/src/Service/Config.php 2018-03-27 03:39:09.000000000 +0200 @@ -237,4 +237,29 @@ { return !empty(self::$config['experimental']['all_experiments']) || !empty(self::$config['experimental'][$name]); } + + /** + * Test if a command should be enabled. + * + * @param string $name + * + * @return bool + */ + public function isCommandEnabled($name) + { + if (!empty(self::$config['application']['disabled_commands']) + && in_array($name, self::$config['application']['disabled_commands'])) { + return false; + } + if (!empty(self::$config['application']['experimental_commands']) + && in_array($name, self::$config['application']['experimental_commands'])) { + return !empty(self::$config['experimental']['all_experiments']) + || ( + !empty(self::$config['experimental']['enable_commands']) + && in_array($name, self::$config['experimental']['enable_commands']) + ); + } + + return true; + } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/platformsh-cli-3.31.0/tests/Console/AdaptiveTableTest.php new/platformsh-cli-3.31.3/tests/Console/AdaptiveTableTest.php --- old/platformsh-cli-3.31.0/tests/Console/AdaptiveTableTest.php 2018-03-20 20:43:46.000000000 +0100 +++ new/platformsh-cli-3.31.3/tests/Console/AdaptiveTableTest.php 2018-03-27 03:39:09.000000000 +0200 @@ -49,14 +49,8 @@ $plainText = Helper::removeDecoration($f, $input); foreach ($maxLengths as $maxLength) { $plainWrapped = wordwrap($plainText, $maxLength, "\n", true); - $plainWrappedLines = explode("\n", $plainWrapped); $tableWrapped = $table->wrapWithDecoration($input, $maxLength); - $tableWrappedLines = explode("\n", $tableWrapped); - // Test each line individually, to ensure the markup makes sense per - // line. - foreach ($tableWrappedLines as $key => $line) { - $this->assertEquals($plainWrappedLines[$key], Helper::removeDecoration($f, $line)); - } + $this->assertEquals($plainWrapped, Helper::removeDecoration($f, $tableWrapped)); } } @@ -77,7 +71,14 @@ public function testWrapWithDecorationComplex() { $this->assertWrappedWithDecoration( - 'Lorem ipsum <info>dolor</info> sit <info>amet,</info> consectetur <error>adipiscing elit,</error> sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud <options=underscore>exercitation</> ullamco laboris nisi ut aliquip ex ea commodo <options=reverse>consequat. Duis</> aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat (cupidatat) non <info>proident</info>, sunt in culpa qui officia deserunt mollit anim id est laborum.' + 'Lorem ipsum <info>dolor</info> sit <info>amet,</info> consectetur <error>adipiscing elit,</error> sed do eiusmod tempor <options=reverse>incididunt ut labore et dolore magna aliqua.</> Ut enim ad minim veniam, quis nostrud <options=underscore>exercitation</> ullamco laboris nisi ut aliquip ex ea commodo <options=reverse>consequat. Duis</> aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat (cupidatat) non <info>proident</info>, sunt in culpa qui officia deserunt mollit anim id est laborum.' + ); + } + + public function testWrapWithDecorationIncludingEscapedTags() + { + $this->assertWrappedWithDecoration( + 'The quick brown fox <options=underscore>jumps</> over the lazy \\<script type="text/javascript">dog\\</script>.' ); } } ++++++ platformsh-cli-vendor.tar.xz ++++++ ++++ 2673 lines of diff (skipped)
