UNPKG

@invisit/webpack-aws-lambda-auto-deploy-plugin

Version:

Uploads compiled assets to s3 after build

113 lines 4.32 kB
"use strict"; var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); __setModuleDefault(result, mod); return result; }; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getLogger = exports.isMultiStats = exports.getFileTimestamp = exports.RootPluginDir = exports.getDebug = exports.DebugAwsAutoDeployCategory = exports.getEnvConfigValue = exports.isStringAndNotEmpty = exports.isNotEmpty = void 0; const Path = __importStar(require("path")); const tracer_1 = __importDefault(require("tracer")); const moment_1 = __importDefault(require("moment")); const Fs = __importStar(require("fs")); const debug_1 = __importDefault(require("debug")); const lodash_1 = require("lodash"); const prelude_ts_1 = require("@3fv/prelude-ts"); const guard_1 = require("@3fv/guard"); const Sh = __importStar(require("shelljs")); exports.isNotEmpty = prelude_ts_1.Predicate.of(lodash_1.negate(lodash_1.isEmpty)); exports.isStringAndNotEmpty = prelude_ts_1.Predicate.of(guard_1.isString).and(exports.isNotEmpty); const isDevEnv = process.env.NODE_ENV === "development"; const configDebug = debug_1.default("lambda-webpack-autodeploy,config"); /** * Get a config value from ENV * * @param key * @param defaultValue * @returns */ function getEnvConfigValue(key, defaultValue = undefined) { const fullKey = `AWS_LAMBDA_AUTODEPLOY_${key}`; const envValue = Sh.env[fullKey]; const finalValue = prelude_ts_1.asOption(envValue) .filter(exports.isStringAndNotEmpty) .getOrElse(defaultValue); configDebug(`Getting env value (key=${fullKey},envValue=${envValue},defaultValue=${defaultValue},finalValue=${finalValue})`); return finalValue; } exports.getEnvConfigValue = getEnvConfigValue; exports.DebugAwsAutoDeployCategory = "inv:aws:deploy"; /** * Debug instance for plugin */ const debug = debug_1.default(exports.DebugAwsAutoDeployCategory); /** * * @returns debug instance for plugin */ function getDebug() { return debug; } exports.getDebug = getDebug; /** * Path to logs */ const logPath = getEnvConfigValue("LOG_PATH", Path.join(process.cwd(), "logs")); // Make sure logs path exists if (!Sh.test("-d", logPath)) { debug(`Creating directory: ${logPath}`); Sh.mkdir("-p", logPath); } // Assert config is good guard_1.assert(Path.isAbsolute(logPath) && Sh.test("-d", logPath), `Log path must be absolute (${logPath})`); // Create logger const logFile = prelude_ts_1.asOption(getEnvConfigValue("LOG_FILE", "aws-lambda-auto-deploy-plugin")) .map(file => (!file.endsWith(".log") ? file + ".log" : file)) .map(file => Path.join(logPath, file)) .get(); const log = tracer_1.default.colorConsole({ transport: [ data => { Fs.appendFile(logFile, data.rawoutput + "\n", err => { if (err) { debug(`Append log file failed`, err); if (isDevEnv) { if (err) throw err; } } }); } ] }); exports.RootPluginDir = Path.resolve(__dirname, ".."); function getFileTimestamp() { return moment_1.default().format("YYYYMMDDHHmmss"); } exports.getFileTimestamp = getFileTimestamp; function isMultiStats(o) { return Array.isArray(o?.stats); } exports.isMultiStats = isMultiStats; function getLogger() { return log; } exports.getLogger = getLogger; //# sourceMappingURL=helpers.js.map