🔨 Make cli package distributable
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								cli/bun.lockb
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								cli/bun.lockb
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										0
									
								
								cli/index.ts
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							
							
						
						
									
										0
									
								
								cli/index.ts
									
									
									
									
									
										
										
										Normal file → Executable file
									
								
							| @@ -2,13 +2,26 @@ | ||||
|   "name": "roadsign-cli", | ||||
|   "module": "index.ts", | ||||
|   "type": "module", | ||||
|   "scripts": { | ||||
|     "build": "rimraf dist && rollup -c rollup.config.js" | ||||
|   }, | ||||
|   "bin": { | ||||
|     "rdcli": "./dist/index.cjs" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|     "@rollup/plugin-commonjs": "^28.0.0", | ||||
|     "@rollup/plugin-json": "^6.1.0", | ||||
|     "@rollup/plugin-node-resolve": "^15.3.0", | ||||
|     "@rollup/plugin-typescript": "^12.1.0", | ||||
|     "@types/bun": "latest", | ||||
|     "@types/cli-progress": "^3.11.6", | ||||
|     "@types/figlet": "^1.5.8" | ||||
|     "@types/figlet": "^1.5.8", | ||||
|     "rimraf": "^6.0.1", | ||||
|     "rollup": "^4.24.0", | ||||
|     "rollup-plugin-typescript2": "^0.36.0" | ||||
|   }, | ||||
|   "peerDependencies": { | ||||
|     "typescript": "^5.0.0" | ||||
|     "typescript": "^5.6.2" | ||||
|   }, | ||||
|   "dependencies": { | ||||
|     "chalk": "^5.3.0", | ||||
|   | ||||
							
								
								
									
										22
									
								
								cli/rollup.config.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										22
									
								
								cli/rollup.config.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,22 @@ | ||||
| import resolve from "@rollup/plugin-node-resolve" | ||||
| import commonjs from "@rollup/plugin-commonjs" | ||||
| import typescript from "@rollup/plugin-typescript" | ||||
| import json from "@rollup/plugin-json" | ||||
|  | ||||
| export default { | ||||
|   input: "index.ts", | ||||
|   output: { | ||||
|     banner: "#!/usr/bin/env node", | ||||
|     file: "dist/index.cjs", | ||||
|     format: "cjs", | ||||
|     inlineDynamicImports: true, | ||||
|   }, | ||||
|   plugins: [ | ||||
|     resolve(), | ||||
|     commonjs(), | ||||
|     json(), | ||||
|     typescript({ | ||||
|       tsconfig: "./tsconfig.json" | ||||
|     }) | ||||
|   ], | ||||
| } | ||||
| @@ -48,7 +48,7 @@ export class InfoCommand extends Command { | ||||
|         throw new Error(await res.text()) | ||||
|       } | ||||
|  | ||||
|       const data = await res.json() | ||||
|       const data: any = await res.json() | ||||
|       this.context.stdout.write('\n') | ||||
|       this.context.stdout.write(`\nServer stats of ${chalk.bold(this.label)}\n`) | ||||
|       this.context.stdout.write(` • Uptime: ${chalk.bold(InfoCommand.formatUptime(data["uptime"]))}\n`) | ||||
| @@ -75,7 +75,7 @@ export class InfoCommand extends Command { | ||||
|       throw new Error(await res.text()) | ||||
|     } | ||||
|  | ||||
|     const data = await res.json() | ||||
|     const data: any = await res.json() | ||||
|     for (const trace of data) { | ||||
|       const ts = new Date(trace["timestamp"]).toLocaleString() | ||||
|       const path = [trace["region"], trace["location"], trace["destination"]].join(" ➜ ") | ||||
| @@ -94,7 +94,7 @@ export class InfoCommand extends Command { | ||||
|       throw new Error(await res.text()) | ||||
|     } | ||||
|  | ||||
|     const data = await res.json() | ||||
|     const data: any = await res.json() | ||||
|     this.context.stdout.write("\n\n") | ||||
|     for (const region of data) { | ||||
|       this.context.stdout.write(` • ${chalk.bgGrey('region#')}${chalk.bold(region.id)} ${chalk.gray(`(${region.locations.length} locations)`)}\n`) | ||||
|   | ||||
| @@ -36,7 +36,7 @@ export class LoginCommand extends Command { | ||||
|       if (pingRes.status !== 200) { | ||||
|         throw new Error(await pingRes.text()) | ||||
|       } else { | ||||
|         const info = await pingRes.json() | ||||
|         const info: any = await pingRes.json() | ||||
|         spinner.succeed(`Connected to ${this.host}, remote version ${info["version"]}`) | ||||
|  | ||||
|         config.config.servers.push({ | ||||
|   | ||||
| @@ -57,7 +57,7 @@ export class ProcessCommand extends Command { | ||||
|  | ||||
|         const statusMapping = ["Created", "Starting", "Started", "Exited", "Failed"] | ||||
|  | ||||
|         const data = await res.json() | ||||
|         const data: any = await res.json() | ||||
|         for (const app of data) { | ||||
|           table.push([app["id"], statusMapping[app["status"]], app["command"].join(" ")]) | ||||
|         } | ||||
|   | ||||
| @@ -1,5 +1,5 @@ | ||||
| import * as path from "node:path" | ||||
| import * as fs from "node:fs/promises" | ||||
| import * as fs from "node:fs" | ||||
|  | ||||
| interface RsLocalConfigData { | ||||
|   sync?: RsLocalConfigSyncData | ||||
| @@ -42,18 +42,18 @@ class RsLocalConfig { | ||||
|   public async readConfig() { | ||||
|     const basepath = process.cwd() | ||||
|     const filepath = path.join(basepath, ".roadsignrc") | ||||
|     if (!await fs.exists(filepath)) { | ||||
|     if (!fs.existsSync(filepath)) { | ||||
|       throw new Error(`.roadsignrc file was not found at ${filepath}`) | ||||
|     } | ||||
|  | ||||
|     const data = await fs.readFile(filepath, "utf8") | ||||
|     const data = fs.readFileSync(filepath, "utf8") | ||||
|     this.config = JSON.parse(data) | ||||
|   } | ||||
|  | ||||
|   public async writeConfig() { | ||||
|     const basepath = process.cwd() | ||||
|     const filepath = path.join(basepath, ".roadsignrc") | ||||
|     await fs.writeFile(filepath, JSON.stringify(this.config)) | ||||
|     fs.writeFileSync(filepath, JSON.stringify(this.config)) | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,6 +1,6 @@ | ||||
| import * as os from "node:os" | ||||
| import * as path from "node:path" | ||||
| import * as fs from "node:fs/promises" | ||||
| import * as fs from "node:fs" | ||||
|  | ||||
| interface RsConfigData { | ||||
|   servers: RsConfigServerData[] | ||||
| @@ -33,18 +33,18 @@ class RsConfig { | ||||
|   public async readConfig() { | ||||
|     const basepath = os.homedir() | ||||
|     const filepath = path.join(basepath, ".roadsignrc") | ||||
|     if (!await fs.exists(filepath)) { | ||||
|       await fs.writeFile(filepath, JSON.stringify(this.config)) | ||||
|     if (!fs.existsSync(filepath)) { | ||||
|       fs.writeFileSync(filepath, JSON.stringify(this.config)) | ||||
|     } | ||||
|  | ||||
|     const data = await fs.readFile(filepath, "utf8") | ||||
|     const data = fs.readFileSync(filepath, "utf8") | ||||
|     this.config = JSON.parse(data) | ||||
|   } | ||||
|  | ||||
|   public async writeConfig() { | ||||
|     const basepath = os.homedir() | ||||
|     const filepath = path.join(basepath, ".roadsignrc") | ||||
|     await fs.writeFile(filepath, JSON.stringify(this.config)) | ||||
|     fs.writeFileSync(filepath, JSON.stringify(this.config)) | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -1,18 +1,17 @@ | ||||
| { | ||||
|   "compilerOptions": { | ||||
|     // Enable latest features | ||||
|     "lib": ["ESNext", "DOM"], | ||||
|     "lib": ["ESNext"], | ||||
|     "target": "ESNext", | ||||
|     "module": "ESNext", | ||||
|     "moduleDetection": "force", | ||||
|     "jsx": "react-jsx", | ||||
|     "module": "NodeNext", | ||||
|     "allowJs": true, | ||||
|  | ||||
|     // Bundler mode | ||||
|     "moduleResolution": "bundler", | ||||
|     "esModuleInterop": true, | ||||
|     "moduleResolution": "NodeNext", | ||||
|     "allowImportingTsExtensions": true, | ||||
|     "verbatimModuleSyntax": true, | ||||
|     "noEmit": true, | ||||
|     "resolveJsonModule": true, | ||||
|  | ||||
|     // Best practices | ||||
|     "strict": true, | ||||
| @@ -22,6 +21,7 @@ | ||||
|     // Some stricter flags (disabled by default) | ||||
|     "noUnusedLocals": false, | ||||
|     "noUnusedParameters": false, | ||||
|     "noPropertyAccessFromIndexSignature": false | ||||
|     "noPropertyAccessFromIndexSignature": false, | ||||
|     "useUnknownInCatchVariables": false, | ||||
|   } | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user