mirror of
https://github.com/di-sukharev/opencommit.git
synced 2026-01-12 23:28:16 -05:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3705a66ada | ||
|
|
bdb8da49b7 | ||
|
|
6e896ec428 | ||
|
|
9ce961ccc0 | ||
|
|
1a2f6416cc | ||
|
|
4fa438ab17 | ||
|
|
4ad7a5f779 |
3
TODO.md
3
TODO.md
@@ -2,4 +2,7 @@
|
||||
|
||||
- [] [build for both mjs and cjs](https://snyk.io/blog/best-practices-create-modern-npm-package/)
|
||||
- [] make bundle smaller by properly configuring esbuild
|
||||
- [] do // TODOs in the code
|
||||
- [] batch small files in one request
|
||||
- [] add tests
|
||||
- [] make hook work
|
||||
|
||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "open-commit",
|
||||
"version": "0.0.11",
|
||||
"version": "0.0.14",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "open-commit",
|
||||
"version": "0.0.11",
|
||||
"version": "0.0.14",
|
||||
"license": "ISC",
|
||||
"dependencies": {
|
||||
"@clack/prompts": "^0.6.1",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "opencommit",
|
||||
"version": "0.0.11",
|
||||
"version": "0.0.14",
|
||||
"description": "AI generates conventional commits with mind-blowing accuracy.",
|
||||
"keywords": [
|
||||
"git",
|
||||
|
||||
0
src/cli.ts
Normal file → Executable file
0
src/cli.ts
Normal file → Executable file
@@ -19,59 +19,71 @@ export const hookCommand = command(
|
||||
name: 'hook',
|
||||
parameters: ['<set/unset>']
|
||||
},
|
||||
async (argv) => {
|
||||
(argv) => {
|
||||
const HOOK_PATH = fileURLToPath(new URL('cli.cjs', import.meta.url));
|
||||
|
||||
try {
|
||||
await assertGitRepo();
|
||||
(async () => {
|
||||
try {
|
||||
await assertGitRepo();
|
||||
|
||||
const { setUnset: mode } = argv._;
|
||||
const { setUnset: mode } = argv._;
|
||||
|
||||
if (mode === 'set') {
|
||||
intro(`setting opencommit as '${HOOK_NAME}' hook`);
|
||||
if (isHookExists) {
|
||||
const realPath = await fs.realpath(SYMLINK_URL);
|
||||
if (mode === 'set') {
|
||||
intro(`setting opencommit as '${HOOK_NAME}' hook`);
|
||||
|
||||
if (realPath === HOOK_PATH)
|
||||
return outro(`opencommit is already set as '${HOOK_NAME}'`);
|
||||
if (isHookExists) {
|
||||
let realPath;
|
||||
try {
|
||||
realPath = await fs.realpath(SYMLINK_URL);
|
||||
console.log(123, { realPath });
|
||||
} catch (error) {
|
||||
console.log(321, { realPath });
|
||||
outro(error as string);
|
||||
realPath = null;
|
||||
}
|
||||
|
||||
throw new Error(
|
||||
`Different ${HOOK_NAME} is already set. Remove it before setting opencommit as '${HOOK_NAME}' hook.`
|
||||
);
|
||||
if (realPath === HOOK_PATH)
|
||||
return outro(`opencommit is already set as '${HOOK_NAME}'`);
|
||||
|
||||
throw new Error(
|
||||
`Different ${HOOK_NAME} is already set. Remove it before setting opencommit as '${HOOK_NAME}' hook.`
|
||||
);
|
||||
}
|
||||
|
||||
await fs.mkdir(path.dirname(SYMLINK_URL), { recursive: true });
|
||||
await fs.symlink(HOOK_PATH, SYMLINK_URL, 'file');
|
||||
await fs.chmod(SYMLINK_URL, 0o755);
|
||||
|
||||
return outro(`${chalk.green('✔')} Hook set`);
|
||||
}
|
||||
|
||||
await fs.mkdir(path.dirname(SYMLINK_URL), { recursive: true });
|
||||
await fs.symlink(HOOK_PATH, SYMLINK_URL, 'file');
|
||||
await fs.chmod(SYMLINK_URL, 0o755);
|
||||
if (mode === 'unset') {
|
||||
intro(`unsetting opencommit as '${HOOK_NAME}' hook`);
|
||||
|
||||
return outro(`${chalk.green('✔')} Hook set`);
|
||||
if (!isHookExists) {
|
||||
return outro(
|
||||
`opencommit wasn't previously set as '${HOOK_NAME}' hook, nothing to remove`
|
||||
);
|
||||
}
|
||||
|
||||
const realpath = await fs.realpath(SYMLINK_URL);
|
||||
if (realpath !== HOOK_PATH) {
|
||||
return outro(
|
||||
`opencommit wasn't previously set as '${HOOK_NAME}' hook, but different hook was, if you want to remove it — do it manually`
|
||||
);
|
||||
}
|
||||
|
||||
await fs.rm(SYMLINK_URL);
|
||||
return outro(`${chalk.green('✔')} Hook is removed`);
|
||||
}
|
||||
|
||||
throw new Error(
|
||||
`unsupported mode: ${mode}. Supported modes are: 'set' or 'unset'`
|
||||
);
|
||||
} catch (error) {
|
||||
outro(`${chalk.red('✖')} ${error}`);
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
if (mode === 'unset') {
|
||||
intro(`unsetting opencommit as '${HOOK_NAME}' hook`);
|
||||
if (!isHookExists) {
|
||||
return outro(
|
||||
`opencommit wasn't previously set as '${HOOK_NAME}' hook, nothing to remove`
|
||||
);
|
||||
}
|
||||
|
||||
const realpath = await fs.realpath(SYMLINK_URL);
|
||||
if (realpath !== HOOK_PATH) {
|
||||
return outro(
|
||||
`opencommit wasn't previously set as '${HOOK_NAME}' hook, but different hook was, if you want to remove it — do it manually`
|
||||
);
|
||||
}
|
||||
|
||||
await fs.rm(SYMLINK_URL);
|
||||
return outro(`${chalk.green('✔')} Hook is removed`);
|
||||
}
|
||||
|
||||
throw new Error(
|
||||
`unsupported mode: ${mode}. Supported modes are: 'set' or 'unset'`
|
||||
);
|
||||
} catch (error) {
|
||||
outro(`${chalk.red('✖')} ${error}`);
|
||||
process.exit(1);
|
||||
}
|
||||
})();
|
||||
}
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user