settingsSpecGenerator function
Future<FigSubcommand>
settingsSpecGenerator(
- List<
String> tokens, - ExecuteCommandFunction? executeShellCommand, [
- FigGeneratorContext? context
Implementation
Future<FigSubcommand> settingsSpecGenerator(
List<String> tokens, ExecuteCommandFunction? executeShellCommand,
[FigGeneratorContext? context]) async {
if (executeShellCommand == null) {
return FigSubcommand(name: "settings");
}
final out = await executeShellCommand(ExecuteCommandInput(
command: "fig",
args: ["_", "request", "--method", "GET", "--route", "/settings/all"],
));
final json = jsonDecode(out.stdout);
final settings =
(json['settings'] as List).map((e) => Setting.fromJson(e)).toList();
final actions =
(json['actions'] as List).map((e) => Action.fromJson(e)).toList();
final actionSuggestions = actions
.map((action) => FigSuggestion(
name: action.identifier.startsWith("autocomplete.")
? action.identifier.substring(13)
: action.identifier,
description: action.description,
icon: "⚡️",
))
.toList();
return FigSubcommand(
name: "settings",
subcommands: settings.map((setting) {
final suggestions = setting.type == "boolean"
? ["true", "false"].map((e) => FigSuggestion(name: e)).toList()
: setting.settingName.startsWith("autocomplete.keybindings.")
? actionSuggestions
: setting.options?.map((option) {
if (option is Map) {
return FigSuggestion(
name: option["name"],
description: option["description"] ?? "",
);
}
return FigSuggestion(name: option.toString());
}).toList();
final generators = settingsGeneratorsMap[setting.settingName];
return FigSubcommand(
name: setting.settingName,
description: setting.description,
icon: "fig://icon?type=commandkey",
args: [
FigArg(
name: setting.type,
defaultValue: setting.defaultValue,
suggestions: generators != null ? [] : suggestions,
generators: generators != null ? [generators] : null,
)
],
);
}).toList(),
);
}