mirror of
https://github.com/SuperClaude-Org/SuperClaude_Framework.git
synced 2025-12-29 16:16:08 +00:00
🚀 Prepare for dual PyPI/NPM release v4.0
- Fix version consistency (PyPI: 4.0.0, NPM: 4.0.3) - Update license format to PEP 639 compliance - Restore NPM package components (bin/ and package.json) - Fix NPM package name to @superclaude-org/superclaude - Add comprehensive RELEASE_INSTRUCTIONS.md - Update .gitignore to include NPM files - Ready for production release on both PyPI and NPM Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
36
bin/checkEnv.js
Normal file
36
bin/checkEnv.js
Normal file
@@ -0,0 +1,36 @@
|
||||
const { spawnSync } = require("child_process");
|
||||
|
||||
function run(cmd, args = [], opts = {}) {
|
||||
return spawnSync(cmd, args, {
|
||||
stdio: opts.stdio || "pipe",
|
||||
shell: true
|
||||
});
|
||||
}
|
||||
|
||||
function checkCommand(cmd, args = ["--version"]) {
|
||||
const result = run(cmd, args);
|
||||
return result.status === 0;
|
||||
}
|
||||
|
||||
function detectPython() {
|
||||
const candidates = ["python3", "python", "py"];
|
||||
for (let c of candidates) {
|
||||
if (checkCommand(c)) return c;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function detectPip() {
|
||||
const candidates = ["pip3", "pip", "py -m pip"];
|
||||
for (let c of candidates) {
|
||||
if (checkCommand(c.split(" ")[0])) return c;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
function isSuperClaudeInstalled(pipCmd) {
|
||||
const result = run(pipCmd, ["show", "SuperClaude"]);
|
||||
return result.status === 0;
|
||||
}
|
||||
|
||||
module.exports = { run, detectPython, detectPip, isSuperClaudeInstalled };
|
||||
22
bin/cli.js
Normal file
22
bin/cli.js
Normal file
@@ -0,0 +1,22 @@
|
||||
#!/usr/bin/env node
|
||||
const { spawnSync } = require("child_process");
|
||||
const { detectPython, detectPip } = require("./checkEnv");
|
||||
|
||||
let pythonCmd = detectPython();
|
||||
if (!pythonCmd) {
|
||||
console.error("❌ Python 3 is required but not found.");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
const args = process.argv.slice(2);
|
||||
|
||||
// Special case: update command
|
||||
if (args[0] === "update") {
|
||||
require("./update");
|
||||
process.exit(0);
|
||||
}
|
||||
|
||||
// Forward everything to Python SuperClaude
|
||||
const result = spawnSync(pythonCmd, ["-m", "SuperClaude", ...args], { stdio: "inherit", shell: true });
|
||||
process.exit(result.status);
|
||||
|
||||
31
bin/install.js
Normal file
31
bin/install.js
Normal file
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/env node
|
||||
const { run, detectPython, detectPip, isSuperClaudeInstalled } = require("./checkEnv");
|
||||
|
||||
console.log("🔍 Checking environment...");
|
||||
|
||||
let pythonCmd = detectPython();
|
||||
if (!pythonCmd) {
|
||||
console.error("❌ Python 3 is required but not found.");
|
||||
process.exit(1);
|
||||
}
|
||||
console.log(`✅ Found Python: ${pythonCmd}`);
|
||||
|
||||
let pipCmd = detectPip();
|
||||
if (!pipCmd) {
|
||||
console.error("❌ pip is required but not found.");
|
||||
process.exit(1);
|
||||
}
|
||||
console.log(`✅ Found Pip: ${pipCmd}`);
|
||||
|
||||
// Check installation
|
||||
if (!isSuperClaudeInstalled(pipCmd)) {
|
||||
console.log("📦 Installing SuperClaude from PyPI...");
|
||||
const result = run(pipCmd, ["install", "SuperClaude"], { stdio: "inherit" });
|
||||
if (result.status !== 0) {
|
||||
console.error("❌ Installation failed.");
|
||||
process.exit(1);
|
||||
}
|
||||
console.log("✅ SuperClaude installed successfully!");
|
||||
} else {
|
||||
console.log("✅ SuperClaude already installed.");
|
||||
}
|
||||
17
bin/update.js
Normal file
17
bin/update.js
Normal file
@@ -0,0 +1,17 @@
|
||||
#!/usr/bin/env node
|
||||
const { run, detectPip } = require("./checkEnv");
|
||||
|
||||
let pipCmd = detectPip();
|
||||
if (!pipCmd) {
|
||||
console.error("❌ pip not found, cannot update.");
|
||||
process.exit(1);
|
||||
}
|
||||
|
||||
console.log("🔄 Updating SuperClaude from PyPI...");
|
||||
const result = run(pipCmd, ["install", "--upgrade", "SuperClaude"], { stdio: "inherit" });
|
||||
if (result.status !== 0) {
|
||||
console.error("❌ Update failed.");
|
||||
process.exit(1);
|
||||
}
|
||||
console.log("✅ SuperClaude updated successfully!");
|
||||
|
||||
Reference in New Issue
Block a user