mirror of
https://github.com/actions/setup-python.git
synced 2024-11-14 15:41:07 +07:00
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;
|