diff --git a/.prettierignore b/.prettierignore index fe589dd..192ea8b 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,3 +1,2 @@ CHANGELOG.md README.md -package.json diff --git a/package.json b/package.json index 5421d3e..d2c492f 100644 --- a/package.json +++ b/package.json @@ -42,7 +42,7 @@ "homepage": "/~https://github.com/vivaxy/gacp#readme", "dependencies": { "@commitlint/load": "^8.1.0", - "@vivaxy/git": "^4.0.0", + "@vivaxy/git": "^4.0.1", "chalk": "^2.4.2", "conventional-commit-types": "^2.1.1", "cosmiconfig": "^5.2.1", @@ -122,5 +122,10 @@ "extends": [ "@commitlint/config-conventional" ] + }, + "gacp": { + "hooks": { + "postpush": "echo after push" + } } } diff --git a/src/gacp.ts b/src/gacp.ts index f2359d3..06a3058 100644 --- a/src/gacp.ts +++ b/src/gacp.ts @@ -7,6 +7,7 @@ import * as git from '@vivaxy/git'; import prompt from './prompt'; import GacpError from './errors/gacp'; +import runHook from './shell/run-hook'; import { EMOJI_TYPES } from './configs'; import * as logger from './shell/logger'; import checkNeedsPush from './git/status/check-needs-push'; diff --git a/src/git/commands/git-push.ts b/src/git/commands/git-push.ts deleted file mode 100644 index 2a853ed..0000000 --- a/src/git/commands/git-push.ts +++ /dev/null @@ -1,29 +0,0 @@ -/** - * @since 2016-11-22 21:20 - * @author vivaxy - */ -import * as git from '@vivaxy/git'; - -import GacpError from '../../errors/gacp'; -import * as logger from '../../shell/logger'; - -export default async function gitPush({ cwd }: { cwd: string }) { - const branch = await git.getCurrentBranch({ cwd }); - - const remoteDiffer = - (await git.getRevCount({ - from: branch, - leftOnly: true, - cwd, - })) !== 0; - if (remoteDiffer) { - throw new GacpError('Remote differ, please pull changes.'); - } - - const remote = await git.getCurrentRemote({ cwd }); - if (!remote) { - throw new GacpError('No tracking remote.'); - } - logger.command(`git push ${remote} ${branch} --follow-tags`); - await git.push({ cwd }); -} diff --git a/src/shell/run-hook.ts b/src/shell/run-hook.ts new file mode 100644 index 0000000..3273434 --- /dev/null +++ b/src/shell/run-hook.ts @@ -0,0 +1,17 @@ +/** + * @since 2020-04-29 10:39 + * @author vivaxy + */ +import * as execa from 'execa'; + +export default async function runHook( + script: string, + { + cwd, + }: { + cwd: string; + }, +) { + const [command, ...args] = script.split(' '); + await execa(command, args, { cwd }); +} diff --git a/yarn.lock b/yarn.lock index 38f79e3..b7655c1 100644 --- a/yarn.lock +++ b/yarn.lock @@ -594,10 +594,10 @@ dependencies: "@types/yargs-parser" "*" -"@vivaxy/git@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@vivaxy/git/-/git-4.0.0.tgz#e2a67507e44b7525912131028035222d02c0fa44" - integrity sha512-x69ke1VzQ9J3533ZRlb4lSEVGth2ab63Gjtne4+t8g8pgO9t3tpWn1gLjHezDkbmUwd62g4gYQIOARvX2xbjJA== +"@vivaxy/git@^4.0.1": + version "4.0.1" + resolved "https://registry.yarnpkg.com/@vivaxy/git/-/git-4.0.1.tgz#82a90dcce11eba5034184ac46e1b500624a5606b" + integrity sha512-KJrk9RqSEskKPpbB/vphqKZC1tTqUfK++bDLw1hoJiNbPdFP6ymXhZDo57axBR5b6Es6Gtent5EepCalxFIWHA== dependencies: "@types/fs-extra" "^8.0.0" execa "^2.0.3" @@ -2160,9 +2160,9 @@ graceful-fs@^4.1.3: integrity sha512-b9usnbDGnD928gJB3LrCmxoibr3VE4U2SMo5PBuBnokWyDADTqDPXg4YpwKF1trpH+UbGp7QLicO3+aWEy0+mw== graceful-fs@^4.2.0: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== handlebars@^4.1.0, handlebars@^4.1.2: version "4.5.3"