7 Commits

Author SHA1 Message Date
github-actions[bot]
70886c28f0 chore(main): release 1.3.2 (#143)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-31 09:25:13 -05:00
Duro
53ca446a38 fix: make tsconfig work with comments/trailing commas (#142) 2024-07-31 18:24:04 +05:30
github-actions[bot]
dac05ab7ce chore(main): release 1.3.1 (#141)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-27 11:09:00 -05:00
Jacob Nguyen
2bb169f600 chore: release 1.3.1
Release-As: 1.3.1
2024-07-27 11:06:37 -05:00
Jacob Nguyen
89302d62c4 oops 2024-07-27 11:04:26 -05:00
github-actions[bot]
a63192ab10 chore(main): release 1.3.0 (#140)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-27 10:55:38 -05:00
Jacob Nguyen
20364fa20d feat: plugin, no prompt, bug fixes (#139)
* high hopes

* s

* plugin calling

* add

* eol

* more progress

* fmt

* step 1

* refactor out

* /internal route

* prg

* write handler

* consolidate

* fix version gen

* prototype

* out

* fix merge

* bundle presence and event modules

* extrapolate into plugin

* pluginify and simplify

* fix up typing gen for process env and watch mode

* watch

* add nonpromptable plugins install

* fix regression and clean up publish script

* ea
2024-07-27 10:45:53 -05:00
7 changed files with 86 additions and 15 deletions

View File

@@ -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
View File

@@ -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",

View File

@@ -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": {

View File

@@ -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' }`);

View File

@@ -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')

View File

@@ -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));
}

View 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;
}
};