Homec4science

Increase the power of `bin/config`

Authored by epriestley <git@epriestley.com> on Jan 22 2013, 00:27.

Description

Increase the power of bin/config

Summary:
Fixes T2254. Make the CLI for config more powerful:

  • Add validation for set.
  • Add get.
  • Add list.
  • Add delete.

The get command produces fairly verbose JSON to support flags like --all, or --source database later. The other commands are straightforward.

Test Plan:
Tested config set:

$ ./bin/config set
Usage Exception: Specify a configuration key and a value to set it to.
$ ./bin/config set x
Usage Exception: Specify a value to set the key 'x' to.
$ ./bin/config set phabricator.base-uri
Usage Exception: Specify a value to set the key 'phabricator.base-uri' to.
$ ./bin/config set phabricator.base-uri x
Usage Exception: Config option 'phabricator.base-uri' is invalid. The URI must start with 'http://' or 'https://'.
$ ./bin/config set phabricator.base-uri http://x
Usage Exception: Config option 'phabricator.base-uri' is invalid. The URI must contain a dot ('.'), like 'http://example.com/', not just a bare name like 'http://example/'. Some web browsers will not set cookies on domains with no TLD.
$ ./bin/config set phabricator.base-uri http://x.com
Set 'phabricator.base-uri' in local configuration.
$

Tested config get:

$ ./bin/config get pygments.enabled
{
  "config" : []
}
$ ./bin/config set pygments.enabled true
Set 'pygments.enabled' in local configuration.
$ ./bin/config get pygments.enabled
{
  "config" : [
    {
      "key"    : "pygments.enabled",
      "source" : "local",
      "value"  : true
    }
  ]
}
$

Tested config delete:

$ ./bin/config delete
Usage Exception: Specify a configuration key to delete.
$ ./bin/config delete x x
Usage Exception: Too many arguments: expected one key.
$ ./bin/config delete x
Usage Exception: No such configuration key 'x'! Use `config list` to list all keys.
$ ./bin/config delete pygments.enabled
Deleted 'pygments.enabled' from local configuration.
$ ./bin/config delete pygments.enabled
Usage Exception: Configuration key 'pygments.enabled' is not set in local configuration!
$

Tested config list:

