From 7ce01b97e4c0a27003dc2c45ecf1cd8281c8ac39 Mon Sep 17 00:00:00 2001 From: Kim Biesbjerg Date: Wed, 31 Jul 2019 13:06:09 +0200 Subject: [PATCH] add donate info --- .github/FUNDING.yml | 7 +- README.md | 6 +- images/donate-badge.png | Bin 0 -> 15917 bytes package-lock.json | 179 ++++++++++++++++++++++++++++++++++++++-- package.json | 2 + src/cli/cli.ts | 9 +- src/utils/donate.ts | 19 +++++ 7 files changed, 207 insertions(+), 15 deletions(-) create mode 100644 images/donate-badge.png create mode 100644 src/utils/donate.ts diff --git a/.github/FUNDING.yml b/.github/FUNDING.yml index 0ae8144..3c70d71 100644 --- a/.github/FUNDING.yml +++ b/.github/FUNDING.yml @@ -1,5 +1,2 @@ -github: biesbjerg -open_collective: ngx-translate-extract -ko_fi: biesbjerg -custom: https://ngx-translate-extract.biesbjerg.com/donate - +github: #biesbjerg +custom: https://donate.biesbjerg.com diff --git a/README.md b/README.md index 342168b..405bdf2 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,7 @@ +If this tool saves you time, please consider making a donation towards the continued maintainence and development: https://donate.biesbjerg.com + +[![Donate](images/donate-badge.png)](https://donate.biesbjerg.com) + # Usage ## ngx-translate-extract @@ -74,7 +78,7 @@ _('Extract me'); `ngx-translate-extract ... -m _` ## Commandline arguments -``` +```shell Usage: ngx-translate-extract [options] diff --git a/images/donate-badge.png b/images/donate-badge.png new file mode 100644 index 0000000000000000000000000000000000000000..888616f74354edcd3f7b3662e15edfbad78cdedd GIT binary patch literal 15917 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 Law0WC`housPRJZD literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index 74a3615..916615c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -103,12 +103,50 @@ "integrity": "sha512-wBlsw+8n21e6eTd4yVv8YD/E3xq0O6nNnJIquutAsFGE7EyMKz7W6RNT6BRu1SmdgmlCZ9tb0X+j+D6HGr8pZw==", "dev": true }, + "ansi-align": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.0.tgz", + "integrity": "sha512-ZpClVKqXN3RGBmKibdfWzqCY4lnjEuoNzU5T0oEFpfd/z5qJHVarukridD4juLO2FXMiwUQxr9WqQtaYa8XRYw==", + "requires": { + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, "ansi-colors": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.3.tgz", "integrity": "sha512-LEHHyuhlPY3TmuUYMh2oz89lTShfvgbmzaBcxve9t/9Wuy7Dwf4yoAKcND7KFT1HAQfqZ12qtc+DUrBMeKF9nw==", "dev": true }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==" + }, "ansi-regex": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", @@ -149,6 +187,56 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, + "boxen": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-4.1.0.tgz", + "integrity": "sha512-Iwq1qOkmEsl0EVABa864Bbj3HCL4186DRZgFW/NrFs5y5GMM3ljsxzMLgOHdWISDRvcM8beh8q4tTNzXz+mSKg==", + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^5.3.1", + "chalk": "^2.4.2", + "cli-boxes": "^2.2.0", + "string-width": "^4.1.0", + "term-size": "^2.1.0", + "type-fest": "^0.5.2", + "widest-line": "^3.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "string-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", + "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^5.2.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, "brace-expansion": { "version": "1.1.8", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", @@ -199,7 +287,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "requires": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -212,6 +299,11 @@ "integrity": "sha1-V00xLt2Iu13YkS6Sht1sCu1KrII=", "dev": true }, + "cli-boxes": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.0.tgz", + "integrity": "sha512-gpaBrMAizVEANOpfZp/EEUixTXDyGt7DFzdK5hU+UbWt/J0lB0w20ncZj59Z9a93xHb9u12zF5BS6i9RKbtg4w==" + }, "cliui": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", @@ -382,8 +474,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" }, "esprima": { "version": "4.0.1", @@ -501,8 +592,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" }, "has-symbols": { "version": "1.0.0", @@ -1123,11 +1213,40 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "requires": { "has-flag": "^3.0.0" } }, + "supports-hyperlinks": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-1.0.1.tgz", + "integrity": "sha512-HHi5kVSefKaJkGYXbDuKbUGRVxqnWGn3J2e39CYcNJEfWciGq2zYtOhXLTlvrOZW1QU7VX67w7fMmWafHX9Pfw==", + "requires": { + "has-flag": "^2.0.0", + "supports-color": "^5.0.0" + }, + "dependencies": { + "has-flag": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-2.0.0.tgz", + "integrity": "sha1-6CB68cx7MNRGzHC3NLXovhj4jVE=" + } + } + }, + "term-size": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/term-size/-/term-size-2.1.0.tgz", + "integrity": "sha512-I42EWhJ+2aeNQawGx1VtpO0DFI9YcfuvAMNIdKyf/6sRbHJ4P+ZQ/zIT87tE+ln1ymAGcCJds4dolfSAS0AcNg==" + }, + "terminal-link": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-1.3.0.tgz", + "integrity": "sha512-nFaWG/gs3brGi3opgWU2+dyFGbQ7tueSRYOBOD8URdDXCbAGqDEZzuskCc+okCClYcJFDPwn8e2mbv4FqAnWFA==", + "requires": { + "ansi-escapes": "^3.2.0", + "supports-hyperlinks": "^1.0.1" + } + }, "ts-node": { "version": "8.3.0", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz", @@ -1218,6 +1337,11 @@ "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "dev": true }, + "type-fest": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.5.2.tgz", + "integrity": "sha512-DWkS49EQKVX//Tbupb9TFa19c7+MK1XmzkrZUR8TAktmE/DizXoaoJV6TZ/tSIPXipqNiRI6CyAe7x69Jb6RSw==" + }, "typescript": { "version": "3.5.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.5.3.tgz", @@ -1266,6 +1390,49 @@ "string-width": "^1.0.2 || 2" } }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "requires": { + "string-width": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "string-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.1.0.tgz", + "integrity": "sha512-NrX+1dVVh+6Y9dnQ19pR0pP4FiEIlUvdTGn8pw6CKTNq5sgib2nIhmUNT5TAmhWmvKr3WcxBcP3E8nWezuipuQ==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^5.2.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, "wrap-ansi": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", diff --git a/package.json b/package.json index cd62ce1..361a9fd 100644 --- a/package.json +++ b/package.json @@ -58,12 +58,14 @@ }, "dependencies": { "@angular/compiler": "^8.1.3", + "boxen": "^4.1.0", "colorette": "^1.1.0", "flat": "^4.1.0", "gettext-parser": "^4.0.1", "glob": "^7.1.4", "mkdirp": "^0.5.1", "path": "^0.12.7", + "terminal-link": "^1.3.0", "typescript": "^3.5.3", "yargs": "^13.3.0" } diff --git a/src/cli/cli.ts b/src/cli/cli.ts index 545b9ad..a0cd694 100755 --- a/src/cli/cli.ts +++ b/src/cli/cli.ts @@ -1,3 +1,6 @@ +import * as fs from 'fs'; +import * as yargs from 'yargs'; + import { ExtractTask } from './tasks/extract.task'; import { ParserInterface } from '../parsers/parser.interface'; import { PipeParser } from '../parsers/pipe.parser'; @@ -10,9 +13,7 @@ import { KeyAsDefaultValuePostProcessor } from '../post-processors/key-as-defaul import { PurgeObsoleteKeysPostProcessor } from '../post-processors/purge-obsolete-keys.post-processor'; import { CompilerInterface } from '../compilers/compiler.interface'; import { CompilerFactory } from '../compilers/compiler.factory'; - -import * as fs from 'fs'; -import * as yargs from 'yargs'; +import { donateMessage } from '../utils/donate'; export const cli = yargs .usage('Extract strings from files for translation.\nUsage: $0 [options]') @@ -133,3 +134,5 @@ const compiler: CompilerInterface = CompilerFactory.create(cli.format, { extractTask.setCompiler(compiler); extractTask.execute(); + +console.log(donateMessage); diff --git a/src/utils/donate.ts b/src/utils/donate.ts new file mode 100644 index 0000000..71073d9 --- /dev/null +++ b/src/utils/donate.ts @@ -0,0 +1,19 @@ +import { yellow } from 'colorette'; +import * as boxen from 'boxen'; +import * as terminalLink from 'terminal-link'; + +const url = 'https://donate.biesbjerg.com'; +const text = ` +If this tool saves you time, please consider making a +donation towards the continued maintainence and development: + +${yellow(terminalLink(url, url))} +`; + +export const donateMessage = boxen(text.trim(), { + padding: 1, + margin: 0, + borderColor: 'yellow', + backgroundColor: 'black', + dimBorder: true +});