mirror of
https://github.com/facebook/docusaurus.git
synced 2025-04-29 18:27:56 +02:00
63 lines
1.8 KiB
TypeScript
Vendored
63 lines
1.8 KiB
TypeScript
Vendored
/**
|
|
* Copyright (c) Facebook, Inc. and its affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/
|
|
|
|
import fs from 'fs-extra';
|
|
import os from 'os';
|
|
import path from 'path';
|
|
import shell from 'shelljs';
|
|
|
|
class Git {
|
|
constructor(private dir: string) {
|
|
const res = shell.exec('git init', {cwd: dir, silent: true});
|
|
if (res.code !== 0) {
|
|
throw new Error(`git init exited with code ${res.code}.
|
|
stderr: ${res.stderr}
|
|
stdout: ${res.stdout}`);
|
|
}
|
|
// Doesn't matter currently
|
|
shell.exec('git config user.email "test@jc-verse.com"', {
|
|
cwd: dir,
|
|
silent: true,
|
|
});
|
|
shell.exec('git config user.name "Test"', {cwd: dir, silent: true});
|
|
|
|
shell.exec('git commit --allow-empty -m "First commit"', {
|
|
cwd: dir,
|
|
silent: true,
|
|
});
|
|
}
|
|
commit(msg: string, date: string, author: string): void {
|
|
const addRes = shell.exec('git add .', {cwd: this.dir, silent: true});
|
|
const commitRes = shell.exec(
|
|
`git commit -m "${msg}" --date "${date}T00:00:00Z" --author "${author}"`,
|
|
{
|
|
cwd: this.dir,
|
|
env: {GIT_COMMITTER_DATE: `${date}T00:00:00Z`},
|
|
silent: true,
|
|
},
|
|
);
|
|
if (addRes.code !== 0) {
|
|
throw new Error(`git add exited with code ${addRes.code}.
|
|
stderr: ${addRes.stderr}
|
|
stdout: ${addRes.stdout}`);
|
|
}
|
|
if (commitRes.code !== 0) {
|
|
throw new Error(`git commit exited with code ${commitRes.code}.
|
|
stderr: ${commitRes.stderr}
|
|
stdout: ${commitRes.stdout}`);
|
|
}
|
|
}
|
|
}
|
|
|
|
// This function is sync so the same mock repo can be shared across tests
|
|
export function createTempRepo(): {repoDir: string; git: Git} {
|
|
const repoDir = fs.mkdtempSync(path.join(os.tmpdir(), 'git-test-repo'));
|
|
|
|
const git = new Git(repoDir);
|
|
|
|
return {repoDir, git};
|
|
}
|