From d69a6b8490a52f01ca5899ac95682f003dfba557 Mon Sep 17 00:00:00 2001 From: epriestley Date: Mon, 2 Mar 2015 07:51:19 -0800 Subject: [PATCH] Improve error messages when specifying bad set or list to bin/config Summary: Fixes T7308. Multiple users have encountered confusion around how they should specify a set or list in JSON; provide examples. Test Plan: ``` epriestley@orbital ~/dev/phabricator $ ./bin/config set files.image-mime-types true Usage Exception: Config key 'files.image-mime-types' is of type 'set'. Specify it in JSON. For example: ./bin/config set '{"value1": true, "value2": true}' epriestley@orbital ~/dev/phabricator $ ./bin/config set cluster.addresses true Usage Exception: Config key 'cluster.addresses' is of type 'list'. Specify it in JSON. For example: ./bin/config set '["a", "b", "c"]' epriestley@orbital ~/dev/phabricator $ ``` Reviewers: btrahan, chad Reviewed By: chad Subscribers: epriestley Maniphest Tasks: T7308 Differential Revision: https://secure.phabricator.com/D11925 --- ...PhabricatorConfigManagementSetWorkflow.php | 32 ++++++++++++++++--- 1 file changed, 28 insertions(+), 4 deletions(-) diff --git a/src/applications/config/management/PhabricatorConfigManagementSetWorkflow.php b/src/applications/config/management/PhabricatorConfigManagementSetWorkflow.php index b20c91cbff..0da6332268 100644 --- a/src/applications/config/management/PhabricatorConfigManagementSetWorkflow.php +++ b/src/applications/config/management/PhabricatorConfigManagementSetWorkflow.php @@ -87,10 +87,34 @@ final class PhabricatorConfigManagementSetWorkflow default: $value = json_decode($value, true); if (!is_array($value)) { - throw new PhutilArgumentUsageException(pht( - "Config key '%s' is of type '%s'. Specify it in JSON.", - $key, - $type)); + switch ($type) { + case 'set': + $message = pht( + "Config key '%s' is of type '%s'. Specify it in JSON. ". + "For example:\n\n". + ' ./bin/config set \'{"value1": true, "value2": true}\''. + "\n", + $key, + $type); + break; + default: + if (preg_match('/^list