From c20377b04d1eca1220463ebde6e934f506656f82 Mon Sep 17 00:00:00 2001 From: hungnt Date: Mon, 4 Dec 2023 22:13:47 +0700 Subject: [PATCH] chore: update pkg --- README.md | 67 +++---------- build.yaml | 6 +- melos.yaml | 182 ++++++----------------------------- packages/assets/pubspec.yaml | 2 +- pubspec.lock | 64 ++++++------ pubspec.yaml | 18 ++-- 6 files changed, 93 insertions(+), 246 deletions(-) diff --git a/README.md b/README.md index f8807f6..21a9734 100644 --- a/README.md +++ b/README.md @@ -1,19 +1,17 @@ -# riverpod_rnd +# Erb flutter -A new Flutter project. +A Flutter template. ### Requirements -- Dart: 3.1.0 -- Flutter SDK: 3.13.0 +- Dart: 3.2.0 +- Flutter SDK: 3.16.0 ## Template: Getting Started 1. Setup: - 1. Install [puro](https://puro.dev) Flutter Environment Manager - 1. Install Flutter using Puro 1. Install [Melos](https://pub.dev/packages/melos) globally -1. Run `melos bootstrap` to install dependencies for all packages and generate env files. +1. Run `melos bootstrap` to install dependencies and `melos run generate` to generate for all packages. 1. Rename App: [Change App/Package Name](#change-apppackage-name) 1. Update Description: [pubspec.yaml](pubspec.yaml) and [README.md](README.md). 1. Add Environment Variables: [ENVied Environment Variables](#envied-environment-variables) section for details. @@ -21,10 +19,7 @@ A new Flutter project. 1. [Change Splash Screen: flutter_native_splash](https://pub.dev/packages/flutter_native_splash) 1. Setup the release build configuration, see the [Building](#building) section. 1. Setup Codecov for the repository, see the [Codecov documentation](https://docs.codecov.com/docs/quick-start). -1. Setup GitPod for the environment, see the [GitPod documentation](https://www.gitpod.io/docs/quickstart/flutter#flutter-quickstart). -1. (**Important!**) Update the [LICENSE](./LICENSE.md) file. I give permission to relicense any code provided in this template, but the licenses of the packages must still be followed. -1. Delete this `Template: Getting Started` section from the README. ### Change App/Package Name @@ -62,7 +57,7 @@ to change the flavor. The following flavors are supported: ## Architecture This project uses the [Riverpod App Architecture](https://codewithandrea.com/articles/flutter-app-architecture-riverpod-introduction/) -in a feature-first manner where each feature is a separate package in the [lib/src/features/](./lib/src/features/) folder. +in a feature-first manner where each feature is a separate package in the [lib/features/](./lib/features/) folder. Each feature has its own layers, which separate the business logic from the UI. ### Data Layer (Repositories) @@ -115,9 +110,9 @@ defined for debug, profile, and release modes. - Each key must be added to each `.env*` file, unless a non null default value is added to the `@EnviedField` annotation. - It is recommended to use an empty string for the default and use `Env`'s getter to access the value. -1. Update [src/env/app_env_fields.dart](packages/env/lib/src/env/app_env_fields.dart) -with the new environment variables for `AppEnvFieldsGenerated` and `AppEnvFieldsNullable`. -1. Add the new environment variables to the implementing `*Env` classes in the [src/env](packages/env/src/env/) directory. +1. Update [packages/env/lib/src/env/env_fields.dart](packages/env/lib/src/env/env_fields.dart) +with the new environment variables. +1. Add the new environment variables to the implementing `*Env` classes in the [src/env](packages/env/lib/src/env/impl/) directory. - It must be done for *all* even if only one `.env` file is planned to be used 1. Enable `obfuscate` for API keys in the `@EnviedField` annotation. (Note: still assume it is not secure) 1. Optionally, add a `defaultValue` to the `@EnviedField` annotation for keys which are @@ -145,21 +140,17 @@ Pub: - `melos run pub` - Run `pub get` in all packages. - `melos run dart:pkg` - Run `dart pub get` in the selected dart package. - `melos run flutter:pkg` - Run `flutter pub get` in the selected flutter package. -- `melos run upgrade` - Run `pub upgrade` in all packages. -- `melos run upgrade:pkg` - Run `pub upgrade` in the selected package. +- `melos run pub-outdated` - Run `pub outdated` in all packages. +- `melos run pub-upgrade` - Run `pub upgrade` in the package. Code Generation: - `dart run build_runner watch -d` - Watch and generate code for the app, does not work with subpackages -- `melos run generate` - Run `build_runner build` in all packages that depend on `build_runner`. -- `melos run generate:pkg` - Run `build_runner build` for a specific package (except `envied` packages). -- `melos run watch:pkg` - Run `build_runner watch` for a specific package (except `envied` packages). It will not work if you choose "all" in the package selection prompt. -- `melos run assets` - Run `assets_gen build` in all packages that depend on `assets_gen`. -- `melos run assets:pkg` - Run `assets_gen build` for a specific package. -- `melos run env` - Run `build_runner` in all packages that depends on `envied`. -- `melos run env:pkg` - Run `build_runner` in a specific package that depends on `envied`. -- `melos run loc` - Run `flutter gen-l10n` in the localization package to generate - the localized strings from the arb files. +- `melos run generate` - Run `build_runner build` generate in all packages that depend on `build_runner` and i18n. +- `melos run generate:pkg` - Run `build_runner build` in all packages that depend on `build_runner`. +- `melos run generate:i18n` - Run `build_runner build` generate i18n. +- `melos run watch:pkg` - Run `build_runner watch` for a specific package. It will not work if you choose "all" in the package selection prompt. +- `melos run watch:i18n` - Run `build_runner watch` for i18n. ### Protip @@ -186,29 +177,3 @@ dart run slang apply --outdir=i18n dart run slang analyze --outdir=i18n # update analyzation result files ``` - -# Building from Source - -- Sync dependencies - -```bash -flutter pub get -``` - -- Run code generator - -```bash -dart run build_runner build --delete-conflicting-outputs -``` - -- Generate translation - -```bash -dart run slang -``` - -- Run the app with your favorite IDE/PDE. or from shell: - -```bash -flutter run -``` diff --git a/build.yaml b/build.yaml index ea58f16..8c0e818 100644 --- a/build.yaml +++ b/build.yaml @@ -17,9 +17,9 @@ targets: enable_cached_builds: true global_options: - json_serializable: - runs_before: - - retrofit_generator + # json_serializable: + # runs_before: + # - retrofit_generator dart_mappable_builder: options: renameMethods: diff --git a/melos.yaml b/melos.yaml index d295845..49c5762 100644 --- a/melos.yaml +++ b/melos.yaml @@ -9,122 +9,53 @@ command: # It seems so that running "pub get" in parallel has some issues (like # https://github.com/dart-lang/pub/issues/3404). Disabling this feature # makes the CI much more stable. - # runPubGetInParallel: false + runPubGetInParallel: false + hooks: pre: echo `bootstrap command is running...` - # Activate the coverage package globally so that it can be used in the - # `test` command. - # # Generate environment files which should not be committed to the repository. # Instead, they are generated during the CI process before checking # if the rest of the package's code generation is up to date. - post: flutter pub get && dart pub global activate coverage ^1.6.4 && cd packages/env && dart pub get && dart run build_runner build -d && melos run i18n + # post: # See https://github.com/firebase/flutterfire/blob/master/melos.yaml for more examples scripts: - # Custom lint is only applied to the packages and not the root app because of a dependency conflict with `integration_test` and `melos` - pub: - run: | - dart pub get && \ - melos run flutter:pkg --no-select - description: Run `dart pub get` in all packages. - - flutter:pkg: - run: flutter pub get - exec: - failFast: true - # concurrency: 1 - description: Run `flutter pub get` in the selected package. - packageFilters: - dependsOn: flutter + lint: + run: melos run analyze && melos run format + description: Run all static analysis checks. - # which use different versions of `path`. analyze: - run: melos run analyze:pkg --no-select && melos run custom_lint - description: Run `dart analyze` in all packages. - - analyze:pkg: - run: dart analyze --fatal-infos lib - exec: - failFast: true - # concurrency: 1 - description: Run `dart analyze` on all packages. - - custom_lint: - run: melos run custom_lint:pkg --no-select - description: Run `dart run custom_lint` in all packages with custom lints. - - custom_lint:pkg: - run: dart run custom_lint - exec: - failFast: true - # concurrency: 1 - description: Run `dart run custom_lint` in the selected package. - packageFilters: - dependsOn: custom_lint - - upgrade: - run: | - dart pub upgrade - melos run upgrade:pkg --no-select - description: Run `dart pub upgrade` in all packages. - - upgrade:pkg: - run: dart pub upgrade - exec: - failFast: true - description: Run `dart pub upgrade` in the selected package. - - upgrade-major: + # We are setting the concurrency to 1 because a higher concurrency can crash + # the analysis server on low performance machines (like GitHub Actions). run: | - dart pub upgrade - melos run upgrade:pkg --no-select - description: Run `dart pub upgrade --major-versions` in all packages. - - upgrade-major:pkg: - run: dart pub upgrade --major-versions - exec: - failFast: true - description: Run `dart pub upgrade --major-versions` in the selected package. + melos exec -c 1 -- \ + dart analyze . --fatal-infos + description: | + Run `dart analyze` in all packages. + - Note: you can also rely on your IDEs Dart Analysis / Issues window. format: - exec: dart format . - description: Run `dart format` in all packages. + run: melos exec dart format . --set-exit-if-changed + description: Run `flutter format` checks for all packages. - fix: - exec: dart fix --apply - description: Run `dart fix --apply` in all packages. - - verify_format: - run: dart format --output=none --set-exit-if-changed . - exec: - failFast: true - description: Verify formatting was applied. + format:fix: + run: melos exec dart format . --fix + description: Run `flutter format` for all packages. generate: run: | - melos run assets && \ - melos run env --no-select && \ - melos run generate:pkg --no-select && \ - melos run i18n - description: Run `build_runner build` in all packages. + melos run generate:pkg && melos run generate:i18n + description: Run generate in all packages. generate:pkg: - run: dart run build_runner build --delete-conflicting-outputs - exec: - # concurrency: 5 - failFast: true - description: Run `build_runner build` in the selected packages. - packageFilters: - dependsOn: build_runner - noDependsOn: envied - # ignore: localization + run: | + melos exec -c 1 --depends-on=build_runner \ + "dart run build_runner build --delete-conflicting-outputs" + description: run `build_runner` to generate code in all packages - i18n: + generate:i18n: run: dart run slang - exec: - failFast: true description: Run `dart run slang` generate dart file packageFilters: dirExists: @@ -148,61 +79,12 @@ scripts: packageFilters: dependsOn: build_runner noDependsOn: envied - # ignore: localization - - watch_force:pkg: - run: dart run build_runner watch --delete-conflicting-outputs - exec: - # concurrency: 1 - failFast: true - description: Run `build_runner watch` in the selected package. If all is selected, the command will only run in the first package. - packageFilters: - dependsOn: build_runner - noDependsOn: envied - # ignore: localization - env: - run: melos run env:pkg --no-select - description: Run `build_runner` in all packages that depends on `envied`. + pub-outdated: + run: melos exec dart pub outdated + description: Run `dart pub outdated` for all packages. - env:pkg: - run: dart run build_runner clean && dart run build_runner build --delete-conflicting-outputs - exec: - failFast: true - description: Run `build_runner` in a specific package that depends on `envied`. - packageFilters: - dependsOn: envied - - assets: - run: melos run assets:pkg --no-select - description: Run `dart run flutter_gen_runner build` all packages with assets gen. - - assets:pkg: - run: dart run flutter_gen_runner build - exec: - failFast: true - description: Run `dart run flutter_gen_runner build` in the selected package. - packageFilters: - dependsOn: assets_gen - - dart_test:pkg: - run: dart pub global run coverage:test_with_coverage - exec: - failFast: true - # concurrency: 1 - description: Run Dart tests for a specific package in this project. - packageFilters: - dirExists: test - dependsOn: test - noDependsOn: flutter - - flutter_test:pkg: - run: flutter test --no-pub --coverage - exec: - failFast: true - # concurrency: 1 - description: Run Flutter tests for a specific package in this project. - packageFilters: - flutter: true - dirExists: test - dependsOn: flutter_test + pub-upgrade: + # May fails until https://github.com/dart-lang/pub/pull/3920 is released + run: melos exec dart pub upgrade --major-versions + description: Run `dart pub upgrade --major-versions` for all packages. diff --git a/packages/assets/pubspec.yaml b/packages/assets/pubspec.yaml index 54442ef..89f77ba 100644 --- a/packages/assets/pubspec.yaml +++ b/packages/assets/pubspec.yaml @@ -15,7 +15,7 @@ dev_dependencies: flutter_test: sdk: flutter flutter_lints: ^2.0.1 - build_runner: ^2.4.6 + build_runner: ^2.4.7 flutter_gen_runner: ^5.3.2 flutter_gen: diff --git a/pubspec.lock b/pubspec.lock index 4ea7199..9f594e9 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -155,10 +155,10 @@ packages: dependency: "direct dev" description: name: build_runner - sha256: "10c6bcdbf9d049a0b666702cf1cee4ddfdc38f02a19d35ae392863b47519848b" + sha256: "67d591d602906ef9201caf93452495ad1812bea2074f04e25dbd7c133785821b" url: "https://pub.dev" source: hosted - version: "2.4.6" + version: "2.4.7" build_runner_core: dependency: transitive description: @@ -179,10 +179,10 @@ packages: dependency: transitive description: name: built_value - sha256: "723b4021e903217dfc445ec4cf5b42e27975aece1fc4ebbc1ca6329c2d9fb54e" + sha256: "69acb7007eb2a31dc901512bfe0f7b767168be34cb734835d54c070bfa74c1b2" url: "https://pub.dev" source: hosted - version: "8.7.0" + version: "8.8.0" cached_network_image: dependency: "direct main" description: @@ -291,10 +291,10 @@ packages: dependency: transitive description: name: connectivity_plus - sha256: b502a681ba415272ecc41400bd04fe543ed1a62632137dc84d25a91e7746f55f + sha256: "224a77051d52a11fbad53dd57827594d3bd24f945af28bd70bab376d68d437f0" url: "https://pub.dev" source: hosted - version: "5.0.1" + version: "5.0.2" connectivity_plus_platform_interface: dependency: transitive description: @@ -323,10 +323,10 @@ packages: dependency: transitive description: name: cross_file - sha256: "2f9d2cbccb76127ba28528cb3ae2c2326a122446a83de5a056aaa3880d3882c5" + sha256: fedaadfa3a6996f75211d835aaeb8fede285dae94262485698afd832371b9a5e url: "https://pub.dev" source: hosted - version: "0.3.3+7" + version: "0.3.3+8" crypto: dependency: transitive description: @@ -435,10 +435,10 @@ packages: dependency: "direct main" description: name: dio - sha256: "01870acd87986f768e0c09cc4d7a19a59d814af7b34cbeb0b437d2c33bdfea4c" + sha256: "797e1e341c3dd2f69f2dad42564a6feff3bfb87187d05abb93b9609e6f1645c3" url: "https://pub.dev" source: hosted - version: "5.3.4" + version: "5.4.0" dio_smart_retry: dependency: "direct main" description: @@ -820,10 +820,10 @@ packages: dependency: transitive description: name: http - sha256: "759d1a329847dd0f39226c688d3e06a6b8679668e350e2891a6474f8b4bb8525" + sha256: d4872660c46d929f6b8a9ef4e7a7eff7e49bbf0c4ec3f385ee32df5119175139 url: "https://pub.dev" source: hosted - version: "1.1.0" + version: "1.1.2" http_multi_server: dependency: transitive description: @@ -964,10 +964,10 @@ packages: dependency: "direct dev" description: name: melos - sha256: a45e54b72cc2444b46be9d32a590119b9ba8c4e87117f2743a73ec049542f2d3 + sha256: "28136bf9fcd26ca2ffb104a02eff876efb776e7fff9303e2c8c978f0bd7c5800" url: "https://pub.dev" source: hosted - version: "3.2.0" + version: "3.3.0" meta: dependency: transitive description: @@ -1148,10 +1148,10 @@ packages: dependency: transitive description: name: petitparser - sha256: eeb2d1428ee7f4170e2bd498827296a18d4e7fc462b71727d111c0ac7707cfa6 + sha256: c15605cd28af66339f8eb6fbe0e541bfe2d1b72d5825efc6598f3e0a31b9ad27 url: "https://pub.dev" source: hosted - version: "6.0.1" + version: "6.0.2" platform: dependency: transitive description: @@ -1385,26 +1385,26 @@ packages: dependency: "direct main" description: name: slang - sha256: "829ae38374a328ac8d97d5835e8b4e9bbed1993f66ca85771c5ccec9c87ac397" + sha256: fe73e995287db77a32ef5a4ab8247bd20adc7a27ba2a4ba373a8132164eba654 url: "https://pub.dev" source: hosted - version: "3.25.0" + version: "3.26.1" slang_build_runner: dependency: "direct dev" description: name: slang_build_runner - sha256: f5003a3aa8a6a72de59c8ad29c072da9ab5d1b81c599798c0f651c4e5c7e25e5 + sha256: "72364adbb8d682b48b72402fd67f84e1b62fd96424eae98477a8fe58faec280c" url: "https://pub.dev" source: hosted - version: "3.25.0" + version: "3.26.1" slang_flutter: dependency: "direct main" description: name: slang_flutter - sha256: cb5e1611744cca620cc03f93a54eca6918e25ae7d600cd940ef2d556e2be4c64 + sha256: df1d6e5a7237028bcf94f7401d575fdfee8c9ca066b3e9a02acdcd5096e2a25a url: "https://pub.dev" source: hosted - version: "3.25.0" + version: "3.26.1" source_gen: dependency: transitive description: @@ -1505,26 +1505,26 @@ packages: dependency: transitive description: name: talker - sha256: "9c587c0269e194ea5c161b01fa5c4e4120926f4b8fedcf9b3bd2466cb500b880" + sha256: "447411fbc819b5cc41b647d4134d18535bec50616c45ce78b451abd37a22cc91" url: "https://pub.dev" source: hosted - version: "3.1.4" + version: "3.1.6" talker_dio_logger: dependency: "direct main" description: name: talker_dio_logger - sha256: "5b8dd43e8d837b8e1d39d94157193ba691efe03ec009cd6f43c197bde6981ea5" + sha256: "61dbf3c936dd63142c0b21b7fe5ffccee31d0e76ca283eb5a45ccbe043725dac" url: "https://pub.dev" source: hosted - version: "2.3.1" + version: "2.3.3" talker_flutter: dependency: "direct main" description: name: talker_flutter - sha256: dd632cfc8907018089925dc1f558c955f008ba428cebbb3eb39e339841eb3329 + sha256: "0b410c49edb50dd6a9ea2ddb049f547aa699907e90129ec024e5eae555ad34d5" url: "https://pub.dev" source: hosted - version: "3.5.4" + version: "3.5.6" talker_logger: dependency: transitive description: @@ -1745,10 +1745,10 @@ packages: dependency: transitive description: name: win32 - sha256: "7c99c0e1e2fa190b48d25c81ca5e42036d5cac81430ef249027d97b0935c553f" + sha256: b0f37db61ba2f2e9b7a78a1caece0052564d1bc70668156cf3a29d676fe4e574 url: "https://pub.dev" source: hosted - version: "5.1.0" + version: "5.1.1" win32_registry: dependency: transitive description: @@ -1769,10 +1769,10 @@ packages: dependency: transitive description: name: xml - sha256: af5e77e9b83f2f4adc5d3f0a4ece1c7f45a2467b695c2540381bac793e34e556 + sha256: b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226 url: "https://pub.dev" source: hosted - version: "6.4.2" + version: "6.5.0" yaml: dependency: transitive description: diff --git a/pubspec.yaml b/pubspec.yaml index 6b21a68..06fbf5f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -17,11 +17,11 @@ dependencies: cupertino_icons: ^1.0.2 # logger - talker_flutter: ^3.5.4 - talker_dio_logger: ^2.3.1 + talker_flutter: ^3.5.6 + talker_dio_logger: ^2.3.3 # dart utils - dio: ^5.3.3 + dio: ^5.4.0 dio_smart_retry: ^6.0.0 fpdart: ^1.1.0 fast_immutable_collections: ^9.1.6 @@ -30,8 +30,8 @@ dependencies: internet_connection_checker_plus: ^2.1.0 # i18n - slang: ^3.25.0 - slang_flutter: ^3.25.0 + slang: ^3.26.1 + slang_flutter: ^3.26.1 intl: ^0.18.1 # db local @@ -87,17 +87,17 @@ dev_dependencies: flutter_test: sdk: flutter # workflow - melos: ^3.2.0 + melos: ^3.3.0 change_app_package_name: ^1.1.0 flutter_lints: ^3.0.1 - custom_lint: ^0.5.6 + custom_lint: ^0.5.7 riverpod_lint: ^2.3.7 # generators riverpod_generator: ^2.3.9 - build_runner: ^2.4.6 - slang_build_runner: ^3.25.0 + build_runner: ^2.4.7 + slang_build_runner: ^3.26.1 auto_route_generator: ^7.3.2 retrofit_generator: ^8.0.3 reactive_forms_generator: ^4.3.0