// Copyright 2017 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. import 'dart:io'; import 'package:args/args.dart'; import 'package:vitool/vitool.dart'; const String kCodegenComment = '// AUTOGENERATED FILE DO NOT EDIT!\n' '// This file was generated by vitool.\n'; void main(List<String> args) { final ArgParser parser = new ArgParser(); parser.addFlag( 'help', abbr: 'h', negatable: false, help: 'Display the tool\'s usage instructions and quit.' ); parser.addOption( 'output', abbr: 'o', help: 'Target path to write the generated Dart file to.' ); parser.addOption( 'asset-name', abbr: 'n', help: 'Name to be used for the generated constant.' ); parser.addOption( 'part-of', abbr: 'p', help: 'Library name to add a dart \'part of\' clause for.' ); parser.addOption( 'header', abbr: 'd', help: 'File whose contents are to be prepended to the beginning of ' 'the generated Dart file; this can be used for a license comment.' ); parser.addFlag( 'codegen_comment', abbr: 'c', defaultsTo: true, help: 'Whether to include the following comment after the header:\n' '$kCodegenComment' ); final ArgResults argResults = parser.parse(args); if (argResults['help'] || !argResults.wasParsed('output') || !argResults.wasParsed('asset-name') || argResults.rest.isEmpty) { printUsage(parser); return; } final List<FrameData> frames = <FrameData>[]; for (String filePath in argResults.rest) { final FrameData data = interpretSvg(filePath); frames.add(data); } final StringBuffer generatedSb = new StringBuffer(); if (argResults.wasParsed('header')) { generatedSb.write(new File(argResults['header']).readAsStringSync()); generatedSb.write('\n'); } if (argResults['codegen_comment']) generatedSb.write(kCodegenComment); if (argResults.wasParsed('part-of')) generatedSb.write('part of ${argResults['part-of']};\n'); final Animation animation = new Animation.fromFrameData(frames); generatedSb.write(animation.toDart('_AnimatedIconData', argResults['asset-name'])); final File outFile = new File(argResults['output']); outFile.writeAsStringSync(generatedSb.toString()); } void printUsage(ArgParser parser) { print('Usage: vitool --asset-name=<asset_name> --output=<output_path> <frames_list>'); print('\nExample: vitool --asset-name=_\$menu_arrow --output=lib/data/menu_arrow.g.dart assets/svg/menu_arrow/*.svg\n'); print(parser.usage); }