Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,142 changes: 630 additions & 512 deletions README.md

Large diffs are not rendered by default.

724 changes: 370 additions & 354 deletions package-lock.json

Large diffs are not rendered by default.

27 changes: 19 additions & 8 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
"scripts": {
"build": "tsc --noEmit && tsup",
"dev": "export $(grep -v '^#' .env.test | xargs) && (tsc --noEmit --watch --preserveWatchOutput & tsup --watch)",
"cli": "node dist/cli.js",
"cli": "export $(grep -v '^#' .env.test | xargs) && node dist/cli.js",
"lint": "eslint src test",
"lint:fix": "eslint src test --fix",
"format": "prettier --write \"src/**/*.ts\" \"test/**/*.ts\"",
Expand Down Expand Up @@ -76,35 +76,46 @@
[
"@semantic-release/commit-analyzer",
{
"preset": "conventionalcommits",
"releaseRules": [
{
"breaking": true,
"release": "major"
},
{
"type": "refactor",
"release": "patch"
}
]
}
],
"@semantic-release/release-notes-generator",
[
"@semantic-release/release-notes-generator",
{
"preset": "conventionalcommits"
}
],
"@semantic-release/github",
"@semantic-release/npm"
]
},
"dependencies": {
"@aws-sdk/credential-providers": "^3.1035.0",
"@aws-sdk/credential-providers": "^3.1038.0",
"@smithy/shared-ini-file-loader": "^4.4.9",
"@tigrisdata/iam": "^2.1.0",
"@tigrisdata/storage": "^3.2.0",
"@tigrisdata/iam": "^2.1.1",
"@tigrisdata/storage": "^3.6.0",
"commander": "^14.0.3",
"enquirer": "^2.4.1",
"jose": "^6.2.2",
"jose": "^6.2.3",
"open": "^11.0.0",
"yaml": "^2.8.3"
},
"devDependencies": {
"@commitlint/cli": "^20.5.0",
"@commitlint/cli": "^20.5.2",
"@commitlint/config-conventional": "^20.5.0",
"@eslint/js": "^10.0.1",
"@types/node": "^22.19.11",
"conventional-changelog-conventionalcommits": "^9.3.1",
"dotenv": "^17.4.2",
"eslint": "^10.2.1",
"eslint-plugin-simple-import-sort": "^13.0.0",
Expand All @@ -115,7 +126,7 @@
"tsup": "^8.5.1",
"tsx": "^4.21.0",
"typescript": "^5.9.3",
"typescript-eslint": "^8.59.0",
"typescript-eslint": "^8.59.1",
"vitest": "^4.1.5"
}
}
37 changes: 37 additions & 0 deletions renovate.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:recommended",
":semanticCommitTypeAll(chore)"
],
"timezone": "UTC",
"schedule": ["* 0-8 * * 1"],
"prConcurrentLimit": 5,
"prHourlyLimit": 2,
"labels": ["dependencies"],
"osvVulnerabilityAlerts": true,
"vulnerabilityAlerts": {
"schedule": ["at any time"]
},
"packageRules": [
{
"description": "Bundle all minor and patch updates (npm, GitHub Actions) into a single weekly PR",
"matchUpdateTypes": ["minor", "patch", "digest", "pin"],
"groupName": "non-major dependencies"
},
{
"description": "Major dependency updates: bundled, bi-weekly cadence (first and third Monday) with a 14-day staleness floor",
"matchUpdateTypes": ["major"],
"groupName": "major dependencies",
"minimumReleaseAge": "14 days",
"schedule": ["* 0-5 1-7,15-21 * 1"]
},
{
"description": "TypeScript and @types/node major updates: held 60 days post-release (~every 2 months)",
"matchPackageNames": ["typescript", "@types/node"],
"matchUpdateTypes": ["major"],
"groupName": "typescript and node types (major)",
"minimumReleaseAge": "60 days"
}
]
}
17 changes: 6 additions & 11 deletions scripts/generate-registry.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,21 +13,12 @@ import { existsSync, readFileSync, writeFileSync } from 'fs';
import { join } from 'path';
import * as YAML from 'yaml';

import type { CommandSpec, Specs } from '../src/types.js';

const ROOT = process.cwd();
const SPECS_PATH = join(ROOT, 'src/specs.yaml');
const OUTPUT_PATH = join(ROOT, 'src/command-registry.ts');

interface CommandSpec {
name: string;
alias?: string;
commands?: CommandSpec[];
default?: string;
}

interface Specs {
commands: CommandSpec[];
}

interface RegistryEntry {
key: string;
importName: string;
Expand Down Expand Up @@ -88,6 +79,10 @@ function collectEntries(
const entries: RegistryEntry[] = [];

for (const cmd of commands) {
// Removed commands have no implementation file by design — the
// cli-core intercepts them and prints a redirect message.
if (cmd.removed) continue;

const currentPath = [...parentPath, cmd.name];

if (cmd.commands && cmd.commands.length > 0) {
Expand Down
Loading