Automatically include latest version in docs

This commit is contained in:
Simon Binder 2021-08-20 18:33:53 +02:00
parent 2945381213
commit 008c348aba
No known key found for this signature in database
GPG Key ID: 7891917E4147B8C0
7 changed files with 113 additions and 16 deletions

View File

@ -8,6 +8,8 @@ jobs:
steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1
with:
sdk: beta
- name: Get dependencies
run: dart pub get

View File

@ -1,5 +1,22 @@
builders:
versions:
import: 'tool/write_versions.dart'
build_to: cache
builder_factories: ["writeVersions"]
build_extensions: {"$package$": ["lib/versions.json"]}
targets:
prepare:
builders:
"|versions":
enabled: true
auto_apply_builders: false
sources:
- "$package$"
- "lib/versions.json"
$default:
dependencies: [":prepare"]
builders:
build_web_compilers|entrypoint:
release_options:

View File

@ -1,5 +1,23 @@
builders:
versions:
import: 'tool/write_versions.dart'
build_to: cache
builder_factories: ["writeVersions"]
build_extensions: {"$package$": ["lib/versions.json"]}
targets:
prepare:
builders:
"|versions":
enabled: true
auto_apply_builders: false
sources:
- "$package$"
- "lib/versions.json"
- "tool/write_versions.dart"
$default:
dependencies: [":prepare"]
builders:
built_site:
release_options:

View File

@ -16,22 +16,25 @@ First, lets add moor to your project's `pubspec.yaml`.
At the moment, the current version of `moor` is [![Moor version](https://img.shields.io/pub/v/moor.svg)](https://pub.dev/packages/moor)
and the latest version of `moor_generator` is [![Generator version](https://img.shields.io/pub/v/moor_generator.svg)](https://pub.dev/packages/moor_generator)
{% assign versions = 'package:moor_documentation/versions.json' | readString | json_decode %}
```yaml
dependencies:
moor: # use the latest version
sqlite3_flutter_libs: # Also use the latest version.
path_provider:
path:
moor: ^{{ versions.moor }}
sqlite3_flutter_libs: ^0.5.0
path_provider: ^2.0.0
path: ^{{ versions.path }}
dev_dependencies:
moor_generator: # use the latest version
build_runner:
moor_generator: ^{{ versions.moor_generator }}
build_runner: ^{{ versions.build_runner }}
```
If you're wondering why so many packages are necessary, here's a quick overview over what each package does:
- `moor`: This is the core package defining most apis
- `sqlite3_flutter_libs`: Ships the latest `sqlite3` version with your Android or iOS app.
- `sqlite3_flutter_libs`: Ships the latest `sqlite3` version with your Android or iOS app. This is not required when you're _not_ using Flutter,
but then you need to take care of including `sqlite3` yourself.
- `path_provider` and `path`: Used to find a suitable location to store the database. Maintained by the Flutter and Dart team
- `moor_generator`: Generates query code based on your tables
- `build_runner`: Common tool for code-generation, maintained by the Dart team

View File

@ -14,24 +14,27 @@ First, lets add moor to your project's `pubspec.yaml`.
At the moment, the current version of `moor` is [![Moor version](https://img.shields.io/pub/v/moor.svg)](https://pub.dev/packages/moor)
and the latest version of `moor_generator` is [![Generator version](https://img.shields.io/pub/v/moor_generator.svg)](https://pub.dev/packages/moor_generator)
{% assign versions = 'package:moor_documentation/versions.json' | readString | json_decode %}
```yaml
dependencies:
moor: # use the latest version
sqlite3_flutter_libs: # Also use the latest version.
path_provider:
path:
moor: ^{{ versions.moor }}
sqlite3_flutter_libs: ^0.5.0
path_provider: ^2.0.0
path: ^{{ versions.path }}
dev_dependencies:
moor_generator: # use the latest version
build_runner:
moor_generator: ^{{ versions.moor_generator }}
build_runner: ^{{ versions.build_runner }}
```
If you're wondering why so many packages are necessary, here's a quick overview over what each package does:
- `moor`: This is the core package defining most apis
- `sqlite3_flutter_libs`: Ships the latest `sqlite3` version with your Android or iOS app.
- `sqlite3_flutter_libs`: Ships the latest `sqlite3` version with your Android or iOS app. This is not required when you're _not_ using Flutter,
but then you need to take care of including `sqlite3` yourself.
- `path_provider` and `path`: Used to find a suitable location to store the database. Maintained by the Flutter and Dart team
- `moor_generator`: Generates Dart apis for the sql queries and tables you wrote
- `moor_generator`: Generates query code based on your tables
- `build_runner`: Common tool for code-generation, maintained by the Dart team
{% include "partials/changed_to_ffi" %}

View File

@ -13,17 +13,32 @@ dependencies:
version: ^0.2.0
dev_dependencies:
build: ^2.1.0
build_runner: ^2.0.5
build_web_compilers: ^3.0.0
build_web_compilers: ^3.2.0
built_site:
hosted:
url: https://simonbinder.eu
name: built_site
version: ^0.2.0
moor:
moor_generator:
sqlparser:
dependency_overrides:
moor:
path: ../moor
moor_generator:
path: ../moor_generator
sqlparser:
path: ../sqlparser
# todo: Remove after https://github.com/dart-lang/mime/pull/43
mime:
git:
url: https://github.com/simolus3/mime.git
ref: woff2
built_site:
path: /home/simon/programming/built_site/built_site

View File

@ -0,0 +1,39 @@
import 'dart:async';
import 'dart:convert';
import 'package:build/build.dart';
import 'package:yaml/yaml.dart';
Builder writeVersions(BuilderOptions options) {
return _VersionsBuilder();
}
class _VersionsBuilder extends Builder {
@override
Future<void> build(BuildStep buildStep) async {
const packages = [
'moor',
'moor_generator',
'sqlparser',
'path',
'build_runner',
];
final versions = <String, String>{};
for (final package in packages) {
final pubspec =
await buildStep.readAsString(AssetId(package, 'pubspec.yaml'));
final parsedPubspec = loadYaml(pubspec);
versions[package] = (parsedPubspec as Map)['version'].toString();
}
await buildStep.writeAsString(
buildStep.allowedOutputs.single, json.encode(versions));
}
@override
Map<String, List<String>> get buildExtensions => const {
r'$package$': ['lib/versions.json']
};
}