antfarm
Version:
File automation framework for ants.
52 lines (40 loc) • 1.64 kB
text/typescript
import {FolderNest} from "./folderNest";
import {Environment} from "../environment/environment";
const fs = require("fs"),
tmp = require("tmp");
/**
* An auto managed folder nest used for temporarily storing _files.
*/
export class AutoFolderNest extends FolderNest {
protected hierarchy: string|string[];
protected hierarchyString: string;
constructor(e: Environment, hierarchy: string|string[]) {
if (!e.autoManagedFolderDirectory) {
throw "Option auto_managed_folder_directory must be set to use auto managed folders.";
}
/**
* Creates the hierarchy string used for the auto managed _path.
* @param hierarchy
*/
let getHierarchyString = (hierarchy: string|string[]) => {
let hierarchyString = "";
if (typeof(hierarchy) === "string") {
hierarchyString = encodeURIComponent(hierarchy.toString());
} else if (hierarchy instanceof Array) {
hierarchy.forEach((pi) => {
hierarchyString += "/" + encodeURIComponent(pi);
});
} else {
throw `Path should be a string or array, ${typeof(hierarchy)} found.`;
}
if (hierarchyString.charAt(0) !== "/") {
hierarchyString = "/" + hierarchyString;
}
return hierarchyString;
};
let path = e.autoManagedFolderDirectory + getHierarchyString(hierarchy);
super(e, path, true);
this.hierarchy = hierarchy;
this.hierarchyString = getHierarchyString(hierarchy);
}
}