From f7a9c318305448bb83b9d029275e225cb40d3e54 Mon Sep 17 00:00:00 2001 From: kingtut Date: Fri, 1 Apr 2022 08:55:51 +1100 Subject: [PATCH] Path, logging, cleanup fixes --- index.js | 18 +++++++++--------- src/symlink.js | 17 +++++++++++++---- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/index.js b/index.js index c54a898..4573eb6 100644 --- a/index.js +++ b/index.js @@ -3,7 +3,8 @@ const symlink = require('./src/symlink'); class PackageCommon { - constructor(serverless, options) { + constructor(serverless, options, { log }) { + this.log = log; this.serverless = serverless; this.options = Object.assign({ common: [] @@ -12,29 +13,28 @@ class PackageCommon { this.symlinked = false; this.hooks = { - 'before:package:createDeploymentArtifacts': this.beforeDeploy.bind(this), - 'after:deploy:deploy': this.afterDeploy.bind(this) + 'before:package:createDeploymentArtifacts': this.beforePackage.bind(this), + 'after:package:finalize': this.afterPackage.bind(this) }; this.handleExit(); } - beforeDeploy() { + beforePackage() { // Symlink common folders return Promise.all(this.options.common.map(commonFolder => { this.symlinked = true; return symlink.createFolder(commonFolder, this.serverless); })) .then(() => { - this.serverless.cli.log(`[serverless-package-common] Package Common is complete`); + this.log.success('Common packaging complete'); }); } - afterDeploy() { + afterPackage() { if(this.symlinked) { this.options.common.forEach(commonFolder => { - const target = commonFolder.replace(/..\//g, ''); - symlink.removeFolder(target); + symlink.removeFolder(commonFolder); }); } } @@ -42,7 +42,7 @@ class PackageCommon { handleExit(func) { ['SIGINT', 'SIGTERM', 'SIGQUIT'] .forEach(signal => process.on(signal, () => { - this.afterDeploy(); + this.afterPackage(); })); } } diff --git a/src/symlink.js b/src/symlink.js index 4a183ba..602f5f9 100644 --- a/src/symlink.js +++ b/src/symlink.js @@ -2,6 +2,7 @@ const fs = require('fs'); const path = require('path'); const rimraf = require('rimraf'); const yesno = require('yesno'); +const { log } = require('@serverless/utils/log'); const exists = path => { try { @@ -33,22 +34,30 @@ const askToOverwrite = (targetExists, folder) => { return ask; }; +// Build symlink path +const symlinkTarget = folder => { + return path.join(process.cwd(), path.basename(folder)); +}; + // Symlink a folder -const createFolder = (folder, serverless) => { - const target = path.join(process.cwd(), folder.replace(/..\//g, '')); +const createFolder = folder => { + const target = symlinkTarget(folder); // Check if folder/file with symlink name already exists in top level return askToOverwrite(exists(target) ? [target] : [], folder) .then(() => { // There is either no conflict or the user has accepted overwriting - serverless.cli.log(`[serverless-package-common] Symlinking ${folder}`); + log.verbose(`Symlinking ${folder} to target ${target}`); rimraf.sync(target); fs.symlinkSync(folder, target); }); }; const removeFolder = folder => { - rimraf.sync(path.join(process.cwd(), folder)); + const target = symlinkTarget(folder); + log.verbose(`Removing symlink ${target}`); + + rimraf.sync(target); }; module.exports = { createFolder, removeFolder };