mirror of https://github.com/AMT-Cheif/drift.git
Migrator: Apply changes to pubspec
This commit is contained in:
parent
6877cf9673
commit
2a67edec33
|
@ -9,6 +9,7 @@ import 'package:analyzer/dart/ast/visitor.dart';
|
||||||
import 'package:moor_generator/src/utils/string_escaper.dart';
|
import 'package:moor_generator/src/utils/string_escaper.dart';
|
||||||
import 'package:path/path.dart' as p;
|
import 'package:path/path.dart' as p;
|
||||||
import 'package:sqlparser/sqlparser.dart' hide AnalysisContext, StringLiteral;
|
import 'package:sqlparser/sqlparser.dart' hide AnalysisContext, StringLiteral;
|
||||||
|
import 'package:yaml/yaml.dart';
|
||||||
import 'package:yaml_edit/yaml_edit.dart';
|
import 'package:yaml_edit/yaml_edit.dart';
|
||||||
|
|
||||||
import '../cli.dart';
|
import '../cli.dart';
|
||||||
|
@ -100,7 +101,44 @@ class MigrateCommand extends MoorCommand {
|
||||||
|
|
||||||
Future<void> _transformBuildYaml(File file) async {}
|
Future<void> _transformBuildYaml(File file) async {}
|
||||||
|
|
||||||
Future<void> _transformPubspec(File file) async {}
|
Future<void> _transformPubspec(File file) async {
|
||||||
|
dynamic originalPubspec;
|
||||||
|
YamlEditor editor;
|
||||||
|
|
||||||
|
try {
|
||||||
|
final content = await file.readAsString();
|
||||||
|
originalPubspec = loadYaml(content, sourceUrl: file.uri);
|
||||||
|
editor = YamlEditor(content);
|
||||||
|
} on Exception {
|
||||||
|
cli.logger.warning('Could not parse ${file.path}, ignoring...');
|
||||||
|
}
|
||||||
|
|
||||||
|
const newPackages = {'moor': 'drift', 'moor_generator': 'drift_dev'};
|
||||||
|
|
||||||
|
void replaceIn(String key) {
|
||||||
|
if (originalPubspec is! Map) return;
|
||||||
|
|
||||||
|
final dependencyBlock = originalPubspec[key];
|
||||||
|
if (dependencyBlock is! Map) return;
|
||||||
|
|
||||||
|
final block = dependencyBlock as Map;
|
||||||
|
for (final package in newPackages.keys) {
|
||||||
|
if (block.containsKey(package)) {
|
||||||
|
final newPackage = newPackages[package];
|
||||||
|
|
||||||
|
editor
|
||||||
|
..remove([key, package])
|
||||||
|
..update([key, newPackage], block[package]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
replaceIn('dependencies');
|
||||||
|
replaceIn('dev_dependencies');
|
||||||
|
replaceIn('dependency_overrides');
|
||||||
|
|
||||||
|
await file.writeAsString(editor.toString());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
class _Moor2DriftDartRewriter extends GeneralizingAstVisitor<void> {
|
class _Moor2DriftDartRewriter extends GeneralizingAstVisitor<void> {
|
||||||
|
|
|
@ -22,6 +22,7 @@ dependencies:
|
||||||
logging: '>=0.11.0 <2.0.0'
|
logging: '>=0.11.0 <2.0.0'
|
||||||
cli_util: '>=0.2.0 <0.4.0'
|
cli_util: '>=0.2.0 <0.4.0'
|
||||||
yaml_edit: ^2.0.1
|
yaml_edit: ^2.0.1
|
||||||
|
yaml: ^3.1.0
|
||||||
|
|
||||||
# Moor-specific analysis and apis
|
# Moor-specific analysis and apis
|
||||||
moor: ^4.4.0
|
moor: ^4.4.0
|
||||||
|
|
|
@ -101,6 +101,44 @@ import 'package:drift/src/some/internal/file.dart';
|
||||||
|
|
||||||
export 'package:drift/web.dart';
|
export 'package:drift/web.dart';
|
||||||
export 'package:drift/native.dart';
|
export 'package:drift/native.dart';
|
||||||
|
'''),
|
||||||
|
]).validate();
|
||||||
|
});
|
||||||
|
|
||||||
|
_test('updates pubspec.yaml', () async {
|
||||||
|
await _setup(const [], pubspec: '''
|
||||||
|
name: app
|
||||||
|
|
||||||
|
environment:
|
||||||
|
sdk: ^2.12.0
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
moor: ^1.2.3
|
||||||
|
something_else:
|
||||||
|
|
||||||
|
# comment
|
||||||
|
dev_dependencies:
|
||||||
|
moor_generator: ^4.5.6
|
||||||
|
build_runner: ^2.0.0
|
||||||
|
''');
|
||||||
|
|
||||||
|
await _apply();
|
||||||
|
|
||||||
|
await d.dir('app', [
|
||||||
|
d.file('pubspec.yaml', '''
|
||||||
|
name: app
|
||||||
|
|
||||||
|
environment:
|
||||||
|
sdk: ^2.12.0
|
||||||
|
|
||||||
|
dependencies:
|
||||||
|
drift: ^1.2.3
|
||||||
|
something_else:
|
||||||
|
|
||||||
|
# comment
|
||||||
|
dev_dependencies:
|
||||||
|
build_runner: ^2.0.0
|
||||||
|
drift_dev: ^4.5.6
|
||||||
'''),
|
'''),
|
||||||
]).validate();
|
]).validate();
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue