mirror of
				https://github.com/actions/setup-go.git
				synced 2025-11-03 16:56:23 +00:00 
			
		
		
		
	Consume toolkit from npm (#9)
This commit is contained in:
		
							
								
								
									
										58
									
								
								node_modules/@actions/io/lib/io-util.d.ts
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										58
									
								
								node_modules/@actions/io/lib/io-util.d.ts
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,29 +1,29 @@
 | 
			
		||||
/// <reference types="node" />
 | 
			
		||||
import * as fs from 'fs';
 | 
			
		||||
export declare const copyFile: typeof fs.promises.copyFile, lstat: typeof fs.promises.lstat, mkdir: typeof fs.promises.mkdir, readdir: typeof fs.promises.readdir, rmdir: typeof fs.promises.rmdir, stat: typeof fs.promises.stat, unlink: typeof fs.promises.unlink;
 | 
			
		||||
export declare const IS_WINDOWS: boolean;
 | 
			
		||||
export declare function exists(fsPath: string): Promise<boolean>;
 | 
			
		||||
export declare function isDirectory(fsPath: string, useStat?: boolean): Promise<boolean>;
 | 
			
		||||
/**
 | 
			
		||||
 * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like:
 | 
			
		||||
 * \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases).
 | 
			
		||||
 */
 | 
			
		||||
export declare function isRooted(p: string): boolean;
 | 
			
		||||
/**
 | 
			
		||||
 * Recursively create a directory at `fsPath`.
 | 
			
		||||
 *
 | 
			
		||||
 * This implementation is optimistic, meaning it attempts to create the full
 | 
			
		||||
 * path first, and backs up the path stack from there.
 | 
			
		||||
 *
 | 
			
		||||
 * @param fsPath The path to create
 | 
			
		||||
 * @param maxDepth The maximum recursion depth
 | 
			
		||||
 * @param depth The current recursion depth
 | 
			
		||||
 */
 | 
			
		||||
export declare function mkdirP(fsPath: string, maxDepth?: number, depth?: number): Promise<void>;
 | 
			
		||||
/**
 | 
			
		||||
 * Best effort attempt to determine whether a file exists and is executable.
 | 
			
		||||
 * @param filePath    file path to check
 | 
			
		||||
 * @param extensions  additional file extensions to try
 | 
			
		||||
 * @return if file exists and is executable, returns the file path. otherwise empty string.
 | 
			
		||||
 */
 | 
			
		||||
export declare function tryGetExecutablePath(filePath: string, extensions: string[]): Promise<string>;
 | 
			
		||||
/// <reference types="node" />
 | 
			
		||||
import * as fs from 'fs';
 | 
			
		||||
export declare const chmod: typeof fs.promises.chmod, copyFile: typeof fs.promises.copyFile, lstat: typeof fs.promises.lstat, mkdir: typeof fs.promises.mkdir, readdir: typeof fs.promises.readdir, readlink: typeof fs.promises.readlink, rename: typeof fs.promises.rename, rmdir: typeof fs.promises.rmdir, stat: typeof fs.promises.stat, symlink: typeof fs.promises.symlink, unlink: typeof fs.promises.unlink;
 | 
			
		||||
export declare const IS_WINDOWS: boolean;
 | 
			
		||||
export declare function exists(fsPath: string): Promise<boolean>;
 | 
			
		||||
export declare function isDirectory(fsPath: string, useStat?: boolean): Promise<boolean>;
 | 
			
		||||
/**
 | 
			
		||||
 * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like:
 | 
			
		||||
 * \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases).
 | 
			
		||||
 */
 | 
			
		||||
export declare function isRooted(p: string): boolean;
 | 
			
		||||
/**
 | 
			
		||||
 * Recursively create a directory at `fsPath`.
 | 
			
		||||
 *
 | 
			
		||||
 * This implementation is optimistic, meaning it attempts to create the full
 | 
			
		||||
 * path first, and backs up the path stack from there.
 | 
			
		||||
 *
 | 
			
		||||
 * @param fsPath The path to create
 | 
			
		||||
 * @param maxDepth The maximum recursion depth
 | 
			
		||||
 * @param depth The current recursion depth
 | 
			
		||||
 */
 | 
			
		||||
export declare function mkdirP(fsPath: string, maxDepth?: number, depth?: number): Promise<void>;
 | 
			
		||||
/**
 | 
			
		||||
 * Best effort attempt to determine whether a file exists and is executable.
 | 
			
		||||
 * @param filePath    file path to check
 | 
			
		||||
 * @param extensions  additional file extensions to try
 | 
			
		||||
 * @return if file exists and is executable, returns the file path. otherwise empty string.
 | 
			
		||||
 */
 | 
			
		||||
export declare function tryGetExecutablePath(filePath: string, extensions: string[]): Promise<string>;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										386
									
								
								node_modules/@actions/io/lib/io-util.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										386
									
								
								node_modules/@actions/io/lib/io-util.js
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,194 +1,194 @@
 | 
			
		||||
"use strict";
 | 
			
		||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
 | 
			
		||||
    return new (P || (P = Promise))(function (resolve, reject) {
 | 
			
		||||
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
 | 
			
		||||
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
 | 
			
		||||
        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
 | 
			
		||||
        step((generator = generator.apply(thisArg, _arguments || [])).next());
 | 
			
		||||
    });
 | 
			
		||||
};
 | 
			
		||||
var _a;
 | 
			
		||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
			
		||||
const assert_1 = require("assert");
 | 
			
		||||
const fs = require("fs");
 | 
			
		||||
const path = require("path");
 | 
			
		||||
_a = fs.promises, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.unlink = _a.unlink;
 | 
			
		||||
exports.IS_WINDOWS = process.platform === 'win32';
 | 
			
		||||
function exists(fsPath) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        try {
 | 
			
		||||
            yield exports.stat(fsPath);
 | 
			
		||||
        }
 | 
			
		||||
        catch (err) {
 | 
			
		||||
            if (err.code === 'ENOENT') {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            throw err;
 | 
			
		||||
        }
 | 
			
		||||
        return true;
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.exists = exists;
 | 
			
		||||
function isDirectory(fsPath, useStat = false) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath);
 | 
			
		||||
        return stats.isDirectory();
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.isDirectory = isDirectory;
 | 
			
		||||
/**
 | 
			
		||||
 * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like:
 | 
			
		||||
 * \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases).
 | 
			
		||||
 */
 | 
			
		||||
