Comparing version 7.0.0 to 7.1.0
{ | ||
"name": "titanium", | ||
"version": "7.0.0", | ||
"version": "7.1.0", | ||
"author": "TiDev, Inc. <npm@tidev.io>", | ||
@@ -22,3 +22,3 @@ "description": "Command line interface for building Titanium SDK apps", | ||
"chalk": "5.3.0", | ||
"commander": "12.0.0", | ||
"commander": "12.1.0", | ||
"execa": "8.0.1", | ||
@@ -28,4 +28,4 @@ "fs-extra": "11.2.0", | ||
"prompts": "2.4.2", | ||
"semver": "7.6.1", | ||
"undici": "6.16.0", | ||
"semver": "7.6.2", | ||
"undici": "6.18.0", | ||
"which": "4.0.0", | ||
@@ -40,5 +40,5 @@ "wrap-ansi": "9.0.0", | ||
"c8": "9.1.0", | ||
"eslint": "9.2.0", | ||
"glob": "10.3.12", | ||
"globals": "15.1.0", | ||
"eslint": "9.3.0", | ||
"glob": "10.3.15", | ||
"globals": "15.3.0", | ||
"memory-streams": "0.1.3", | ||
@@ -45,0 +45,0 @@ "proxy": "2.1.1" |
@@ -19,2 +19,3 @@ import chalk from 'chalk'; | ||
import { TiHelp } from './util/tihelp.js'; | ||
import semver from 'semver'; | ||
@@ -171,3 +172,3 @@ const { blue, bold, cyan, gray, green, magenta, red, yellow } = chalk; | ||
const pkgJsonFile = join(dirname(fileURLToPath(import.meta.url)), '../package.json'); | ||
const { version } = fs.readJsonSync(pkgJsonFile); | ||
const { engines, version } = fs.readJsonSync(pkgJsonFile); | ||
@@ -177,2 +178,3 @@ this.name = 'Titanium Command-Line Interface'; | ||
this.version = version; | ||
this.nodeVersion = engines?.node; | ||
this.logger.setBanner({ | ||
@@ -420,2 +422,7 @@ name: this.name, | ||
// remove any trailing undefined args | ||
while (args.length && args[args.length - 1] === undefined) { | ||
args.pop(); | ||
} | ||
this.argv._ = args; | ||
@@ -517,2 +524,6 @@ this.applyArgv(cmd); | ||
async go() { | ||
if (this.nodeVersion && !semver.satisfies(process.version, this.nodeVersion)) { | ||
throw new TiError(`Node.js version ${this.nodeVersion} required, current version is ${process.version}`); | ||
} | ||
Command.prototype.createHelp = () => { | ||
@@ -1262,3 +1273,3 @@ return Object.assign(new TiHelp(this), this.command.configureHelp()); | ||
if (typeof mod.init === 'function') { | ||
mod.init(this.logger, this.config, this, appc); | ||
await mod.init(this.logger, this.config, this, appc); | ||
} | ||
@@ -1265,0 +1276,0 @@ this.hooks.loadedFilenames.push(file); |
@@ -112,4 +112,4 @@ /* eslint-disable max-len */ | ||
const { argv } = cli; | ||
const key = argv._.length > 0 && argv._.shift(); | ||
const value = argv._.length > 0 && argv._[0]; | ||
const key = argv._.length > 0 ? argv._.shift() : undefined; | ||
const value = argv._.length > 0 ? argv._[0] : undefined; | ||
const results = {}; | ||
@@ -116,0 +116,0 @@ const asJson = argv.json || argv.output === 'json'; |
@@ -342,2 +342,3 @@ import chalk from 'chalk'; | ||
const subject = cli.argv._.shift() || 'latest'; | ||
const { trace } = cli.debugLogger; | ||
@@ -364,3 +365,4 @@ logger.skipBanner(false); | ||
let { name, renameTo, tempDir } = await extractSDK({ | ||
let { forceModules, name, renameTo, tempDir } = await extractSDK({ | ||
debugLogger: cli.debugLogger, | ||
file, | ||
@@ -407,42 +409,45 @@ force: cli.argv.force, | ||
const modules = []; | ||
const modules = {}; | ||
src = join(tempDir, 'modules'); | ||
try { | ||
if (fs.statSync(src).isDirectory()) { | ||
const modulesDest = join(titaniumDir, 'modules'); | ||
if (fs.statSync(src).isDirectory()) { | ||
const modulesDest = join(titaniumDir, 'modules'); | ||
for (const platform of fs.readdirSync(src)) { | ||
const srcPlatformDir = join(src, platform); | ||
if (!fs.statSync(srcPlatformDir).isDirectory()) { | ||
for (const platform of fs.readdirSync(src)) { | ||
const srcPlatformDir = join(src, platform); | ||
if (!fs.statSync(srcPlatformDir).isDirectory()) { | ||
continue; | ||
} | ||
for (const moduleName of fs.readdirSync(srcPlatformDir)) { | ||
const srcModuleDir = join(srcPlatformDir, moduleName); | ||
if (!fs.statSync(srcModuleDir).isDirectory()) { | ||
continue; | ||
} | ||
for (const moduleName of fs.readdirSync(srcPlatformDir)) { | ||
const srcModuleDir = join(srcPlatformDir, moduleName); | ||
if (!fs.statSync(srcModuleDir).isDirectory()) { | ||
for (const ver of fs.readdirSync(srcModuleDir)) { | ||
const srcVersionDir = join(srcModuleDir, ver); | ||
if (!fs.statSync(srcVersionDir).isDirectory()) { | ||
continue; | ||
} | ||
for (const ver of fs.readdirSync(srcModuleDir)) { | ||
const srcVersionDir = join(srcModuleDir, ver); | ||
if (!fs.statSync(srcVersionDir).isDirectory()) { | ||
continue; | ||
} | ||
const destDir = join(modulesDest, platform, moduleName, ver); | ||
if (!forceModules && fs.existsSync(destDir)) { | ||
trace(`Module ${cyan(`${moduleName}@${ver}`)} already installed`); | ||
continue; | ||
} | ||
const destDir = join(modulesDest, platform, moduleName, ver); | ||
if (!cli.argv.force || fs.statSync(destDir).isDirectory()) { | ||
continue; | ||
} | ||
modules.push({ src: srcVersionDir, dest: destDir }); | ||
} | ||
modules[`${moduleName}@${ver}`] = { src: srcVersionDir, dest: destDir }; | ||
} | ||
} | ||
} | ||
} catch {} | ||
} | ||
if (modules.length) { | ||
for (const { src, dest } of modules) { | ||
if (Object.keys(modules).length) { | ||
trace(`Installing ${cyan(Object.keys(modules).length)} modules:`); | ||
for (const [name, { src, dest }] of Object.entries(modules)) { | ||
trace(` ${cyan(name)}`); | ||
await fs.move(src, dest, { overwrite: true }); | ||
} | ||
} else { | ||
trace('SDK has new modules to install'); | ||
} | ||
@@ -622,3 +627,3 @@ | ||
async function extractSDK({ file, force, logger, noPrompt, osName, showProgress, subject, titaniumDir }) { | ||
async function extractSDK({ debugLogger, file, force, logger, noPrompt, osName, showProgress, subject, titaniumDir }) { | ||
const sdkDestRegExp = new RegExp(`^mobilesdk[/\\\\]${osName}[/\\\\]([^/\\\\]+)`); | ||
@@ -630,2 +635,3 @@ const tempDir = join(os.tmpdir(), `titanium-cli-${Math.floor(Math.random() * 1e6)}`); | ||
let renameTo; | ||
let forceModules = force; | ||
@@ -637,3 +643,3 @@ const onEntry = async (filename, _idx, total) => { | ||
name = m[1]; | ||
renameTo = await checkSDKFile({ | ||
const result = await checkSDKFile({ | ||
force, | ||
@@ -649,2 +655,5 @@ logger, | ||
forceModules = result?.forceModules ?? force; | ||
renameTo = result?.renameTo; | ||
logger.log('Extracting SDK...'); | ||
@@ -667,3 +676,3 @@ if (showProgress && !bar) { | ||
logger.trace(`Extracting ${file} -> ${tempDir}`); | ||
debugLogger.trace(`Extracting ${file} -> ${tempDir}`); | ||
await extractZip({ | ||
@@ -676,10 +685,10 @@ dest: tempDir, | ||
if (!artifact) { | ||
return { name, renameTo, tempDir }; | ||
return { forceModules, name, renameTo, tempDir }; | ||
} | ||
logger.trace(`Detected artifact: ${artifact}`); | ||
debugLogger.trace(`Detected artifact: ${artifact}`); | ||
const tempDir2 = join(os.tmpdir(), `titanium-cli-${Math.floor(Math.random() * 1e6)}`); | ||
file = join(tempDir, artifact); | ||
logger.trace(`Extracting ${file} -> ${tempDir2}`); | ||
debugLogger.trace(`Extracting ${file} -> ${tempDir2}`); | ||
await extractZip({ | ||
@@ -692,3 +701,3 @@ dest: tempDir2, | ||
await fs.remove(tempDir); | ||
return { name, renameTo, tempDir: tempDir2 }; | ||
return { forceModules, name, renameTo, tempDir: tempDir2 }; | ||
} | ||
@@ -733,3 +742,3 @@ | ||
const { action } = await prompt({ | ||
const action = await prompt({ | ||
type: 'select', | ||
@@ -753,5 +762,9 @@ name: 'action', | ||
const result = { action }; | ||
if (action === 'rename') { | ||
return renameTo; | ||
result.renameTo = renameTo; | ||
} else if (action === 'overwrite') { | ||
result.forceModules = true; | ||
} | ||
return result; | ||
} | ||
@@ -804,3 +817,3 @@ | ||
if (!versions.length) { | ||
({ versions } = await prompt({ | ||
versions = await prompt({ | ||
type: 'multiselect', | ||
@@ -815,3 +828,3 @@ name: 'versions', | ||
})) | ||
})); | ||
}); | ||
if (!versions) { | ||
@@ -841,3 +854,3 @@ return; | ||
const { confirm } = await prompt({ | ||
const confirm = await prompt({ | ||
type: 'toggle', | ||
@@ -844,0 +857,0 @@ name: 'confirm', |
@@ -524,3 +524,3 @@ import { detect as proxyDetect } from './proxy.js'; | ||
const { name } = await prompt({ | ||
const name = await prompt({ | ||
type: 'text', | ||
@@ -527,0 +527,0 @@ message: 'What do you want as your "author" name?', |
@@ -274,8 +274,8 @@ import { readdir } from 'node:fs/promises'; | ||
const results = await Promise.allSettled(fetches); | ||
const results = await Promise.all(fetches); | ||
return results | ||
.flatMap(r => { | ||
return r.status === 'fulfilled' && r.value ? r.value.releases.map(rel => { | ||
rel.type = r.value.type; | ||
.flatMap(value => { | ||
return value ? value.releases.map(rel => { | ||
rel.type = value.type; | ||
return rel; | ||
@@ -282,0 +282,0 @@ }) : []; |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
198605
5885
+ Addedcommander@12.1.0(transitive)
+ Addedsemver@7.6.2(transitive)
+ Addedundici@6.18.0(transitive)
- Removedcommander@12.0.0(transitive)
- Removedsemver@7.6.1(transitive)
- Removedundici@6.16.0(transitive)
Updatedcommander@12.1.0
Updatedsemver@7.6.2
Updatedundici@6.18.0