Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/bug_report.yml
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ body:

flutter_gen:
output: lib/gen/
line_length: 80
# line_length: 80

integrations:
flutter_svg: true
Expand Down
8 changes: 8 additions & 0 deletions .idea/runConfigurations/build_runner_build_example.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,7 @@ Default configuration can be found [here](https://github.com/FlutterGen/flutter_

flutter_gen:
output: lib/gen/ # Optional (default: lib/gen/)
line_length: 80 # Optional (default: 80)
# line_length: 80 # Optional

# Optional
integrations:
Expand Down Expand Up @@ -184,7 +184,7 @@ targets:
flutter_gen_runner: # or flutter_gen
options:
output: lib/build_gen/ # Optional (default: lib/gen/)
line_length: 120 # Optional (default: 80)
line_length: 120 # Optional
```

## Available Parsers
Expand Down
4 changes: 3 additions & 1 deletion examples/example/lib/gen/assets.gen.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
// dart format width=80

/// GENERATED CODE - DO NOT MODIFY BY HAND
/// *****************************************************
/// FlutterGen
/// *****************************************************

// coverage:ignore-file
// ignore_for_file: type=lint
// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use
// ignore_for_file: deprecated_member_use,directives_ordering,implicit_dynamic_list_literal,unnecessary_import

import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';
Expand Down
3 changes: 2 additions & 1 deletion examples/example/lib/gen/colors.gen.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
// dart format width=80
/// GENERATED CODE - DO NOT MODIFY BY HAND
/// *****************************************************
/// FlutterGen
/// *****************************************************

// coverage:ignore-file
// ignore_for_file: type=lint
// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use
// ignore_for_file: deprecated_member_use,directives_ordering,implicit_dynamic_list_literal,unnecessary_import

import 'package:flutter/painting.dart';
import 'package:flutter/material.dart';
Expand Down
3 changes: 2 additions & 1 deletion examples/example/lib/gen/fonts.gen.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
// dart format width=80
/// GENERATED CODE - DO NOT MODIFY BY HAND
/// *****************************************************
/// FlutterGen
/// *****************************************************

// coverage:ignore-file
// ignore_for_file: type=lint
// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use
// ignore_for_file: deprecated_member_use,directives_ordering,implicit_dynamic_list_literal,unnecessary_import

class MyFontFamily {
MyFontFamily._();
Expand Down
7 changes: 4 additions & 3 deletions examples/example/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,20 +14,21 @@ dependencies:

flutter_svg: ^2.0.0
lottie: ^3.0.0
rive: ^0.11.0
rive: ^0.13.20

dev_dependencies:
lints: any
flutter_test:
sdk: flutter

flutter_gen_runner:
path: ../../packages/runner

lints: ^2.0.0
build_runner: ^2.0.0

flutter_gen:
output: lib/gen/ # Optional (default: lib/gen/)
line_length: 80 # Optional (default: 80)
# line_length: 80 # Optional

integrations:
flutter_svg: true
Expand Down
4 changes: 3 additions & 1 deletion examples/example_resources/lib/gen/assets.gen.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
// dart format width=80

/// GENERATED CODE - DO NOT MODIFY BY HAND
/// *****************************************************
/// FlutterGen
/// *****************************************************

// coverage:ignore-file
// ignore_for_file: type=lint
// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use
// ignore_for_file: deprecated_member_use,directives_ordering,implicit_dynamic_list_literal,unnecessary_import

import 'package:flutter/services.dart';
import 'package:flutter/widgets.dart';
Expand Down
3 changes: 2 additions & 1 deletion examples/example_resources/lib/gen/colors.gen.dart
Original file line number Diff line number Diff line change
@@ -1,11 +1,12 @@
// dart format width=80
/// GENERATED CODE - DO NOT MODIFY BY HAND
/// *****************************************************
/// FlutterGen
/// *****************************************************

// coverage:ignore-file
// ignore_for_file: type=lint
// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use
// ignore_for_file: deprecated_member_use,directives_ordering,implicit_dynamic_list_literal,unnecessary_import

import 'package:flutter/painting.dart';
import 'package:flutter/material.dart';
Expand Down
3 changes: 1 addition & 2 deletions examples/example_resources/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ dependencies:

flutter_svg: ^2.0.0
lottie: ^3.0.0
rive: ^0.11.0
rive: ^0.13.20

dev_dependencies:
flutter_gen_runner:
Expand All @@ -21,7 +21,6 @@ dev_dependencies:

flutter_gen:
output: lib/gen/
line_length: 80

integrations:
flutter_svg: true
Expand Down
3 changes: 2 additions & 1 deletion packages/core/lib/generators/assets_generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ Future<String> generateAssets(
final deprecatedPackageParam =
config.flutterGen.assets.packageParameterEnabled != null;
if (deprecatedStyle || deprecatedPackageParam) {
final deprecationBuffer = StringBuffer();
final deprecationBuffer = StringBuffer('\n');
if (deprecatedStyle) {
deprecationBuffer.writeln(
sBuildDeprecation(
Expand Down Expand Up @@ -145,6 +145,7 @@ Future<String> generateAssets(
}

final buffer = StringBuffer();
buffer.writeln('// dart format width=${formatter.pageWidth}\n');
buffer.writeln(header);
buffer.writeln(ignore);
buffer.writeln(importsBuffer.toString());
Expand Down
1 change: 1 addition & 0 deletions packages/core/lib/generators/colors_generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ String generateColors(

final buffer = StringBuffer();
final className = colorsConfig.outputs.className;
buffer.writeln('// dart format width=${formatter.pageWidth}');
buffer.writeln(header);
buffer.writeln(ignore);
buffer.writeln("import 'package:flutter/painting.dart';");
Expand Down
1 change: 1 addition & 0 deletions packages/core/lib/generators/fonts_generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ String generateFonts(

final buffer = StringBuffer();
final className = fontsConfig.outputs.className;
buffer.writeln('// dart format width=${formatter.pageWidth}');
buffer.writeln(header);
buffer.writeln(ignore);
buffer.writeln('class $className {');
Expand Down
11 changes: 9 additions & 2 deletions packages/core/lib/generators/generator_helper.dart
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,18 @@ String get header {
''';
}

const _ignoredRules = <String>[
'deprecated_member_use',
'directives_ordering',
'implicit_dynamic_list_literal',
'unnecessary_import',
];

String get ignore {
return '''// coverage:ignore-file
// ignore_for_file: type=lint
// ignore_for_file: directives_ordering,unnecessary_import,implicit_dynamic_list_literal,deprecated_member_use
// ignore_for_file: ${_ignoredRules.join(',')}

''';
}

Expand Down
67 changes: 63 additions & 4 deletions packages/core/lib/settings/config.dart
Original file line number Diff line number Diff line change
@@ -1,19 +1,35 @@
import 'dart:io';

// import 'package:collection/collection.dart';
// import 'package:dart_style/dart_style.dart' show TrailingCommas;
import 'package:flutter_gen_core/settings/config_default.dart';
import 'package:flutter_gen_core/settings/pubspec.dart';
import 'package:flutter_gen_core/utils/cast.dart' show safeCast;
import 'package:flutter_gen_core/utils/error.dart';
import 'package:flutter_gen_core/utils/log.dart';
import 'package:flutter_gen_core/utils/map.dart';
import 'package:flutter_gen_core/version.gen.dart';
import 'package:path/path.dart';
import 'package:pub_semver/pub_semver.dart' show VersionConstraint;
import 'package:yaml/yaml.dart';

class Config {
const Config._({required this.pubspec, required this.pubspecFile});
const Config._({
required this.pubspec,
required this.pubspecFile,
required this.sdkConstraint,
// required this.formatterTrailingCommas,
required this.formatterPageWidth,
});

final Pubspec pubspec;
final File pubspecFile;
final VersionConstraint? sdkConstraint;

// TODO(ANYONE): Allow passing the trailing commas option after the SDK constraint was bumped to ^3.7.
// final TrailingCommas? formatterTrailingCommas;

final int? formatterPageWidth;
}

Config loadPubspecConfig(File pubspecFile, {File? buildFile}) {
Expand All @@ -24,10 +40,16 @@ Config loadPubspecConfig(File pubspecFile, {File? buildFile}) {
log.info('v$packageVersion Loading ...');
log.info('Reading options from $pubspecLocaleHint');

final defaultMap = loadYaml(configDefaultYamlContent) as Map?;
VersionConstraint? sdkConstraint;

final defaultMap = loadYaml(configDefaultYamlContent) as YamlMap?;

final pubspecContent = pubspecFile.readAsStringSync();
final pubspecMap = loadYaml(pubspecContent) as Map?;
final pubspecMap = loadYaml(pubspecContent) as YamlMap?;
if (safeCast<String>(pubspecMap?['environment']?['sdk']) case final sdk?) {
sdkConstraint = VersionConstraint.parse(sdk);
}

Map mergedMap = mergeMap([defaultMap, pubspecMap]);

YamlMap? getBuildFileOptions(File file) {
Expand Down Expand Up @@ -76,7 +98,44 @@ Config loadPubspecConfig(File pubspecFile, {File? buildFile}) {
}

final pubspec = Pubspec.fromJson(mergedMap);
return Config._(pubspec: pubspec, pubspecFile: pubspecFile);

final pubspecLockFile = File(
normalize(join(basename(pubspecFile.parent.path), 'pubspec.lock')),
);
final pubspecLockContent = switch (pubspecLockFile.existsSync()) {
true => pubspecLockFile.readAsStringSync(),
false => '',
};
final pubspecLockMap = loadYaml(pubspecLockContent) as YamlMap?;
if (safeCast<String>(pubspecLockMap?['sdks']?['dart']) case final sdk?) {
sdkConstraint ??= VersionConstraint.parse(sdk);
}

final analysisOptionsFile = File(
normalize(join(basename(pubspecFile.parent.path), 'analysis_options.yaml')),
);
final analysisOptionsContent = switch (analysisOptionsFile.existsSync()) {
true => analysisOptionsFile.readAsStringSync(),
false => '',
};
final analysisOptionsMap = loadYaml(analysisOptionsContent) as YamlMap?;
// final formatterTrailingCommas = switch (safeCast<String>(
// analysisOptionsMap?['formatter']?['trailing_commas'],
// )) {
// final s? => TrailingCommas.values.firstWhereOrNull((e) => e.name == s),
// _ => null,
// };
final formatterPageWidth = safeCast<int>(
analysisOptionsMap?['formatter']?['page_width'],
);

return Config._(
pubspec: pubspec,
pubspecFile: pubspecFile,
sdkConstraint: sdkConstraint,
// formatterTrailingCommas: formatterTrailingCommas,
formatterPageWidth: formatterPageWidth,
);
}

Config? loadPubspecConfigOrNull(File pubspecFile, {File? buildFile}) {
Expand Down
36 changes: 12 additions & 24 deletions packages/core/lib/settings/config_default.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,9 @@ const configDefaultYamlContent = '''
name: UNKNOWN

flutter_gen:
# Optional
output: lib/gen/
# Optional
line_length: 80
# Optional
parse_metadata: false
output: lib/gen/ # Optional
# line_length: 80 # Optional
parse_metadata: false # Optional

# Optional
integrations:
Expand All @@ -17,37 +14,28 @@ flutter_gen:
lottie: false

assets:
# Optional
enabled: true
# Optional
outputs:
# Optional
enabled: true # Optional
outputs: # Optional
# Set to true if you want this package to be a package dependency
# See: https://flutter.dev/docs/development/ui/assets-and-images#from-packages
package_parameter_enabled: false
# Optional
package_parameter_enabled: false # Optional
# Available values:
# - camel-case
# - snake-case
# - dot-delimiter
style: dot-delimiter
style: dot-delimiter # Optional
class_name: Assets
exclude: []

fonts:
# Optional
enabled: true
# Optional
outputs:
enabled: true # Optional
outputs: # Optional
class_name: FontFamily

colors:
# Optional
enabled: true
# Optional
inputs: []
# Optional
outputs:
enabled: true # Optional
inputs: [] # Optional
outputs: # Optional
class_name: ColorName

flutter:
Expand Down
4 changes: 2 additions & 2 deletions packages/core/lib/settings/pubspec.dart
Original file line number Diff line number Diff line change
Expand Up @@ -114,8 +114,8 @@ class FlutterGen {
@JsonKey(name: 'output', required: true)
final String output;

@JsonKey(name: 'line_length', required: true)
final int lineLength;
@JsonKey(name: 'line_length')
final int? lineLength;

@JsonKey(name: 'parse_metadata', required: true)
final bool parseMetadata;
Expand Down
Loading
Loading