miridev-cli
Version:
Official CLI tool for deploying static sites to miri.dev - Deploy your websites in seconds
56 lines (46 loc) • 1.33 kB
JavaScript
const chalk = require('chalk');
const auth = require('../utils/auth');
/**
* Check if we're in an interactive environment
*/
function isInteractive() {
return process.stdin.isTTY && process.stdout.isTTY && !process.env.CI;
}
/**
* Wait for user input in a safe way
*/
function waitForEnter() {
return new Promise((resolve) => {
if (!isInteractive()) {
// Non-interactive environment, proceed immediately
resolve();
return;
}
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question('Press Enter to continue...', () => {
rl.close();
resolve();
});
});
}
/**
* Interactive login command following Supabase CLI model
*/
async function loginCommand() {
console.log('Hello from MiriDev! Press Enter to open browser and login automatically.');
try {
// Wait for user input only in interactive mode
await waitForEnter();
const result = await auth.loginWithInteractiveFlow();
console.log(`Token ${result.tokenName} created successfully.`);
console.log('\nYou are now logged in. Happy coding!');
} catch (error) {
console.log(chalk.red(`\n❌ Login failed: ${error.message}\n`));
process.exit(1);
}
}
module.exports = loginCommand;