Skip to content

Commit 34eb13c

Browse files
committed
add deprecation for rc + determine commandkit tag
1 parent 56a41ee commit 34eb13c

File tree

3 files changed

+70
-9
lines changed

3 files changed

+70
-9
lines changed

.github/workflows/publish-rc.yaml

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ jobs:
3636
3737
- name: Update package versions
3838
run: |
39-
rc_suffix="-rc${{ github.event.inputs.rc_version }}"
39+
rc_suffix="-rc.${{ github.event.inputs.rc_version }}"
4040
echo "Adding suffix: $rc_suffix"
4141
4242
for dir in packages/*; do
@@ -95,6 +95,38 @@ jobs:
9595
fi
9696
done
9797
98+
- name: Deprecate previous release candidate versions
99+
env:
100+
NODE_AUTH_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }}
101+
run: |
102+
PACKAGES=(
103+
"commandkit"
104+
"create-commandkit"
105+
"@commandkit/legacy"
106+
"@commandkit/redis"
107+
"@commandkit/i18n"
108+
"@commandkit/devtools"
109+
"@commandkit/cache"
110+
"@commandkit/analytics"
111+
"@commandkit/ai"
112+
"@commandkit/queue"
113+
"@commandkit/tasks"
114+
)
115+
116+
for pkg in "${PACKAGES[@]}"; do
117+
echo "Deprecating previous release candidate version of $pkg..."
118+
(
119+
ALL_VERSIONS=$(npm info "$pkg" versions -json)
120+
VERSION_TO_DEPRECATE=$(echo "$ALL_VERSIONS" | node -e "
121+
const versions = JSON.parse(require('fs').readFileSync('/dev/stdin', 'utf-8'));
122+
const rcVersions = versions.filter(v => v.includes('-rc.'));
123+
const versionToDeprecate = rcVersions[rcVersions.length - 2];
124+
console.log(versionToDeprecate);
125+
")
126+
[ -n "$VERSION_TO_DEPRECATE" ] && npm deprecate "$pkg@$VERSION_TO_DEPRECATE" "Deprecated release candidate version." && echo "✅ Deprecated $VERSION_TO_DEPRECATE"
127+
) || echo "⚠️ Skipped deprecation for $pkg (maybe not enough release candidate versions)"
128+
done
129+
98130
- name: Summary
99131
run: |
100132
echo "🎉 Release candidate build completed!"

packages/create-commandkit/src/functions/installDeps.ts

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,23 @@ import { type IOType, execSync } from 'node:child_process';
22
import ora from 'ora';
33

44
import type { Language, PackageManager } from '../types';
5+
import { getCommandKitVersion } from '../utils';
56

6-
const baseDependencies = [
7-
// TODO: use latest tag for CommandKit v1
8-
'commandkit@dev',
7+
const getBaseDependencies = () => [
8+
`commandkit${getCommandKitVersion()}`,
99
'discord.js',
1010
];
1111

12-
const dependencies = {
12+
const getDependencies = () => ({
1313
js: {
14-
dependencies: baseDependencies,
15-
devDependencies: ['@types/node', 'typescript', 'prettier'],
14+
dependencies: getBaseDependencies(),
15+
devDependencies: ['prettier'],
1616
},
1717
ts: {
18-
dependencies: baseDependencies,
18+
dependencies: getBaseDependencies(),
1919
devDependencies: ['@types/node', 'typescript', 'prettier'],
2020
},
21-
};
21+
});
2222

2323
interface InstallDepsProps {
2424
manager: PackageManager;
@@ -54,6 +54,8 @@ export function installDeps({
5454
const spinner = ora('Installing dependencies...').start();
5555

5656
try {
57+
const dependencies = getDependencies();
58+
5759
if (dependencies[lang].dependencies.length) {
5860
const depsCommand = getInstallCommand(
5961
manager,

packages/create-commandkit/src/utils.ts

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,6 @@
1+
import fs from 'fs-extra';
2+
import path from 'node:path';
3+
import { fileURLToPath } from 'node:url';
14
import type { PackageManager } from './types';
25

36
export const textColors = {
@@ -23,3 +26,27 @@ export function detectPackageManager(): PackageManager {
2326

2427
return 'npm';
2528
}
29+
30+
export function getCommandKitVersion(): string {
31+
try {
32+
const __filename = fileURLToPath(import.meta.url);
33+
const __dirname = path.dirname(__filename);
34+
35+
const packageJsonPath = path.resolve(__dirname, '..', 'package.json');
36+
const packageJson = fs.readJsonSync(packageJsonPath);
37+
const currentVersion = packageJson.version as string;
38+
39+
if (currentVersion.includes('dev.')) {
40+
return '@dev';
41+
} else if (currentVersion.includes('rc.')) {
42+
return '@next';
43+
} else {
44+
return '@latest';
45+
}
46+
} catch (error) {
47+
console.warn(
48+
'Could not determine create-commandkit version, defaulting to commandkit@latest',
49+
);
50+
return '@latest';
51+
}
52+
}

0 commit comments

Comments
 (0)