From 70e494691147cef0e0b9feec7ff25833751956ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hegyi=20=C3=81ron=20Ferenc?= Date: Tue, 23 Jan 2024 11:44:58 +0100 Subject: [PATCH] =?UTF-8?q?=F0=9F=92=8E=20feat:=20enhance=20cleanup=20logs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- TODO.md | 5 +++-- build.config.ts | 2 ++ package.json | 6 +++--- pnpm-lock.yaml | 14 ++++++++++---- src/commands/cleanup.ts | 34 +++++++++++++++++++--------------- src/commands/init.ts | 4 ++-- src/commands/run.ts | 2 +- src/utils/emoji.ts | 2 +- test/main.test.ts | 1 - 9 files changed, 41 insertions(+), 29 deletions(-) diff --git a/TODO.md b/TODO.md index 3db5412..fefd82f 100644 --- a/TODO.md +++ b/TODO.md @@ -10,8 +10,9 @@ - [ ] `conventional (boolean) [true]` - only allow conventional commits, this package should work without conventional commits as well - [ ] new option: `mode (overwrite|append) [append]` - overwrite or append the config (for both json and ts) (idea: if emoji prop is specified, overwrite, else use default + you can import the default emojis to append them) - [x] add `-v` alias for `--version` -- [ ] make the consola start and success logs sane in the cleanup command +- [x] make the consola start and success logs sane in the cleanup command +- [ ] investigate speed, prepare script for init - [ ] rewrite the bin files in typescript and also build them - [ ] refactor a lot! -- [ ] Generate the readme emoji table from `emojis.json` (jsonc for description? how to bundle jsonc?) +- [ ] Generate the readme emoji table from `emojis.json` (jsonc for description) - [ ] try astro and create a small website explaining which emoji to use and when, + stuff diff --git a/build.config.ts b/build.config.ts index 288d106..91d1f41 100644 --- a/build.config.ts +++ b/build.config.ts @@ -17,5 +17,7 @@ export default defineBuildConfig({ 'citty', 'cosmiconfig', 'lodash-es', + 'jsonc-parser', + '@cozy-console/mini', ], }) diff --git a/package.json b/package.json index 317c832..fdbdebb 100644 --- a/package.json +++ b/package.json @@ -16,7 +16,6 @@ "commit", "emoji" ], - "sideEffects": false, "exports": { ".": { "import": "./dist/index.mjs", @@ -42,7 +41,7 @@ "test": "vitest", "test:ui": "vitest --ui --coverage --api 9527", "lint": "eslint .", - "lint:fix": "pnpm run lint --fix", + "lint:fix": "eslint . --fix", "typecheck": "tsc --noEmit", "release": "bumpp && unbuild && pnpm publish", "postinstall": "node ./bin/postinstall.cjs", @@ -50,9 +49,11 @@ "prepare": "simple-git-hooks" }, "dependencies": { + "@cozy-console/mini": "^0.0.1", "citty": "^0.1.4", "consola": "^3.2.3", "cosmiconfig": "^8.3.6", + "jsonc-parser": "^3.2.0", "lodash-es": "^4.17.21" }, "devDependencies": { @@ -68,7 +69,6 @@ "simple-git-hooks": "^2.9.0", "typescript": "5.3.3", "unbuild": "^2.0.0", - "vite": "^5.0.2", "vitest": "^1.2.1" }, "simple-git-hooks": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e55516b..45c308a 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,6 +5,9 @@ settings: excludeLinksFromLockfile: false dependencies: + '@cozy-console/mini': + specifier: ^0.0.1 + version: 0.0.1 citty: specifier: ^0.1.4 version: 0.1.5 @@ -14,6 +17,9 @@ dependencies: cosmiconfig: specifier: ^8.3.6 version: 8.3.6(typescript@5.3.3) + jsonc-parser: + specifier: ^3.2.0 + version: 3.2.0 lodash-es: specifier: ^4.17.21 version: 4.17.21 @@ -55,9 +61,6 @@ devDependencies: unbuild: specifier: ^2.0.0 version: 2.0.0(typescript@5.3.3) - vite: - specifier: ^5.0.2 - version: 5.0.12(@types/node@20.11.5) vitest: specifier: ^1.2.1 version: 1.2.1(@types/node@20.11.5)(@vitest/ui@1.2.1) @@ -358,6 +361,10 @@ packages: to-fast-properties: 2.0.0 dev: true + /@cozy-console/mini@0.0.1: + resolution: {integrity: sha512-NqMvwdyNVV31tnsZDNhBx1bykEj4lcKd4C6F6QXRqzcmuEnZ9XJuEGRx1BUMdrrJzQhV0+Uijv/0fnp0qOTNAw==} + dev: false + /@es-joy/jsdoccomment@0.41.0: resolution: {integrity: sha512-aKUhyn1QI5Ksbqcr3fFJj16p99QdjUxXAEuFst1Z47DRyoiMwivIH9MV/ARcJOCXVjPfjITciej8ZD2O/6qUmw==} engines: {node: '>=16'} @@ -2999,7 +3006,6 @@ packages: /jsonc-parser@3.2.0: resolution: {integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==} - dev: true /jsonfile@6.1.0: resolution: {integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==} diff --git a/src/commands/cleanup.ts b/src/commands/cleanup.ts index 317dc99..2524f21 100644 --- a/src/commands/cleanup.ts +++ b/src/commands/cleanup.ts @@ -1,7 +1,8 @@ import * as fs from 'node:fs' import path from 'node:path' import { defineCommand } from 'citty' -import { consola } from 'consola' +import * as jsonc from 'jsonc-parser' +import { cozy as console } from '@cozy-console/mini' import { ConfigObject } from '../config' import { name } from '../../package.json' @@ -13,56 +14,59 @@ export default defineCommand({ description: 'Cleanup git hook and settings.json', }, async run() { - consola.start('Removing git hook...') + console.start('Removing git hook...') if (fs.existsSync(C.hookFile)) { fs.unlinkSync(C.hookFile) - consola.success(`Removed ${C.hookFile}`) + console.success(`Removed ${C.hookFile}`) } else { - consola.info(`No ${C.hookFile} found`) + console.info(`No ${C.hookFile} found`) } - consola.start('Removing VSCode settings...') + console.start('Removing VSCode settings...') if (fs.existsSync(C.vscodeSettingsFile)) { - const settings = JSON.parse(fs.readFileSync(C.vscodeSettingsFile, 'utf-8')) + const settings = jsonc.parse(fs.readFileSync(C.vscodeSettingsFile, 'utf-8')) + if (settings['json.schemas']) { settings['json.schemas'] = settings['json.schemas'].filter((schema: any) => { return schema.url !== `https://rettend.github.io/${name}/${name}-config-schema.json` + && schema.url !== `./json/${name}-config-schema.json` }) + if (settings['json.schemas'].length === 0) delete settings['json.schemas'] } + if (Object.keys(settings).length === 0) { fs.unlinkSync(C.vscodeSettingsFile) fs.rmdirSync(path.dirname(C.vscodeSettingsFile)) - consola.success(`Removed ${C.vscodeSettingsFile}`) + console.success(`Removed ${C.vscodeSettingsFile}`) } else { - fs.writeFileSync(C.vscodeSettingsFile, JSON.stringify(settings, null, 2)) - consola.info(`Updated ${C.vscodeSettingsFile}`) + fs.writeFileSync(C.vscodeSettingsFile, `${JSON.stringify(settings, null, 2)}\n`) + console.info(`Updated ${C.vscodeSettingsFile}`) } } else { - consola.info(`No ${C.vscodeSettingsFile} found`) + console.info(`No ${C.vscodeSettingsFile} found`) } - consola.start('Removing config files...') + console.start('Removing config files...') let removedFiles = false ;[...C.jsFiles, ...C.jsonFiles.filter(file => file !== 'package.json')].forEach((file: string) => { if (fs.existsSync(file)) { fs.unlinkSync(file) - consola.success(`Removed ${file}`) + console.success(`Removed ${file}`) removedFiles = true } }) if (!removedFiles) - consola.info('No config files found') + console.info('No config files found') - else - consola.success('Cleanup complete!') + console.success('\nCleanup complete!\n') }, }) diff --git a/src/commands/init.ts b/src/commands/init.ts index 880d144..ed75d47 100644 --- a/src/commands/init.ts +++ b/src/commands/init.ts @@ -4,8 +4,8 @@ import process from 'node:process' import { defineCommand } from 'citty' import { consola } from 'consola' import { name } from '../../package.json' -import type { ConfigType, JsFiles, JsonFiles } from './../config' -import { ConfigObject, configTypes } from './../config' +import type { ConfigType, JsFiles, JsonFiles } from '../config' +import { ConfigObject, configTypes } from '../config' const C = new ConfigObject() diff --git a/src/commands/run.ts b/src/commands/run.ts index e270c60..ad78b83 100644 --- a/src/commands/run.ts +++ b/src/commands/run.ts @@ -5,7 +5,7 @@ import { consola } from 'consola' import { cosmiconfig } from 'cosmiconfig' import { name } from '../../package.json' import { createExampleCommitMessage, eemojify, unemojify } from '../utils/emoji' -import { type Config, ConfigObject } from './../config' +import { type Config, ConfigObject } from '../config' const C = new ConfigObject() diff --git a/src/utils/emoji.ts b/src/utils/emoji.ts index aa222dd..a09c1e3 100644 --- a/src/utils/emoji.ts +++ b/src/utils/emoji.ts @@ -1,5 +1,5 @@ import { consola } from 'consola' -import type { Config } from './../config' +import type { Config } from '../config' /** * Formats a commit message with an emoji based on the type. diff --git a/test/main.test.ts b/test/main.test.ts index 1e60d6c..f95930a 100644 --- a/test/main.test.ts +++ b/test/main.test.ts @@ -1,4 +1,3 @@ -// import the function and the default config import { describe, expect, it } from 'vitest' import { eemojify, unemojify } from '../src/utils/emoji' import { type Config, ConfigObject } from '../src/config'