|
| 1 | +import 'dart:io'; |
| 2 | + |
| 3 | +import 'package:dart_style/dart_style.dart'; |
| 4 | +import 'package:path/path.dart'; |
| 5 | + |
| 6 | +import 'generators/assets_generator.dart'; |
| 7 | +import 'generators/colors_generator.dart'; |
| 8 | +import 'generators/fonts_generator.dart'; |
| 9 | +import 'settings/config.dart'; |
| 10 | +import 'utils/error.dart'; |
| 11 | +import 'utils/file.dart'; |
| 12 | + |
| 13 | +class FlutterGenerator { |
| 14 | + const FlutterGenerator(this.pubspecFile); |
| 15 | + |
| 16 | + final File pubspecFile; |
| 17 | + |
| 18 | + Future<void> build() async { |
| 19 | + final config = Config(pubspecFile); |
| 20 | + try { |
| 21 | + await config.load(); |
| 22 | + } on FormatException catch (e) { |
| 23 | + stderr.writeln(e.message); |
| 24 | + return; |
| 25 | + } on FileSystemException catch (e) { |
| 26 | + stderr.writeln(e.message); |
| 27 | + return; |
| 28 | + } |
| 29 | + |
| 30 | + var output = Config.defaultOutput; |
| 31 | + var lineLength = Config.defaultLineLength; |
| 32 | + |
| 33 | + if (config.hasFlutterGen) { |
| 34 | + output = config.flutterGen.output; |
| 35 | + lineLength = config.flutterGen.lineLength; |
| 36 | + final formatter = DartFormatter(pageWidth: lineLength, lineEnding: '\n'); |
| 37 | + |
| 38 | + if (config.flutterGen.hasColors) { |
| 39 | + try { |
| 40 | + final generated = |
| 41 | + generateColors(pubspecFile, formatter, config.flutterGen.colors); |
| 42 | + final colors = File(normalize( |
| 43 | + join(pubspecFile.parent.path, output, 'colors.gen.dart'))); |
| 44 | + writeAsString(generated, file: colors); |
| 45 | + print('Generated: ${colors.absolute.path}'); |
| 46 | + } on InvalidSettingsException catch (e) { |
| 47 | + stderr.writeln(e.message); |
| 48 | + } |
| 49 | + } |
| 50 | + } |
| 51 | + |
| 52 | + if (config.hasFlutter) { |
| 53 | + final formatter = DartFormatter(pageWidth: lineLength, lineEnding: '\n'); |
| 54 | + |
| 55 | + if (config.flutter.hasAssets) { |
| 56 | + try { |
| 57 | + final generated = generateAssets( |
| 58 | + pubspecFile, formatter, config.flutterGen, config.flutter.assets); |
| 59 | + final assets = File(normalize( |
| 60 | + join(pubspecFile.parent.path, output, 'assets.gen.dart'))); |
| 61 | + writeAsString(generated, file: assets); |
| 62 | + print('Generated: ${assets.absolute.path}'); |
| 63 | + } on InvalidSettingsException catch (e) { |
| 64 | + stderr.writeln(e.message); |
| 65 | + } |
| 66 | + } |
| 67 | + |
| 68 | + if (config.flutter.hasFonts) { |
| 69 | + try { |
| 70 | + final generated = generateFonts(formatter, config.flutter.fonts); |
| 71 | + final fonts = File(normalize( |
| 72 | + join(pubspecFile.parent.path, output, 'fonts.gen.dart'))); |
| 73 | + writeAsString(generated, file: fonts); |
| 74 | + print('Generated: ${fonts.absolute.path}'); |
| 75 | + } on InvalidSettingsException catch (e) { |
| 76 | + stderr.writeln(e.message); |
| 77 | + } |
| 78 | + } |
| 79 | + } |
| 80 | + |
| 81 | + print('FlutterGen finished.'); |
| 82 | + } |
| 83 | +} |
0 commit comments