colorgen/colorgen.js

62 lines
1.6 KiB
JavaScript
Executable File

#!/usr/bin/env node
import { program } from 'commander';
import Colorgen from './src/Colorgen.js';
program.command('gen <color>')
.description('Generates multiple colors from a given color')
.option('-a, --amount <n>', 'Amount of darken', 12.5)
.option('-c, --complementary', 'Generate complementary colors instead of analogous')
.action((color, options) => {
const amount = options.amount;
const colorgen = new Colorgen(color);
colorgen.amount = amount;
if (options.complementary) {
complementary(colorgen.complementary())
} else {
analogous(colorgen.analogous());
}
});
program.parse(process.argv);
function _logColor(color, name) {
const { r, g, b } = color.toRgb()
console.log(`\x1b[48;2;${r};${g};${b}m ${color.toHexString()} \x1b[0m [${name.toUpperCase()}]`);
}
function _logColors(color, type = 'primary') {
_logColor(color.normal, type);
_logColor(color.dark, `dark ${type}`);
_logColor(color.darker, `dark ${type}`);
}
function analogous(colors) {
_logPrimary(colors.primary);
_logSecondary(colors.secondaries[0]);
_logSecondary(colors.secondaries[1]);
_logSecondary(colors.secondaries[2]);
_logSecondary(colors.secondaries[3]);
}
function complementary(colors) {
_logPrimary(colors.primary);
_logSecondary(colors.secondaries[0]);
}
function _logPrimary(color) {
_logColors(color);
_separator();
}
function _logSecondary(color) {
_logColors(color, 'secondary');
_separator();
}
function _separator() {
console.log('------------------------------');
}