Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@armit/cli

Package Overview
Dependencies
Maintainers
1
Versions
86
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@armit/cli - npm Package Compare versions

Comparing version
0.0.6
to
0.0.7
+11
-0
CHANGELOG.md
# @armit/cli
## 0.0.7
### Patch Changes
- [`6ee7e63`](https://github.com/armitjs/armit/commit/6ee7e63c9447cd5531234774b6cee8404cb080d1) Thanks [@tianyingchun](https://github.com/tianyingchun)! - change pack option `exclude` to `basePath`
- [`4cd6b14`](https://github.com/armitjs/armit/commit/4cd6b142223e1b6de75555ebe745c4fea220e383) Thanks [@tianyingchun](https://github.com/tianyingchun)! - improve package search typing constraint
- Updated dependencies [[`4cd6b14`](https://github.com/armitjs/armit/commit/4cd6b142223e1b6de75555ebe745c4fea220e383)]:
- @armit/common@0.0.7
## 0.0.6

@@ -4,0 +15,0 @@

+3
-3
import { join, relative, dirname } from 'path';
import { fileURLToPath } from 'url';
import { createCommand, AbstractHandler, showBanner, terminalColor, getPackageData, fileWalk, zipFiles, updateNotifier, loadPlugins, findParentDir, createCli } from '@armit/common';
import { createCommand, AbstractHandler, showBanner, terminalColor, getPackageData, fileWalk, zipFiles, getDirname, updateNotifier, loadPlugins, findParentDir, createCli } from '@armit/common';
import { platform, release } from 'os';

@@ -8,5 +8,5 @@ import w from 'os-name';

var m=class extends AbstractHandler{async handle(){await showBanner("armit",{align:"left",gradient:"red,blue",letterSpacing:3}),console.log(terminalColor(["magenta","bold"])(" CLI tool for armitjs applications")),this.displaySystemInformation();}displaySystemInformation(){console.info(""),console.info(terminalColor(["green"])(" \u2714 System Information")),console.info(" OS Version :",terminalColor(["magenta"])(` ${w(platform(),release())}`)),console.info(" NodeJS Version :",terminalColor(["magenta"])(` ${process.version}`)),this.displayCliVersion(),this.displayArmitInformation();}displayArmitInformation(){console.info(terminalColor(["green"])(" \u2714 armit Platform Information"));try{this.displayArmitVersions();}catch{console.error(terminalColor(["red"])(" \u{1F63C} cannot read your project package.json file, are you inside your project directory?"));}}displayArmitVersions(){let e=getPackageData({cwd:process.cwd()});if(e){let r=Object.assign({},e.dependencies,e.devDependencies,e.peerDependencies),o=this.collectNestDependencies(r);this.dependencyformat(o).forEach(t=>console.info(" "+t.name,terminalColor(["magenta"])(`${t.version}`))),console.info(" ");}}collectNestDependencies(e){let r=[];return Object.keys(e).forEach(o=>{o.includes("@armit")&&r.push({name:`${o.replace(/@armit\//,"")} \u279E version`,version:e[o]});}),r}displayCliVersion(){this.cliPackageJson&&(console.info(""),console.info(terminalColor(["green"])(" \u2714 armit CLI")),console.info(" armit CLI Version :",terminalColor(["magenta"])(`${this.cliPackageJson.version||""}`),`
`));}dependencyformat(e){var t,a;let r=e.sort((i,g)=>g.name.length-i.name.length),o=(a=(t=r[0])==null?void 0:t.name)==null?void 0:a.length;return r.forEach(i=>{i.name.length<o&&(i.name=this.rightPad(i.name,o)),i.name=i.name.concat(" :"),i.version=i.version.replace(/\^|~/,"");}),r}rightPad(e,r){for(;e.length<r;)e=e.concat(" ");return e}};var f=createCommand("info",{command:"info",describe:"Display armit project details."},m);var c=class extends AbstractHandler{async handle(){return this.prepareZip()}async prepareZip(){let e=join(process.cwd(),this.args.exclude),r=await fileWalk(this.args.filter,{cwd:e,ignore:this.args.ignore});r.length?(console.info(terminalColor(["green"])("\u2714 All ziped files")),r.forEach(o=>{console.info(`${terminalColor(["cyan"])(" \u27A9 ")}${terminalColor(["magenta"])(relative(e,o))}`);}),console.info(" "),await this.toZip(r,e)):this.logger.warn("No matched files found");}async toZip(e,r){let o=getPackageData({cwd:process.cwd()}),t=join(process.cwd(),this.args.to),a=join(t,`${((o==null?void 0:o.name)||"unknow").replace(/\//g,"-")}-${Date.now()}.zip`);await zipFiles(e,a,{relativePathTo:r});}};var d=createCommand("pack",{command:"pack",describe:"Extract filtered files compress to zip file.",builder(s){return s.example('$0 pack -f="a;b;c" -f="a"',"Using `fast-glob` to filter files to zip").option("filter",{alias:"f",type:"array",default:["**"],describe:"Filter matched files that will be packed"}).option("ignore",{alias:"i",type:"array",default:["**/*.{png,jpg,jpeg,gif,svg}"],describe:"Ignore pattern will removed matched files from `filter`"}).option("exclude",{alias:"e",type:"string",default:"public",describe:"The path that will be ignored relative to `cwd()`"}).option("to",{alias:"t",type:"string",default:"packages",describe:"The directory where zip file saved to, it relative to `cwd()`"})}},c);var ee=async s=>{let e=getPackageData();e&&updateNotifier({pkg:{name:(e==null?void 0:e.name)||"",version:(e==null?void 0:e.version)||""}});let r=dirname(fileURLToPath(import.meta.url)),o=await loadPlugins([],["@armit/cli-plugin-*/package.json","armit-cli-plugin-*/package.json"],[process.cwd(),join(findParentDir(r,"@armit"),"../")]),t=createCli({group:"@armit",packageJson:e,...s}).register(f).register(d);for(let{plugin:a}of o)a&&t.register(a);return t};
`));}dependencyformat(e){var t,n;let r=e.sort((i,g)=>g.name.length-i.name.length),o=(n=(t=r[0])==null?void 0:t.name)==null?void 0:n.length;return r.forEach(i=>{i.name.length<o&&(i.name=this.rightPad(i.name,o)),i.name=i.name.concat(" :"),i.version=i.version.replace(/\^|~/,"");}),r}rightPad(e,r){for(;e.length<r;)e=e.concat(" ");return e}};var f=createCommand("info",{command:"info",describe:"Display armit project details."},m);var c=class extends AbstractHandler{async handle(){return this.prepareZip()}async prepareZip(){let e=join(process.cwd(),this.args.basePath),r=await fileWalk(this.args.filter,{cwd:e,ignore:this.args.ignore});r.length?(console.info(terminalColor(["green"])("\u2714 All ziped files")),r.forEach(o=>{console.info(`${terminalColor(["cyan"])(" \u27A9 ")}${terminalColor(["magenta"])(relative(e,o))}`);}),console.info(" "),await this.toZip(r,e)):this.logger.warn("No matched files found");}async toZip(e,r){let o=getPackageData({cwd:process.cwd()}),t=join(process.cwd(),this.args.to),n=join(t,`${((o==null?void 0:o.name)||"unknow").replace(/\//g,"-")}-${Date.now()}.zip`);await zipFiles(e,n,{relativePathTo:r});}};var d=createCommand("pack",{command:"pack",describe:"Extract filtered files compress to zip file.",builder(s){return s.example('$0 pack -f="a;b;c" -f="a"',"Using `fast-glob` to filter files to zip").option("filter",{alias:"f",type:"array",default:["**"],describe:"Filter matched files that will be packed"}).option("ignore",{alias:"i",type:"array",default:["**/*.{png,jpg,jpeg,gif,svg}"],describe:"Ignore pattern will removed matched files from `filter`"}).option("basePath",{alias:"b",type:"string",default:"public",describe:"The path that will be ignored relative to `cwd()`"}).option("to",{alias:"t",type:"string",default:"packages",describe:"The directory where zip file saved to, it relative to `cwd()`"})}},c);var re=async s=>{let e=getPackageData({cwd:getDirname(import.meta.url)});e&&updateNotifier({pkg:{name:(e==null?void 0:e.name)||"",version:(e==null?void 0:e.version)||""}});let r=dirname(fileURLToPath(import.meta.url)),o=await loadPlugins([],["@armit/cli-plugin-*/package.json","armit-cli-plugin-*/package.json"],[process.cwd(),join(findParentDir(r,"@armit"),"../")]),t=createCli({group:"@armit",packageJson:e,...s}).register(f).register(d);for(let{plugin:n}of o)n&&t.register(n);return t};
export { ee as bootstrap };
export { re as bootstrap };
//# sourceMappingURL=index.js.map

@@ -1,1 +0,1 @@

{"version":3,"sources":["../src/bootstrap.ts","../src/info/define.ts","../src/info/handler.ts","../src/pack/define.ts","../src/pack/handler.ts"],"names":["dirname","join","fileURLToPath","createCli","findParentDir","loadPlugins","updateNotifier","getPackageData","createCommand","platform","release","terminalColor","showBanner","AbstractHandler","osName","InfoCommandHandler","packageJson","dependencies","armitDependencies","dependency","key","_a","_b","sorted","dependencyA","dependencyB","length","name","infoCmd","relative","fileWalk","zipFiles","PackCommand","fileFromCwd","allFiles","file","cwdPkgJson","fileFromTo","zipFileName","packCmd","args","bootstrap","options","curDirName","externalPlugins","armitCli","plugin"],"mappings":"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","sourcesContent":["import { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport type { CliOption } from '@armit/common';\nimport {\n createCli,\n findParentDir,\n loadPlugins,\n updateNotifier,\n getPackageData,\n} from '@armit/common';\nimport { infoCmd } from './info/define.js';\nimport { packCmd } from './pack/define.js';\n\nexport const bootstrap = async (options?: Partial<CliOption>) => {\n // Read cli package json data.\n const packageJson = getPackageData();\n\n if (packageJson) {\n // Check if newer cli version here.\n updateNotifier({\n pkg: {\n name: packageJson?.name || '',\n version: packageJson?.version || '',\n },\n });\n }\n\n // __dirname\n const curDirName = dirname(fileURLToPath(import.meta.url));\n\n // Load all available cli plugins\n const externalPlugins = await loadPlugins(\n [],\n ['@armit/cli-plugin-*/package.json', 'armit-cli-plugin-*/package.json'],\n [process.cwd(), join(findParentDir(curDirName, '@armit'), '../')]\n );\n\n // Register built-in commands.\n const armitCli = createCli({\n group: '@armit',\n packageJson,\n ...options,\n })\n .register(infoCmd)\n .register(packCmd);\n\n // Register external plugins.\n for (const { plugin } of externalPlugins) {\n if (plugin) {\n armitCli.register(plugin);\n }\n }\n return armitCli;\n};\n","import { createCommand } from '@armit/common';\nimport type { InfoCommandArgs } from './handler.js';\nimport { InfoCommandHandler } from './handler.js';\n\nexport const infoCmd = createCommand<InfoCommandArgs>(\n 'info',\n {\n command: 'info',\n describe: 'Display armit project details.',\n },\n InfoCommandHandler\n);\n","import { platform, release } from 'os';\nimport type { CommandArgv } from '@armit/common';\nimport {\n getPackageData,\n terminalColor,\n showBanner,\n AbstractHandler,\n} from '@armit/common';\nimport osName from 'os-name';\n\nexport type InfoCommandArgs = CommandArgv;\n\ninterface ProjectDependency {\n name: string;\n version: string;\n latestVersion?: string;\n}\n\nexport class InfoCommandHandler extends AbstractHandler<InfoCommandArgs> {\n async handle() {\n await showBanner(`armit`, {\n align: 'left',\n gradient: 'red,blue',\n letterSpacing: 3,\n });\n console.log(\n terminalColor(['magenta', 'bold'])(` CLI tool for armitjs applications`)\n );\n this.displaySystemInformation();\n }\n\n private displaySystemInformation() {\n console.info('');\n console.info(terminalColor(['green'])(' ✔ System Information'));\n console.info(\n ' OS Version :',\n terminalColor(['magenta'])(` ${osName(platform(), release())}`)\n );\n console.info(\n ' NodeJS Version :',\n terminalColor(['magenta'])(` ${process.version}`)\n );\n this.displayCliVersion();\n this.displayArmitInformation();\n }\n\n private displayArmitInformation() {\n console.info(terminalColor(['green'])(' ✔ armit Platform Information'));\n try {\n this.displayArmitVersions();\n } catch {\n console.error(\n terminalColor(['red'])(\n ` 😼 cannot read your project package.json file, are you inside your project directory?`\n )\n );\n }\n }\n\n private displayArmitVersions() {\n const packageJson = getPackageData({\n cwd: process.cwd(),\n });\n if (packageJson) {\n const dependencies: Record<string, unknown> = Object.assign(\n {},\n packageJson.dependencies,\n packageJson.devDependencies,\n packageJson.peerDependencies\n );\n const armitDependencies = this.collectNestDependencies(dependencies);\n this.dependencyformat(armitDependencies).forEach((dependency) =>\n console.info(\n ' ' + dependency.name,\n terminalColor(['magenta'])(`${dependency.version}`)\n )\n );\n console.info(' ');\n }\n }\n\n private collectNestDependencies(dependencies: Record<string, unknown>) {\n const armitDependencies: Array<ProjectDependency> = [];\n Object.keys(dependencies).forEach((key) => {\n if (key.includes('@armit')) {\n armitDependencies.push({\n name: `${key.replace(/@armit\\//, '')} ➞ version`,\n version: dependencies[key] as string,\n });\n }\n });\n return armitDependencies;\n }\n\n private displayCliVersion() {\n if (this.cliPackageJson) {\n console.info('');\n console.info(terminalColor(['green'])(' ✔ armit CLI'));\n console.info(\n ' armit CLI Version :',\n terminalColor(['magenta'])(`${this.cliPackageJson.version || ''}`),\n '\\n'\n );\n }\n }\n\n private dependencyformat(dependencies: ProjectDependency[]) {\n const sorted = dependencies.sort(\n (dependencyA, dependencyB) =>\n dependencyB.name.length - dependencyA.name.length\n );\n // Maybe dependencies is an empty array.\n const length = sorted[0]?.name?.length;\n sorted.forEach((dependency) => {\n if (dependency.name.length < length) {\n dependency.name = this.rightPad(dependency.name, length);\n }\n dependency.name = dependency.name.concat(' :');\n dependency.version = dependency.version.replace(/\\^|~/, '');\n });\n return sorted;\n }\n\n private rightPad(name: string, length: number) {\n while (name.length < length) {\n name = name.concat(' ');\n }\n return name;\n }\n}\n","import { createCommand } from '@armit/common';\nimport type { PackCommandArgs } from './handler.js';\nimport { PackCommand } from './handler.js';\n\nexport const packCmd = createCommand<PackCommandArgs>(\n 'pack',\n {\n command: 'pack',\n describe: 'Extract filtered files compress to zip file.',\n builder(args) {\n return args\n .example(\n `$0 pack -f=\"a;b;c\" -f=\"a\"`,\n 'Using `fast-glob` to filter files to zip'\n )\n .option('filter', {\n alias: 'f',\n type: 'array',\n default: ['**'],\n describe: 'Filter matched files that will be packed',\n })\n .option('ignore', {\n alias: 'i',\n type: 'array',\n default: ['**/*.{png,jpg,jpeg,gif,svg}'],\n describe: 'Ignore pattern will removed matched files from `filter`',\n })\n .option('exclude', {\n alias: 'e',\n type: 'string',\n default: 'public',\n describe: 'The path that will be ignored relative to `cwd()`',\n })\n .option('to', {\n alias: 't',\n type: 'string',\n default: 'packages',\n describe:\n 'The directory where zip file saved to, it relative to `cwd()`',\n });\n },\n },\n PackCommand\n);\n","import { join, relative } from 'path';\nimport type { CommandArgv } from '@armit/common';\nimport {\n terminalColor,\n fileWalk,\n getPackageData,\n zipFiles,\n AbstractHandler,\n} from '@armit/common';\n\nexport type PackCommandArgs = CommandArgv<{\n /**\n * the filter pattern using globby (fast-glob)\n * multiple pattern separated using `;`\n * @alias -f\n * @default [`**`]\n */\n filter: string[];\n\n /**\n * Reverse pattern will removed matched files from `filter`\n * @default [`**\\/*.{png,jpg,jpeg,gif,svg}`]\n */\n ignore: string[];\n\n /**\n * the relative path will be ignore related to process.cwd()\n * @alias -e\n * @default `public`\n */\n exclude: string;\n /**\n * the directory where the zip will save to\n * it's relative to process.cwd()\n * @alias -t\n * @default `packages`\n */\n to: string;\n}>;\n\nexport class PackCommand extends AbstractHandler<PackCommandArgs> {\n async handle() {\n return this.prepareZip();\n }\n\n private async prepareZip() {\n const fileFromCwd = join(process.cwd(), this.args.exclude);\n const allFiles = await fileWalk(this.args.filter, {\n cwd: fileFromCwd,\n ignore: this.args.ignore,\n });\n if (!allFiles.length) {\n this.logger.warn('No matched files found');\n } else {\n console.info(terminalColor(['green'])('✔ All ziped files'));\n allFiles.forEach((file) => {\n console.info(\n `${terminalColor(['cyan'])(' ➩ ')}${terminalColor(['magenta'])(\n relative(fileFromCwd, file)\n )}`\n );\n });\n console.info(' ');\n await this.toZip(allFiles, fileFromCwd);\n }\n }\n\n async toZip(allFiles: string[], fileFromCwd: string): Promise<void> {\n const cwdPkgJson = getPackageData({\n cwd: process.cwd(),\n });\n const fileFromTo = join(process.cwd(), this.args.to);\n const zipFileName = join(\n fileFromTo,\n `${(cwdPkgJson?.name || 'unknow').replace(/\\//g, '-')}-${Date.now()}.zip`\n );\n await zipFiles(allFiles, zipFileName, {\n relativePathTo: fileFromCwd,\n });\n }\n}\n"]}
{"version":3,"sources":["../src/bootstrap.ts","../src/info/define.ts","../src/info/handler.ts","../src/pack/define.ts","../src/pack/handler.ts"],"names":["dirname","join","fileURLToPath","getDirname","createCli","findParentDir","loadPlugins","updateNotifier","getPackageData","createCommand","platform","release","terminalColor","showBanner","AbstractHandler","osName","InfoCommandHandler","packageJson","dependencies","armitDependencies","dependency","key","_a","_b","sorted","dependencyA","dependencyB","length","name","infoCmd","relative","fileWalk","zipFiles","PackCommand","fileFromCwd","allFiles","file","cwdPkgJson","fileFromTo","zipFileName","packCmd","args","bootstrap","options","curDirName","externalPlugins","armitCli","plugin"],"mappings":"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","sourcesContent":["import { dirname, join } from 'node:path';\nimport { fileURLToPath } from 'node:url';\nimport type { CliOption } from '@armit/common';\nimport {\n getDirname,\n createCli,\n findParentDir,\n loadPlugins,\n updateNotifier,\n getPackageData,\n} from '@armit/common';\nimport { infoCmd } from './info/define.js';\nimport { packCmd } from './pack/define.js';\n\nexport const bootstrap = async (options?: Partial<CliOption>) => {\n // Read cli package json data.\n const packageJson = getPackageData({\n cwd: getDirname(import.meta.url),\n });\n\n if (packageJson) {\n // Check if newer cli version here.\n updateNotifier({\n pkg: {\n name: packageJson?.name || '',\n version: packageJson?.version || '',\n },\n });\n }\n\n // __dirname\n const curDirName = dirname(fileURLToPath(import.meta.url));\n\n // Load all available cli plugins\n const externalPlugins = await loadPlugins(\n [],\n ['@armit/cli-plugin-*/package.json', 'armit-cli-plugin-*/package.json'],\n [process.cwd(), join(findParentDir(curDirName, '@armit'), '../')]\n );\n\n // Register built-in commands.\n const armitCli = createCli({\n group: '@armit',\n packageJson,\n ...options,\n })\n .register(infoCmd)\n .register(packCmd);\n\n // Register external plugins.\n for (const { plugin } of externalPlugins) {\n if (plugin) {\n armitCli.register(plugin);\n }\n }\n return armitCli;\n};\n","import { createCommand } from '@armit/common';\nimport type { InfoCommandArgs } from './handler.js';\nimport { InfoCommandHandler } from './handler.js';\n\nexport const infoCmd = createCommand<InfoCommandArgs>(\n 'info',\n {\n command: 'info',\n describe: 'Display armit project details.',\n },\n InfoCommandHandler\n);\n","import { platform, release } from 'os';\nimport type { CommandArgv } from '@armit/common';\nimport {\n getPackageData,\n terminalColor,\n showBanner,\n AbstractHandler,\n} from '@armit/common';\nimport osName from 'os-name';\n\nexport type InfoCommandArgs = CommandArgv;\n\ninterface ProjectDependency {\n name: string;\n version: string;\n latestVersion?: string;\n}\n\nexport class InfoCommandHandler extends AbstractHandler<InfoCommandArgs> {\n async handle() {\n await showBanner(`armit`, {\n align: 'left',\n gradient: 'red,blue',\n letterSpacing: 3,\n });\n console.log(\n terminalColor(['magenta', 'bold'])(` CLI tool for armitjs applications`)\n );\n this.displaySystemInformation();\n }\n\n private displaySystemInformation() {\n console.info('');\n console.info(terminalColor(['green'])(' ✔ System Information'));\n console.info(\n ' OS Version :',\n terminalColor(['magenta'])(` ${osName(platform(), release())}`)\n );\n console.info(\n ' NodeJS Version :',\n terminalColor(['magenta'])(` ${process.version}`)\n );\n this.displayCliVersion();\n this.displayArmitInformation();\n }\n\n private displayArmitInformation() {\n console.info(terminalColor(['green'])(' ✔ armit Platform Information'));\n try {\n this.displayArmitVersions();\n } catch {\n console.error(\n terminalColor(['red'])(\n ` 😼 cannot read your project package.json file, are you inside your project directory?`\n )\n );\n }\n }\n\n private displayArmitVersions() {\n const packageJson = getPackageData({\n cwd: process.cwd(),\n });\n if (packageJson) {\n const dependencies: Record<string, unknown> = Object.assign(\n {},\n packageJson.dependencies,\n packageJson.devDependencies,\n packageJson.peerDependencies\n );\n const armitDependencies = this.collectNestDependencies(dependencies);\n this.dependencyformat(armitDependencies).forEach((dependency) =>\n console.info(\n ' ' + dependency.name,\n terminalColor(['magenta'])(`${dependency.version}`)\n )\n );\n console.info(' ');\n }\n }\n\n private collectNestDependencies(dependencies: Record<string, unknown>) {\n const armitDependencies: Array<ProjectDependency> = [];\n Object.keys(dependencies).forEach((key) => {\n if (key.includes('@armit')) {\n armitDependencies.push({\n name: `${key.replace(/@armit\\//, '')} ➞ version`,\n version: dependencies[key] as string,\n });\n }\n });\n return armitDependencies;\n }\n\n private displayCliVersion() {\n if (this.cliPackageJson) {\n console.info('');\n console.info(terminalColor(['green'])(' ✔ armit CLI'));\n console.info(\n ' armit CLI Version :',\n terminalColor(['magenta'])(`${this.cliPackageJson.version || ''}`),\n '\\n'\n );\n }\n }\n\n private dependencyformat(dependencies: ProjectDependency[]) {\n const sorted = dependencies.sort(\n (dependencyA, dependencyB) =>\n dependencyB.name.length - dependencyA.name.length\n );\n // Maybe dependencies is an empty array.\n const length = sorted[0]?.name?.length;\n sorted.forEach((dependency) => {\n if (dependency.name.length < length) {\n dependency.name = this.rightPad(dependency.name, length);\n }\n dependency.name = dependency.name.concat(' :');\n dependency.version = dependency.version.replace(/\\^|~/, '');\n });\n return sorted;\n }\n\n private rightPad(name: string, length: number) {\n while (name.length < length) {\n name = name.concat(' ');\n }\n return name;\n }\n}\n","import { createCommand } from '@armit/common';\nimport type { PackCommandArgs } from './handler.js';\nimport { PackCommand } from './handler.js';\n\nexport const packCmd = createCommand<PackCommandArgs>(\n 'pack',\n {\n command: 'pack',\n describe: 'Extract filtered files compress to zip file.',\n builder(args) {\n return args\n .example(\n `$0 pack -f=\"a;b;c\" -f=\"a\"`,\n 'Using `fast-glob` to filter files to zip'\n )\n .option('filter', {\n alias: 'f',\n type: 'array',\n default: ['**'],\n describe: 'Filter matched files that will be packed',\n })\n .option('ignore', {\n alias: 'i',\n type: 'array',\n default: ['**/*.{png,jpg,jpeg,gif,svg}'],\n describe: 'Ignore pattern will removed matched files from `filter`',\n })\n .option('basePath', {\n alias: 'b',\n type: 'string',\n default: 'public',\n describe: 'The path that will be ignored relative to `cwd()`',\n })\n .option('to', {\n alias: 't',\n type: 'string',\n default: 'packages',\n describe:\n 'The directory where zip file saved to, it relative to `cwd()`',\n });\n },\n },\n PackCommand\n);\n","import { join, relative } from 'path';\nimport type { CommandArgv } from '@armit/common';\nimport {\n terminalColor,\n fileWalk,\n getPackageData,\n zipFiles,\n AbstractHandler,\n} from '@armit/common';\n\nexport type PackCommandArgs = CommandArgv<{\n /**\n * the filter pattern using globby (fast-glob)\n * multiple pattern separated using `;`\n * @alias -f\n * @default [`**`]\n */\n filter: string[];\n\n /**\n * Reverse pattern will removed matched files from `filter`\n * @default [`**\\/*.{png,jpg,jpeg,gif,svg}`]\n */\n ignore: string[];\n\n /**\n * the base relative path will be ignore related to process.cwd()\n * @alias -e\n * @default `public`\n */\n basePath: string;\n\n /**\n * the directory where the zip will save to\n * it's relative to process.cwd()\n * @alias -t\n * @default `packages`\n */\n to: string;\n}>;\n\nexport class PackCommand extends AbstractHandler<PackCommandArgs> {\n async handle() {\n return this.prepareZip();\n }\n\n private async prepareZip() {\n const fileFromCwd = join(process.cwd(), this.args.basePath);\n const allFiles = await fileWalk(this.args.filter, {\n cwd: fileFromCwd,\n ignore: this.args.ignore,\n });\n if (!allFiles.length) {\n this.logger.warn('No matched files found');\n } else {\n console.info(terminalColor(['green'])('✔ All ziped files'));\n allFiles.forEach((file) => {\n console.info(\n `${terminalColor(['cyan'])(' ➩ ')}${terminalColor(['magenta'])(\n relative(fileFromCwd, file)\n )}`\n );\n });\n console.info(' ');\n await this.toZip(allFiles, fileFromCwd);\n }\n }\n\n async toZip(allFiles: string[], fileFromCwd: string): Promise<void> {\n const cwdPkgJson = getPackageData({\n cwd: process.cwd(),\n });\n const fileFromTo = join(process.cwd(), this.args.to);\n const zipFileName = join(\n fileFromTo,\n `${(cwdPkgJson?.name || 'unknow').replace(/\\//g, '-')}-${Date.now()}.zip`\n );\n await zipFiles(allFiles, zipFileName, {\n relativePathTo: fileFromCwd,\n });\n }\n}\n"]}
{
"name": "@armit/cli",
"version": "0.0.6",
"version": "0.0.7",
"homepage": "https://github.com/armitjs/armit",

@@ -47,3 +47,3 @@ "repository": {

"dependencies": {
"@armit/common": "^0.0.6",
"@armit/common": "^0.0.7",
"import-local": "3.1.0",

@@ -53,3 +53,3 @@ "os-name": "5.0.1"

"devDependencies": {
"@armit/eslint-config-bases": "^0.0.5",
"@armit/eslint-config-bases": "^0.0.6",
"@types/node": "18.11.3",

@@ -56,0 +56,0 @@ "eslint": "8.25.0",