@altano/repository-tools
Version:
Misc tools for dealing with repositories of multiple version control systems (git, svn, etc)
55 lines (53 loc) • 1.28 kB
JavaScript
import { execFileAsync, execFileSync } from "./exec.js";
//#region src/repositoryCommand.ts
const environment = {
git: {
GIT_TERMINAL_PROMPT: "0",
GIT_CONFIG_GLOBAL: "/dev/null",
GIT_CONFIG_SYSTEM: "/dev/null",
GIT_COMMITTER_NAME: "alan",
GIT_COMMITTER_EMAIL: "alan@example.com",
GIT_AUTHOR_NAME: "alan",
GIT_AUTHOR_EMAIL: "alan@example.com"
},
hg: {
HGRCPATH: "/dev/null",
HGUSER: "alan",
EMAIL: "alan@example.com"
},
sl: {
HGRCPATH: "/dev/null",
HGUSER: "alan",
EMAIL: "alan@example.com"
},
svn: {},
svnadmin: {},
svnrdump: {}
};
async function repositoryExec(cwd, command, args) {
return execFileAsync(command, args, {
cwd,
encoding: "utf8",
env: {
...process.env,
...environment[command]
}
}).then(({ stdout, stderr }) => {
return stderr ? Promise.reject(new Error(stderr.trim())) : stdout.trim();
});
}
function repositoryExecSync(cwd, command, args) {
const result = execFileSync(command, args, {
cwd,
encoding: "utf8",
env: {
...process.env,
...environment[command]
}
}).trim();
return result;
}
const createExecForDirectory = (cwd) => repositoryExec.bind(null, cwd);
//#endregion
export { createExecForDirectory, repositoryExec, repositoryExecSync };
//# sourceMappingURL=repositoryCommand.js.map