| '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') | 
| } |