diff --git a/build.yaml b/build.yaml new file mode 100644 index 0000000..939baa3 --- /dev/null +++ b/build.yaml @@ -0,0 +1,14 @@ +targets: + $default: + builders: + 'environment_config:env_config_generator': + enabled: true + + +builders: + env_config_generator: + import: 'package:environment_config/builder.dart' + builder_factories: ["generateConfig"] + build_extensions: + '.yaml': ['.dart'] + auto_apply: dependents diff --git a/example/.gitignore b/example/.gitignore new file mode 100644 index 0000000..7484f32 --- /dev/null +++ b/example/.gitignore @@ -0,0 +1,30 @@ +# Created by .ignore support plugin (hsz.mobi) +### Dart template +# See https://www.dartlang.org/guides/libraries/private-files + +# Files and directories created by pub +.dart_tool/ +.packages +build/ +# If you're building an application, you may want to check-in your pubspec.lock +pubspec.lock + +# Directory created by dartdoc +# If you don't generate documentation locally you can remove this line. +doc/api/ + +# Avoid committing generated Javascript files: +*.dart.js +*.info.json # Produced by the --dump-info flag. +*.js # When generated by dart2js. Don't specify *.js if your + # project includes source files written in JavaScript. +*.js_ +*.js.deps +*.js.map + +.flutter-plugins +.flutter-plugins-dependencies + +!lib/generated +lib/generated/** +!**/.gitkeep diff --git a/example/build.yaml b/example/build.yaml new file mode 100644 index 0000000..aa2e82d --- /dev/null +++ b/example/build.yaml @@ -0,0 +1,6 @@ +targets: + $default: + builders: + 'environment_config:env_config_generator': + options: + "--config-extension": "dev" diff --git a/example/environment_config.yaml b/example/environment_config.yaml new file mode 100644 index 0000000..34e7403 --- /dev/null +++ b/example/environment_config.yaml @@ -0,0 +1,17 @@ +# Config example. Run `flutter pub run environment_config:generate --env=YOUR_VALUE` to see example +environment_config: + path: generated/environment_config.dart + fields: + hello: + + imports: + - dart:io + + extensions: + dev: + fields: + hello: + default: 'Hello, Config!' + + imports: + - dart:async diff --git a/example/lib/example.dart b/example/lib/example.dart new file mode 100644 index 0000000..8c48589 --- /dev/null +++ b/example/lib/example.dart @@ -0,0 +1 @@ +export 'package:environment_config_example/generated/environment_config.dart'; diff --git a/example/lib/generated/.gitkeep b/example/lib/generated/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/example/main.dart b/example/main.dart index 6f1129a..f7d3b19 100644 --- a/example/main.dart +++ b/example/main.dart @@ -1,8 +1,5 @@ -/// 1. Install your project dependencies -/// -/// 2. Run `flutter pub run environment_config:generate` with key and values specified -/// in your YAML config -/// -/// 3. Import generated file +import 'package:environment_config_example/example.dart'; -import 'environment_config.dart'; \ No newline at end of file +void main() { + print(EnvironmentConfig.hello); +} diff --git a/example/pubspec.yaml b/example/pubspec.yaml new file mode 100644 index 0000000..cfe5be0 --- /dev/null +++ b/example/pubspec.yaml @@ -0,0 +1,6 @@ +name: environment_config_example + +dev_dependencies: + build_runner: "^1.10.0" + environment_config: + path: ../ diff --git a/lib/builder.dart b/lib/builder.dart new file mode 100644 index 0000000..9393156 --- /dev/null +++ b/lib/builder.dart @@ -0,0 +1,24 @@ +import 'dart:async'; + +import 'package:build/build.dart'; +import 'package:environment_config/generator.dart' as gen; + +Builder generateConfig(BuilderOptions builderOptions) => + _GenerateConfig(builderOptions); + +class _GenerateConfig extends Builder { + final List arguments; + + _GenerateConfig(BuilderOptions builderOptions) + : arguments = builderOptions.config.entries + .map((e) => e.value != null ? '${e.key}=${e.value}' : e.key) + .toList(growable: false); + + @override + final buildExtensions = const { + '.yaml': ['.dart'] + }; + + @override + Future build(BuildStep buildStep) => gen.generateConfig(arguments); +} diff --git a/pubspec.lock b/pubspec.lock index 12458e5..9d5762f 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -7,14 +7,14 @@ packages: name: _fe_analyzer_shared url: "https://pub.dartlang.org" source: hosted - version: "1.0.1" + version: "7.0.0" analyzer: dependency: transitive description: name: analyzer url: "https://pub.dartlang.org" source: hosted - version: "0.39.2+1" + version: "0.39.17" args: dependency: "direct main" description: @@ -29,6 +29,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.4.1" + build: + dependency: "direct main" + description: + name: build + url: "https://pub.dartlang.org" + source: hosted + version: "1.3.0" built_collection: dependency: transitive description: @@ -50,6 +57,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.3" + cli_util: + dependency: transitive + description: + name: cli_util + url: "https://pub.dartlang.org" + source: hosted + version: "0.2.0" code_builder: dependency: "direct main" description: @@ -91,7 +105,7 @@ packages: name: dart_style url: "https://pub.dartlang.org" source: hosted - version: "1.3.3" + version: "1.3.6" fixnum: dependency: transitive description: @@ -120,6 +134,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.6.1+1" + logging: + dependency: transitive + description: + name: logging + url: "https://pub.dartlang.org" + source: hosted + version: "0.11.4" matcher: dependency: transitive description: @@ -183,6 +204,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "2.1.3" + source_gen: + dependency: "direct main" + description: + name: source_gen + url: "https://pub.dartlang.org" + source: hosted + version: "0.9.5" source_span: dependency: transitive description: @@ -233,4 +261,4 @@ packages: source: hosted version: "2.2.0" sdks: - dart: ">=2.3.0 <3.0.0" + dart: ">=2.7.0 <3.0.0" diff --git a/pubspec.yaml b/pubspec.yaml index ede1587..0ae5fdf 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -13,20 +13,5 @@ dependencies: code_builder: ">=3.0.0 <4.0.0" args: ">=1.0.0 <2.0.0" yaml: ">=2.0.0 <3.0.0" - -# Config example. Run `flutter pub run environment_config:generate --env=YOUR_VALUE` to see example -environment_config: - fields: - env: - - imports: - - some:package - - extensions: - dev: - fields: - env: - default: some value - - imports: - - other:package \ No newline at end of file + build: ">=1.3.0" + source_gen: ">=0.9.5"