mirror of
https://github.com/sern-handler/cli
synced 2026-06-06 09:26:52 +00:00
Compare commits
7 Commits
experiment
...
v1.3.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
70886c28f0 | ||
|
|
53ca446a38 | ||
|
|
dac05ab7ce | ||
|
|
2bb169f600 | ||
|
|
89302d62c4 | ||
|
|
a63192ab10 | ||
|
|
20364fa20d |
26
CHANGELOG.md
26
CHANGELOG.md
@@ -2,6 +2,32 @@
|
||||
|
||||
All notable changes to this project will be documented in this file.
|
||||
|
||||
## [1.3.2](https://github.com/sern-handler/cli/compare/v1.3.1...v1.3.2) (2024-07-31)
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* make tsconfig work with comments/trailing commas ([#142](https://github.com/sern-handler/cli/issues/142)) ([53ca446](https://github.com/sern-handler/cli/commit/53ca446a38076ed7b165dbbb41f346f028b7e394))
|
||||
|
||||
## [1.3.1](https://github.com/sern-handler/cli/compare/v1.3.0...v1.3.1) (2024-07-27)
|
||||
|
||||
|
||||
### Miscellaneous Chores
|
||||
|
||||
* release 1.3.1 ([2bb169f](https://github.com/sern-handler/cli/commit/2bb169f600172af8c8316b6c9420684a4de34e0d))
|
||||
|
||||
## [1.3.0](https://github.com/sern-handler/cli/compare/v1.2.1...v1.3.0) (2024-07-27)
|
||||
|
||||
|
||||
### Features
|
||||
|
||||
* plugin, no prompt, bug fixes ([#139](https://github.com/sern-handler/cli/issues/139)) ([20364fa](https://github.com/sern-handler/cli/commit/20364fa20d1f3bf70a1c0cfefbc1d6c9365a4925))
|
||||
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
* fix publish command for bun & pnpm ([#137](https://github.com/sern-handler/cli/issues/137)) ([d581142](https://github.com/sern-handler/cli/commit/d581142f082ed888036e58aa33e9d88d84d34c2f))
|
||||
|
||||
## [1.2.1](https://github.com/sern-handler/cli/compare/v1.2.0...v1.2.1) (2024-02-08)
|
||||
|
||||
|
||||
|
||||
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@sern/cli",
|
||||
"version": "1.2.1",
|
||||
"version": "1.3.2",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@sern/cli",
|
||||
"version": "1.2.1",
|
||||
"version": "1.3.2",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@esbuild-kit/cjs-loader": "^2.4.2",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@sern/cli",
|
||||
"version": "1.2.1",
|
||||
"version": "1.3.2",
|
||||
"description": "Official CLI for @sern/handler",
|
||||
"exports": "./dist/index.js",
|
||||
"bin": {
|
||||
|
||||
@@ -10,6 +10,7 @@ import { pathExists, pathExistsSync } from 'find-up';
|
||||
import { mkdir, writeFile, readFile } from 'fs/promises';
|
||||
import * as Preprocessor from '../utilities/preprocessor';
|
||||
import { bold, magentaBright } from 'colorette';
|
||||
import { parseTsConfig } from '../utilities/parseTsconfig';
|
||||
|
||||
const VALID_EXTENSIONS = ['.ts', '.js' ];
|
||||
|
||||
@@ -103,8 +104,8 @@ export async function build(options: Record<string, any>) {
|
||||
}
|
||||
assert(buildConfig.mode === 'development' || buildConfig.mode === 'production', 'Mode is not `production` or `development`');
|
||||
try {
|
||||
let config = JSON.parse(await readFile(buildConfig.tsconfig!, 'utf8'));
|
||||
config.extends && console.warn("Extend the generated tsconfig")
|
||||
let config = await parseTsConfig(buildConfig.tsconfig!);
|
||||
config?.extends && console.warn("Extend the generated tsconfig")
|
||||
} catch(e) {
|
||||
console.error("no tsconfig / jsconfig found");
|
||||
console.error(`Please create a ${sernConfig.language === 'javascript' ? 'jsconfig.json' : 'tsconfig.json' }`);
|
||||
|
||||
@@ -52,15 +52,6 @@ program //
|
||||
.option('-y, --yes', "Say yes to all prompts")
|
||||
.option('-e, --env [path]', "Supply a path to a .env")
|
||||
.action(async (...args) => importDynamic('command-clear.js').then((m) => m.commandClear(...args))));
|
||||
program
|
||||
.command('app')
|
||||
.description('manage your discord application')
|
||||
.addCommand(
|
||||
new Command('update')
|
||||
.description("Refresh your discord application.")
|
||||
.option('-W --suppress-warnings', 'suppress experimental warning')
|
||||
.action(async (...args) => importDynamic('app-update.js').then(m => m.appUpdate(...args))))
|
||||
|
||||
program
|
||||
.command('build')
|
||||
.description('Build your bot')
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { findUp } from 'find-up';
|
||||
import { readFile, rename, writeFile } from 'node:fs/promises';
|
||||
import { fromCwd } from './fromCwd.js';
|
||||
import { parseTsConfig } from './parseTsconfig.js';
|
||||
|
||||
/**
|
||||
* It takes a string, finds the package.json file in the directory of the string, and changes the name
|
||||
@@ -61,10 +62,12 @@ export async function editDirs(
|
||||
});
|
||||
|
||||
if (tsconfig) {
|
||||
const output = JSON.parse(await readFile(tsconfig, 'utf8'));
|
||||
const output = await parseTsConfig(tsconfig);
|
||||
if (!output) throw new Error("Can't read your tsconfig.json.");
|
||||
if (!output.compilerOptions) throw new Error("Can't find compilerOptions in your tsconfig.json.");
|
||||
output.compilerOptions.rootDir = srcName;
|
||||
|
||||
// This will strip comments/trailing commas from the tsconfig.json file
|
||||
await writeFile(tsconfig, JSON.stringify(output, null, 2));
|
||||
}
|
||||
|
||||
|
||||
50
src/utilities/parseTsconfig.ts
Normal file
50
src/utilities/parseTsconfig.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
import { resolve } from 'node:path';
|
||||
import { readFile } from 'node:fs/promises';
|
||||
|
||||
interface CompilerOptions {
|
||||
target: string;
|
||||
module: string;
|
||||
lib: string[];
|
||||
allowJs: boolean;
|
||||
checkJs: boolean;
|
||||
jsx: string;
|
||||
declaration: boolean;
|
||||
sourceMap: boolean;
|
||||
outDir: string;
|
||||
rootDir: string;
|
||||
strict: boolean;
|
||||
esModuleInterop: boolean;
|
||||
forceConsistentCasingInFileNames: boolean;
|
||||
noEmit: boolean;
|
||||
importHelpers: boolean;
|
||||
isolatedModules: boolean;
|
||||
moduleResolution: string;
|
||||
resolveJsonModule: boolean;
|
||||
noEmitHelpers: boolean;
|
||||
}
|
||||
|
||||
interface TsConfig {
|
||||
compilerOptions: CompilerOptions;
|
||||
files: string[];
|
||||
include: string[];
|
||||
exclude: string[];
|
||||
extends: string;
|
||||
}
|
||||
|
||||
const cleanJson = (json: string) =>
|
||||
json
|
||||
.replace(/\/\/.*$/gm, '')
|
||||
.replace(/\/\*[\s\S]*?\*\//gm, '')
|
||||
.replace(/,\s*([}\]])/g, '$1');
|
||||
|
||||
export const parseTsConfig = async (path: string) => {
|
||||
const absPath = resolve(path);
|
||||
const fileContent = await readFile(absPath, 'utf-8');
|
||||
const cleanContent = cleanJson(fileContent);
|
||||
|
||||
try {
|
||||
return JSON.parse(cleanContent) as Partial<TsConfig>;
|
||||
} catch (e) {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user