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;
							 |