@qodalis/cli-text-to-image 0.0.2 → 0.0.4

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.
@@ -1,10 +1,16 @@
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
+ requiredCoreVersion: '0.0.16',
12
+ requiredCliVersion: '1.0.37',
13
+ };
8
14
  this.parameters = [
9
15
  {
10
16
  name: 'fileName',
@@ -44,6 +50,7 @@ export class CliTextToImageCommandProcessor {
44
50
  },
45
51
  ];
46
52
  this.allowUnlistedCommands = true;
53
+ this.version = LIBRARY_VERSION;
47
54
  }
48
55
  async processCommand(command, context) {
49
56
  const text = command.value || '';
@@ -90,5 +97,24 @@ export class CliTextToImageCommandProcessor {
90
97
  context.writer.writeInfo(`- ${context.writer.wrapInColor('Font', CliForegroundColor.Yellow)}: ${ctx.font}`);
91
98
  context.writer.writeSuccess('Image created successfully');
92
99
  }
100
+ writeDescription(context) {
101
+ const { writer } = context;
102
+ writer.writeln('Convert text into a downloadable PNG image');
103
+ writer.writeln();
104
+ writer.writeln('📋 Usage:');
105
+ writer.writeln(` ${writer.wrapInColor('text-to-image <text> [options]', CliForegroundColor.Cyan)}`);
106
+ writer.writeln();
107
+ writer.writeln('⚙️ Options:');
108
+ writer.writeln(` ${writer.wrapInColor('--width', CliForegroundColor.Yellow)} Image width (default: window width)`);
109
+ writer.writeln(` ${writer.wrapInColor('--height', CliForegroundColor.Yellow)} Image height (default: window height)`);
110
+ writer.writeln(` ${writer.wrapInColor('--bgColor', CliForegroundColor.Yellow)} Background color in hex (default: #ffffff)`);
111
+ writer.writeln(` ${writer.wrapInColor('--textColor', CliForegroundColor.Yellow)} Text color in hex (default: #000000)`);
112
+ writer.writeln(` ${writer.wrapInColor('--font', CliForegroundColor.Yellow)} Font style (default: 30px Arial)`);
113
+ writer.writeln(` ${writer.wrapInColor('--fileName', CliForegroundColor.Yellow)} Output filename (default: text-image.png)`);
114
+ writer.writeln();
115
+ writer.writeln('📝 Examples:');
116
+ writer.writeln(` text-to-image "Hello World" ${writer.wrapInColor('# Basic', CliForegroundColor.Green)}`);
117
+ writer.writeln(` text-to-image "Banner" --bgColor=#1a1a2e --textColor=#e0e0e0 ${writer.wrapInColor('# Custom colors', CliForegroundColor.Green)}`);
118
+ }
93
119
  }
