archiveName function
(String, ArchiveType)
archiveName(
- String path, [
- ArchiveType type = ArchiveType.tgz,
- List<
String> extAllows = basicArchiveExtAllows
create archive name from path and type
Implementation
(String, ArchiveType) archiveName(
String path, [
ArchiveType type = ArchiveType.tgz,
List<String> extAllows = basicArchiveExtAllows,
]) {
var dname = p.dirname(path);
var fname = p.basenameWithoutExtension(path);
var ename = p.extension(path).toLowerCase();
if (ename.isNotEmpty) {
ename = ename.substring(1); // remove prefix .
ename = archiveTypeMapper[ename] ?? ename;
// if (ename == 'tar.gz') ename = 'tgz';
final isAllowType = isAllowArchiveType(path, extAllows);
if (!isAllowType) {
ename = type.name;
path = p.normalize(p.join(dname, '$fname.$ename'));
}
}
if (ename.isNotEmpty && ArchiveType.values.asNameMap().containsKey(ename)) {
type = ArchiveType.values.byName(ename);
}
var name = p.split(path).last.toLowerCase();
if (name.endsWith(type.name)) return (path, type);
name += '.${type.name}';
path = p.normalize(p.join(path, '..', name));
return (path, type);
}