HomePhabricator

[Wilds] Flesh out most of the new Config objects

Description

[Wilds] Flesh out most of the new Config objects

Summary:
Ref T13098. This is pretty rough, but sketches out the general shape of a more modern configuration flow. The new flow is very similar to the Phabricator flow.

Each configuration option is typed (string, bool, list of dictionaries, etc) so we can typecheck it, and each type is a class so the types are modular and can do fancy stuff. Some of this "fancy stuff" that I want to do includes:

  • transparently rewriting/reformatting various options for modernness/consistency;
  • having some options exposed as objects instead of raw JSON values (in particular, aliases);
  • merging "list" options (like "aliases") in a modular way instead of by having hard-coded stuff that says "this particular option is magic gets merged instead of getting replaced when defined in multiple places".

Generally, this makes everything modular and extensible and gets rid of the hard-coded switch (...) stuff.

Test Plan: Ran arc get-config, it sort of almost worked.

Reviewers: amckinley

Reviewed By: amckinley

Maniphest Tasks: T13098

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

Details

Provenance
epriestleyAuthored on Sep 18 2018, 8:46 PM
epriestleyPushed on Sep 21 2018, 11:58 PM
Reviewer
amckinley
Differential Revision
D19695: [Wilds] Flesh out most of the new Config objects
Parents
rARC23aaf85eafce: [Wilds] Allow class loading to continue on failure
Branches
Unknown
Tags
Unknown
Tasks
T13098: Plans: Arcanist toolsets and extensions
Build Status
Buildable 20882
Build 28394: Run Core Tests