mirror of https://github.com/flutter/samples.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
110 lines
2.6 KiB
110 lines
2.6 KiB
// Copyright 2020, the Flutter project authors. Please see the AUTHORS file
|
|
// for details. 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:convert';
|
|
import 'dart:io';
|
|
|
|
import 'package:grinder/grinder.dart';
|
|
import 'package:path/path.dart' as path;
|
|
|
|
void main(List<String> args) => grind(args);
|
|
|
|
@Task()
|
|
void runSkia() {
|
|
run('flutter',
|
|
arguments:
|
|
'run -d web --web-port=5000 --release --dart-define=FLUTTER_WEB_USE_SKIA=true lib/main.dart '
|
|
.split(' '));
|
|
}
|
|
|
|
@Task()
|
|
void runWeb() {
|
|
run('flutter',
|
|
arguments: 'run -d web --web-port=5000 lib/main.dart '.split(' '));
|
|
}
|
|
|
|
@Task()
|
|
void runFirebase() {
|
|
run('flutter',
|
|
arguments:
|
|
'run -d web --web-port=5000 lib/main_firebase.dart '.split(' '));
|
|
}
|
|
|
|
@Task()
|
|
void runFirebaseSkia() {
|
|
run('flutter',
|
|
arguments:
|
|
'run -d web --web-port=5000 --release --dart-define=FLUTTER_WEB_USE_SKIA=true lib/main_firebase.dart'
|
|
.split(' '));
|
|
}
|
|
|
|
@Task()
|
|
void test() {
|
|
TestRunner().testAsync();
|
|
}
|
|
|
|
@DefaultTask()
|
|
@Depends(test, copyright)
|
|
void build() {
|
|
Pub.build();
|
|
}
|
|
|
|
@Task()
|
|
void clean() => defaultClean();
|
|
|
|
@Task()
|
|
void generate() {
|
|
Pub.run('build_runner', arguments: ['build']);
|
|
}
|
|
|
|
const _copyright =
|
|
'''// Copyright 2020, the Flutter project authors. Please see the AUTHORS file
|
|
// for details. All rights reserved. Use of this source code is governed by a
|
|
// BSD-style license that can be found in the LICENSE file.''';
|
|
|
|
@Task()
|
|
Future copyright() async {
|
|
var files = <File>[];
|
|
await for (var file in _filesWithoutCopyright()) {
|
|
files.add(file);
|
|
}
|
|
|
|
if (files.isNotEmpty) {
|
|
log('Found Dart files without a copyright header:');
|
|
for (var file in files) {
|
|
log(file.toString());
|
|
}
|
|
fail('run "grind fix-copyright" to add copyright headers');
|
|
}
|
|
}
|
|
|
|
@Task()
|
|
Future fixCopyright() async {
|
|
await for (var file in _filesWithoutCopyright()) {
|
|
var contents = await file.readAsString();
|
|
await file.writeAsString(_copyright + '\n\n' + contents);
|
|
}
|
|
}
|
|
|
|
Stream<File> _filesWithoutCopyright() async* {
|
|
var set = FileSet.fromDir(Directory('.'), recurse: true);
|
|
var dartFiles =
|
|
set.files.where((file) => path.extension(file.path) == '.dart');
|
|
|
|
for (var file in dartFiles) {
|
|
var firstThreeLines = await file
|
|
.openRead()
|
|
.transform(utf8.decoder)
|
|
.transform(const LineSplitter())
|
|
.take(3)
|
|
.fold<String>('', (previous, element) {
|
|
if (previous == '') return element;
|
|
return previous + '\n' + element;
|
|
});
|
|
|
|
if (firstThreeLines != _copyright) {
|
|
yield file;
|
|
}
|
|
}
|
|
}
|