@qodalis/cli-text-to-image 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/esm2022/lib/processors/cli-text-to-image-command-processor.mjs +25 -1
- package/esm2022/lib/version.mjs +3 -0
- package/fesm2022/qodalis-cli-text-to-image.mjs +26 -0
- package/fesm2022/qodalis-cli-text-to-image.mjs.map +1 -1
- package/lib/processors/cli-text-to-image-command-processor.d.ts +4 -1
- package/lib/version.d.ts +1 -0
- package/package.json +2 -2
- package/umd/index.js +126 -100
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
import { CliForegroundColor, DefaultLibraryAuthor, } from '@qodalis/cli-core';
|
|
2
|
+
import { LIBRARY_VERSION } from '../version';
|
|
2
3
|
export class CliTextToImageCommandProcessor {
|
|
3
4
|
constructor() {
|
|
4
5
|
this.command = 'text-to-image';
|
|
5
6
|
this.description = 'Convert text to image';
|
|
6
7
|
this.author = DefaultLibraryAuthor;
|
|
7
8
|
this.valueRequired = true;
|
|
9
|
+
this.metadata = {
|
|
10
|
+
icon: '🖼️',
|
|
11
|
+
};
|
|
8
12
|
this.parameters = [
|
|
9
13
|
{
|
|
10
14
|
name: 'fileName',
|
|
@@ -44,6 +48,7 @@ export class CliTextToImageCommandProcessor {
|
|
|
44
48
|
},
|
|
45
49
|
];
|
|
46
50
|
this.allowUnlistedCommands = true;
|
|
51
|
+
this.version = LIBRARY_VERSION;
|
|
47
52
|
}
|
|
48
53
|
async processCommand(command, context) {
|
|
49
54
|
const text = command.value || '';
|
|
@@ -90,5 +95,24 @@ export class CliTextToImageCommandProcessor {
|
|
|
90
95
|
context.writer.writeInfo(`- ${context.writer.wrapInColor('Font', CliForegroundColor.Yellow)}: ${ctx.font}`);
|
|
91
96
|
context.writer.writeSuccess('Image created successfully');
|
|
92
97
|
}
|
|
98
|
+
writeDescription(context) {
|
|
99
|
+
const { writer } = context;
|
|
100
|
+
writer.writeln('Convert text into a downloadable PNG image');
|
|
101
|
+
writer.writeln();
|
|
102
|
+
writer.writeln('📋 Usage:');
|
|
103
|
+
writer.writeln(` ${writer.wrapInColor('text-to-image <text> [options]', CliForegroundColor.Cyan)}`);
|
|
104
|
+
writer.writeln();
|
|
105
|
+
writer.writeln('⚙️ Options:');
|
|
106
|
+
writer.writeln(` ${writer.wrapInColor('--width', CliForegroundColor.Yellow)} Image width (default: window width)`);
|
|
107
|
+
writer.writeln(` ${writer.wrapInColor('--height', CliForegroundColor.Yellow)} Image height (default: window height)`);
|
|
108
|
+
writer.writeln(` ${writer.wrapInColor('--bgColor', CliForegroundColor.Yellow)} Background color in hex (default: #ffffff)`);
|
|
109
|
+
writer.writeln(` ${writer.wrapInColor('--textColor', CliForegroundColor.Yellow)} Text color in hex (default: #000000)`);
|
|
110
|
+
writer.writeln(` ${writer.wrapInColor('--font', CliForegroundColor.Yellow)} Font style (default: 30px Arial)`);
|
|
111
|
+
writer.writeln(` ${writer.wrapInColor('--fileName', CliForegroundColor.Yellow)} Output filename (default: text-image.png)`);
|
|
112
|
+
writer.writeln();
|
|
113
|
+
writer.writeln('📝 Examples:');
|
|
114
|
+
writer.writeln(` text-to-image "Hello World" ${writer.wrapInColor('# Basic', CliForegroundColor.Green)}`);
|
|
115
|
+
writer.writeln(` text-to-image "Banner" --bgColor=#1a1a2e --textColor=#e0e0e0 ${writer.wrapInColor('# Custom colors', CliForegroundColor.Green)}`);
|
|
116
|
+
}
|
|
93
117
|
}
|
|
94
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLXRleHQtdG8taW1hZ2UtY29tbWFuZC1wcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZXh0LXRvLWltYWdlL3NyYy9saWIvcHJvY2Vzc29ycy9jbGktdGV4dC10by1pbWFnZS1jb21tYW5kLXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsa0JBQWtCLEVBRWxCLG9CQUFvQixHQUl2QixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE1BQU0sT0FBTyw4QkFBOEI7SUE4Q3ZDO1FBN0NBLFlBQU8sR0FBRyxlQUFlLENBQUM7UUFDMUIsZ0JBQVcsR0FBRyx1QkFBdUIsQ0FBQztRQUN0QyxXQUFNLEdBQUcsb0JBQW9CLENBQUM7UUFDOUIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsZUFBVSxHQUFrRDtZQUN4RDtnQkFDSSxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsV0FBVyxFQUFFLGtCQUFrQjtnQkFDL0IsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsUUFBUSxFQUFFLEtBQUs7YUFDbEI7WUFDRDtnQkFDSSxJQUFJLEVBQUUsT0FBTztnQkFDYixXQUFXLEVBQUUsb0JBQW9CO2dCQUNqQyxJQUFJLEVBQUUsU0FBUztnQkFDZixRQUFRLEVBQUUsS0FBSzthQUNsQjtZQUNEO2dCQUNJLElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSxxQkFBcUI7Z0JBQ2xDLElBQUksRUFBRSxTQUFTO2dCQUNmLFFBQVEsRUFBRSxLQUFLO2FBQ2xCO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsV0FBVyxFQUFFLDhDQUE4QztnQkFDM0QsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsUUFBUSxFQUFFLEtBQUs7YUFDbEI7WUFDRDtnQkFDSSxJQUFJLEVBQUUsV0FBVztnQkFDakIsV0FBVyxFQUFFLHdDQUF3QztnQkFDckQsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsUUFB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RixPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2xpRm9yZWdyb3VuZENvbG9yLFxuICAgIENsaVByb2Nlc3NDb21tYW5kLFxuICAgIERlZmF1bHRMaWJyYXJ5QXV0aG9yLFxuICAgIElDbGlDb21tYW5kUGFyYW1ldGVyRGVzY3JpcHRvcixcbiAgICBJQ2xpQ29tbWFuZFByb2Nlc3NvcixcbiAgICBJQ2xpRXhlY3V0aW9uQ29udGV4dCxcbn0gZnJvbSAnQHFvZGFsaXMvY2xpLWNvcmUnO1xuXG5leHBvcnQgY2xhc3MgQ2xpVGV4dFRvSW1hZ2VDb21tYW5kUHJvY2Vzc29yIGltcGxlbWVudHMgSUNsaUNvbW1hbmRQcm9jZXNzb3Ige1xuICAgIGNvbW1hbmQgPSAndGV4dC10by1pbWFnZSc7XG4gICAgZGVzY3JpcHRpb24gPSAnQ29udmVydCB0ZXh0IHRvIGltYWdlJztcbiAgICBhdXRob3IgPSBEZWZhdWx0TGlicmFyeUF1dGhvcjtcbiAgICB2YWx1ZVJlcXVpcmVkID0gdHJ1ZTtcbiAgICBwYXJhbWV0ZXJzPzogSUNsaUNvbW1hbmRQYXJhbWV0ZXJEZXNjcmlwdG9yW10gfCB1bmRlZmluZWQgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdmaWxlTmFtZScsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIGZpbGUnLFxuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICd3aWR0aCcsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1dpZHRoIG9mIHRoZSBpbWFnZScsXG4gICAgICAgICAgICB0eXBlOiAnaW50ZWdlcicsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdoZWlnaHQnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdIZWlnaHQgb2YgdGhlIGltYWdlJyxcbiAgICAgICAgICAgIHR5cGU6ICdpbnRlZ2VyJyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2JnQ29sb3InLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBpbWFnZSwgaW4gaGV4IGZvcm1hdCcsXG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3RleHRDb2xvcicsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RleHQgY29sb3Igb2YgdGhlIGltYWdlLCBpbiBoZXggZm9ybWF0JyxcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnZm9udCcsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0ZvbnQgc3R5bGUgYW5kIHNpemUnLFxuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgXTtcblxuICAgIGFsbG93VW5saXN0ZWRDb21tYW5kcyA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBhc3luYyBwcm9jZXNzQ29tbWFuZChcbiAgICAgICAgY29tbWFuZDogQ2xpUHJvY2Vzc0NvbW1hbmQsXG4gICAgICAgIGNvbnRleHQ6IElDbGlFeGVjdXRpb25Db250ZXh0LFxuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB0ZXh0ID0gY29tbWFuZC52YWx1ZSB8fCAnJztcbiAgICAgICAgY29uc3Qgd2lkdGggPSBjb21tYW5kLmFyZ3NbJ3dpZHRoJ10gPz8gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IGNvbW1hbmQuYXJnc1snaGVpZ2h0J10gPz8gd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICBjb25zdCBmaWxlbmFtZSA9IGNvbW1hbmQuYXJnc1snZmlsZU5hbWUnXSA/PyAndGV4dC1pbWFnZS5wbmcnO1xuXG4gICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICBjYW52YXMud2lkdGggPSB3aWR0aDtcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG5cbiAgICAgICAgaWYgKCFjdHgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBnZXQgY2FudmFzIGNvbnRleHQnKTtcbiAgICAgICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlRXJyb3IoJ0ZhaWxlZCB0byBnZXQgY2FudmFzIGNvbnRleHQnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldCBiYWNrZ3JvdW5kIGNvbG9yXG4gICAgICAgIGN0eC5maWxsU3R5bGUgPSBjb21tYW5kLmFyZ3NbJ2JnQ29sb3InXSB8fCAnI2ZmZmZmZic7IC8vIFdoaXRlIGJhY2tncm91bmRcbiAgICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgICAgIC8vIFNldCB0ZXh0IHByb3BlcnRpZXNcbiAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGNvbW1hbmQuYXJnc1sndGV4dENvbG9yJ10gfHwgJyMwMDAwMDAnOyAvLyBCbGFjayB0ZXh0XG4gICAgICAgIGN0eC5mb250ID0gY29tbWFuZC5hcmdzWydmb250J10gfHwgJzMwcHggQXJpYWwnOyAvLyBGb250IHN0eWxlIGFuZCBzaXplXG4gICAgICAgIGN0eC50ZXh0QWxpZ24gPSAnY2VudGVyJztcbiAgICAgICAgY3R4LnRleHRCYXNlbGluZSA9ICdtaWRkbGUnO1xuXG4gICAgICAgIC8vIFJlbmRlciB0ZXh0XG4gICAgICAgIGNvbnN0IHggPSB3aWR0aCAvIDI7XG4gICAgICAgIGNvbnN0IHkgPSBoZWlnaHQgLyAyO1xuICAgICAgICBjdHguZmlsbFRleHQodGV4dCwgeCwgeSk7XG5cbiAgICAgICAgLy8gQ29udmVydCBjYW52YXMgdG8gZGF0YSBVUkxcbiAgICAgICAgY29uc3QgZGF0YVVybCA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBhIGxpbmsgZWxlbWVudCB0byB0cmlnZ2VyIGRvd25sb2FkXG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGxpbmsuaHJlZiA9IGRhdGFVcmw7XG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlbmFtZTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xuICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUluZm8oJ09wdGlvbnM6ICcpO1xuICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUluZm8oXG4gICAgICAgICAgICBgLSAke2NvbnRleHQud3JpdGVyLndyYXBJbkNvbG9yKCdUZXh0JywgQ2xpRm9yZWdyb3VuZENvbG9yLlllbGxvdyl9OiAke3RleHR9YCxcbiAgICAgICAgKTtcbiAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVJbmZvKFxuICAgICAgICAgICAgYC0gJHtjb250ZXh0LndyaXRlci53cmFwSW5Db2xvcignV2lkdGgnLCBDbGlGb3JlZ3JvdW5kQ29sb3IuWWVsbG93KX06ICR7d2lkdGh9YCxcbiAgICAgICAgKTtcbiAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVJbmZvKFxuICAgICAgICAgICAgYC0gJHtjb250ZXh0LndyaXRlci53cmFwSW5Db2xvcignSGVpZ2h0JywgQ2xpRm9yZWdyb3VuZENvbG9yLlllbGxvdyl9OiAke2hlaWdodH1gLFxuICAgICAgICApO1xuICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUluZm8oXG4gICAgICAgICAgICBgLSAke2NvbnRleHQud3JpdGVyLndyYXBJbkNvbG9yKCdGaWxlbmFtZScsIENsaUZvcmVncm91bmRDb2xvci5ZZWxsb3cpfTogJHtmaWxlbmFtZX1gLFxuICAgICAgICApO1xuICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUluZm8oXG4gICAgICAgICAgICBgLSAke2NvbnRleHQud3JpdGVyLndyYXBJbkNvbG9yKCdCYWNrZ3JvdW5kIGNvbG9yJywgQ2xpRm9yZWdyb3VuZENvbG9yLlllbGxvdyl9OiAke2N0eC5maWxsU3R5bGV9YCxcbiAgICAgICAgKTtcbiAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVJbmZvKFxuICAgICAgICAgICAgYC0gJHtjb250ZXh0LndyaXRlci53cmFwSW5Db2xvcignVGV4dCBjb2xvcicsIENsaUZvcmVncm91bmRDb2xvci5ZZWxsb3cpfTogJHtjdHguZmlsbFN0eWxlfWAsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlSW5mbyhcbiAgICAgICAgICAgIGAtICR7Y29udGV4dC53cml0ZXIud3JhcEluQ29sb3IoJ0ZvbnQnLCBDbGlGb3JlZ3JvdW5kQ29sb3IuWWVsbG93KX06ICR7Y3R4LmZvbnR9YCxcbiAgICAgICAgKTtcblxuICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZVN1Y2Nlc3MoJ0ltYWdlIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgfVxufVxuIl19
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLXRleHQtdG8taW1hZ2UtY29tbWFuZC1wcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZXh0LXRvLWltYWdlL3NyYy9saWIvcHJvY2Vzc29ycy9jbGktdGV4dC10by1pbWFnZS1jb21tYW5kLXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsa0JBQWtCLEVBR2xCLG9CQUFvQixHQUl2QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFN0MsTUFBTSxPQUFPLDhCQUE4QjtJQXFEdkM7UUFwREEsWUFBTyxHQUFHLGVBQWUsQ0FBQztRQUMxQixnQkFBVyxHQUFHLHVCQUF1QixDQUFDO1FBQ3RDLFdBQU0sR0FBRyxvQkFBb0IsQ0FBQztRQUM5QixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUVyQixhQUFRLEdBQXNDO1lBQzFDLElBQUksRUFBRSxLQUFLO1NBQ2QsQ0FBQztRQUVGLGVBQVUsR0FBa0Q7WUFDeEQ7Z0JBQ0ksSUFBSSxFQUFFLFVBQVU7Z0JBQ2hCLFdBQVcsRUFBRSxrQkFBa0I7Z0JBQy9CLElBQUksRUFBRSxRQUFRO2dCQUNkLFFBQVEsRUFBRSxLQUFLO2FBQ2xCO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLE9BQU87Z0JBQ2IsV0FBVyxFQUFFLG9CQUFvQjtnQkFDakMsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsUUFBUSxFQUFFLEtBQUs7YUFDbEI7WUFDRDtnQkFDSSxJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUscUJBQXFCO2dCQUNsQyxJQUFJLEVBQUUsU0FBUztnQkFDZixRQUFRLEVBQUUsS0FBSzthQUNsQjtZQUNEO2dCQUNJLElBQUksRUFBRSxTQUFTO2dCQUNmLFdBQVcsRUFBRSw4Q0FBOEM7Z0JBQzNELElBQUksRUFBRSxRQUFRO2dCQUNkLFFBQVEsRUFBRSxLQUFL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QU0sQ0FBQyw0Q0FBNEMsQ0FBQyxDQUFDO1FBQzlILE1BQU0sQ0FBQyxPQUFPLENBQUMsS0FBSyxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQVEsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsNkNBQTZDLENBQUMsQ0FBQztRQUMxSCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssTUFBTSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxDQUFDLGtEQUFrRCxDQUFDLENBQUM7UUFDbkksTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLE1BQU0sQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDL0IsTUFBTSxDQUFDLE9BQU8sQ0FBQyxzRUFBc0UsTUFBTSxDQUFDLFdBQVcsQ0FBQyxTQUFTLEVBQUUsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQ2hKLE1BQU0sQ0FBQyxPQUFPLENBQUMsc0VBQXNFLE1BQU0sQ0FBQyxXQUFXLENBQUMsaUJBQWlCLEVBQUUsa0JBQWtCLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQzVKLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2xpRm9yZWdyb3VuZENvbG9yLFxuICAgIENsaVByb2Nlc3NDb21tYW5kLFxuICAgIENsaVByb2Nlc3Nvck1ldGFkYXRhLFxuICAgIERlZmF1bHRMaWJyYXJ5QXV0aG9yLFxuICAgIElDbGlDb21tYW5kUGFyYW1ldGVyRGVzY3JpcHRvcixcbiAgICBJQ2xpQ29tbWFuZFByb2Nlc3NvcixcbiAgICBJQ2xpRXhlY3V0aW9uQ29udGV4dCxcbn0gZnJvbSAnQHFvZGFsaXMvY2xpLWNvcmUnO1xuaW1wb3J0IHsgTElCUkFSWV9WRVJTSU9OIH0gZnJvbSAnLi4vdmVyc2lvbic7XG5cbmV4cG9ydCBjbGFzcyBDbGlUZXh0VG9JbWFnZUNvbW1hbmRQcm9jZXNzb3IgaW1wbGVtZW50cyBJQ2xpQ29tbWFuZFByb2Nlc3NvciB7XG4gICAgY29tbWFuZCA9ICd0ZXh0LXRvLWltYWdlJztcbiAgICBkZXNjcmlwdGlvbiA9ICdDb252ZXJ0IHRleHQgdG8gaW1hZ2UnO1xuICAgIGF1dGhvciA9IERlZmF1bHRMaWJyYXJ5QXV0aG9yO1xuICAgIHZhbHVlUmVxdWlyZWQgPSB0cnVlO1xuXG4gICAgbWV0YWRhdGE/OiBDbGlQcm9jZXNzb3JNZXRhZGF0YSB8IHVuZGVmaW5lZCA9IHtcbiAgICAgICAgaWNvbjogJ/CflrzvuI8nLFxuICAgIH07XG5cbiAgICBwYXJhbWV0ZXJzPzogSUNsaUNvbW1hbmRQYXJhbWV0ZXJEZXNjcmlwdG9yW10gfCB1bmRlZmluZWQgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdmaWxlTmFtZScsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIGZpbGUnLFxuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICd3aWR0aCcsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1dpZHRoIG9mIHRoZSBpbWFnZScsXG4gICAgICAgICAgICB0eXBlOiAnaW50ZWdlcicsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdoZWlnaHQnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdIZWlnaHQgb2YgdGhlIGltYWdlJyxcbiAgICAgICAgICAgIHR5cGU6ICdpbnRlZ2VyJyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2JnQ29sb3InLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBpbWFnZSwgaW4gaGV4IGZvcm1hdCcsXG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3RleHRDb2xvcicsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RleHQgY29sb3Igb2YgdGhlIGltYWdlLCBpbiBoZXggZm9ybWF0JyxcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnZm9udCcsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0ZvbnQgc3R5bGUgYW5kIHNpemUnLFxuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgXTtcblxuICAgIGFsbG93VW5saXN0ZWRDb21tYW5kcyA9IHRydWU7XG5cbiAgICB2ZXJzaW9uID0gTElCUkFSWV9WRVJTSU9OO1xuXG4gICAgY29uc3RydWN0b3IoKSB7fVxuXG4gICAgYXN5bmMgcHJvY2Vzc0NvbW1hbmQoXG4gICAgICAgIGNvbW1hbmQ6IENsaVByb2Nlc3NDb21tYW5kLFxuICAgICAgICBjb250ZXh0OiBJQ2xpRXhlY3V0aW9uQ29udGV4dCxcbiAgICApOiBQcm9taXNlPHZvaWQ+IHtcbiAgICAgICAgY29uc3QgdGV4dCA9IGNvbW1hbmQudmFsdWUgfHwgJyc7XG4gICAgICAgIGNvbnN0IHdpZHRoID0gY29tbWFuZC5hcmdzWyd3aWR0aCddID8/IHdpbmRvdy5pbm5lcldpZHRoO1xuICAgICAgICBjb25zdCBoZWlnaHQgPSBjb21tYW5kLmFyZ3NbJ2hlaWdodCddID8/IHdpbmRvdy5pbm5lckhlaWdodDtcbiAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBjb21tYW5kLmFyZ3NbJ2ZpbGVOYW1lJ10gPz8gJ3RleHQtaW1hZ2UucG5nJztcblxuICAgICAgICBjb25zdCBjYW52YXMgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdjYW52YXMnKTtcbiAgICAgICAgY2FudmFzLndpZHRoID0gd2lkdGg7XG4gICAgICAgIGNhbnZhcy5oZWlnaHQgPSBoZWlnaHQ7XG4gICAgICAgIGNvbnN0IGN0eCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpO1xuXG4gICAgICAgIGlmICghY3R4KSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZ2V0IGNhbnZhcyBjb250ZXh0Jyk7XG4gICAgICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUVycm9yKCdGYWlsZWQgdG8gZ2V0IGNhbnZhcyBjb250ZXh0Jyk7XG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZXQgYmFja2dyb3VuZCBjb2xvclxuICAgICAgICBjdHguZmlsbFN0eWxlID0gY29tbWFuZC5hcmdzWydiZ0NvbG9yJ10gfHwgJyNmZmZmZmYnOyAvLyBXaGl0ZSBiYWNrZ3JvdW5kXG4gICAgICAgIGN0eC5maWxsUmVjdCgwLCAwLCB3aWR0aCwgaGVpZ2h0KTtcblxuICAgICAgICAvLyBTZXQgdGV4dCBwcm9wZXJ0aWVzXG4gICAgICAgIGN0eC5maWxsU3R5bGUgPSBjb21tYW5kLmFyZ3NbJ3RleHRDb2xvciddIHx8ICcjMDAwMDAwJzsgLy8gQmxhY2sgdGV4dFxuICAgICAgICBjdHguZm9udCA9IGNvbW1hbmQuYXJnc1snZm9udCddIHx8ICczMHB4IEFyaWFsJzsgLy8gRm9udCBzdHlsZSBhbmQgc2l6ZVxuICAgICAgICBjdHgudGV4dEFsaWduID0gJ2NlbnRlcic7XG4gICAgICAgIGN0eC50ZXh0QmFzZWxpbmUgPSAnbWlkZGxlJztcblxuICAgICAgICAvLyBSZW5kZXIgdGV4dFxuICAgICAgICBjb25zdCB4ID0gd2lkdGggLyAyO1xuICAgICAgICBjb25zdCB5ID0gaGVpZ2h0IC8gMjtcbiAgICAgICAgY3R4LmZpbGxUZXh0KHRleHQsIHgsIHkpO1xuXG4gICAgICAgIC8vIENvbnZlcnQgY2FudmFzIHRvIGRhdGEgVVJMXG4gICAgICAgIGNvbnN0IGRhdGFVcmwgPSBjYW52YXMudG9EYXRhVVJMKCdpbWFnZS9wbmcnKTtcblxuICAgICAgICAvLyBDcmVhdGUgYSBsaW5rIGVsZW1lbnQgdG8gdHJpZ2dlciBkb3dubG9hZFxuICAgICAgICBjb25zdCBsaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICAgICAgICBsaW5rLmhyZWYgPSBkYXRhVXJsO1xuICAgICAgICBsaW5rLmRvd25sb2FkID0gZmlsZW5hbWU7XG4gICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobGluayk7XG4gICAgICAgIGxpbmsuY2xpY2soKTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChsaW5rKTtcbiAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVJbmZvKCdPcHRpb25zOiAnKTtcbiAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVJbmZvKFxuICAgICAgICAgICAgYC0gJHtjb250ZXh0LndyaXRlci53cmFwSW5Db2xvcignVGV4dCcsIENsaUZvcmVncm91bmRDb2xvci5ZZWxsb3cpfTogJHt0ZXh0fWAsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlSW5mbyhcbiAgICAgICAgICAgIGAtICR7Y29udGV4dC53cml0ZXIud3JhcEluQ29sb3IoJ1dpZHRoJywgQ2xpRm9yZWdyb3VuZENvbG9yLlllbGxvdyl9OiAke3dpZHRofWAsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlSW5mbyhcbiAgICAgICAgICAgIGAtICR7Y29udGV4dC53cml0ZXIud3JhcEluQ29sb3IoJ0hlaWdodCcsIENsaUZvcmVncm91bmRDb2xvci5ZZWxsb3cpfTogJHtoZWlnaHR9YCxcbiAgICAgICAgKTtcbiAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVJbmZvKFxuICAgICAgICAgICAgYC0gJHtjb250ZXh0LndyaXRlci53cmFwSW5Db2xvcignRmlsZW5hbWUnLCBDbGlGb3JlZ3JvdW5kQ29sb3IuWWVsbG93KX06ICR7ZmlsZW5hbWV9YCxcbiAgICAgICAgKTtcbiAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVJbmZvKFxuICAgICAgICAgICAgYC0gJHtjb250ZXh0LndyaXRlci53cmFwSW5Db2xvcignQmFja2dyb3VuZCBjb2xvcicsIENsaUZvcmVncm91bmRDb2xvci5ZZWxsb3cpfTogJHtjdHguZmlsbFN0eWxlfWAsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlSW5mbyhcbiAgICAgICAgICAgIGAtICR7Y29udGV4dC53cml0ZXIud3JhcEluQ29sb3IoJ1RleHQgY29sb3InLCBDbGlGb3JlZ3JvdW5kQ29sb3IuWWVsbG93KX06ICR7Y3R4LmZpbGxTdHlsZX1gLFxuICAgICAgICApO1xuICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUluZm8oXG4gICAgICAgICAgICBgLSAke2NvbnRleHQud3JpdGVyLndyYXBJbkNvbG9yKCdGb250JywgQ2xpRm9yZWdyb3VuZENvbG9yLlllbGxvdyl9OiAke2N0eC5mb250fWAsXG4gICAgICAgICk7XG5cbiAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVTdWNjZXNzKCdJbWFnZSBjcmVhdGVkIHN1Y2Nlc3NmdWxseScpO1xuICAgIH1cblxuICAgIHdyaXRlRGVzY3JpcHRpb24oY29udGV4dDogSUNsaUV4ZWN1dGlvbkNvbnRleHQpOiB2b2lkIHtcbiAgICAgICAgY29uc3QgeyB3cml0ZXIgfSA9IGNvbnRleHQ7XG4gICAgICAgIHdyaXRlci53cml0ZWxuKCdDb252ZXJ0IHRleHQgaW50byBhIGRvd25sb2FkYWJsZSBQTkcgaW1hZ2UnKTtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4oKTtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4oJ/Cfk4sgVXNhZ2U6Jyk7XG4gICAgICAgIHdyaXRlci53cml0ZWxuKGAgICR7d3JpdGVyLndyYXBJbkNvbG9yKCd0ZXh0LXRvLWltYWdlIDx0ZXh0PiBbb3B0aW9uc10nLCBDbGlGb3JlZ3JvdW5kQ29sb3IuQ3lhbil9YCk7XG4gICAgICAgIHdyaXRlci53cml0ZWxuKCk7XG4gICAgICAgIHdyaXRlci53cml0ZWxuKCfimpnvuI8gIE9wdGlvbnM6Jyk7XG4gICAgICAgIHdyaXRlci53cml0ZWxuKGAgICR7d3JpdGVyLndyYXBJbkNvbG9yKCctLXdpZHRoJywgQ2xpRm9yZWdyb3VuZENvbG9yLlllbGxvdyl9ICAgICAgICAgIEltYWdlIHdpZHRoIChkZWZhdWx0OiB3aW5kb3cgd2lkdGgpYCk7XG4gICAgICAgIHdyaXRlci53cml0ZWxuKGAgICR7d3JpdGVyLndyYXBJbkNvbG9yKCctLWhlaWdodCcsIENsaUZvcmVncm91bmRDb2xvci5ZZWxsb3cpfSAgICAgICAgIEltYWdlIGhlaWdodCAoZGVmYXVsdDogd2luZG93IGhlaWdodClgKTtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4oYCAgJHt3cml0ZXIud3JhcEluQ29sb3IoJy0tYmdDb2xvcicsIENsaUZvcmVncm91bmRDb2xvci5ZZWxsb3cpfSAgICAgICAgQmFja2dyb3VuZCBjb2xvciBpbiBoZXggKGRlZmF1bHQ6ICNmZmZmZmYpYCk7XG4gICAgICAgIHdyaXRlci53cml0ZWxuKGAgICR7d3JpdGVyLndyYXBJbkNvbG9yKCctLXRleHRDb2xvcicsIENsaUZvcmVncm91bmRDb2xvci5ZZWxsb3cpfSAgICAgIFRleHQgY29sb3IgaW4gaGV4IChkZWZhdWx0OiAjMDAwMDAwKWApO1xuICAgICAgICB3cml0ZXIud3JpdGVsbihgICAke3dyaXRlci53cmFwSW5Db2xvcignLS1mb250JywgQ2xpRm9yZWdyb3VuZENvbG9yLlllbGxvdyl9ICAgICAgICAgICBGb250IHN0eWxlIChkZWZhdWx0OiAzMHB4IEFyaWFsKWApO1xuICAgICAgICB3cml0ZXIud3JpdGVsbihgICAke3dyaXRlci53cmFwSW5Db2xvcignLS1maWxlTmFtZScsIENsaUZvcmVncm91bmRDb2xvci5ZZWxsb3cpfSAgICAgICBPdXRwdXQgZmlsZW5hbWUgKGRlZmF1bHQ6IHRleHQtaW1hZ2UucG5nKWApO1xuICAgICAgICB3cml0ZXIud3JpdGVsbigpO1xuICAgICAgICB3cml0ZXIud3JpdGVsbign8J+TnSBFeGFtcGxlczonKTtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4oYCAgdGV4dC10by1pbWFnZSBcIkhlbGxvIFdvcmxkXCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7d3JpdGVyLndyYXBJbkNvbG9yKCcjIEJhc2ljJywgQ2xpRm9yZWdyb3VuZENvbG9yLkdyZWVuKX1gKTtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4oYCAgdGV4dC10by1pbWFnZSBcIkJhbm5lclwiIC0tYmdDb2xvcj0jMWExYTJlIC0tdGV4dENvbG9yPSNlMGUwZTAgICAgICR7d3JpdGVyLndyYXBJbkNvbG9yKCcjIEN1c3RvbSBjb2xvcnMnLCBDbGlGb3JlZ3JvdW5kQ29sb3IuR3JlZW4pfWApO1xuICAgIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
// Automatically generated during build
|
|
2
|
+
export const LIBRARY_VERSION = '0.0.3';
|
|
3
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RleHQtdG8taW1hZ2Uvc3JjL2xpYi92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLHVDQUF1QztBQUN2QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBkdXJpbmcgYnVpbGRcbmV4cG9ydCBjb25zdCBMSUJSQVJZX1ZFUlNJT04gPSAnMC4wLjMnO1xuICAiXX0=
|
|
@@ -3,12 +3,18 @@ import { NgModule } from '@angular/core';
|
|
|
3
3
|
import { resolveCommandProcessorProvider } from '@qodalis/angular-cli';
|
|
4
4
|
import { DefaultLibraryAuthor, CliForegroundColor } from '@qodalis/cli-core';
|
|
5
5
|
|
|
6
|
+
// Automatically generated during build
|
|
7
|
+
const LIBRARY_VERSION = '0.0.3';
|
|
8
|
+
|
|
6
9
|
class CliTextToImageCommandProcessor {
|
|
7
10
|
constructor() {
|
|
8
11
|
this.command = 'text-to-image';
|
|
9
12
|
this.description = 'Convert text to image';
|
|
10
13
|
this.author = DefaultLibraryAuthor;
|
|
11
14
|
this.valueRequired = true;
|
|
15
|
+
this.metadata = {
|
|
16
|
+
icon: '🖼️',
|
|
17
|
+
};
|
|
12
18
|
this.parameters = [
|
|
13
19
|
{
|
|
14
20
|
name: 'fileName',
|
|
@@ -48,6 +54,7 @@ class CliTextToImageCommandProcessor {
|
|
|
48
54
|
},
|
|
49
55
|
];
|
|
50
56
|
this.allowUnlistedCommands = true;
|
|
57
|
+
this.version = LIBRARY_VERSION;
|
|
51
58
|
}
|
|
52
59
|
async processCommand(command, context) {
|
|
53
60
|
const text = command.value || '';
|
|
@@ -94,6 +101,25 @@ class CliTextToImageCommandProcessor {
|
|
|
94
101
|
context.writer.writeInfo(`- ${context.writer.wrapInColor('Font', CliForegroundColor.Yellow)}: ${ctx.font}`);
|
|
95
102
|
context.writer.writeSuccess('Image created successfully');
|
|
96
103
|
}
|
|
104
|
+
writeDescription(context) {
|
|
105
|
+
const { writer } = context;
|
|
106
|
+
writer.writeln('Convert text into a downloadable PNG image');
|
|
107
|
+
writer.writeln();
|
|
108
|
+
writer.writeln('📋 Usage:');
|
|
109
|
+
writer.writeln(` ${writer.wrapInColor('text-to-image <text> [options]', CliForegroundColor.Cyan)}`);
|
|
110
|
+
writer.writeln();
|
|
111
|
+
writer.writeln('⚙️ Options:');
|
|
112
|
+
writer.writeln(` ${writer.wrapInColor('--width', CliForegroundColor.Yellow)} Image width (default: window width)`);
|
|
113
|
+
writer.writeln(` ${writer.wrapInColor('--height', CliForegroundColor.Yellow)} Image height (default: window height)`);
|
|
114
|
+
writer.writeln(` ${writer.wrapInColor('--bgColor', CliForegroundColor.Yellow)} Background color in hex (default: #ffffff)`);
|
|
115
|
+
writer.writeln(` ${writer.wrapInColor('--textColor', CliForegroundColor.Yellow)} Text color in hex (default: #000000)`);
|
|
116
|
+
writer.writeln(` ${writer.wrapInColor('--font', CliForegroundColor.Yellow)} Font style (default: 30px Arial)`);
|
|
117
|
+
writer.writeln(` ${writer.wrapInColor('--fileName', CliForegroundColor.Yellow)} Output filename (default: text-image.png)`);
|
|
118
|
+
writer.writeln();
|
|
119
|
+
writer.writeln('📝 Examples:');
|
|
120
|
+
writer.writeln(` text-to-image "Hello World" ${writer.wrapInColor('# Basic', CliForegroundColor.Green)}`);
|
|
121
|
+
writer.writeln(` text-to-image "Banner" --bgColor=#1a1a2e --textColor=#e0e0e0 ${writer.wrapInColor('# Custom colors', CliForegroundColor.Green)}`);
|
|
122
|
+
}
|
|
97
123
|
}
|
|
98
124
|
|
|
99
125
|
class CliTextToImageModule {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qodalis-cli-text-to-image.mjs","sources":["../../../projects/text-to-image/src/lib/processors/cli-text-to-image-command-processor.ts","../../../projects/text-to-image/src/lib/cli-text-to-image.module.ts","../../../projects/text-to-image/src/public-api.ts","../../../projects/text-to-image/src/qodalis-cli-text-to-image.ts"],"sourcesContent":["import {\n CliForegroundColor,\n CliProcessCommand,\n DefaultLibraryAuthor,\n ICliCommandParameterDescriptor,\n ICliCommandProcessor,\n ICliExecutionContext,\n} from '@qodalis/cli-core';\n\nexport class CliTextToImageCommandProcessor implements ICliCommandProcessor {\n command = 'text-to-image';\n description = 'Convert text to image';\n author = DefaultLibraryAuthor;\n valueRequired = true;\n parameters?: ICliCommandParameterDescriptor[] | undefined = [\n {\n name: 'fileName',\n description: 'Name of the file',\n type: 'string',\n required: false,\n },\n {\n name: 'width',\n description: 'Width of the image',\n type: 'integer',\n required: false,\n },\n {\n name: 'height',\n description: 'Height of the image',\n type: 'integer',\n required: false,\n },\n {\n name: 'bgColor',\n description: 'Background color of the image, in hex format',\n type: 'string',\n required: false,\n },\n {\n name: 'textColor',\n description: 'Text color of the image, in hex format',\n type: 'string',\n required: false,\n },\n {\n name: 'font',\n description: 'Font style and size',\n type: 'string',\n required: false,\n },\n ];\n\n allowUnlistedCommands = true;\n\n constructor() {}\n\n async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n const text = command.value || '';\n const width = command.args['width'] ?? window.innerWidth;\n const height = command.args['height'] ?? window.innerHeight;\n const filename = command.args['fileName'] ?? 'text-image.png';\n\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext('2d');\n\n if (!ctx) {\n console.error('Failed to get canvas context');\n context.writer.writeError('Failed to get canvas context');\n return;\n }\n\n // Set background color\n ctx.fillStyle = command.args['bgColor'] || '#ffffff'; // White background\n ctx.fillRect(0, 0, width, height);\n\n // Set text properties\n ctx.fillStyle = command.args['textColor'] || '#000000'; // Black text\n ctx.font = command.args['font'] || '30px Arial'; // Font style and size\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n\n // Render text\n const x = width / 2;\n const y = height / 2;\n ctx.fillText(text, x, y);\n\n // Convert canvas to data URL\n const dataUrl = canvas.toDataURL('image/png');\n\n // Create a link element to trigger download\n const link = document.createElement('a');\n link.href = dataUrl;\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n context.writer.writeInfo('Options: ');\n context.writer.writeInfo(\n `- ${context.writer.wrapInColor('Text', CliForegroundColor.Yellow)}: ${text}`,\n );\n context.writer.writeInfo(\n `- ${context.writer.wrapInColor('Width', CliForegroundColor.Yellow)}: ${width}`,\n );\n context.writer.writeInfo(\n `- ${context.writer.wrapInColor('Height', CliForegroundColor.Yellow)}: ${height}`,\n );\n context.writer.writeInfo(\n `- ${context.writer.wrapInColor('Filename', CliForegroundColor.Yellow)}: ${filename}`,\n );\n context.writer.writeInfo(\n `- ${context.writer.wrapInColor('Background color', CliForegroundColor.Yellow)}: ${ctx.fillStyle}`,\n );\n context.writer.writeInfo(\n `- ${context.writer.wrapInColor('Text color', CliForegroundColor.Yellow)}: ${ctx.fillStyle}`,\n );\n context.writer.writeInfo(\n `- ${context.writer.wrapInColor('Font', CliForegroundColor.Yellow)}: ${ctx.font}`,\n );\n\n context.writer.writeSuccess('Image created successfully');\n }\n}\n","import { NgModule } from '@angular/core';\nimport { resolveCommandProcessorProvider } from '@qodalis/angular-cli';\nimport { CliTextToImageCommandProcessor } from './processors/cli-text-to-image-command-processor';\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: [],\n providers: [\n resolveCommandProcessorProvider(CliTextToImageCommandProcessor),\n ],\n})\nexport class CliTextToImageModule {}\n","/*\n * Public API Surface of text-to-image\n */\n\nexport * from './lib/cli-text-to-image.module';\n\nexport * from './lib/processors/cli-text-to-image-command-processor';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"qodalis-cli-text-to-image.mjs","sources":["../../../projects/text-to-image/src/lib/version.ts","../../../projects/text-to-image/src/lib/processors/cli-text-to-image-command-processor.ts","../../../projects/text-to-image/src/lib/cli-text-to-image.module.ts","../../../projects/text-to-image/src/public-api.ts","../../../projects/text-to-image/src/qodalis-cli-text-to-image.ts"],"sourcesContent":["\n// Automatically generated during build\nexport const LIBRARY_VERSION = '0.0.3';\n ","import {\n CliForegroundColor,\n CliProcessCommand,\n CliProcessorMetadata,\n DefaultLibraryAuthor,\n ICliCommandParameterDescriptor,\n ICliCommandProcessor,\n ICliExecutionContext,\n} from '@qodalis/cli-core';\nimport { LIBRARY_VERSION } from '../version';\n\nexport class CliTextToImageCommandProcessor implements ICliCommandProcessor {\n command = 'text-to-image';\n description = 'Convert text to image';\n author = DefaultLibraryAuthor;\n valueRequired = true;\n\n metadata?: CliProcessorMetadata | undefined = {\n icon: '🖼️',\n };\n\n parameters?: ICliCommandParameterDescriptor[] | undefined = [\n {\n name: 'fileName',\n description: 'Name of the file',\n type: 'string',\n required: false,\n },\n {\n name: 'width',\n description: 'Width of the image',\n type: 'integer',\n required: false,\n },\n {\n name: 'height',\n description: 'Height of the image',\n type: 'integer',\n required: false,\n },\n {\n name: 'bgColor',\n description: 'Background color of the image, in hex format',\n type: 'string',\n required: false,\n },\n {\n name: 'textColor',\n description: 'Text color of the image, in hex format',\n type: 'string',\n required: false,\n },\n {\n name: 'font',\n description: 'Font style and size',\n type: 'string',\n required: false,\n },\n ];\n\n allowUnlistedCommands = true;\n\n version = LIBRARY_VERSION;\n\n constructor() {}\n\n async processCommand(\n command: CliProcessCommand,\n context: ICliExecutionContext,\n ): Promise<void> {\n const text = command.value || '';\n const width = command.args['width'] ?? window.innerWidth;\n const height = command.args['height'] ?? window.innerHeight;\n const filename = command.args['fileName'] ?? 'text-image.png';\n\n const canvas = document.createElement('canvas');\n canvas.width = width;\n canvas.height = height;\n const ctx = canvas.getContext('2d');\n\n if (!ctx) {\n console.error('Failed to get canvas context');\n context.writer.writeError('Failed to get canvas context');\n return;\n }\n\n // Set background color\n ctx.fillStyle = command.args['bgColor'] || '#ffffff'; // White background\n ctx.fillRect(0, 0, width, height);\n\n // Set text properties\n ctx.fillStyle = command.args['textColor'] || '#000000'; // Black text\n ctx.font = command.args['font'] || '30px Arial'; // Font style and size\n ctx.textAlign = 'center';\n ctx.textBaseline = 'middle';\n\n // Render text\n const x = width / 2;\n const y = height / 2;\n ctx.fillText(text, x, y);\n\n // Convert canvas to data URL\n const dataUrl = canvas.toDataURL('image/png');\n\n // Create a link element to trigger download\n const link = document.createElement('a');\n link.href = dataUrl;\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n context.writer.writeInfo('Options: ');\n context.writer.writeInfo(\n `- ${context.writer.wrapInColor('Text', CliForegroundColor.Yellow)}: ${text}`,\n );\n context.writer.writeInfo(\n `- ${context.writer.wrapInColor('Width', CliForegroundColor.Yellow)}: ${width}`,\n );\n context.writer.writeInfo(\n `- ${context.writer.wrapInColor('Height', CliForegroundColor.Yellow)}: ${height}`,\n );\n context.writer.writeInfo(\n `- ${context.writer.wrapInColor('Filename', CliForegroundColor.Yellow)}: ${filename}`,\n );\n context.writer.writeInfo(\n `- ${context.writer.wrapInColor('Background color', CliForegroundColor.Yellow)}: ${ctx.fillStyle}`,\n );\n context.writer.writeInfo(\n `- ${context.writer.wrapInColor('Text color', CliForegroundColor.Yellow)}: ${ctx.fillStyle}`,\n );\n context.writer.writeInfo(\n `- ${context.writer.wrapInColor('Font', CliForegroundColor.Yellow)}: ${ctx.font}`,\n );\n\n context.writer.writeSuccess('Image created successfully');\n }\n\n writeDescription(context: ICliExecutionContext): void {\n const { writer } = context;\n writer.writeln('Convert text into a downloadable PNG image');\n writer.writeln();\n writer.writeln('📋 Usage:');\n writer.writeln(` ${writer.wrapInColor('text-to-image <text> [options]', CliForegroundColor.Cyan)}`);\n writer.writeln();\n writer.writeln('⚙️ Options:');\n writer.writeln(` ${writer.wrapInColor('--width', CliForegroundColor.Yellow)} Image width (default: window width)`);\n writer.writeln(` ${writer.wrapInColor('--height', CliForegroundColor.Yellow)} Image height (default: window height)`);\n writer.writeln(` ${writer.wrapInColor('--bgColor', CliForegroundColor.Yellow)} Background color in hex (default: #ffffff)`);\n writer.writeln(` ${writer.wrapInColor('--textColor', CliForegroundColor.Yellow)} Text color in hex (default: #000000)`);\n writer.writeln(` ${writer.wrapInColor('--font', CliForegroundColor.Yellow)} Font style (default: 30px Arial)`);\n writer.writeln(` ${writer.wrapInColor('--fileName', CliForegroundColor.Yellow)} Output filename (default: text-image.png)`);\n writer.writeln();\n writer.writeln('📝 Examples:');\n writer.writeln(` text-to-image \"Hello World\" ${writer.wrapInColor('# Basic', CliForegroundColor.Green)}`);\n writer.writeln(` text-to-image \"Banner\" --bgColor=#1a1a2e --textColor=#e0e0e0 ${writer.wrapInColor('# Custom colors', CliForegroundColor.Green)}`);\n }\n}\n","import { NgModule } from '@angular/core';\nimport { resolveCommandProcessorProvider } from '@qodalis/angular-cli';\nimport { CliTextToImageCommandProcessor } from './processors/cli-text-to-image-command-processor';\n\n@NgModule({\n declarations: [],\n imports: [],\n exports: [],\n providers: [\n resolveCommandProcessorProvider(CliTextToImageCommandProcessor),\n ],\n})\nexport class CliTextToImageModule {}\n","/*\n * Public API Surface of text-to-image\n */\n\nexport * from './lib/cli-text-to-image.module';\n\nexport * from './lib/processors/cli-text-to-image-command-processor';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,14 @@
|
|
|
1
|
-
import { CliProcessCommand, ICliCommandParameterDescriptor, ICliCommandProcessor, ICliExecutionContext } from '@qodalis/cli-core';
|
|
1
|
+
import { CliProcessCommand, CliProcessorMetadata, ICliCommandParameterDescriptor, ICliCommandProcessor, ICliExecutionContext } from '@qodalis/cli-core';
|
|
2
2
|
export declare class CliTextToImageCommandProcessor implements ICliCommandProcessor {
|
|
3
3
|
command: string;
|
|
4
4
|
description: string;
|
|
5
5
|
author: import("@qodalis/cli-core").ICliCommandAuthor;
|
|
6
6
|
valueRequired: boolean;
|
|
7
|
+
metadata?: CliProcessorMetadata | undefined;
|
|
7
8
|
parameters?: ICliCommandParameterDescriptor[] | undefined;
|
|
8
9
|
allowUnlistedCommands: boolean;
|
|
10
|
+
version: string;
|
|
9
11
|
constructor();
|
|
10
12
|
processCommand(command: CliProcessCommand, context: ICliExecutionContext): Promise<void>;
|
|
13
|
+
writeDescription(context: ICliExecutionContext): void;
|
|
11
14
|
}
|
package/lib/version.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const LIBRARY_VERSION = "0.0.3";
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qodalis/cli-text-to-image",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"description": "An Angular CLI extension.",
|
|
5
5
|
"author": "Nicolae Lupei, Qodalis Solutions",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"repository": {
|
|
8
8
|
"type": "git",
|
|
9
|
-
"url": "https://github.com/qodalis-solutions/
|
|
9
|
+
"url": "https://github.com/qodalis-solutions/angular-web-cli"
|
|
10
10
|
},
|
|
11
11
|
"homepage": "https://qodalis.com",
|
|
12
12
|
"keywords": [
|
package/umd/index.js
CHANGED
|
@@ -1,106 +1,132 @@
|
|
|
1
1
|
(function (global, factory) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
2
|
+
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('@qodalis/cli-core')) :
|
|
3
|
+
typeof define === 'function' && define.amd ? define(['@qodalis/cli-core'], factory) :
|
|
4
|
+
(global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.cliCore));
|
|
5
5
|
})(this, (function (cliCore) { 'use strict';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
this.command = 'text-to-image';
|
|
10
|
-
this.description = 'Convert text to image';
|
|
11
|
-
this.author = cliCore.DefaultLibraryAuthor;
|
|
12
|
-
this.valueRequired = true;
|
|
13
|
-
this.parameters = [
|
|
14
|
-
{
|
|
15
|
-
name: 'fileName',
|
|
16
|
-
description: 'Name of the file',
|
|
17
|
-
type: 'string',
|
|
18
|
-
required: false,
|
|
19
|
-
},
|
|
20
|
-
{
|
|
21
|
-
name: 'width',
|
|
22
|
-
description: 'Width of the image',
|
|
23
|
-
type: 'integer',
|
|
24
|
-
required: false,
|
|
25
|
-
},
|
|
26
|
-
{
|
|
27
|
-
name: 'height',
|
|
28
|
-
description: 'Height of the image',
|
|
29
|
-
type: 'integer',
|
|
30
|
-
required: false,
|
|
31
|
-
},
|
|
32
|
-
{
|
|
33
|
-
name: 'bgColor',
|
|
34
|
-
description: 'Background color of the image, in hex format',
|
|
35
|
-
type: 'string',
|
|
36
|
-
required: false,
|
|
37
|
-
},
|
|
38
|
-
{
|
|
39
|
-
name: 'textColor',
|
|
40
|
-
description: 'Text color of the image, in hex format',
|
|
41
|
-
type: 'string',
|
|
42
|
-
required: false,
|
|
43
|
-
},
|
|
44
|
-
{
|
|
45
|
-
name: 'font',
|
|
46
|
-
description: 'Font style and size',
|
|
47
|
-
type: 'string',
|
|
48
|
-
required: false,
|
|
49
|
-
},
|
|
50
|
-
];
|
|
51
|
-
this.allowUnlistedCommands = true;
|
|
52
|
-
}
|
|
53
|
-
async processCommand(command, context) {
|
|
54
|
-
const text = command.value || '';
|
|
55
|
-
const width = command.args['width'] ?? window.innerWidth;
|
|
56
|
-
const height = command.args['height'] ?? window.innerHeight;
|
|
57
|
-
const filename = command.args['fileName'] ?? 'text-image.png';
|
|
58
|
-
const canvas = document.createElement('canvas');
|
|
59
|
-
canvas.width = width;
|
|
60
|
-
canvas.height = height;
|
|
61
|
-
const ctx = canvas.getContext('2d');
|
|
62
|
-
if (!ctx) {
|
|
63
|
-
console.error('Failed to get canvas context');
|
|
64
|
-
context.writer.writeError('Failed to get canvas context');
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
// Set background color
|
|
68
|
-
ctx.fillStyle = command.args['bgColor'] || '#ffffff'; // White background
|
|
69
|
-
ctx.fillRect(0, 0, width, height);
|
|
70
|
-
// Set text properties
|
|
71
|
-
ctx.fillStyle = command.args['textColor'] || '#000000'; // Black text
|
|
72
|
-
ctx.font = command.args['font'] || '30px Arial'; // Font style and size
|
|
73
|
-
ctx.textAlign = 'center';
|
|
74
|
-
ctx.textBaseline = 'middle';
|
|
75
|
-
// Render text
|
|
76
|
-
const x = width / 2;
|
|
77
|
-
const y = height / 2;
|
|
78
|
-
ctx.fillText(text, x, y);
|
|
79
|
-
// Convert canvas to data URL
|
|
80
|
-
const dataUrl = canvas.toDataURL('image/png');
|
|
81
|
-
// Create a link element to trigger download
|
|
82
|
-
const link = document.createElement('a');
|
|
83
|
-
link.href = dataUrl;
|
|
84
|
-
link.download = filename;
|
|
85
|
-
document.body.appendChild(link);
|
|
86
|
-
link.click();
|
|
87
|
-
document.body.removeChild(link);
|
|
88
|
-
context.writer.writeInfo('Options: ');
|
|
89
|
-
context.writer.writeInfo(`- ${context.writer.wrapInColor('Text', cliCore.CliForegroundColor.Yellow)}: ${text}`);
|
|
90
|
-
context.writer.writeInfo(`- ${context.writer.wrapInColor('Width', cliCore.CliForegroundColor.Yellow)}: ${width}`);
|
|
91
|
-
context.writer.writeInfo(`- ${context.writer.wrapInColor('Height', cliCore.CliForegroundColor.Yellow)}: ${height}`);
|
|
92
|
-
context.writer.writeInfo(`- ${context.writer.wrapInColor('Filename', cliCore.CliForegroundColor.Yellow)}: ${filename}`);
|
|
93
|
-
context.writer.writeInfo(`- ${context.writer.wrapInColor('Background color', cliCore.CliForegroundColor.Yellow)}: ${ctx.fillStyle}`);
|
|
94
|
-
context.writer.writeInfo(`- ${context.writer.wrapInColor('Text color', cliCore.CliForegroundColor.Yellow)}: ${ctx.fillStyle}`);
|
|
95
|
-
context.writer.writeInfo(`- ${context.writer.wrapInColor('Font', cliCore.CliForegroundColor.Yellow)}: ${ctx.font}`);
|
|
96
|
-
context.writer.writeSuccess('Image created successfully');
|
|
97
|
-
}
|
|
98
|
-
}
|
|
7
|
+
// Automatically generated during build
|
|
8
|
+
const LIBRARY_VERSION = '0.0.3';
|
|
99
9
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
10
|
+
class CliTextToImageCommandProcessor {
|
|
11
|
+
constructor() {
|
|
12
|
+
this.command = 'text-to-image';
|
|
13
|
+
this.description = 'Convert text to image';
|
|
14
|
+
this.author = cliCore.DefaultLibraryAuthor;
|
|
15
|
+
this.valueRequired = true;
|
|
16
|
+
this.metadata = {
|
|
17
|
+
icon: '🖼️',
|
|
18
|
+
};
|
|
19
|
+
this.parameters = [
|
|
20
|
+
{
|
|
21
|
+
name: 'fileName',
|
|
22
|
+
description: 'Name of the file',
|
|
23
|
+
type: 'string',
|
|
24
|
+
required: false,
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'width',
|
|
28
|
+
description: 'Width of the image',
|
|
29
|
+
type: 'integer',
|
|
30
|
+
required: false,
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
name: 'height',
|
|
34
|
+
description: 'Height of the image',
|
|
35
|
+
type: 'integer',
|
|
36
|
+
required: false,
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'bgColor',
|
|
40
|
+
description: 'Background color of the image, in hex format',
|
|
41
|
+
type: 'string',
|
|
42
|
+
required: false,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'textColor',
|
|
46
|
+
description: 'Text color of the image, in hex format',
|
|
47
|
+
type: 'string',
|
|
48
|
+
required: false,
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
name: 'font',
|
|
52
|
+
description: 'Font style and size',
|
|
53
|
+
type: 'string',
|
|
54
|
+
required: false,
|
|
55
|
+
},
|
|
56
|
+
];
|
|
57
|
+
this.allowUnlistedCommands = true;
|
|
58
|
+
this.version = LIBRARY_VERSION;
|
|
59
|
+
}
|
|
60
|
+
async processCommand(command, context) {
|
|
61
|
+
const text = command.value || '';
|
|
62
|
+
const width = command.args['width'] ?? window.innerWidth;
|
|
63
|
+
const height = command.args['height'] ?? window.innerHeight;
|
|
64
|
+
const filename = command.args['fileName'] ?? 'text-image.png';
|
|
65
|
+
const canvas = document.createElement('canvas');
|
|
66
|
+
canvas.width = width;
|
|
67
|
+
canvas.height = height;
|
|
68
|
+
const ctx = canvas.getContext('2d');
|
|
69
|
+
if (!ctx) {
|
|
70
|
+
console.error('Failed to get canvas context');
|
|
71
|
+
context.writer.writeError('Failed to get canvas context');
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
// Set background color
|
|
75
|
+
ctx.fillStyle = command.args['bgColor'] || '#ffffff'; // White background
|
|
76
|
+
ctx.fillRect(0, 0, width, height);
|
|
77
|
+
// Set text properties
|
|
78
|
+
ctx.fillStyle = command.args['textColor'] || '#000000'; // Black text
|
|
79
|
+
ctx.font = command.args['font'] || '30px Arial'; // Font style and size
|
|
80
|
+
ctx.textAlign = 'center';
|
|
81
|
+
ctx.textBaseline = 'middle';
|
|
82
|
+
// Render text
|
|
83
|
+
const x = width / 2;
|
|
84
|
+
const y = height / 2;
|
|
85
|
+
ctx.fillText(text, x, y);
|
|
86
|
+
// Convert canvas to data URL
|
|
87
|
+
const dataUrl = canvas.toDataURL('image/png');
|
|
88
|
+
// Create a link element to trigger download
|
|
89
|
+
const link = document.createElement('a');
|
|
90
|
+
link.href = dataUrl;
|
|
91
|
+
link.download = filename;
|
|
92
|
+
document.body.appendChild(link);
|
|
93
|
+
link.click();
|
|
94
|
+
document.body.removeChild(link);
|
|
95
|
+
context.writer.writeInfo('Options: ');
|
|
96
|
+
context.writer.writeInfo(`- ${context.writer.wrapInColor('Text', cliCore.CliForegroundColor.Yellow)}: ${text}`);
|
|
97
|
+
context.writer.writeInfo(`- ${context.writer.wrapInColor('Width', cliCore.CliForegroundColor.Yellow)}: ${width}`);
|
|
98
|
+
context.writer.writeInfo(`- ${context.writer.wrapInColor('Height', cliCore.CliForegroundColor.Yellow)}: ${height}`);
|
|
99
|
+
context.writer.writeInfo(`- ${context.writer.wrapInColor('Filename', cliCore.CliForegroundColor.Yellow)}: ${filename}`);
|
|
100
|
+
context.writer.writeInfo(`- ${context.writer.wrapInColor('Background color', cliCore.CliForegroundColor.Yellow)}: ${ctx.fillStyle}`);
|
|
101
|
+
context.writer.writeInfo(`- ${context.writer.wrapInColor('Text color', cliCore.CliForegroundColor.Yellow)}: ${ctx.fillStyle}`);
|
|
102
|
+
context.writer.writeInfo(`- ${context.writer.wrapInColor('Font', cliCore.CliForegroundColor.Yellow)}: ${ctx.font}`);
|
|
103
|
+
context.writer.writeSuccess('Image created successfully');
|
|
104
|
+
}
|
|
105
|
+
writeDescription(context) {
|
|
106
|
+
const { writer } = context;
|
|
107
|
+
writer.writeln('Convert text into a downloadable PNG image');
|
|
108
|
+
writer.writeln();
|
|
109
|
+
writer.writeln('📋 Usage:');
|
|
110
|
+
writer.writeln(` ${writer.wrapInColor('text-to-image <text> [options]', cliCore.CliForegroundColor.Cyan)}`);
|
|
111
|
+
writer.writeln();
|
|
112
|
+
writer.writeln('⚙️ Options:');
|
|
113
|
+
writer.writeln(` ${writer.wrapInColor('--width', cliCore.CliForegroundColor.Yellow)} Image width (default: window width)`);
|
|
114
|
+
writer.writeln(` ${writer.wrapInColor('--height', cliCore.CliForegroundColor.Yellow)} Image height (default: window height)`);
|
|
115
|
+
writer.writeln(` ${writer.wrapInColor('--bgColor', cliCore.CliForegroundColor.Yellow)} Background color in hex (default: #ffffff)`);
|
|
116
|
+
writer.writeln(` ${writer.wrapInColor('--textColor', cliCore.CliForegroundColor.Yellow)} Text color in hex (default: #000000)`);
|
|
117
|
+
writer.writeln(` ${writer.wrapInColor('--font', cliCore.CliForegroundColor.Yellow)} Font style (default: 30px Arial)`);
|
|
118
|
+
writer.writeln(` ${writer.wrapInColor('--fileName', cliCore.CliForegroundColor.Yellow)} Output filename (default: text-image.png)`);
|
|
119
|
+
writer.writeln();
|
|
120
|
+
writer.writeln('📝 Examples:');
|
|
121
|
+
writer.writeln(` text-to-image "Hello World" ${writer.wrapInColor('# Basic', cliCore.CliForegroundColor.Green)}`);
|
|
122
|
+
writer.writeln(` text-to-image "Banner" --bgColor=#1a1a2e --textColor=#e0e0e0 ${writer.wrapInColor('# Custom colors', cliCore.CliForegroundColor.Green)}`);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
const module = {
|
|
127
|
+
name: '@qodalis/cli-text-to-image',
|
|
128
|
+
processors: [new CliTextToImageCommandProcessor()],
|
|
129
|
+
};
|
|
130
|
+
cliCore.bootUmdModule(module);
|
|
105
131
|
|
|
106
132
|
}));
|