From a116fb7be951f593ee8211678cb980f9413974c7 Mon Sep 17 00:00:00 2001 From: Kirby Wu Date: Wed, 9 Feb 2022 22:35:01 +0800 Subject: [PATCH] - make `-s false` work for symlink ( e.g., `local` ) folder - warn but install modules not listed in fedep modules in `pacakge.json` ( usually from `-l` option ) --- CHANGELOG.md | 6 ++++++ cli.js | 18 +++++++++++++++++- lib/main.ls | 7 +++++++ 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2714690..3cbbcf6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,11 @@ # Change Logs +## v1.1.6 + + - make `-s false` work for symlink ( e.g., `local` ) folder + - warn but install modules not listed in fedep modules in `pacakge.json` ( usually from `-l` option ) + + ## v1.1.5 - still symlink if srcdir is not a symlink but root is a symlink. usually happens when we specify `dir` in config. diff --git a/cli.js b/cli.js index 234734c..099a156 100755 --- a/cli.js +++ b/cli.js @@ -27,7 +27,7 @@ cmds['default'] = { }); }, handler: function(argv){ - var ret, localModules, useSymlink, fed; + var ret, localModules, useSymlink, fed, extModules; if (argv.l) { ret = argv.l.split(';').map(function(it){ return it.split(':'); @@ -46,6 +46,20 @@ cmds['default'] = { root: '.', modules: [] }, JSON.parse(fs.readFileSync("package.json").toString()).frontendDependencies || {}); + extModules = localModules.filter(function(o){ + return !fed.modules.filter(function(it){ + return it.name === o.name; + }).length; + }); + if (extModules.length) { + console.warn("following modules are not listed in fedep modules. still installed:".yellow); + console.warn(extModules.map(function(it){ + return " - " + it.name; + }).join('\n').yellow); + fed.modules = fed.modules.concat(extModules.map(function(it){ + return it.name; + })); + } return (fed.modules || []).map(function(obj){ var localModule, root, info, id, mainFile, ref$, i$, name, version, ret, that, desdir, maindir, p, srcdir, realSrcdir, srcFile, desFile; obj = typeof obj === 'string' ? { @@ -168,6 +182,8 @@ cmds['default'] = { fsExtra.removeSync(maindir); if (useSymlink) { return fsExtra.ensureSymlinkSync(desdir, maindir); + } else if (fs.lstatSync(desdir).isSymbolicLink()) { + return fsExtra.copySync(srcdir, maindir); } else { return fsExtra.copySync(desdir, maindir); } diff --git a/lib/main.ls b/lib/main.ls index e0306fc..57af2b3 100644 --- a/lib/main.ls +++ b/lib/main.ls @@ -30,6 +30,12 @@ cmds.default = root: '.', modules: [] } <<< (JSON.parse(fs.read-file-sync "package.json" .toString!).frontendDependencies or {}) + ext-modules = local-modules.filter((o) -> !(fed.modules.filter(->it.name == o.name).length)) + if ext-modules.length => + console.warn "following modules are not listed in fedep modules. still installed:".yellow + console.warn ext-modules.map(->" - #{it.name}").join(\\n).yellow + fed.modules ++= ext-modules.map(-> it.name) + (fed.modules or []).map (obj) -> obj = if typeof(obj) == \string => {name: obj} else obj local-module = local-modules.filter(-> it.name == obj.name).0 @@ -115,6 +121,7 @@ cmds.default = p.then -> fs-extra.remove-sync maindir if use-symlink => fs-extra.ensure-symlink-sync desdir, maindir + else if fs.lstat-sync desdir .is-symbolic-link! => fs-extra.copy-sync srcdir, maindir else fs-extra.copy-sync desdir, maindir