List<File>
migrationFiles
Source
List<File> get migrationFiles {
Map<int, File> orderMap = migrationDirectory
.listSync()
.where((fse) => fse is File && fse.path.endsWith(".migration.dart"))
.fold({}, (m, fse) {
var fileName = fse.uri.pathSegments.last;
var migrationName = fileName.split(".").first;
var versionNumberString = migrationName.split("_").first;
try {
var versionNumber = int.parse(versionNumberString);
m[versionNumber] = fse;
return m;
} catch (e) {
throw new CLIException(
"Migration files must have the following format: Version_Name.migration.dart,"
"where Version must be an integer (optionally prefixed with 0s, e.g. '00000002')"
" and '_Name' is optional. Offender: ${fse.uri}");
}
});
var sortedKeys = (new List.from(orderMap.keys));
sortedKeys.sort((int a, int b) => a.compareTo(b));
return sortedKeys.map((v) => orderMap[v]).toList();
}