[Gallery] Convert the Makefile to instead use the Dart workflow package Grinder. (#191)

* Replace Makefile with the Dart workflows package Grinder
pull/201/head
Per Classon 5 years ago committed by GitHub
parent 5b5ceed664
commit da3412c061
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -2,29 +2,71 @@
Flutter Gallery is a resource to help developers evaluate and use Flutter.
It is a collection of material design widgets, behaviors, and vignettes
implemented with Flutter. We often get asked how one can see Flutter in
action, and this gallery demonstrates what Flutter provides and how it
behaves in the wild.
implemented with Flutter. We often get asked how one can see Flutter in action,
and this gallery demonstrates what Flutter provides and how it behaves in the
wild.
## Supported Platforms
The Flutter Gallery application has been built to support multiple platforms. This includes:
The Flutter Gallery application has been built to support multiple platforms.
This includes:
* Android
* iOS
* web
* macOS
* Linux
* Windows
- Android
- iOS
- web
- macOS
- Linux
- Windows
That being said, extra steps must be taken to [enable Desktop support](https://github.com/flutter/flutter/wiki/Desktop-shells#tooling).
That being said, extra steps must be taken to [enable Desktop support](
https://github.com/flutter/flutter/wiki/Desktop-shells#tooling). For
example, to run the macOS app:
Additionally, the UI adapts between mobile and desktop layouts regardless of the platform it runs on. This is determined based on window size as outlined in [adaptive.dart](gallery/lib/layout/adaptive.dart).
```
cd gallery/
flutter config --enable-macos-desktop
flutter create --org io.flutter .
flutter run -d macos
```
Additionally, the UI adapts between mobile and desktop layouts regardless of the
platform it runs on. This is determined based on window size as outlined in
[adaptive.dart](gallery/lib/layout/adaptive.dart).
## To include a new splash animation
1. Convert your animation to a `.gif` file. Ideally, use a background color of `0xFF030303` to ensure the animation blends into the background of the app.
1. Convert your animation to a `.gif` file.
Ideally, use a background color of `0xFF030303` to ensure the animation
blends into the background of the app.
2. Add your new `.gif` file to the assets directory under
`assets/splash_effects`. Ensure the name follows the format
`splash_effect_$num.gif`. The number should be the next number after the
current largest number in the repository.
3. Update the map `_effectDurations` in
[splash.dart](gallery/lib/pages/splash.dart) to include the number of the
new `.gif` as well as its estimated duration. The duration is used to
determine how long to display the splash animation at launch.
## Generating localized strings and highlighted code segments
To generate localized strings or highlighted code segments, make sure that you
have [grinder](https://pub.dev/packages/grinder) installed. You can install it
by getting the packages in `samples/gallery/gallery/`:
```
flutter pub get
```
To generate localized strings (see separate [README](gallery/lib/l10n/README.md)
for more details):
2. Add your new `.gif` file to the assets directory under `assets/splash_effects`. Ensure the name follows the format `splash_effect_$num.gif`. The number should be the next number after the current largest number in the repository.
```
flutter pub run grinder l10n
```
3. Update the map `_effectDurations` in [splash.dart](gallery/lib/pages/splash.dart) to include the number of the new `.gif` as well as its estimated duration. The duration is used to determine how long to display the splash animation at launch.
To generate code segments (see separate [README](codeviewer_cli/README.md) for
more details):
```
flutter pub run grinder update-code-segments
```

@ -1,16 +1,34 @@
# Codeviewer
A command-line application to highlight dart source code.
## Overview
Code segments are highlighted before the app is compiled.
This is done because the highlighting process can take 300ms to finish, creating a noticeable delay when the demo switches to code page.
This is done because the highlighting process can take 300ms to finish, creating
a noticeable delay when the demo switches to code page.
The highlighter takes all files in the `gallery/lib/demos/` folder and scans each.
Highlighted code widgets are stored in the `gallery/lib/codeviewer/code_segments.dart` file.
Under the root directory, run `make update-code-segments` to run the highlighter.
Highlighted code widgets are stored in the
`gallery/lib/codeviewer/code_segments.dart` file.
## How to generate code segments
From the `samples/gallery/gallery/` directory:
1. Make sure you have [grinder](https://pub.dev/packages/grinder) installed by
running `flutter pub get`.
2. Then run `flutter pub run grinder update-code-segments` to generate code
segments with highlighting.
## How to define a block of code to generate highlighting for
Wrap a block of code with lines `// BEGIN yourDemoName` and `// END` to mark it for highlighting. The block in between, as well as any copyright notice and imports at the beginning of the file, are automatically taken and highlighted, and stored as `static TextSpan yourDemoName(BuildContext context)` in `gallery/lib/codeviewer/code_segments.dart`.
To display the code, go to `gallery/lib/data/demos.dart`, and add `code: CodeSegments.yourDemoName,` to your `GalleryDemoConfiguration` object.
Wrap a block of code with lines `// BEGIN yourDemoName` and `// END` to mark it
for highlighting. The block in between, as well as any copyright notice and
imports at the beginning of the file, are automatically taken and highlighted,
and stored as `static TextSpan yourDemoName(BuildContext context)` in
`gallery/lib/codeviewer/code_segments.dart`. To display the code, go to
`gallery/lib/data/demos.dart`, and add `code: CodeSegments.yourDemoName,` to
your `GalleryDemoConfiguration` object.
## Multiple blocks of code

@ -1,35 +0,0 @@
ROOT := $(shell git rev-parse --show-toplevel)/gallery
FLUTTER := $(shell which flutter)
FLUTTER_BIN_DIR := $(shell dirname $(FLUTTER))
FLUTTER_DIR := $(FLUTTER_BIN_DIR:/bin=)
DART := $(FLUTTER_BIN_DIR)/cache/dart-sdk/bin/dart
.PHONY: analyze
analyze:
$(FLUTTER) analyze
.PHONY: format
format:
$(FLUTTER) format .
.PHONY: test
test:
$(FLUTTER) test
.PHONY: gen-l10n
gen-l10n:
$(DART) $(FLUTTER_DIR)/dev/tools/localization/bin/gen_l10n.dart \
--template-arb-file=intl_en_US.arb \
--output-localization-file=gallery_localizations.dart \
--output-class=GalleryLocalizations
.PHONY: l10n
l10n: gen-l10n format
cd $(ROOT)/l10n_cli/ && $(FLUTTER) pub get
$(DART) $(ROOT)/l10n_cli/bin/main.dart
.PHONY: update-code-segments
update-code-segments:
cd $(ROOT)/codeviewer_cli/ && $(FLUTTER) pub get
$(DART) $(ROOT)/codeviewer_cli/bin/main.dart
$(FLUTTER) format $(ROOT)/gallery/lib/codeviewer/code_segments.dart

@ -22,18 +22,21 @@ This allows use of the English message through your localizations delegate in
the application code immediately without having to wait for the translations
to be completed.
To generate `GalleryLocalizations`, from `gallery/` run:
```
make l10n
```
## How to Generate GalleryLocalizations with Grinder
For more details on what `make l10n` runs, you can read below under Generate GalleryLocalizations.
From the `samples/gallery/gallery/` directory:
1. Make sure you have [grinder](https://pub.dev/packages/grinder) installed by
running `flutter pub get`.
2. Then run `flutter pub run grinder l10n` to generate `GalleryLocalizations`.
The current supported locales list is sorted alphabetically. So after running the script, update
`gallery_localizations.dart` to move the `en_US` locale to the top of the list.
For more details on what `flutter pub run grinder l10n` runs, you can read below
under *How to Generate GalleryLocalizations with l10n scripts*. The current
supported locales list is sorted alphabetically. This means that after running
the script, you have to update `gallery_localizations.dart` and move the `en_US`
locale to the top of the list.
## Generate GalleryLocalizations
To generate GalleryLocalizations, from `gallery/` run:
## How to Generate GalleryLocalizations with l10n scripts
To generate GalleryLocalizations, from `samples/gallery/gallery/` run:
```dart
dart ${YOUR_FLUTTER_PATH}/dev/tools/localization/bin/gen_l10n.dart \
@ -42,9 +45,9 @@ dart ${YOUR_FLUTTER_PATH}/dev/tools/localization/bin/gen_l10n.dart \
--output-class=GalleryLocalizations
```
From `gallery/`, run `dart ../l10n_cli/bin/main.dart`, which will generate
`intl_en_US.xml`. This will be used by the internal translation console to
generate messages in the different locales.
From `samples/gallery/gallery/`, run `dart ../l10n_cli/bin/main.dart`, which
will generate `intl_en_US.xml`. This will be used by the internal translation
console to generate messages in the different locales.
Run the formatter to make the Flutter analyzer happy:
```
@ -63,8 +66,7 @@ available, run the following commands to generate all necessary
`messages_<locale>.dart` files and the `localizations_delegate.dart` file:
```
make gen-l10n
make format
flutter pub run grinder l10n
```
which is equal to
@ -79,9 +81,3 @@ flutter format .
```
This ensures the generated `.dart` files updated with the latest translations.
Run the formatter to make the Flutter analyzer happy:
```
flutter format .
```

@ -43,6 +43,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.2"
cli_util:
dependency: transitive
description:
name: cli_util
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.3+2"
collection:
dependency: "direct main"
description:
@ -149,6 +156,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
grinder:
dependency: "direct dev"
description:
name: grinder
url: "https://pub.dartlang.org"
source: hosted
version: "0.8.3+1"
html:
dependency: transitive
description:

@ -37,6 +37,7 @@ dependencies:
dev_dependencies:
flutter_test:
sdk: flutter
grinder: ^0.8.0
flutter:
assets:

@ -0,0 +1,77 @@
// Copyright 2019 The Flutter team. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:io';
import 'package:grinder/grinder.dart';
import 'package:path/path.dart' as path;
void main(List<String> args) => grind(args);
@Task('Get packages')
Future<void> pubGet({String directory}) async {
await _runProcess(
'flutter',
['pub', 'get', if (directory != null) directory],
);
}
@Task('Format dart files')
Future<void> format({String path = '.'}) async {
await _runProcess('flutter', ['format', path]);
}
@Task('Generate localizations files')
Future<void> generateLocalizations() async {
final l10nScriptFile = path.join(
_flutterRootPath(),
'dev',
'tools',
'localization',
'bin',
'gen_l10n.dart',
);
Dart.run(l10nScriptFile, arguments: [
'--template-arb-file=intl_en_US.arb',
'--output-localization-file=gallery_localizations.dart',
'--output-class=GalleryLocalizations',
]);
await format(path: path.join('lib', 'l10n'));
}
@Task('Transform arb to xml for English')
@Depends(generateLocalizations)
Future<void> l10n() async {
final l10nPath = path.join(Directory.current.parent.path, 'l10n_cli');
await pubGet(directory: l10nPath);
Dart.run(path.join(l10nPath, 'bin', 'main.dart'));
}
@Task('Update code segments')
Future<void> updateCodeSegments() async {
final codeviewerPath =
path.join(Directory.current.parent.path, 'codeviewer_cli');
await pubGet(directory: codeviewerPath);
Dart.run(path.join(codeviewerPath, 'bin', 'main.dart'));
final targetFilePath = path.join('lib', 'codeviewer', 'code_segments.dart');
await format(path: targetFilePath);
}
Future<void> _runProcess(String executable, List<String> arguments) async {
final result = await Process.run(executable, arguments);
stdout.write(result.stdout);
stderr.write(result.stderr);
}
/// Return the flutter root path from the environment variables.
String _flutterRootPath() {
final flutterBinPath =
Platform.environment['PATH'].split(':').lastWhere((setting) {
return path.canonicalize(setting).endsWith(path.join('flutter', 'bin'));
});
return Directory(flutterBinPath).parent.path;
}

@ -1,4 +1,7 @@
A command-line application that converts .arb files to .xml files for translation consumption.
# l10n
A command-line application that converts .arb files to .xml files for
translation consumption.
Created from templates made available by Stagehand under a BSD-style
[license](https://github.com/dart-lang/stagehand/blob/master/LICENSE).

Loading…
Cancel
Save