listVersions method
Lists all available migration versions in ascending order.
Implementation
@override
Future<List<String>> listVersions() async {
var migrationsDirectory = MigrationConstants.migrationsBaseDirectory(
_projectDirectory,
);
if (!await migrationsDirectory.exists()) {
return [];
}
var versions =
await migrationsDirectory
.list()
.where((entity) => entity is Directory)
.cast<Directory>()
.map((directory) => path.basename(directory.path))
.toList()
..sort();
var removed = await deleteTrailingEmptyMigrationVersionDirectories(
versions,
migrationsBaseDirectory: migrationsDirectory,
logWarning: log.warning,
);
// Only an existing registry is refreshed, to drop the removed versions.
// Since writeVersionRegistry creates the file when missing, writing it
// unconditionally would turn listing the versions into generating a
// registry for projects that have none.
if (removed.isNotEmpty && await _registryFile.exists()) {
await writeVersionRegistry(versions);
}
return versions;
}