$ ./bin/config list
account.editable
account.minimum-password-length
amazon-ec2.access-key
amazon-ec2.secret-key
amazon-s3.access-key
amazon-s3.endpoint
amazon-s3.secret-key
amazon-ses.access-key
amazon-ses.secret-key
aphront.default-application-configuration-class
audit.can-author-close-audit
auth.email-domains
auth.login-message
auth.password-auth-enabled
auth.require-email-verification
auth.sessions.conduit
auth.sessions.web
auth.sshkeys.enabled
cache.enable-deflate
celerity.force-disk-reads
celerity.minify
celerity.resource-hash
celerity.resource-path
config.hide
config.lock
config.mask
controller.oauth-registration
darkconsole.always-on
darkconsole.enabled
debug.profile-rate
debug.stop-on-redirect
differential.allow-reopen
differential.allow-self-accept
differential.always-allow-close
differential.anonymous-access
differential.custom-remarkup-block-rules
differential.custom-remarkup-rules
differential.days-fresh
differential.days-stale
differential.enable-email-accept
differential.expose-emails-prudently
differential.field-selector
differential.generated-paths
differential.require-test-plan-field
differential.revision-custom-detail-renderer
differential.show-host-field
differential.show-test-plan-field
differential.whitespace-matters
disqus.application-id
disqus.application-secret
disqus.auth-enabled
disqus.auth-permanent
disqus.registration-enabled
disqus.shortname
environment.append-paths
events.listeners
facebook.application-id
facebook.application-secret
facebook.auth-enabled
facebook.auth-permanent
facebook.registration-enabled
facebook.require-https-auth
feed.http-hooks
feed.public
files.image-mime-types
files.viewable-mime-types
gcdaemon.ttl.daemon-logs
gcdaemon.ttl.differential-parse-cache
gcdaemon.ttl.general-cache
gcdaemon.ttl.herald-transcripts
gcdaemon.ttl.markup-cache
gcdaemon.ttl.task-archive
github.application-id
github.application-secret
github.auth-enabled
github.auth-permanent
github.registration-enabled
google.application-id
google.application-secret
google.auth-enabled
google.auth-permanent
google.registration-enabled
ldap.activedirectory_domain
ldap.anonymous-user-name
ldap.anonymous-user-password
ldap.auth-enabled
ldap.base_dn
ldap.hostname
ldap.port
ldap.real_name_attributes
ldap.referrals
ldap.search-first
ldap.search_attribute
ldap.start-tls
ldap.username-attribute
ldap.version
load-libraries
log.access.format
log.access.path
maniphest.custom-fields
maniphest.custom-task-extensions-class
maniphest.default-priority
maniphest.enabled
metamta.can-send-as-user
metamta.default-address
metamta.differential.attach-patches
metamta.differential.inline-patches
metamta.differential.patch-format
metamta.differential.reply-handler
metamta.differential.reply-handler-domain
metamta.differential.subject-prefix
metamta.differential.unified-comment-context
metamta.diffusion.attach-patches
metamta.diffusion.byte-limit
metamta.diffusion.inline-patches
metamta.diffusion.reply-handler
metamta.diffusion.reply-handler-domain
metamta.diffusion.subject-prefix
metamta.diffusion.time-limit
metamta.domain
metamta.herald.show-hints
metamta.insecure-auth-with-reply-to
metamta.macro.reply-handler-domain
metamta.macro.subject-prefix
metamta.mail-adapter
metamta.maniphest.default-public-author
metamta.maniphest.public-create-email
metamta.maniphest.reply-handler
metamta.maniphest.reply-handler-domain
metamta.maniphest.subject-prefix
metamta.one-mail-per-recipient
metamta.package.reply-handler
metamta.package.subject-prefix
metamta.pholio.reply-handler-domain
metamta.pholio.subject-prefix
metamta.placeholder-to-recipient
metamta.precedence-bulk
metamta.public-replies
metamta.re-prefix
metamta.recipients.show-hints
metamta.reply.show-hints
metamta.send-immediately
metamta.single-reply-handler-prefix
metamta.user-address-format
metamta.vary-subjects
mysql.configuration-provider
mysql.host
mysql.implementation
mysql.pass
mysql.user
notification.client-uri
notification.debug
notification.enabled
notification.log
notification.pidfile
notification.server-uri
notification.user
phabricator.application-id
phabricator.application-secret
phabricator.auth-enabled
phabricator.auth-permanent
phabricator.base-uri
phabricator.csrf-key
phabricator.env
phabricator.mail-key
phabricator.oauth-uri
phabricator.production-uri
phabricator.registration-enabled
phabricator.serious-business
phabricator.setup
phabricator.show-beta-applications
phabricator.show-error-callout
phabricator.show-stack-traces
phabricator.timezone
phame.skins
phd.log-directory
phd.pid-directory
phd.start-taskmasters
phd.trace
phd.verbose
phid.external-loaders
phpmailer.mailer
phpmailer.smtp-host
phpmailer.smtp-password
phpmailer.smtp-port
phpmailer.smtp-protocol
phpmailer.smtp-user
phriction.enabled
policy.allow-public
pygments.dropdown-choices
pygments.enabled
recaptcha.enabled
recaptcha.private-key
recaptcha.public-key
remarkup.enable-embedded-youtube
repository.default-local-path
search.elastic.host
search.engine-selector
security.alternate-file-domain
security.hmac-key
security.require-https
sendgrid.api-key
sendgrid.api-user
storage.default-namespace
storage.engine-selector
storage.local-disk.path
storage.mysql-engine.max-size
storage.s3.bucket
storage.upload-size-limit
style.monospace
syntax-highlighter.engine
syntax.filemap
test.value
tokenizer.ondemand
translation.override
translation.provider
uri.allowed-protocols
$

Reviewers: btrahan, codeblock

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T2254

Differential Revision: https://secure.phabricator.com/D4570

Details

Committed
epriestley <git@epriestley.com>Jan 22 2013, 00:27
Pushed
aubortJan 31 2017, 17:16
Parents
rPH08e61c6ff18f: Phabricator changes for TOC markup
Branches
Unknown
Tags
Unknown

Event Timeline

epriestley <git@epriestley.com> committed rPHbaa9d96082b7: Increase the power of `bin/config` (authored by epriestley <git@epriestley.com>).Jan 22 2013, 00:27