wordlift-cli
Version:
WordLift CLI - Your AI SEO Assistant powered by Google Gemini. Agentic SEO workflows with Agent Skills support, WordLift MCP integration, knowledge graphs, and intelligent content optimization for modern content creators.
91 lines (74 loc) • 3.46 kB
JavaScript
#!/usr/bin/env node
/**
* WordLift CLI - Standalone version with embedded WordLift branding
* @license Apache-2.0
*/
const { spawn } = require('child_process');
const path = require('path');
const fs = require('fs');
const os = require('os');
// Get the directory where this script is located
const scriptDir = path.dirname(__filename);
const projectRoot = path.dirname(scriptDir);
// Set up environment variables
process.env.GEMINI_CONFIG_DIR = path.join(projectRoot, '.gemini');
// Function to patch Gemini CLI with WordLift branding
function patchGeminiCLI() {
const tempDir = os.tmpdir();
const patchedDir = path.join(tempDir, 'wordlift-gemini-cli');
if (!fs.existsSync(patchedDir)) {
fs.mkdirSync(patchedDir, { recursive: true });
// Create a patched version of the AsciiArt.js
const patchedAsciiArt = `/**
* @license
* Copyright 2025 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
export const shortAsciiLogo = \`
██ ██ ██████ ██████ ██████ ██ ██ ███████ ████████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ █ ██ ██ ██ ██████ ██ ██ ██ ██ █████ ██
██ ███ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
███ ███ ██████ ██ ██ ██████ ███████ ██ ██ ██
🚀 WordLift CLI - Your SEO Assistant
\`;
export const longAsciiLogo = \`
██ ██ ██████ ██████ ██████ ██ ██ ███████ ████████
██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
██ █ ██ ██ ██ ██████ ██ ██ ██ ██ █████ ██
██ ███ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
███ ███ ██████ ██ ██ ██████ ███████ ██ ██ ██
🚀 WordLift CLI - Your SEO Assistant
\`;
//# sourceMappingURL=AsciiArt.js.map`;
fs.writeFileSync(path.join(patchedDir, 'AsciiArt.js'), patchedAsciiArt);
}
return patchedDir;
}
// Prepare arguments - pass through all command line arguments
const args = process.argv.slice(2);
// Use npx to run Gemini CLI but with environment variable to override the ASCII art
const patchedDir = patchGeminiCLI();
process.env.NODE_PATH = patchedDir + ':' + (process.env.NODE_PATH || '');
// Spawn the Gemini CLI with WordLift configuration
const geminiProcess = spawn('npx', ['@google/gemini-cli', ...args], {
stdio: 'inherit',
cwd: projectRoot,
env: {
...process.env,
GEMINI_CONFIG_DIR: path.join(projectRoot, '.gemini'),
WORDLIFT_BRANDING: 'true'
}
});
geminiProcess.on('error', (error) => {
if (error.code === 'ENOENT') {
console.error('❌ Failed to start WordLift CLI. Please ensure Node.js is installed.');
console.error(' You can also try: npm install -g @google/gemini-cli');
} else {
console.error('❌ Error running WordLift CLI:', error.message);
}
process.exit(1);
});
geminiProcess.on('close', (code) => {
process.exit(code);
});