100 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			100 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| var __importDefault = (this && this.__importDefault) || function (mod) {
 | |
|     return (mod && mod.__esModule) ? mod : { "default": mod };
 | |
| };
 | |
| Object.defineProperty(exports, "__esModule", { value: true });
 | |
| const fs_1 = __importDefault(require("fs"));
 | |
| const os_1 = __importDefault(require("os"));
 | |
| const path_1 = __importDefault(require("path"));
 | |
| const slash_1 = __importDefault(require("slash"));
 | |
| // Used to identify scripts created by Husky
 | |
| exports.huskyIdentifier = '# husky';
 | |
| // Experimental
 | |
| const huskyrc = '~/.huskyrc';
 | |
| // Render script
 | |
| const render = ({ createdAt, homepage, node, pkgDirectory, pkgHomepage, platform, runScriptPath, version }) => `#!/bin/sh
 | |
| ${exports.huskyIdentifier}
 | |
| 
 | |
| # Hook created by Husky
 | |
| #   Version: ${version}
 | |
| #   At: ${createdAt}
 | |
| #   See: ${homepage}
 | |
| 
 | |
| # From
 | |
| #   Directory: ${pkgDirectory}
 | |
| #   Homepage: ${pkgHomepage}
 | |
| 
 | |
| scriptPath="${runScriptPath}.js"
 | |
| hookName=\`basename "$0"\`
 | |
| gitParams="$*"
 | |
| 
 | |
| debug() {
 | |
|   if [ "$\{HUSKY_DEBUG}" = "true" ] || [ "$\{HUSKY_DEBUG}" = "1" ]; then
 | |
|     echo "husky:debug $1"
 | |
|   fi
 | |
| }
 | |
| 
 | |
| debug "$hookName hook started"
 | |
| 
 | |
| if [ "$\{HUSKY_SKIP_HOOKS}" = "true" ] || [ "$\{HUSKY_SKIP_HOOKS}" = "1" ]; then
 | |
|   debug "HUSKY_SKIP_HOOKS is set to $\{HUSKY_SKIP_HOOKS}, skipping hook"
 | |
|   exit 0
 | |
| fi
 | |
| 
 | |
| ${platform === 'win32'
 | |
|     ? ''
 | |
|     : `
 | |
| if ! command -v node >/dev/null 2>&1; then
 | |
|   echo "Info: can't find node in PATH, trying to find a node binary on your system"
 | |
| fi
 | |
| `}
 | |
| if [ -f "$scriptPath" ]; then
 | |
|   # if [ -t 1 ]; then
 | |
|   #   exec < /dev/tty
 | |
|   # fi
 | |
|   if [ -f ${huskyrc} ]; then
 | |
|     debug "source ${huskyrc}"
 | |
|     . ${huskyrc}
 | |
|   fi
 | |
|   ${node} "$scriptPath" $hookName "$gitParams"
 | |
| else
 | |
|   echo "Can't find Husky, skipping $hookName hook"
 | |
|   echo "You can reinstall it using 'npm install husky --save-dev' or delete this hook"
 | |
| fi
 | |
| `;
 | |
| /**
 | |
|  * @param {string} rootDir - e.g. /home/typicode/project/
 | |
|  * @param {string} huskyDir - e.g. /home/typicode/project/node_modules/husky/
 | |
|  * @param {string} requireRunNodePath - path to run-node resolved by require e.g. /home/typicode/project/node_modules/run-node/run-node
 | |
|  * @param {string} platform - platform husky installer is running on (used to produce win32 specific script)
 | |
|  * @returns {string} script
 | |
|  */
 | |
| function default_1(rootDir, huskyDir, requireRunNodePath, 
 | |
| // Additional param used for testing only
 | |
| platform = os_1.default.platform()) {
 | |
|     const runNodePath = slash_1.default(path_1.default.relative(rootDir, requireRunNodePath));
 | |
|     // On Windows do not rely on run-node
 | |
|     const node = platform === 'win32' ? 'node' : runNodePath;
 | |
|     // Env variable
 | |
|     const pkgHomepage = process && process.env && process.env.npm_package_homepage;
 | |
|     const pkgDirectory = process && process.env && process.env.PWD;
 | |
|     // Husky package.json
 | |
|     const { homepage, version } = JSON.parse(fs_1.default.readFileSync(path_1.default.join(__dirname, '../../package.json'), 'utf-8'));
 | |
|     // Path to run.js
 | |
|     const runScriptPath = slash_1.default(path_1.default.join(path_1.default.relative(rootDir, huskyDir), 'run'));
 | |
|     // Created at
 | |
|     const createdAt = new Date().toLocaleString();
 | |
|     // Render script
 | |
|     return render({
 | |
|         createdAt,
 | |
|         homepage,
 | |
|         node,
 | |
|         pkgDirectory,
 | |
|         pkgHomepage,
 | |
|         platform,
 | |
|         runScriptPath,
 | |
|         version
 | |
|     });
 | |
| }
 | |
| exports.default = default_1;
 |