function isRooted(p) {
 | 
			
		||||
    p = normalizeSeparators(p);
 | 
			
		||||
    if (!p) {
 | 
			
		||||
        throw new Error('isRooted() parameter "p" cannot be empty');
 | 
			
		||||
    }
 | 
			
		||||
    if (exports.IS_WINDOWS) {
 | 
			
		||||
        return (p.startsWith('\\') || /^[A-Z]:/i.test(p) // e.g. \ or \hello or \\hello
 | 
			
		||||
        ); // e.g. C: or C:\hello
 | 
			
		||||
    }
 | 
			
		||||
    return p.startsWith('/');
 | 
			
		||||
}
 | 
			
		||||
exports.isRooted = isRooted;
 | 
			
		||||
/**
 | 
			
		||||
 * Recursively create a directory at `fsPath`.
 | 
			
		||||
 *
 | 
			
		||||
 * This implementation is optimistic, meaning it attempts to create the full
 | 
			
		||||
 * path first, and backs up the path stack from there.
 | 
			
		||||
 *
 | 
			
		||||
 * @param fsPath The path to create
 | 
			
		||||
 * @param maxDepth The maximum recursion depth
 | 
			
		||||
 * @param depth The current recursion depth
 | 
			
		||||
 */
 | 
			
		||||
