123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- 'use strict'
- const normalize = require('normalize-path')
- const stripIndent = require('strip-indent')
- const pkg = require('../../package.json')
- function platformSpecific() {
- // On OS X and Linux, try to use nvm if it's installed
- if (process.platform === 'win32') {
- // Add
- // Node standard installation path /c/Program Files/nodejs
- // for GUI apps
- // https://github.com/typicode/yorkie/issues/49
- return stripIndent(
- `
- # Node standard installation
- export PATH="$PATH:/c/Program Files/nodejs"`
- )
- } else {
- // Using normalize to support ' in path
- // https://github.com/typicode/yorkie/issues/117
- const home = normalize(process.env.HOME)
- return stripIndent(
- `
- # Add common path where Node can be found
- # Brew standard installation path /usr/local/bin
- # Node standard installation path /usr/local
- export PATH="$PATH:/usr/local/bin:/usr/local"
- # Try to load nvm using path of standard installation
- load_nvm ${home}/.nvm
- run_nvm`
- )
- return arr.join('\n')
- }
- }
- module.exports = function getHookScript(hookName, relativePath, runnerPath) {
- // On Windows normalize path (i.e. convert \ to /)
- const normalizedPath = normalize(relativePath)
- const noVerifyMessage =
- hookName === 'prepare-commit-msg'
- ? '(cannot be bypassed with --no-verify due to Git specs)'
- : '(add --no-verify to bypass)'
- return [
- stripIndent(
- `
- #!/bin/sh
- #yorkie ${pkg.version}
- command_exists () {
- command -v "$1" >/dev/null 2>&1
- }
- has_hook_script () {
- [ -f package.json ] && cat package.json | grep -q "\\"$1\\"[[:space:]]*:"
- }
- # OS X and Linux only
- load_nvm () {
- # If nvm is not loaded, load it
- command_exists nvm || {
- export NVM_DIR="$1"
- [ -s "$1/nvm.sh" ] && . "$1/nvm.sh"
- }
- }
- # OS X and Linux only
- run_nvm () {
- # If nvm has been loaded correctly, use project .nvmrc
- command_exists nvm && [ -f .nvmrc ] && nvm use
- }
- cd "${normalizedPath}"
- # Check if ${hookName} is defined, skip if not
- has_hook_script ${hookName} || exit 0`
- ).trim(),
- platformSpecific(),
- stripIndent(
- `
- # Export Git hook params
- export GIT_PARAMS="$*"
- # Run hook
- node "${runnerPath}" ${hookName} || {
- echo
- echo "${hookName} hook failed ${noVerifyMessage}"
- exit 1
- }
- `
- )
- ].join('\n')
- }
|