94
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLXRleHQtdG8taW1hZ2UtY29tbWFuZC1wcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZXh0LXRvLWltYWdlL3NyYy9saWIvcHJvY2Vzc29ycy9jbGktdGV4dC10by1pbWFnZS1jb21tYW5kLXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsa0JBQWtCLEVBRWxCLG9CQUFvQixHQUl2QixNQUFNLG1CQUFtQixDQUFDO0FBRTNCLE1BQU0sT0FBTyw4QkFBOEI7SUE4Q3ZDO1FBN0NBLFlBQU8sR0FBRyxlQUFlLENBQUM7UUFDMUIsZ0JBQVcsR0FBRyx1QkFBdUIsQ0FBQztRQUN0QyxXQUFNLEdBQUcsb0JBQW9CLENBQUM7UUFDOUIsa0JBQWEsR0FBRyxJQUFJLENBQUM7UUFDckIsZUFBVSxHQUFrRDtZQUN4RDtnQkFDSSxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsV0FBVyxFQUFFLGtCQUFrQjtnQkFDL0IsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsUUFBUSxFQUFFLEtBQUs7YUFDbEI7WUFDRDtnQkFDSSxJQUFJLEVBQUUsT0FBTztnQkFDYixXQUFXLEVBQUUsb0JBQW9CO2dCQUNqQyxJQUFJLEVBQUUsU0FBUztnQkFDZixRQUFRLEVBQUUsS0FBSzthQUNsQjtZQUNEO2dCQUNJLElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSxxQkFBcUI7Z0JBQ2xDLElBQUksRUFBRSxTQUFTO2dCQUNmLFFBQVEsRUFBRSxLQUFLO2FBQ2xCO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsV0FBVyxFQUFFLDhDQUE4QztnQkFDM0QsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsUUFBUSxFQUFFLEtBQUs7YUFDbEI7WUFDRDtnQkFDSSxJQUFJLEVBQUUsV0FBVztnQkFDakIsV0FBVyxFQUFFLHdDQUF3QztnQkFDckQsSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsUUFB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RixPQUFPLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyw0QkFBNEIsQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gICAgQ2xpRm9yZWdyb3VuZENvbG9yLFxuICAgIENsaVByb2Nlc3NDb21tYW5kLFxuICAgIERlZmF1bHRMaWJyYXJ5QXV0aG9yLFxuICAgIElDbGlDb21tYW5kUGFyYW1ldGVyRGVzY3JpcHRvcixcbiAgICBJQ2xpQ29tbWFuZFByb2Nlc3NvcixcbiAgICBJQ2xpRXhlY3V0aW9uQ29udGV4dCxcbn0gZnJvbSAnQHFvZGFsaXMvY2xpLWNvcmUnO1xuXG5leHBvcnQgY2xhc3MgQ2xpVGV4dFRvSW1hZ2VDb21tYW5kUHJvY2Vzc29yIGltcGxlbWVudHMgSUNsaUNvbW1hbmRQcm9jZXNzb3Ige1xuICAgIGNvbW1hbmQgPSAndGV4dC10by1pbWFnZSc7XG4gICAgZGVzY3JpcHRpb24gPSAnQ29udmVydCB0ZXh0IHRvIGltYWdlJztcbiAgICBhdXRob3IgPSBEZWZhdWx0TGlicmFyeUF1dGhvcjtcbiAgICB2YWx1ZVJlcXVpcmVkID0gdHJ1ZTtcbiAgICBwYXJhbWV0ZXJzPzogSUNsaUNvbW1hbmRQYXJhbWV0ZXJEZXNjcmlwdG9yW10gfCB1bmRlZmluZWQgPSBbXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdmaWxlTmFtZScsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ05hbWUgb2YgdGhlIGZpbGUnLFxuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICd3aWR0aCcsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1dpZHRoIG9mIHRoZSBpbWFnZScsXG4gICAgICAgICAgICB0eXBlOiAnaW50ZWdlcicsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdoZWlnaHQnLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdIZWlnaHQgb2YgdGhlIGltYWdlJyxcbiAgICAgICAgICAgIHR5cGU6ICdpbnRlZ2VyJyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2JnQ29sb3InLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246ICdCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBpbWFnZSwgaW4gaGV4IGZvcm1hdCcsXG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3RleHRDb2xvcicsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ1RleHQgY29sb3Igb2YgdGhlIGltYWdlLCBpbiBoZXggZm9ybWF0JyxcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnZm9udCcsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0ZvbnQgc3R5bGUgYW5kIHNpemUnLFxuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgXTtcblxuICAgIGFsbG93VW5saXN0ZWRDb21tYW5kcyA9IHRydWU7XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBhc3luYyBwcm9jZXNzQ29tbWFuZChcbiAgICAgICAgY29tbWFuZDogQ2xpUHJvY2Vzc0NvbW1hbmQsXG4gICAgICAgIGNvbnRleHQ6IElDbGlFeGVjdXRpb25Db250ZXh0LFxuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB0ZXh0ID0gY29tbWFuZC52YWx1ZSB8fCAnJztcbiAgICAgICAgY29uc3Qgd2lkdGggPSBjb21tYW5kLmFyZ3NbJ3dpZHRoJ10gPz8gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IGNvbW1hbmQuYXJnc1snaGVpZ2h0J10gPz8gd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICBjb25zdCBmaWxlbmFtZSA9IGNvbW1hbmQuYXJnc1snZmlsZU5hbWUnXSA/PyAndGV4dC1pbWFnZS5wbmcnO1xuXG4gICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICBjYW52YXMud2lkdGggPSB3aWR0aDtcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG5cbiAgICAgICAgaWYgKCFjdHgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBnZXQgY2FudmFzIGNvbnRleHQnKTtcbiAgICAgICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlRXJyb3IoJ0ZhaWxlZCB0byBnZXQgY2FudmFzIGNvbnRleHQnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldCBiYWNrZ3JvdW5kIGNvbG9yXG4gICAgICAgIGN0eC5maWxsU3R5bGUgPSBjb21tYW5kLmFyZ3NbJ2JnQ29sb3InXSB8fCAnI2ZmZmZmZic7IC8vIFdoaXRlIGJhY2tncm91bmRcbiAgICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgICAgIC8vIFNldCB0ZXh0IHByb3BlcnRpZXNcbiAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGNvbW1hbmQuYXJnc1sndGV4dENvbG9yJ10gfHwgJyMwMDAwMDAnOyAvLyBCbGFjayB0ZXh0XG4gICAgICAgIGN0eC5mb250ID0gY29tbWFuZC5hcmdzWydmb250J10gfHwgJzMwcHggQXJpYWwnOyAvLyBGb250IHN0eWxlIGFuZCBzaXplXG4gICAgICAgIGN0eC50ZXh0QWxpZ24gPSAnY2VudGVyJztcbiAgICAgICAgY3R4LnRleHRCYXNlbGluZSA9ICdtaWRkbGUnO1xuXG4gICAgICAgIC8vIFJlbmRlciB0ZXh0XG4gICAgICAgIGNvbnN0IHggPSB3aWR0aCAvIDI7XG4gICAgICAgIGNvbnN0IHkgPSBoZWlnaHQgLyAyO1xuICAgICAgICBjdHguZmlsbFRleHQodGV4dCwgeCwgeSk7XG5cbiAgICAgICAgLy8gQ29udmVydCBjYW52YXMgdG8gZGF0YSBVUkxcbiAgICAgICAgY29uc3QgZGF0YVVybCA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBhIGxpbmsgZWxlbWVudCB0byB0cmlnZ2VyIGRvd25sb2FkXG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGxpbmsuaHJlZiA9IGRhdGFVcmw7XG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlbmFtZTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xuICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUluZm8oJ09wdGlvbnM6ICcpO1xuICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUluZm8oXG4gICAgICAgICAgICBgLSAke2NvbnRleHQud3JpdGVyLndyYXBJbkNvbG9yKCdUZXh0JywgQ2xpRm9yZWdyb3VuZENvbG9yLlllbGxvdyl9OiAke3RleHR9YCxcbiAgICAgICAgKTtcbiAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVJbmZvKFxuICAgICAgICAgICAgYC0gJHtjb250ZXh0LndyaXRlci53cmFwSW5Db2xvcignV2lkdGgnLCBDbGlGb3JlZ3JvdW5kQ29sb3IuWWVsbG93KX06ICR7d2lkdGh9YCxcbiAgICAgICAgKTtcbiAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVJbmZvKFxuICAgICAgICAgICAgYC0gJHtjb250ZXh0LndyaXRlci53cmFwSW5Db2xvcignSGVpZ2h0JywgQ2xpRm9yZWdyb3VuZENvbG9yLlllbGxvdyl9OiAke2hlaWdodH1gLFxuICAgICAgICApO1xuICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUluZm8oXG4gICAgICAgICAgICBgLSAke2NvbnRleHQud3JpdGVyLndyYXBJbkNvbG9yKCdGaWxlbmFtZScsIENsaUZvcmVncm91bmRDb2xvci5ZZWxsb3cpfTogJHtmaWxlbmFtZX1gLFxuICAgICAgICApO1xuICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUluZm8oXG4gICAgICAgICAgICBgLSAke2NvbnRleHQud3JpdGVyLndyYXBJbkNvbG9yKCdCYWNrZ3JvdW5kIGNvbG9yJywgQ2xpRm9yZWdyb3VuZENvbG9yLlllbGxvdyl9OiAke2N0eC5maWxsU3R5bGV9YCxcbiAgICAgICAgKTtcbiAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVJbmZvKFxuICAgICAgICAgICAgYC0gJHtjb250ZXh0LndyaXRlci53cmFwSW5Db2xvcignVGV4dCBjb2xvcicsIENsaUZvcmVncm91bmRDb2xvci5ZZWxsb3cpfTogJHtjdHguZmlsbFN0eWxlfWAsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlSW5mbyhcbiAgICAgICAgICAgIGAtICR7Y29udGV4dC53cml0ZXIud3JhcEluQ29sb3IoJ0ZvbnQnLCBDbGlGb3JlZ3JvdW5kQ29sb3IuWWVsbG93KX06ICR7Y3R4LmZvbnR9YCxcbiAgICAgICAgKTtcblxuICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZVN1Y2Nlc3MoJ0ltYWdlIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgfVxufVxuIl19
120
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpLXRleHQtdG8taW1hZ2UtY29tbWFuZC1wcm9jZXNzb3IuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy90ZXh0LXRvLWltYWdlL3NyYy9saWIvcHJvY2Vzc29ycy9jbGktdGV4dC10by1pbWFnZS1jb21tYW5kLXByb2Nlc3Nvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQ0gsa0JBQWtCLEVBR2xCLG9CQUFvQixHQUl2QixNQUFNLG1CQUFtQixDQUFDO0FBQzNCLE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFFN0MsTUFBTSxPQUFPLDhCQUE4QjtJQXVEdkM7UUF0REEsWUFBTyxHQUFHLGVBQWUsQ0FBQztRQUMxQixnQkFBVyxHQUFHLHVCQUF1QixDQUFDO1FBQ3RDLFdBQU0sR0FBRyxvQkFBb0IsQ0FBQztRQUM5QixrQkFBYSxHQUFHLElBQUksQ0FBQztRQUVyQixhQUFRLEdBQXNDO1lBQzFDLElBQUksRUFBRSxLQUFLO1lBQ1gsbUJBQW1CLEVBQUUsUUFBUTtZQUM3QixrQkFBa0IsRUFBRSxRQUFRO1NBQy9CLENBQUM7UUFFRixlQUFVLEdBQWtEO1lBQ3hEO2dCQUNJLElBQUksRUFBRSxVQUFVO2dCQUNoQixXQUFXLEVBQUUsa0JBQWtCO2dCQUMvQixJQUFJLEVBQUUsUUFBUTtnQkFDZCxRQUFRLEVBQUUsS0FBSzthQUNsQjtZQUNEO2dCQUNJLElBQUksRUFBRSxPQUFPO2dCQUNiLFdBQVcsRUFBRSxvQkFBb0I7Z0JBQ2pDLElBQUksRUFBRSxTQUFTO2dCQUNmLFFBQVEsRUFBRSxLQUFLO2FBQ2xCO1lBQ0Q7Z0JBQ0ksSUFBSSxFQUFFLFFBQVE7Z0JBQ2QsV0FBVyxFQUFFLHFCQUFxQjtnQkFDbEMsSUFBSSxFQUFFLFNBQVM7Z0JBQ2YsUUFBUSxFQUFFLEtBQUs7YUFDbEI7WUFDRDtnQkFDSSxJQUFJLEVBQUUsU0FBUztnQkFDZixXQUFXLEVBQUUsOENB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SyxNQUFNLENBQUMsV0FBVyxDQUFDLGFBQWEsRUFBRSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsNENBQTRDLENBQUMsQ0FBQztRQUM5SCxNQUFNLENBQUMsT0FBTyxDQUFDLEtBQUssTUFBTSxDQUFDLFdBQVcsQ0FBQyxRQUFRLEVBQUUsa0JBQWtCLENBQUMsTUFBTSxDQUFDLDZDQUE2QyxDQUFDLENBQUM7UUFDMUgsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLE1BQU0sQ0FBQyxXQUFXLENBQUMsWUFBWSxFQUFFLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxrREFBa0QsQ0FBQyxDQUFDO1FBQ25JLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztRQUNqQixNQUFNLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQy9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsc0VBQXNFLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxFQUFFLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNoSixNQUFNLENBQUMsT0FBTyxDQUFDLHNFQUFzRSxNQUFNLENBQUMsV0FBVyxDQUFDLGlCQUFpQixFQUFFLGtCQUFrQixDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztJQUM1SixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIENsaUZvcmVncm91bmRDb2xvcixcbiAgICBDbGlQcm9jZXNzQ29tbWFuZCxcbiAgICBDbGlQcm9jZXNzb3JNZXRhZGF0YSxcbiAgICBEZWZhdWx0TGlicmFyeUF1dGhvcixcbiAgICBJQ2xpQ29tbWFuZFBhcmFtZXRlckRlc2NyaXB0b3IsXG4gICAgSUNsaUNvbW1hbmRQcm9jZXNzb3IsXG4gICAgSUNsaUV4ZWN1dGlvbkNvbnRleHQsXG59IGZyb20gJ0Bxb2RhbGlzL2NsaS1jb3JlJztcbmltcG9ydCB7IExJQlJBUllfVkVSU0lPTiB9IGZyb20gJy4uL3ZlcnNpb24nO1xuXG5leHBvcnQgY2xhc3MgQ2xpVGV4dFRvSW1hZ2VDb21tYW5kUHJvY2Vzc29yIGltcGxlbWVudHMgSUNsaUNvbW1hbmRQcm9jZXNzb3Ige1xuICAgIGNvbW1hbmQgPSAndGV4dC10by1pbWFnZSc7XG4gICAgZGVzY3JpcHRpb24gPSAnQ29udmVydCB0ZXh0IHRvIGltYWdlJztcbiAgICBhdXRob3IgPSBEZWZhdWx0TGlicmFyeUF1dGhvcjtcbiAgICB2YWx1ZVJlcXVpcmVkID0gdHJ1ZTtcblxuICAgIG1ldGFkYXRhPzogQ2xpUHJvY2Vzc29yTWV0YWRhdGEgfCB1bmRlZmluZWQgPSB7XG4gICAgICAgIGljb246ICfwn5a877iPJyxcbiAgICAgICAgcmVxdWlyZWRDb3JlVmVyc2lvbjogJzAuMC4xNicsXG4gICAgICAgIHJlcXVpcmVkQ2xpVmVyc2lvbjogJzEuMC4zNycsXG4gICAgfTtcblxuICAgIHBhcmFtZXRlcnM/OiBJQ2xpQ29tbWFuZFBhcmFtZXRlckRlc2NyaXB0b3JbXSB8IHVuZGVmaW5lZCA9IFtcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2ZpbGVOYW1lJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnTmFtZSBvZiB0aGUgZmlsZScsXG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ3dpZHRoJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnV2lkdGggb2YgdGhlIGltYWdlJyxcbiAgICAgICAgICAgIHR5cGU6ICdpbnRlZ2VyJyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgbmFtZTogJ2hlaWdodCcsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0hlaWdodCBvZiB0aGUgaW1hZ2UnLFxuICAgICAgICAgICAgdHlwZTogJ2ludGVnZXInLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAnYmdDb2xvcicsXG4gICAgICAgICAgICBkZXNjcmlwdGlvbjogJ0JhY2tncm91bmQgY29sb3Igb2YgdGhlIGltYWdlLCBpbiBoZXggZm9ybWF0JyxcbiAgICAgICAgICAgIHR5cGU6ICdzdHJpbmcnLFxuICAgICAgICAgICAgcmVxdWlyZWQ6IGZhbHNlLFxuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBuYW1lOiAndGV4dENvbG9yJyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnVGV4dCBjb2xvciBvZiB0aGUgaW1hZ2UsIGluIGhleCBmb3JtYXQnLFxuICAgICAgICAgICAgdHlwZTogJ3N0cmluZycsXG4gICAgICAgICAgICByZXF1aXJlZDogZmFsc2UsXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIG5hbWU6ICdmb250JyxcbiAgICAgICAgICAgIGRlc2NyaXB0aW9uOiAnRm9udCBzdHlsZSBhbmQgc2l6ZScsXG4gICAgICAgICAgICB0eXBlOiAnc3RyaW5nJyxcbiAgICAgICAgICAgIHJlcXVpcmVkOiBmYWxzZSxcbiAgICAgICAgfSxcbiAgICBdO1xuXG4gICAgYWxsb3dVbmxpc3RlZENvbW1hbmRzID0gdHJ1ZTtcblxuICAgIHZlcnNpb24gPSBMSUJSQVJZX1ZFUlNJT047XG5cbiAgICBjb25zdHJ1Y3RvcigpIHt9XG5cbiAgICBhc3luYyBwcm9jZXNzQ29tbWFuZChcbiAgICAgICAgY29tbWFuZDogQ2xpUHJvY2Vzc0NvbW1hbmQsXG4gICAgICAgIGNvbnRleHQ6IElDbGlFeGVjdXRpb25Db250ZXh0LFxuICAgICk6IFByb21pc2U8dm9pZD4ge1xuICAgICAgICBjb25zdCB0ZXh0ID0gY29tbWFuZC52YWx1ZSB8fCAnJztcbiAgICAgICAgY29uc3Qgd2lkdGggPSBjb21tYW5kLmFyZ3NbJ3dpZHRoJ10gPz8gd2luZG93LmlubmVyV2lkdGg7XG4gICAgICAgIGNvbnN0IGhlaWdodCA9IGNvbW1hbmQuYXJnc1snaGVpZ2h0J10gPz8gd2luZG93LmlubmVySGVpZ2h0O1xuICAgICAgICBjb25zdCBmaWxlbmFtZSA9IGNvbW1hbmQuYXJnc1snZmlsZU5hbWUnXSA/PyAndGV4dC1pbWFnZS5wbmcnO1xuXG4gICAgICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2NhbnZhcycpO1xuICAgICAgICBjYW52YXMud2lkdGggPSB3aWR0aDtcbiAgICAgICAgY2FudmFzLmhlaWdodCA9IGhlaWdodDtcbiAgICAgICAgY29uc3QgY3R4ID0gY2FudmFzLmdldENvbnRleHQoJzJkJyk7XG5cbiAgICAgICAgaWYgKCFjdHgpIHtcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBnZXQgY2FudmFzIGNvbnRleHQnKTtcbiAgICAgICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlRXJyb3IoJ0ZhaWxlZCB0byBnZXQgY2FudmFzIGNvbnRleHQnKTtcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIFNldCBiYWNrZ3JvdW5kIGNvbG9yXG4gICAgICAgIGN0eC5maWxsU3R5bGUgPSBjb21tYW5kLmFyZ3NbJ2JnQ29sb3InXSB8fCAnI2ZmZmZmZic7IC8vIFdoaXRlIGJhY2tncm91bmRcbiAgICAgICAgY3R4LmZpbGxSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpO1xuXG4gICAgICAgIC8vIFNldCB0ZXh0IHByb3BlcnRpZXNcbiAgICAgICAgY3R4LmZpbGxTdHlsZSA9IGNvbW1hbmQuYXJnc1sndGV4dENvbG9yJ10gfHwgJyMwMDAwMDAnOyAvLyBCbGFjayB0ZXh0XG4gICAgICAgIGN0eC5mb250ID0gY29tbWFuZC5hcmdzWydmb250J10gfHwgJzMwcHggQXJpYWwnOyAvLyBGb250IHN0eWxlIGFuZCBzaXplXG4gICAgICAgIGN0eC50ZXh0QWxpZ24gPSAnY2VudGVyJztcbiAgICAgICAgY3R4LnRleHRCYXNlbGluZSA9ICdtaWRkbGUnO1xuXG4gICAgICAgIC8vIFJlbmRlciB0ZXh0XG4gICAgICAgIGNvbnN0IHggPSB3aWR0aCAvIDI7XG4gICAgICAgIGNvbnN0IHkgPSBoZWlnaHQgLyAyO1xuICAgICAgICBjdHguZmlsbFRleHQodGV4dCwgeCwgeSk7XG5cbiAgICAgICAgLy8gQ29udmVydCBjYW52YXMgdG8gZGF0YSBVUkxcbiAgICAgICAgY29uc3QgZGF0YVVybCA9IGNhbnZhcy50b0RhdGFVUkwoJ2ltYWdlL3BuZycpO1xuXG4gICAgICAgIC8vIENyZWF0ZSBhIGxpbmsgZWxlbWVudCB0byB0cmlnZ2VyIGRvd25sb2FkXG4gICAgICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdhJyk7XG4gICAgICAgIGxpbmsuaHJlZiA9IGRhdGFVcmw7XG4gICAgICAgIGxpbmsuZG93bmxvYWQgPSBmaWxlbmFtZTtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChsaW5rKTtcbiAgICAgICAgbGluay5jbGljaygpO1xuICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGxpbmspO1xuICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUluZm8oJ09wdGlvbnM6ICcpO1xuICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUluZm8oXG4gICAgICAgICAgICBgLSAke2NvbnRleHQud3JpdGVyLndyYXBJbkNvbG9yKCdUZXh0JywgQ2xpRm9yZWdyb3VuZENvbG9yLlllbGxvdyl9OiAke3RleHR9YCxcbiAgICAgICAgKTtcbiAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVJbmZvKFxuICAgICAgICAgICAgYC0gJHtjb250ZXh0LndyaXRlci53cmFwSW5Db2xvcignV2lkdGgnLCBDbGlGb3JlZ3JvdW5kQ29sb3IuWWVsbG93KX06ICR7d2lkdGh9YCxcbiAgICAgICAgKTtcbiAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVJbmZvKFxuICAgICAgICAgICAgYC0gJHtjb250ZXh0LndyaXRlci53cmFwSW5Db2xvcignSGVpZ2h0JywgQ2xpRm9yZWdyb3VuZENvbG9yLlllbGxvdyl9OiAke2hlaWdodH1gLFxuICAgICAgICApO1xuICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUluZm8oXG4gICAgICAgICAgICBgLSAke2NvbnRleHQud3JpdGVyLndyYXBJbkNvbG9yKCdGaWxlbmFtZScsIENsaUZvcmVncm91bmRDb2xvci5ZZWxsb3cpfTogJHtmaWxlbmFtZX1gLFxuICAgICAgICApO1xuICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZUluZm8oXG4gICAgICAgICAgICBgLSAke2NvbnRleHQud3JpdGVyLndyYXBJbkNvbG9yKCdCYWNrZ3JvdW5kIGNvbG9yJywgQ2xpRm9yZWdyb3VuZENvbG9yLlllbGxvdyl9OiAke2N0eC5maWxsU3R5bGV9YCxcbiAgICAgICAgKTtcbiAgICAgICAgY29udGV4dC53cml0ZXIud3JpdGVJbmZvKFxuICAgICAgICAgICAgYC0gJHtjb250ZXh0LndyaXRlci53cmFwSW5Db2xvcignVGV4dCBjb2xvcicsIENsaUZvcmVncm91bmRDb2xvci5ZZWxsb3cpfTogJHtjdHguZmlsbFN0eWxlfWAsXG4gICAgICAgICk7XG4gICAgICAgIGNvbnRleHQud3JpdGVyLndyaXRlSW5mbyhcbiAgICAgICAgICAgIGAtICR7Y29udGV4dC53cml0ZXIud3JhcEluQ29sb3IoJ0ZvbnQnLCBDbGlGb3JlZ3JvdW5kQ29sb3IuWWVsbG93KX06ICR7Y3R4LmZvbnR9YCxcbiAgICAgICAgKTtcblxuICAgICAgICBjb250ZXh0LndyaXRlci53cml0ZVN1Y2Nlc3MoJ0ltYWdlIGNyZWF0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XG4gICAgfVxuXG4gICAgd3JpdGVEZXNjcmlwdGlvbihjb250ZXh0OiBJQ2xpRXhlY3V0aW9uQ29udGV4dCk6IHZvaWQge1xuICAgICAgICBjb25zdCB7IHdyaXRlciB9ID0gY29udGV4dDtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4oJ0NvbnZlcnQgdGV4dCBpbnRvIGEgZG93bmxvYWRhYmxlIFBORyBpbWFnZScpO1xuICAgICAgICB3cml0ZXIud3JpdGVsbigpO1xuICAgICAgICB3cml0ZXIud3JpdGVsbign8J+TiyBVc2FnZTonKTtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4oYCAgJHt3cml0ZXIud3JhcEluQ29sb3IoJ3RleHQtdG8taW1hZ2UgPHRleHQ+IFtvcHRpb25zXScsIENsaUZvcmVncm91bmRDb2xvci5DeWFuKX1gKTtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4oKTtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4oJ+Kame+4jyAgT3B0aW9uczonKTtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4oYCAgJHt3cml0ZXIud3JhcEluQ29sb3IoJy0td2lkdGgnLCBDbGlGb3JlZ3JvdW5kQ29sb3IuWWVsbG93KX0gICAgICAgICAgSW1hZ2Ugd2lkdGggKGRlZmF1bHQ6IHdpbmRvdyB3aWR0aClgKTtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4oYCAgJHt3cml0ZXIud3JhcEluQ29sb3IoJy0taGVpZ2h0JywgQ2xpRm9yZWdyb3VuZENvbG9yLlllbGxvdyl9ICAgICAgICAgSW1hZ2UgaGVpZ2h0IChkZWZhdWx0OiB3aW5kb3cgaGVpZ2h0KWApO1xuICAgICAgICB3cml0ZXIud3JpdGVsbihgICAke3dyaXRlci53cmFwSW5Db2xvcignLS1iZ0NvbG9yJywgQ2xpRm9yZWdyb3VuZENvbG9yLlllbGxvdyl9ICAgICAgICBCYWNrZ3JvdW5kIGNvbG9yIGluIGhleCAoZGVmYXVsdDogI2ZmZmZmZilgKTtcbiAgICAgICAgd3JpdGVyLndyaXRlbG4oYCAgJHt3cml0ZXIud3JhcEluQ29sb3IoJy0tdGV4dENvbG9yJywgQ2xpRm9yZWdyb3VuZENvbG9yLlllbGxvdyl9ICAgICAgVGV4dCBjb2xvciBpbiBoZXggKGRlZmF1bHQ6ICMwMDAwMDApYCk7XG4gICAgICAgIHdyaXRlci53cml0ZWxuKGAgICR7d3JpdGVyLndyYXBJbkNvbG9yKCctLWZvbnQnLCBDbGlGb3JlZ3JvdW5kQ29sb3IuWWVsbG93KX0gICAgICAgICAgIEZvbnQgc3R5bGUgKGRlZmF1bHQ6IDMwcHggQXJpYWwpYCk7XG4gICAgICAgIHdyaXRlci53cml0ZWxuKGAgICR7d3JpdGVyLndyYXBJbkNvbG9yKCctLWZpbGVOYW1lJywgQ2xpRm9yZWdyb3VuZENvbG9yLlllbGxvdyl9ICAgICAgIE91dHB1dCBmaWxlbmFtZSAoZGVmYXVsdDogdGV4dC1pbWFnZS5wbmcpYCk7XG4gICAgICAgIHdyaXRlci53cml0ZWxuKCk7XG4gICAgICAgIHdyaXRlci53cml0ZWxuKCfwn5OdIEV4YW1wbGVzOicpO1xuICAgICAgICB3cml0ZXIud3JpdGVsbihgICB0ZXh0LXRvLWltYWdlIFwiSGVsbG8gV29ybGRcIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHt3cml0ZXIud3JhcEluQ29sb3IoJyMgQmFzaWMnLCBDbGlGb3JlZ3JvdW5kQ29sb3IuR3JlZW4pfWApO1xuICAgICAgICB3cml0ZXIud3JpdGVsbihgICB0ZXh0LXRvLWltYWdlIFwiQmFubmVyXCIgLS1iZ0NvbG9yPSMxYTFhMmUgLS10ZXh0Q29sb3I9I2UwZTBlMCAgICAgJHt3cml0ZXIud3JhcEluQ29sb3IoJyMgQ3VzdG9tIGNvbG9ycycsIENsaUZvcmVncm91bmRDb2xvci5HcmVlbil9YCk7XG4gICAgfVxufVxuIl19
@@ -0,0 +1,3 @@
1
+ // Automatically generated during build
2
+ export const LIBRARY_VERSION = '0.0.4';
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL3RleHQtdG8taW1hZ2Uvc3JjL2xpYi92ZXJzaW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLHVDQUF1QztBQUN2QyxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsT0FBTyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiXG4vLyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBkdXJpbmcgYnVpbGRcbmV4cG9ydCBjb25zdCBMSUJSQVJZX1ZFUlNJT04gPSAnMC4wLjQnO1xuICAiXX0=
@@ -3,12 +3,20 @@ 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.4';
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
+ requiredCoreVersion: '0.0.16',
18
+ requiredCliVersion: '1.0.37',
19
+ };
12
20
  this.parameters = [
13
21
  {
14
22
  name: 'fileName',
@@ -48,6 +56,7 @@ class CliTextToImageCommandProcessor {
48
56
  },
49
57
  ];
50
58
  this.allowUnlistedCommands = true;
59
+ this.version = LIBRARY_VERSION;
51
60
  }
