62 lines
1.6 KiB
JavaScript
Executable File
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('------------------------------');
|
|
}
|