denoify
Version:
For NPM module authors that would like to support Deno but do not want to write and maintain a port.
47 lines (33 loc) • 1.35 kB
text/typescript
import * as path from "path";
import { execFactory } from "./exec";
import * as st from "scripting-tools";
import { crawl } from "./crawl";
export function moveContentUpOneLevelFactory(params: { isDryRun: boolean; log?: typeof console.log | undefined }) {
const { isDryRun, log } = params;
const { exec } = execFactory({ isDryRun });
async function moveContentUpOneLevel(params: { dirPath: string }): Promise<{
beforeMovedFilePaths: string[]; //Path expressed relative to dirPath
}> {
const dirPath = params.dirPath.replace(/\/$/, "");
const upDirPath = path.join(dirPath, "..");
const beforeMovedFilePaths = crawl(dirPath);
for (const beforeMovedFilePath of beforeMovedFilePaths) {
log?.([`Moving`, path.join(dirPath, beforeMovedFilePath), `to ${path.join(upDirPath, beforeMovedFilePath)}`].join(" "));
walk: {
if (isDryRun) {
break walk;
}
st.fs_move("MOVE", dirPath, upDirPath, beforeMovedFilePath);
}
}
walk: {
if (isDryRun) {
break walk;
}
log?.(`rm -r ${dirPath}`);
await exec(`rm -r ${dirPath}`);
}
return { beforeMovedFilePaths };
}
return { moveContentUpOneLevel };
}