function mkdirP(fsPath, maxDepth = 1000, depth = 1) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        assert_1.ok(fsPath, 'a path argument must be provided');
 | 
			
		||||
        fsPath = path.resolve(fsPath);
 | 
			
		||||
        if (depth >= maxDepth)
 | 
			
		||||
            return exports.mkdir(fsPath);
 | 
			
		||||
        try {
 | 
			
		||||
            yield exports.mkdir(fsPath);
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        catch (err) {
 | 
			
		||||
            switch (err.code) {
 | 
			
		||||
                case 'ENOENT': {
 | 
			
		||||
                    yield mkdirP(path.dirname(fsPath), maxDepth, depth + 1);
 | 
			
		||||
                    yield exports.mkdir(fsPath);
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                default: {
 | 
			
		||||
                    let stats;
 | 
			
		||||
                    try {
 | 
			
		||||
                        stats = yield exports.stat(fsPath);
 | 
			
		||||
                    }
 | 
			
		||||
                    catch (err2) {
 | 
			
		||||
                        throw err;
 | 
			
		||||
                    }
 | 
			
		||||
                    if (!stats.isDirectory())
 | 
			
		||||
                        throw err;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.mkdirP = mkdirP;
 | 
			
		||||
/**
 | 
			
		||||
 * Best effort attempt to determine whether a file exists and is executable.
 | 
			
		||||
 * @param filePath    file path to check
 | 
			
		||||
 * @param extensions  additional file extensions to try
 | 
			
		||||
 * @return if file exists and is executable, returns the file path. otherwise empty string.
 | 
			
		||||
 */
 | 
			
		||||
function tryGetExecutablePath(filePath, extensions) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        let stats = undefined;
 | 
			
		||||
        try {
 | 
			
		||||
            // test file exists
 | 
			
		||||
            stats = yield exports.stat(filePath);
 | 
			
		||||
        }
 | 
			
		||||
        catch (err) {
 | 
			
		||||
            if (err.code !== 'ENOENT') {
 | 
			
		||||
                // eslint-disable-next-line no-console
 | 
			
		||||
                console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (stats && stats.isFile()) {
 | 
			
		||||
            if (exports.IS_WINDOWS) {
 | 
			
		||||
                // on Windows, test for valid extension
 | 
			
		||||
                const upperExt = path.extname(filePath).toUpperCase();
 | 
			
		||||
                if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) {
 | 
			
		||||
                    return filePath;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                if (isUnixExecutable(stats)) {
 | 
			
		||||
                    return filePath;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        // try each extension
 | 
			
		||||
        const originalFilePath = filePath;
 | 
			
		||||
        for (const extension of extensions) {
 | 
			
		||||
            filePath = originalFilePath + extension;
 | 
			
		||||
            stats = undefined;
 | 
			
		||||
            try {
 | 
			
		||||
                stats = yield exports.stat(filePath);
 | 
			
		||||
            }
 | 
			
		||||
            catch (err) {
 | 
			
		||||
                if (err.code !== 'ENOENT') {
 | 
			
		||||
                    // eslint-disable-next-line no-console
 | 
			
		||||
                    console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if (stats && stats.isFile()) {
 | 
			
		||||
                if (exports.IS_WINDOWS) {
 | 
			
		||||
                    // preserve the case of the actual file (since an extension was appended)
 | 
			
		||||
                    try {
 | 
			
		||||
                        const directory = path.dirname(filePath);
 | 
			
		||||
                        const upperName = path.basename(filePath).toUpperCase();
 | 
			
		||||
                        for (const actualName of yield exports.readdir(directory)) {
 | 
			
		||||
                            if (upperName === actualName.toUpperCase()) {
 | 
			
		||||
                                filePath = path.join(directory, actualName);
 | 
			
		||||
                                break;
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    catch (err) {
 | 
			
		||||
                        // eslint-disable-next-line no-console
 | 
			
		||||
                        console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`);
 | 
			
		||||
                    }
 | 
			
		||||
                    return filePath;
 | 
			
		||||
                }
 | 
			
		||||
                else {
 | 
			
		||||
                    if (isUnixExecutable(stats)) {
 | 
			
		||||
                        return filePath;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return '';
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.tryGetExecutablePath = tryGetExecutablePath;
 | 
			
		||||
function normalizeSeparators(p) {
 | 
			
		||||
    p = p || '';
 | 
			
		||||
    if (exports.IS_WINDOWS) {
 | 
			
		||||
        // convert slashes on Windows
 | 
			
		||||
        p = p.replace(/\//g, '\\');
 | 
			
		||||
        // remove redundant slashes
 | 
			
		||||
        return p.replace(/\\\\+/g, '\\');
 | 
			
		||||
    }
 | 
			
		||||
    // remove redundant slashes
 | 
			
		||||
    return p.replace(/\/\/+/g, '/');
 | 
			
		||||
}
 | 
			
		||||
// on Mac/Linux, test the execute bit
 | 
			
		||||
//     R   W  X  R  W X R W X
 | 
			
		||||
//   256 128 64 32 16 8 4 2 1
 | 
			
		||||
function isUnixExecutable(stats) {
 | 
			
		||||
    return ((stats.mode & 1) > 0 ||
 | 
			
		||||
        ((stats.mode & 8) > 0 && stats.gid === process.getgid()) ||
 | 
			
		||||
        ((stats.mode & 64) > 0 && stats.uid === process.getuid()));
 | 
			
		||||
}
 | 
			
		||||
"use strict";
 | 
			
		||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
 | 
			
		||||
    return new (P || (P = Promise))(function (resolve, reject) {
 | 
			
		||||
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
 | 
			
		||||
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
 | 
			
		||||
        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
 | 
			
		||||
        step((generator = generator.apply(thisArg, _arguments || [])).next());
 | 
			
		||||
    });
 | 
			
		||||
};
 | 
			
		||||
var _a;
 | 
			
		||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
			
		||||
const assert_1 = require("assert");
 | 
			
		||||
const fs = require("fs");
 | 
			
		||||
const path = require("path");
 | 
			
		||||
_a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink;
 | 
			
		||||
exports.IS_WINDOWS = process.platform === 'win32';
 | 
			
		||||
function exists(fsPath) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        try {
 | 
			
		||||
            yield exports.stat(fsPath);
 | 
			
		||||
        }
 | 
			
		||||
        catch (err) {
 | 
			
		||||
            if (err.code === 'ENOENT') {
 | 
			
		||||
                return false;
 | 
			
		||||
            }
 | 
			
		||||
            throw err;
 | 
			
		||||
        }
 | 
			
		||||
        return true;
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.exists = exists;
 | 
			
		||||
function isDirectory(fsPath, useStat = false) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath);
 | 
			
		||||
        return stats.isDirectory();
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.isDirectory = isDirectory;
 | 
			
		||||
/**
 | 
			
		||||
 * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like:
 | 
			
		||||
 * \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases).
 | 
			
		||||
 */
 | 
			
		||||
function isRooted(p) {
 | 
			
		||||
    p = normalizeSeparators(p);
 | 
			
		||||
    if (!p) {
 | 
			
		||||
        throw new Error('isRooted() parameter "p" cannot be empty');
 | 
			
		||||
    }
 | 
			
		||||
    if (exports.IS_WINDOWS) {
 | 
			
		||||
        return (p.startsWith('\\') || /^[A-Z]:/i.test(p) // e.g. \ or \hello or \\hello
 | 
			
		||||
        ); // e.g. C: or C:\hello
 | 
			
		||||
    }
 | 
			
		||||
    return p.startsWith('/');
 | 
			
		||||
}
 | 
			
		||||
exports.isRooted = isRooted;
 | 
			
		||||
/**
 | 
			
		||||
 * Recursively create a directory at `fsPath`.
 | 
			
		||||
 *
 | 
			
		||||
 * This implementation is optimistic, meaning it attempts to create the full
 | 
			
		||||
 * path first, and backs up the path stack from there.
 | 
			
		||||
 *
 | 
			
		||||
 * @param fsPath The path to create
 | 
			
		||||
 * @param maxDepth The maximum recursion depth
 | 
			
		||||
 * @param depth The current recursion depth
 | 
			
		||||
 */
 | 
			
		||||
function mkdirP(fsPath, maxDepth = 1000, depth = 1) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        assert_1.ok(fsPath, 'a path argument must be provided');
 | 
			
		||||
        fsPath = path.resolve(fsPath);
 | 
			
		||||
        if (depth >= maxDepth)
 | 
			
		||||
            return exports.mkdir(fsPath);
 | 
			
		||||
        try {
 | 
			
		||||
            yield exports.mkdir(fsPath);
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        catch (err) {
 | 
			
		||||
            switch (err.code) {
 | 
			
		||||
                case 'ENOENT': {
 | 
			
		||||
                    yield mkdirP(path.dirname(fsPath), maxDepth, depth + 1);
 | 
			
		||||
                    yield exports.mkdir(fsPath);
 | 
			
		||||
                    return;
 | 
			
		||||
                }
 | 
			
		||||
                default: {
 | 
			
		||||
                    let stats;
 | 
			
		||||
                    try {
 | 
			
		||||
                        stats = yield exports.stat(fsPath);
 | 
			
		||||
                    }
 | 
			
		||||
                    catch (err2) {
 | 
			
		||||
                        throw err;
 | 
			
		||||
                    }
 | 
			
		||||
                    if (!stats.isDirectory())
 | 
			
		||||
                        throw err;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.mkdirP = mkdirP;
 | 
			
		||||
/**
 | 
			
		||||
 * Best effort attempt to determine whether a file exists and is executable.
 | 
			
		||||
 * @param filePath    file path to check
 | 
			
		||||
 * @param extensions  additional file extensions to try
 | 
			
		||||
 * @return if file exists and is executable, returns the file path. otherwise empty string.
 | 
			
		||||
 */
 | 
			
		||||
function tryGetExecutablePath(filePath, extensions) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        let stats = undefined;
 | 
			
		||||
        try {
 | 
			
		||||
            // test file exists
 | 
			
		||||
            stats = yield exports.stat(filePath);
 | 
			
		||||
        }
 | 
			
		||||
        catch (err) {
 | 
			
		||||
            if (err.code !== 'ENOENT') {
 | 
			
		||||
                // eslint-disable-next-line no-console
 | 
			
		||||
                console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (stats && stats.isFile()) {
 | 
			
		||||
            if (exports.IS_WINDOWS) {
 | 
			
		||||
                // on Windows, test for valid extension
 | 
			
		||||
                const upperExt = path.extname(filePath).toUpperCase();
 | 
			
		||||
                if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) {
 | 
			
		||||
                    return filePath;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                if (isUnixExecutable(stats)) {
 | 
			
		||||
                    return filePath;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        // try each extension
 | 
			
		||||
        const originalFilePath = filePath;
 | 
			
		||||
        for (const extension of extensions) {
 | 
			
		||||
            filePath = originalFilePath + extension;
 | 
			
		||||
            stats = undefined;
 | 
			
		||||
            try {
 | 
			
		||||
                stats = yield exports.stat(filePath);
 | 
			
		||||
            }
 | 
			
		||||
            catch (err) {
 | 
			
		||||
                if (err.code !== 'ENOENT') {
 | 
			
		||||
                    // eslint-disable-next-line no-console
 | 
			
		||||
                    console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            if (stats && stats.isFile()) {
 | 
			
		||||
                if (exports.IS_WINDOWS) {
 | 
			
		||||
                    // preserve the case of the actual file (since an extension was appended)
 | 
			
		||||
                    try {
 | 
			
		||||
                        const directory = path.dirname(filePath);
 | 
			
		||||
                        const upperName = path.basename(filePath).toUpperCase();
 | 
			
		||||
                        for (const actualName of yield exports.readdir(directory)) {
 | 
			
		||||
                            if (upperName === actualName.toUpperCase()) {
 | 
			
		||||
                                filePath = path.join(directory, actualName);
 | 
			
		||||
                                break;
 | 
			
		||||
                            }
 | 
			
		||||
                        }
 | 
			
		||||
                    }
 | 
			
		||||
                    catch (err) {
 | 
			
		||||
                        // eslint-disable-next-line no-console
 | 
			
		||||
                        console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`);
 | 
			
		||||
                    }
 | 
			
		||||
                    return filePath;
 | 
			
		||||
                }
 | 
			
		||||
                else {
 | 
			
		||||
                    if (isUnixExecutable(stats)) {
 | 
			
		||||
                        return filePath;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        return '';
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.tryGetExecutablePath = tryGetExecutablePath;
 | 
			
		||||
function normalizeSeparators(p) {
 | 
			
		||||
    p = p || '';
 | 
			
		||||
    if (exports.IS_WINDOWS) {
 | 
			
		||||
        // convert slashes on Windows
 | 
			
		||||
        p = p.replace(/\//g, '\\');
 | 
			
		||||
        // remove redundant slashes
 | 
			
		||||
        return p.replace(/\\\\+/g, '\\');
 | 
			
		||||
    }
 | 
			
		||||
    // remove redundant slashes
 | 
			
		||||
    return p.replace(/\/\/+/g, '/');
 | 
			
		||||
}
 | 
			
		||||
// on Mac/Linux, test the execute bit
 | 
			
		||||
//     R   W  X  R  W X R W X
 | 
			
		||||
//   256 128 64 32 16 8 4 2 1
 | 
			
		||||
function isUnixExecutable(stats) {
 | 
			
		||||
    return ((stats.mode & 1) > 0 ||
 | 
			
		||||
        ((stats.mode & 8) > 0 && stats.gid === process.getgid()) ||
 | 
			
		||||
        ((stats.mode & 64) > 0 && stats.uid === process.getuid()));
 | 
			
		||||
}
 | 
			
		||||
//# sourceMappingURL=io-util.js.map
 | 
			
		||||
							
								
								
									
										2
									
								
								node_modules/@actions/io/lib/io-util.js.map
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								node_modules/@actions/io/lib/io-util.js.map
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1 +1 @@
 | 
			
		||||
{"version":3,"file":"io-util.js","sourceRoot":"","sources":["../src/io-util.ts"],"names":[],"mappings":"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"}
 | 
			
		||||
{"version":3,"file":"io-util.js","sourceRoot":"","sources":["../src/io-util.ts"],"names":[],"mappings":"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"}
 | 
			
		||||
							
								
								
									
										104
									
								
								node_modules/@actions/io/lib/io.d.ts
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										104
									
								
								node_modules/@actions/io/lib/io.d.ts
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,48 +1,56 @@
 | 
			
		||||
/**
 | 
			
		||||
 * Interface for cp/mv options
 | 
			
		||||
 */
 | 
			
		||||
export interface CopyOptions {
 | 
			
		||||
    /** Optional. Whether to recursively copy all subdirectories. Defaults to false */
 | 
			
		||||
    recursive?: boolean;
 | 
			
		||||
    /** Optional. Whether to overwrite existing files in the destination. Defaults to true */
 | 
			
		||||
    force?: boolean;
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Copies a file or folder.
 | 
			
		||||
 *
 | 
			
		||||
 * @param     source    source path
 | 
			
		||||
 * @param     dest      destination path
 | 
			
		||||
 * @param     options   optional. See CopyOptions.
 | 
			
		||||
 */
 | 
			
		||||
export declare function cp(source: string, dest: string, options?: CopyOptions): Promise<void>;
 | 
			
		||||
/**
 | 
			
		||||
 * Moves a path.
 | 
			
		||||
 *
 | 
			
		||||
 * @param     source    source path
 | 
			
		||||
 * @param     dest      destination path
 | 
			
		||||
 * @param     options   optional. See CopyOptions.
 | 
			
		||||
 */
 | 
			
		||||
export declare function mv(source: string, dest: string, options?: CopyOptions): Promise<void>;
 | 
			
		||||
/**
 | 
			
		||||
 * Remove a path recursively with force
 | 
			
		||||
 *
 | 
			
		||||
 * @param inputPath path to remove
 | 
			
		||||
 */
 | 
			
		||||
export declare function rmRF(inputPath: string): Promise<void>;
 | 
			
		||||
/**
 | 
			
		||||
 * Make a directory.  Creates the full path with folders in between
 | 
			
		||||
 * Will throw if it fails
 | 
			
		||||
 *
 | 
			
		||||
 * @param   fsPath        path to create
 | 
			
		||||
 * @returns Promise<void>
 | 
			
		||||
 */
 | 
			
		||||
export declare function mkdirP(fsPath: string): Promise<void>;
 | 
			
		||||
/**
 | 
			
		||||
 * Returns path of a tool had the tool actually been invoked.  Resolves via paths.
 | 
			
		||||
 * If you check and the tool does not exist, it will throw.
 | 
			
		||||
 *
 | 
			
		||||
 * @param     tool              name of the tool
 | 
			
		||||
 * @param     check             whether to check if tool exists
 | 
			
		||||
 * @returns   Promise<string>   path to tool
 | 
			
		||||
 */
 | 
			
		||||
export declare function which(tool: string, check?: boolean): Promise<string>;
 | 
			
		||||
/**
 | 
			
		||||
 * Interface for cp/mv options
 | 
			
		||||
 */
 | 
			
		||||
export interface CopyOptions {
 | 
			
		||||
    /** Optional. Whether to recursively copy all subdirectories. Defaults to false */
 | 
			
		||||
    recursive?: boolean;
 | 
			
		||||
    /** Optional. Whether to overwrite existing files in the destination. Defaults to true */
 | 
			
		||||
    force?: boolean;
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Interface for cp/mv options
 | 
			
		||||
 */
 | 
			
		||||
export interface MoveOptions {
 | 
			
		||||
    /** Optional. Whether to overwrite existing files in the destination. Defaults to true */
 | 
			
		||||
    force?: boolean;
 | 
			
		||||
}
 | 
			
		||||
/**
 | 
			
		||||
 * Copies a file or folder.
 | 
			
		||||
 * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js
 | 
			
		||||
 *
 | 
			
		||||
 * @param     source    source path
 | 
			
		||||
 * @param     dest      destination path
 | 
			
		||||
 * @param     options   optional. See CopyOptions.
 | 
			
		||||
 */
 | 
			
		||||
export declare function cp(source: string, dest: string, options?: CopyOptions): Promise<void>;
 | 
			
		||||
/**
 | 
			
		||||
 * Moves a path.
 | 
			
		||||
 *
 | 
			
		||||
 * @param     source    source path
 | 
			
		||||
 * @param     dest      destination path
 | 
			
		||||
 * @param     options   optional. See MoveOptions.
 | 
			
		||||
 */
 | 
			
		||||
export declare function mv(source: string, dest: string, options?: MoveOptions): Promise<void>;
 | 
			
		||||
/**
 | 
			
		||||
 * Remove a path recursively with force
 | 
			
		||||
 *
 | 
			
		||||
 * @param inputPath path to remove
 | 
			
		||||
 */
 | 
			
		||||
export declare function rmRF(inputPath: string): Promise<void>;
 | 
			
		||||
/**
 | 
			
		||||
 * Make a directory.  Creates the full path with folders in between
 | 
			
		||||
 * Will throw if it fails
 | 
			
		||||
 *
 | 
			
		||||
 * @param   fsPath        path to create
 | 
			
		||||
 * @returns Promise<void>
 | 
			
		||||
 */
 | 
			
		||||
export declare function mkdirP(fsPath: string): Promise<void>;
 | 
			
		||||
/**
 | 
			
		||||
 * Returns path of a tool had the tool actually been invoked.  Resolves via paths.
 | 
			
		||||
 * If you check and the tool does not exist, it will throw.
 | 
			
		||||
 *
 | 
			
		||||
 * @param     tool              name of the tool
 | 
			
		||||
 * @param     check             whether to check if tool exists
 | 
			
		||||
 * @returns   Promise<string>   path to tool
 | 
			
		||||
 */
 | 
			
		||||
export declare function which(tool: string, check?: boolean): Promise<string>;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										549
									
								
								node_modules/@actions/io/lib/io.js
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										549
									
								
								node_modules/@actions/io/lib/io.js
									
									
									
										generated
									
									
										vendored
									
									
								
							@@ -1,262 +1,289 @@
 | 
			
		||||
"use strict";
 | 
			
		||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
 | 
			
		||||
    return new (P || (P = Promise))(function (resolve, reject) {
 | 
			
		||||
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
 | 
			
		||||
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
 | 
			
		||||
        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
 | 
			
		||||
        step((generator = generator.apply(thisArg, _arguments || [])).next());
 | 
			
		||||
    });
 | 
			
		||||
};
 | 
			
		||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
			
		||||
const childProcess = require("child_process");
 | 
			
		||||
const fs = require("fs");
 | 
			
		||||
const path = require("path");
 | 
			
		||||
const util_1 = require("util");
 | 
			
		||||
const ioUtil = require("./io-util");
 | 
			
		||||
const exec = util_1.promisify(childProcess.exec);
 | 
			
		||||
/**
 | 
			
		||||
 * Copies a file or folder.
 | 
			
		||||
 *
 | 
			
		||||
 * @param     source    source path
 | 
			
		||||
 * @param     dest      destination path
 | 
			
		||||
 * @param     options   optional. See CopyOptions.
 | 
			
		||||
 */
 | 
			
		||||
function cp(source, dest, options = {}) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        yield move(source, dest, options, { deleteOriginal: false });
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.cp = cp;
 | 
			
		||||
/**
 | 
			
		||||
 * Moves a path.
 | 
			
		||||
 *
 | 
			
		||||
 * @param     source    source path
 | 
			
		||||
 * @param     dest      destination path
 | 
			
		||||
 * @param     options   optional. See CopyOptions.
 | 
			
		||||
 */
 | 
			
		||||
function mv(source, dest, options = {}) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        yield move(source, dest, options, { deleteOriginal: true });
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.mv = mv;
 | 
			
		||||
/**
 | 
			
		||||
 * Remove a path recursively with force
 | 
			
		||||
 *
 | 
			
		||||
 * @param inputPath path to remove
 | 
			
		||||
 */
 | 
			
		||||
function rmRF(inputPath) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        if (ioUtil.IS_WINDOWS) {
 | 
			
		||||
            // Node doesn't provide a delete operation, only an unlink function. This means that if the file is being used by another
 | 
			
		||||
            // program (e.g. antivirus), it won't be deleted. To address this, we shell out the work to rd/del.
 | 
			
		||||
            try {
 | 
			
		||||
                if (yield ioUtil.isDirectory(inputPath, true)) {
 | 
			
		||||
                    yield exec(`rd /s /q "${inputPath}"`);
 | 
			
		||||
                }
 | 
			
		||||
                else {
 | 
			
		||||
                    yield exec(`del /f /a "${inputPath}"`);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            catch (err) {
 | 
			
		||||
                // if you try to delete a file that doesn't exist, desired result is achieved
 | 
			
		||||
                // other errors are valid
 | 
			
		||||
                if (err.code !== 'ENOENT')
 | 
			
		||||
                    throw err;
 | 
			
		||||
            }
 | 
			
		||||
            // Shelling out fails to remove a symlink folder with missing source, this unlink catches that
 | 
			
		||||
            try {
 | 
			
		||||
                yield ioUtil.unlink(inputPath);
 | 
			
		||||
            }
 | 
			
		||||
            catch (err) {
 | 
			
		||||
                // if you try to delete a file that doesn't exist, desired result is achieved
 | 
			
		||||
                // other errors are valid
 | 
			
		||||
                if (err.code !== 'ENOENT')
 | 
			
		||||
                    throw err;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            let isDir = false;
 | 
			
		||||
            try {
 | 
			
		||||
                isDir = yield ioUtil.isDirectory(inputPath);
 | 
			
		||||
            }
 | 
			
		||||
            catch (err) {
 | 
			
		||||
                // if you try to delete a file that doesn't exist, desired result is achieved
 | 
			
		||||
                // other errors are valid
 | 
			
		||||
                if (err.code !== 'ENOENT')
 | 
			
		||||
                    throw err;
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            if (isDir) {
 | 
			
		||||
                yield exec(`rm -rf "${inputPath}"`);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                yield ioUtil.unlink(inputPath);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.rmRF = rmRF;
 | 
			
		||||
/**
 | 
			
		||||
 * Make a directory.  Creates the full path with folders in between
 | 
			
		||||
 * Will throw if it fails
 | 
			
		||||
 *
 | 
			
		||||
 * @param   fsPath        path to create
 | 
			
		||||
 * @returns Promise<void>
 | 
			
		||||
 */
 | 
			
		||||
function mkdirP(fsPath) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        yield ioUtil.mkdirP(fsPath);
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.mkdirP = mkdirP;
 | 
			
		||||
/**
 | 
			
		||||
 * Returns path of a tool had the tool actually been invoked.  Resolves via paths.
 | 
			
		||||
 * If you check and the tool does not exist, it will throw.
 | 
			
		||||
 *
 | 
			
		||||
 * @param     tool              name of the tool
 | 
			
		||||
 * @param     check             whether to check if tool exists
 | 
			
		||||
 * @returns   Promise<string>   path to tool
 | 
			
		||||
 */
 | 
			
		||||
function which(tool, check) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        if (!tool) {
 | 
			
		||||
            throw new Error("parameter 'tool' is required");
 | 
			
		||||
        }
 | 
			
		||||
        // recursive when check=true
 | 
			
		||||
        if (check) {
 | 
			
		||||
            const result = yield which(tool, false);
 | 
			
		||||
            if (!result) {
 | 
			
		||||
                if (ioUtil.IS_WINDOWS) {
 | 
			
		||||
                    throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`);
 | 
			
		||||
                }
 | 
			
		||||
                else {
 | 
			
		||||
                    throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        try {
 | 
			
		||||
            // build the list of extensions to try
 | 
			
		||||
            const extensions = [];
 | 
			
		||||
            if (ioUtil.IS_WINDOWS && process.env.PATHEXT) {
 | 
			
		||||
                for (const extension of process.env.PATHEXT.split(path.delimiter)) {
 | 
			
		||||
                    if (extension) {
 | 
			
		||||
                        extensions.push(extension);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            // if it's rooted, return it if exists. otherwise return empty.
 | 
			
		||||
            if (ioUtil.isRooted(tool)) {
 | 
			
		||||
                const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions);
 | 
			
		||||
                if (filePath) {
 | 
			
		||||
                    return filePath;
 | 
			
		||||
                }
 | 
			
		||||
                return '';
 | 
			
		||||
            }
 | 
			
		||||
            // if any path separators, return empty
 | 
			
		||||
            if (tool.includes('/') || (ioUtil.IS_WINDOWS && tool.includes('\\'))) {
 | 
			
		||||
                return '';
 | 
			
		||||
            }
 | 
			
		||||
            // build the list of directories
 | 
			
		||||
            //
 | 
			
		||||
            // Note, technically "where" checks the current directory on Windows. From a task lib perspective,
 | 
			
		||||
            // it feels like we should not do this. Checking the current directory seems like more of a use
 | 
			
		||||
            // case of a shell, and the which() function exposed by the task lib should strive for consistency
 | 
			
		||||
            // across platforms.
 | 
			
		||||
            const directories = [];
 | 
			
		||||
            if (process.env.PATH) {
 | 
			
		||||
                for (const p of process.env.PATH.split(path.delimiter)) {
 | 
			
		||||
                    if (p) {
 | 
			
		||||
                        directories.push(p);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            // return the first match
 | 
			
		||||
            for (const directory of directories) {
 | 
			
		||||
                const filePath = yield ioUtil.tryGetExecutablePath(directory + path.sep + tool, extensions);
 | 
			
		||||
                if (filePath) {
 | 
			
		||||
                    return filePath;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            return '';
 | 
			
		||||
        }
 | 
			
		||||
        catch (err) {
 | 
			
		||||
            throw new Error(`which failed with message ${err.message}`);
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.which = which;
 | 
			
		||||
// Copies contents of source into dest, making any necessary folders along the way.
 | 
			
		||||
// Deletes the original copy if deleteOriginal is true
 | 
			
		||||
function copyDirectoryContents(source, dest, force, deleteOriginal = false) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        if (yield ioUtil.isDirectory(source)) {
 | 
			
		||||
            if (yield ioUtil.exists(dest)) {
 | 
			
		||||
                if (!(yield ioUtil.isDirectory(dest))) {
 | 
			
		||||
                    throw new Error(`${dest} is not a directory`);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                yield mkdirP(dest);
 | 
			
		||||
            }
 | 
			
		||||
            // Copy all child files, and directories recursively
 | 
			
		||||
            const sourceChildren = yield ioUtil.readdir(source);
 | 
			
		||||
            for (const newSource of sourceChildren) {
 | 
			
		||||
                const newDest = path.join(dest, path.basename(newSource));
 | 
			
		||||
                yield copyDirectoryContents(path.resolve(source, newSource), newDest, force, deleteOriginal);
 | 
			
		||||
            }
 | 
			
		||||
            if (deleteOriginal) {
 | 
			
		||||
                yield ioUtil.rmdir(source);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            if (force) {
 | 
			
		||||
                yield ioUtil.copyFile(source, dest);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                yield ioUtil.copyFile(source, dest, fs.constants.COPYFILE_EXCL);
 | 
			
		||||
            }
 | 
			
		||||
            if (deleteOriginal) {
 | 
			
		||||
                yield ioUtil.unlink(source);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
function move(source, dest, options = {}, moveOptions) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        const { force, recursive } = readCopyOptions(options);
 | 
			
		||||
        if (yield ioUtil.isDirectory(source)) {
 | 
			
		||||
            if (!recursive) {
 | 
			
		||||
                throw new Error(`non-recursive cp failed, ${source} is a directory`);
 | 
			
		||||
            }
 | 
			
		||||
            // If directory exists, move source inside it. Otherwise, create it and move contents of source inside.
 | 
			
		||||
            if (yield ioUtil.exists(dest)) {
 | 
			
		||||
                if (!(yield ioUtil.isDirectory(dest))) {
 | 
			
		||||
                    throw new Error(`${dest} is not a directory`);
 | 
			
		||||
                }
 | 
			
		||||
                dest = path.join(dest, path.basename(source));
 | 
			
		||||
            }
 | 
			
		||||
            yield copyDirectoryContents(source, dest, force, moveOptions.deleteOriginal);
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            if ((yield ioUtil.exists(dest)) && (yield ioUtil.isDirectory(dest))) {
 | 
			
		||||
                dest = path.join(dest, path.basename(source));
 | 
			
		||||
            }
 | 
			
		||||
            if (force) {
 | 
			
		||||
                yield ioUtil.copyFile(source, dest);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                yield ioUtil.copyFile(source, dest, fs.constants.COPYFILE_EXCL);
 | 
			
		||||
            }
 | 
			
		||||
            if (moveOptions.deleteOriginal) {
 | 
			
		||||
                yield ioUtil.unlink(source);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
function readCopyOptions(options) {
 | 
			
		||||
    const force = options.force == null ? true : options.force;
 | 
			
		||||
    const recursive = Boolean(options.recursive);
 | 
			
		||||
    return { force, recursive };
 | 
			
		||||
}
 | 
			
		||||
"use strict";
 | 
			
		||||
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
 | 
			
		||||
    return new (P || (P = Promise))(function (resolve, reject) {
 | 
			
		||||
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
 | 
			
		||||
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
 | 
			
		||||
        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
 | 
			
		||||
        step((generator = generator.apply(thisArg, _arguments || [])).next());
 | 
			
		||||
    });
 | 
			
		||||
};
 | 
			
		||||
Object.defineProperty(exports, "__esModule", { value: true });
 | 
			
		||||
const childProcess = require("child_process");
 | 
			
		||||
const path = require("path");
 | 
			
		||||
const util_1 = require("util");
 | 
			
		||||
const ioUtil = require("./io-util");
 | 
			
		||||
const exec = util_1.promisify(childProcess.exec);
 | 
			
		||||
/**
 | 
			
		||||
 * Copies a file or folder.
 | 
			
		||||
 * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js
 | 
			
		||||
 *
 | 
			
		||||
 * @param     source    source path
 | 
			
		||||
 * @param     dest      destination path
 | 
			
		||||
 * @param     options   optional. See CopyOptions.
 | 
			
		||||
 */
 | 
			
		||||
function cp(source, dest, options = {}) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        const { force, recursive } = readCopyOptions(options);
 | 
			
		||||
        const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null;
 | 
			
		||||
        // Dest is an existing file, but not forcing
 | 
			
		||||
        if (destStat && destStat.isFile() && !force) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        // If dest is an existing directory, should copy inside.
 | 
			
		||||
        const newDest = destStat && destStat.isDirectory()
 | 
			
		||||
            ? path.join(dest, path.basename(source))
 | 
			
		||||
            : dest;
 | 
			
		||||
        if (!(yield ioUtil.exists(source))) {
 | 
			
		||||
            throw new Error(`no such file or directory: ${source}`);
 | 
			
		||||
        }
 | 
			
		||||
        const sourceStat = yield ioUtil.stat(source);
 | 
			
		||||
        if (sourceStat.isDirectory()) {
 | 
			
		||||
            if (!recursive) {
 | 
			
		||||
                throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                yield cpDirRecursive(source, newDest, 0, force);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            if (path.relative(source, newDest) === '') {
 | 
			
		||||
                // a file cannot be copied to itself
 | 
			
		||||
                throw new Error(`'${newDest}' and '${source}' are the same file`);
 | 
			
		||||
            }
 | 
			
		||||
            yield copyFile(source, newDest, force);
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.cp = cp;
 | 
			
		||||
/**
 | 
			
		||||
 * Moves a path.
 | 
			
		||||
 *
 | 
			
		||||
 * @param     source    source path
 | 
			
		||||
 * @param     dest      destination path
 | 
			
		||||
 * @param     options   optional. See MoveOptions.
 | 
			
		||||
 */
 | 
			
		||||
function mv(source, dest, options = {}) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        if (yield ioUtil.exists(dest)) {
 | 
			
		||||
            let destExists = true;
 | 
			
		||||
            if (yield ioUtil.isDirectory(dest)) {
 | 
			
		||||
                // If dest is directory copy src into dest
 | 
			
		||||
                dest = path.join(dest, path.basename(source));
 | 
			
		||||
                destExists = yield ioUtil.exists(dest);
 | 
			
		||||
            }
 | 
			
		||||
            if (destExists) {
 | 
			
		||||
                if (options.force == null || options.force) {
 | 
			
		||||
                    yield rmRF(dest);
 | 
			
		||||
                }
 | 
			
		||||
                else {
 | 
			
		||||
                    throw new Error('Destination already exists');
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        yield mkdirP(path.dirname(dest));
 | 
			
		||||
        yield ioUtil.rename(source, dest);
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.mv = mv;
 | 
			
		||||
/**
 | 
			
		||||
 * Remove a path recursively with force
 | 
			
		||||
 *
 | 
			
		||||
 * @param inputPath path to remove
 | 
			
		||||
 */
 | 
			
		||||
function rmRF(inputPath) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        if (ioUtil.IS_WINDOWS) {
 | 
			
		||||
            // Node doesn't provide a delete operation, only an unlink function. This means that if the file is being used by another
 | 
			
		||||
            // program (e.g. antivirus), it won't be deleted. To address this, we shell out the work to rd/del.
 | 
			
		||||
            try {
 | 
			
		||||
                if (yield ioUtil.isDirectory(inputPath, true)) {
 | 
			
		||||
                    yield exec(`rd /s /q "${inputPath}"`);
 | 
			
		||||
                }
 | 
			
		||||
                else {
 | 
			
		||||
                    yield exec(`del /f /a "${inputPath}"`);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            catch (err) {
 | 
			
		||||
                // if you try to delete a file that doesn't exist, desired result is achieved
 | 
			
		||||
                // other errors are valid
 | 
			
		||||
                if (err.code !== 'ENOENT')
 | 
			
		||||
                    throw err;
 | 
			
		||||
            }
 | 
			
		||||
            // Shelling out fails to remove a symlink folder with missing source, this unlink catches that
 | 
			
		||||
            try {
 | 
			
		||||
                yield ioUtil.unlink(inputPath);
 | 
			
		||||
            }
 | 
			
		||||
            catch (err) {
 | 
			
		||||
                // if you try to delete a file that doesn't exist, desired result is achieved
 | 
			
		||||
                // other errors are valid
 | 
			
		||||
                if (err.code !== 'ENOENT')
 | 
			
		||||
                    throw err;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        else {
 | 
			
		||||
            let isDir = false;
 | 
			
		||||
            try {
 | 
			
		||||
                isDir = yield ioUtil.isDirectory(inputPath);
 | 
			
		||||
            }
 | 
			
		||||
            catch (err) {
 | 
			
		||||
                // if you try to delete a file that doesn't exist, desired result is achieved
 | 
			
		||||
                // other errors are valid
 | 
			
		||||
                if (err.code !== 'ENOENT')
 | 
			
		||||
                    throw err;
 | 
			
		||||
                return;
 | 
			
		||||
            }
 | 
			
		||||
            if (isDir) {
 | 
			
		||||
                yield exec(`rm -rf "${inputPath}"`);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                yield ioUtil.unlink(inputPath);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.rmRF = rmRF;
 | 
			
		||||
/**
 | 
			
		||||
 * Make a directory.  Creates the full path with folders in between
 | 
			
		||||
 * Will throw if it fails
 | 
			
		||||
 *
 | 
			
		||||
 * @param   fsPath        path to create
 | 
			
		||||
 * @returns Promise<void>
 | 
			
		||||
 */
 | 
			
		||||
function mkdirP(fsPath) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        yield ioUtil.mkdirP(fsPath);
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.mkdirP = mkdirP;
 | 
			
		||||
/**
 | 
			
		||||
 * Returns path of a tool had the tool actually been invoked.  Resolves via paths.
 | 
			
		||||
 * If you check and the tool does not exist, it will throw.
 | 
			
		||||
 *
 | 
			
		||||
 * @param     tool              name of the tool
 | 
			
		||||
 * @param     check             whether to check if tool exists
 | 
			
		||||
 * @returns   Promise<string>   path to tool
 | 
			
		||||
 */
 | 
			
		||||
function which(tool, check) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        if (!tool) {
 | 
			
		||||
            throw new Error("parameter 'tool' is required");
 | 
			
		||||
        }
 | 
			
		||||
        // recursive when check=true
 | 
			
		||||
        if (check) {
 | 
			
		||||
            const result = yield which(tool, false);
 | 
			
		||||
            if (!result) {
 | 
			
		||||
                if (ioUtil.IS_WINDOWS) {
 | 
			
		||||
                    throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`);
 | 
			
		||||
                }
 | 
			
		||||
                else {
 | 
			
		||||
                    throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`);
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        try {
 | 
			
		||||
            // build the list of extensions to try
 | 
			
		||||
            const extensions = [];
 | 
			
		||||
            if (ioUtil.IS_WINDOWS && process.env.PATHEXT) {
 | 
			
		||||
                for (const extension of process.env.PATHEXT.split(path.delimiter)) {
 | 
			
		||||
                    if (extension) {
 | 
			
		||||
                        extensions.push(extension);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            // if it's rooted, return it if exists. otherwise return empty.
 | 
			
		||||
            if (ioUtil.isRooted(tool)) {
 | 
			
		||||
                const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions);
 | 
			
		||||
                if (filePath) {
 | 
			
		||||
                    return filePath;
 | 
			
		||||
                }
 | 
			
		||||
                return '';
 | 
			
		||||
            }
 | 
			
		||||
            // if any path separators, return empty
 | 
			
		||||
            if (tool.includes('/') || (ioUtil.IS_WINDOWS && tool.includes('\\'))) {
 | 
			
		||||
                return '';
 | 
			
		||||
            }
 | 
			
		||||
            // build the list of directories
 | 
			
		||||
            //
 | 
			
		||||
            // Note, technically "where" checks the current directory on Windows. From a task lib perspective,
 | 
			
		||||
            // it feels like we should not do this. Checking the current directory seems like more of a use
 | 
			
		||||
            // case of a shell, and the which() function exposed by the task lib should strive for consistency
 | 
			
		||||
            // across platforms.
 | 
			
		||||
            const directories = [];
 | 
			
		||||
            if (process.env.PATH) {
 | 
			
		||||
                for (const p of process.env.PATH.split(path.delimiter)) {
 | 
			
		||||
                    if (p) {
 | 
			
		||||
                        directories.push(p);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            // return the first match
 | 
			
		||||
            for (const directory of directories) {
 | 
			
		||||
                const filePath = yield ioUtil.tryGetExecutablePath(directory + path.sep + tool, extensions);
 | 
			
		||||
                if (filePath) {
 | 
			
		||||
                    return filePath;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            return '';
 | 
			
		||||
        }
 | 
			
		||||
        catch (err) {
 | 
			
		||||
            throw new Error(`which failed with message ${err.message}`);
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
exports.which = which;
 | 
			
		||||
function readCopyOptions(options) {
 | 
			
		||||
    const force = options.force == null ? true : options.force;
 | 
			
		||||
    const recursive = Boolean(options.recursive);
 | 
			
		||||
    return { force, recursive };
 | 
			
		||||
}
 | 
			
		||||
function cpDirRecursive(sourceDir, destDir, currentDepth, force) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        // Ensure there is not a run away recursive copy
 | 
			
		||||
        if (currentDepth >= 255)
 | 
			
		||||
            return;
 | 
			
		||||
        currentDepth++;
 | 
			
		||||
        yield mkdirP(destDir);
 | 
			
		||||
        const files = yield ioUtil.readdir(sourceDir);
 | 
			
		||||
        for (const fileName of files) {
 | 
			
		||||
            const srcFile = `${sourceDir}/${fileName}`;
 | 
			
		||||
            const destFile = `${destDir}/${fileName}`;
 | 
			
		||||
            const srcFileStat = yield ioUtil.lstat(srcFile);
 | 
			
		||||
            if (srcFileStat.isDirectory()) {
 | 
			
		||||
                // Recurse
 | 
			
		||||
                yield cpDirRecursive(srcFile, destFile, currentDepth, force);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                yield copyFile(srcFile, destFile, force);
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        // Change the mode for the newly created directory
 | 
			
		||||
        yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode);
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
// Buffered file copy
 | 
			
		||||
function copyFile(srcFile, destFile, force) {
 | 
			
		||||
    return __awaiter(this, void 0, void 0, function* () {
 | 
			
		||||
        if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) {
 | 
			
		||||
            // unlink/re-link it
 | 
			
		||||
            try {
 | 
			
		||||
                yield ioUtil.lstat(destFile);
 | 
			
		||||
                yield ioUtil.unlink(destFile);
 | 
			
		||||
            }
 | 
			
		||||
            catch (e) {
 | 
			
		||||
                // Try to override file permission
 | 
			
		||||
                if (e.code === 'EPERM') {
 | 
			
		||||
                    yield ioUtil.chmod(destFile, '0666');
 | 
			
		||||
                    yield ioUtil.unlink(destFile);
 | 
			
		||||
                }
 | 
			
		||||
                // other errors = it doesn't exist, no work to do
 | 
			
		||||
            }
 | 
			
		||||
            // Copy over symlink
 | 
			
		||||
            const symlinkFull = yield ioUtil.readlink(srcFile);
 | 
			
		||||
            yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null);
 | 
			
		||||
        }
 | 
			
		||||
        else if (!(yield ioUtil.exists(destFile)) || force) {
 | 
			
		||||
            yield ioUtil.copyFile(srcFile, destFile);
 | 
			
		||||
        }
 | 
			
		||||
    });
 | 
			
		||||
}
 | 
			
		||||
//# sourceMappingURL=io.js.map
 | 
			
		||||
							
								
								
									
										2
									
								
								node_modules/@actions/io/lib/io.js.map
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								node_modules/@actions/io/lib/io.js.map
									
									
									
										generated
									
									
										vendored
									
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							
		Reference in New Issue
	
	Block a user