feat(cli): auto-stage when nothing staged for g m/g l/g o; docs: update README
This commit is contained in:
@@ -0,0 +1,49 @@
|
||||
const { color } = require('./colors');
|
||||
|
||||
/**
|
||||
* Progress indicators and user feedback utilities
|
||||
*/
|
||||
class Progress {
|
||||
static spinner = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏'];
|
||||
static current = 0;
|
||||
static interval = null;
|
||||
|
||||
static start(message) {
|
||||
process.stdout.write(`${message} ${this.spinner[0]}`);
|
||||
this.interval = setInterval(() => {
|
||||
this.current = (this.current + 1) % this.spinner.length;
|
||||
process.stdout.write(`\r${message} ${this.spinner[this.current]}`);
|
||||
}, 100);
|
||||
}
|
||||
|
||||
static stop(finalMessage = '') {
|
||||
if (this.interval) {
|
||||
clearInterval(this.interval);
|
||||
this.interval = null;
|
||||
}
|
||||
process.stdout.write(`\r${finalMessage}\n`);
|
||||
}
|
||||
|
||||
static success(message) {
|
||||
console.log(`${color.green('✓')} ${message}`);
|
||||
}
|
||||
|
||||
static warning(message) {
|
||||
console.log(`${color.yellow('⚠')} ${message}`);
|
||||
}
|
||||
|
||||
static error(message) {
|
||||
console.log(`${color.red('✗')} ${message}`);
|
||||
}
|
||||
|
||||
static info(message) {
|
||||
console.log(`${color.cyan('ℹ')} ${message}`);
|
||||
}
|
||||
|
||||
static step(step, total, message) {
|
||||
const progress = `[${step}/${total}]`;
|
||||
console.log(`${color.dim(progress)} ${message}`);
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = { Progress };
|
||||
Reference in New Issue
Block a user