52
61
  async processCommand(command, context) {
53
62
  const text = command.value || '';
@@ -94,6 +103,25 @@ class CliTextToImageCommandProcessor {
94
103
  context.writer.writeInfo(`- ${context.writer.wrapInColor('Font', CliForegroundColor.Yellow)}: ${ctx.font}`);
95
104
  context.writer.writeSuccess('Image created successfully');
96
105
  }
106
+ writeDescription(context) {
107
+ const { writer } = context;
108
+ writer.writeln('Convert text into a downloadable PNG image');
109
+ writer.writeln();
110
+ writer.writeln('📋 Usage:');
111
+ writer.writeln(` ${writer.wrapInColor('text-to-image <text> [options]', CliForegroundColor.Cyan)}`);
112
+ writer.writeln();
113
+ writer.writeln('⚙️ Options:');
114
+ writer.writeln(` ${writer.wrapInColor('--width', CliForegroundColor.Yellow)} Image width (default: window width)`);
115
+ writer.writeln(` ${writer.wrapInColor('--height', CliForegroundColor.Yellow)} Image height (default: window height)`);
116
+ writer.writeln(` ${writer.wrapInColor('--bgColor', CliForegroundColor.Yellow)} Background color in hex (default: #ffffff)`);
117
+ writer.writeln(` ${writer.wrapInColor('--textColor', CliForegroundColor.Yellow)} Text color in hex (default: #000000)`);
118
+ writer.writeln(` ${writer.wrapInColor('--font', CliForegroundColor.Yellow)} Font style (default: 30px Arial)`);
119
+ writer.writeln(` ${writer.wrapInColor('--fileName', CliForegroundColor.Yellow)} Output filename (default: text-image.png)`);
120
+ writer.writeln();
121
+ writer.writeln('📝 Examples:');
122
+ writer.writeln(` text-to-image "Hello World" ${writer.wrapInColor('# Basic', CliForegroundColor.Green)}`);
123
+ writer.writeln(` text-to-image "Banner" --bgColor=#1a1a2e --textColor=#e0e0e0 ${writer.wrapInColor('# Custom colors', CliForegroundColor.Green)}`);
124
+ }
97
125
  }
