const domain: Fig.Arg = { name: "domain", generators: { script: "defaults domains", postProcess: function (out) { return out.split(",").map((domain) => { return { name: domain.trim(), }; }); }, }, suggestions: [ { name: "-globalDomain", description: "Global domain", }, { name: "-app", insertValue: "-app '{cursor}'", description: "Application name", }, ], }; const key: Fig.Arg = { name: "key", }; const value: Fig.Arg = { name: "value", }; const valueArgs = [ { name: "-string", args: { name: "string_value", }, }, { name: "-data", args: { name: "hex_digits", }, }, { name: ["-int", "-integer"], args: { name: "integer_value", }, }, { name: "-float", args: { name: "floating-point_value", }, }, { name: ["-bool", "-boolean"], args: { suggestions: [ { name: "true", }, { name: "false", }, { name: "yes", }, { name: "no", }, ], }, }, { name: "-date", args: { name: "date_rep", }, }, { name: "-array", args: { variadic: true, name: "array_item", }, }, { name: "-array-add", args: { variadic: true, name: "array_item", }, }, ]; export const completionSpec: Fig.Spec = { name: "defaults", description: "Command line interface to a user's defaults.", subcommands: [ { name: "read", description: "shows defaults", args: [domain, key], }, { name: "write", insertValue: "write ", description: "writes key for domain", args: [domain, key, value], }, { name: "delete", description: "deletes domain or key in domain", args: [domain, key], }, { name: "rename", description: "renames old_key to new_key", args: [ domain, { name: "old_key", }, { name: "new_key", }, ], }, { name: "domains", description: "lists all domains", }, { name: "find", description: "lists all entries containing word", args: { name: "word", description: "The word to search for...", }, }, { name: "help", description: "show help text", }, { name: "read-type", description: "shows the type for the given domain, key", args: [domain, key], }, ], }; // Command line interface to a user's defaults. // Syntax: // 'defaults' [-currentHost | -host ] followed by one of the following: // read shows all defaults // read shows defaults for given domain // read shows defaults for given domain, key // read-type shows the type for the given domain, key // write writes domain (overwrites existing) // write writes key for domain // rename renames old_key to new_key // delete deletes domain // delete deletes key in domain // import writes the plist at path to domain // import - writes a plist from stdin to domain // export saves domain as a binary plist to path // export - writes domain as an xml plist to stdout // domains lists all domains // find lists all entries containing word // help print this help // is ( | -app | -globalDomain ) // or a path to a file omitting the '.plist' extension // is one of: // // -string // -data // -int[eger] // -float // -bool[ean] (true | false | yes | no) // -date // -array ... // -array-add ... // -dict ... // -dict-add ...