run method

  1. @override
FutureOr? run()
override

Runs this command.

The return value is wrapped in a Future if necessary and returned by CommandRunner.runCommand.

Implementation

@override
FutureOr? run() async {
  final args = argResults;
  if (args == null) {
    return;
  }
  final fileId = args['fileId'] as String;
  final token = args['token'] as String;
  final jsonOutput = args['jsonOutputFile'] as String?;
  final dartOutputFolder = args['dartOutputFolder'] as String;

  final collectionOverrides = args['collectionOverrides'] as List<String>;
  final variableOverrides = args['variableOverrides'] as List<String>;
  final excludedCollections = args['excludedCollections'] as List<String>;

  logger.log('Fetching the file $fileId from Figma');
  final (response, rawResponse) = await figmaApi.getVariables(
    token: token,
    fileId: fileId,
    variableOverrides: parseOverrides(variableOverrides),
    collectionOverrides: parseOverrides(collectionOverrides),
    excludedCollections: excludedCollections.toSet(),
  );

  if (jsonOutput != null) {
    await writer.write([
      WriteTask(
        jsonOutput,
        jsonEncode(rawResponse),
      ),
    ]);
  }

  logger.log('Parsing json response');
  final classes = parser.parse(response);

  logger.log('Converting variables to Dart');
  await write(dartOutputFolder, classes);
}