98
126
 
99
127
  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.4';\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 requiredCoreVersion: '0.0.16',\n requiredCliVersion: '1.0.37',\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
  }
@@ -0,0 +1 @@
1
+ export declare const LIBRARY_VERSION = "0.0.4";
package/package.json CHANGED
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@qodalis/cli-text-to-image",
3
- "version": "0.0.2",
3
+ "version": "0.0.4",
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/qodalis-angular-cli"
9
+ "url": "https://github.com/qodalis-solutions/angular-web-cli"
10
10
  },
11
11
  "homepage": "https://qodalis.com",
12
12
  "keywords": [
@@ -24,8 +24,8 @@
24
24
  },
25
25
  "dependencies": {
26
26
  "tslib": "^2.3.0",
27
- "@qodalis/cli-core": "^0.0.6",
28
- "@qodalis/angular-cli": "^1.0.15"
27
+ "@qodalis/cli-core": "^0.0.16",
28
+ "@qodalis/angular-cli": "^1.0.37"
29
29
  },
30
30
  "sideEffects": false,
31
31
  "module": "fesm2022/qodalis-cli-text-to-image.mjs",
package/umd/index.js CHANGED
@@ -1,106 +1,134 @@
1
1
  (function (global, factory) {
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));
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
- class CliTextToImageCommandProcessor {
8
- constructor() {
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.4';
99
9
 
100
- const module = {
101
- name: '@qodalis/cli-text-to-image',
102
- processors: [new CliTextToImageCommandProcessor()],
103
- };
104
- cliCore.bootUmdModule(module);
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
+ requiredCoreVersion: '0.0.16',
19
+ requiredCliVersion: '1.0.37',
20
+ };
21
+ this.parameters = [
22
+ {
23
+ name: 'fileName',
24
+ description: 'Name of the file',
25
+ type: 'string',
26
+ required: false,
27
+ },
28
+ {
29
+ name: 'width',
30
+ description: 'Width of the image',
31
+ type: 'integer',
32
+ required: false,
33
+ },
34
+ {
35
+ name: 'height',
36
+ description: 'Height of the image',
37
+ type: 'integer',
38
+ required: false,
39
+ },
40
+ {
41
+ name: 'bgColor',
42
+ description: 'Background color of the image, in hex format',
43
+ type: 'string',
44
+ required: false,
45
+ },
46
+ {
47
+ name: 'textColor',
48
+ description: 'Text color of the image, in hex format',
49
+ type: 'string',
50
+ required: false,
51
+ },
52
+ {
53
+ name: 'font',
54
+ description: 'Font style and size',
55
+ type: 'string',
56
+ required: false,
57
+ },
58
+ ];
59
+ this.allowUnlistedCommands = true;
60
+ this.version = LIBRARY_VERSION;
61
+ }
62
+ async processCommand(command, context) {
63
+ const text = command.value || '';
64
+ const width = command.args['width'] ?? window.innerWidth;
65
+ const height = command.args['height'] ?? window.innerHeight;
66
+ const filename = command.args['fileName'] ?? 'text-image.png';
67
+ const canvas = document.createElement('canvas');
68
+ canvas.width = width;
69
+ canvas.height = height;
70
+ const ctx = canvas.getContext('2d');
71
+ if (!ctx) {
72
+ console.error('Failed to get canvas context');
73
+ context.writer.writeError('Failed to get canvas context');
74
+ return;
75
+ }
76
+ // Set background color
77
+ ctx.fillStyle = command.args['bgColor'] || '#ffffff'; // White background
78
+ ctx.fillRect(0, 0, width, height);
79
+ // Set text properties
80
+ ctx.fillStyle = command.args['textColor'] || '#000000'; // Black text
81
+ ctx.font = command.args['font'] || '30px Arial'; // Font style and size
82
+ ctx.textAlign = 'center';
83
+ ctx.textBaseline = 'middle';
84
+ // Render text
85
+ const x = width / 2;
86
+ const y = height / 2;
87
+ ctx.fillText(text, x, y);
88
+ // Convert canvas to data URL
89
+ const dataUrl = canvas.toDataURL('image/png');
90
+ // Create a link element to trigger download
91
+ const link = document.createElement('a');
92
+ link.href = dataUrl;
93
+ link.download = filename;
94
+ document.body.appendChild(link);
95
+ link.click();
96
+ document.body.removeChild(link);
97
+ context.writer.writeInfo('Options: ');
98
+ context.writer.writeInfo(`- ${context.writer.wrapInColor('Text', cliCore.CliForegroundColor.Yellow)}: ${text}`);
99
+ context.writer.writeInfo(`- ${context.writer.wrapInColor('Width', cliCore.CliForegroundColor.Yellow)}: ${width}`);
100
+ context.writer.writeInfo(`- ${context.writer.wrapInColor('Height', cliCore.CliForegroundColor.Yellow)}: ${height}`);
101
+ context.writer.writeInfo(`- ${context.writer.wrapInColor('Filename', cliCore.CliForegroundColor.Yellow)}: ${filename}`);
102
+ context.writer.writeInfo(`- ${context.writer.wrapInColor('Background color', cliCore.CliForegroundColor.Yellow)}: ${ctx.fillStyle}`);
103
+ context.writer.writeInfo(`- ${context.writer.wrapInColor('Text color', cliCore.CliForegroundColor.Yellow)}: ${ctx.fillStyle}`);
104
+ context.writer.writeInfo(`- ${context.writer.wrapInColor('Font', cliCore.CliForegroundColor.Yellow)}: ${ctx.font}`);
105
+ context.writer.writeSuccess('Image created successfully');
106
+ }
107
+ writeDescription(context) {
108
+ const { writer } = context;
109
+ writer.writeln('Convert text into a downloadable PNG image');
110
+ writer.writeln();
111
+ writer.writeln('📋 Usage:');
112
+ writer.writeln(` ${writer.wrapInColor('text-to-image <text> [options]', cliCore.CliForegroundColor.Cyan)}`);
113
+ writer.writeln();
114
+ writer.writeln('⚙️ Options:');
115
+ writer.writeln(` ${writer.wrapInColor('--width', cliCore.CliForegroundColor.Yellow)} Image width (default: window width)`);
116
+ writer.writeln(` ${writer.wrapInColor('--height', cliCore.CliForegroundColor.Yellow)} Image height (default: window height)`);
117
+ writer.writeln(` ${writer.wrapInColor('--bgColor', cliCore.CliForegroundColor.Yellow)} Background color in hex (default: #ffffff)`);
118
+ writer.writeln(` ${writer.wrapInColor('--textColor', cliCore.CliForegroundColor.Yellow)} Text color in hex (default: #000000)`);
119
+ writer.writeln(` ${writer.wrapInColor('--font', cliCore.CliForegroundColor.Yellow)} Font style (default: 30px Arial)`);
120
+ writer.writeln(` ${writer.wrapInColor('--fileName', cliCore.CliForegroundColor.Yellow)} Output filename (default: text-image.png)`);
121
+ writer.writeln();
122
+ writer.writeln('📝 Examples:');
123
+ writer.writeln(` text-to-image "Hello World" ${writer.wrapInColor('# Basic', cliCore.CliForegroundColor.Green)}`);
124
+ writer.writeln(` text-to-image "Banner" --bgColor=#1a1a2e --textColor=#e0e0e0 ${writer.wrapInColor('# Custom colors', cliCore.CliForegroundColor.Green)}`);
125
+ }
126
+ }
127
+
128
+ const module = {
129
+ name: '@qodalis/cli-text-to-image',
130
+ processors: [new CliTextToImageCommandProcessor()],
131
+ };
132
+ cliCore.bootUmdModule(module);
105
133
 
106
134
  }));