From cc492dfc0de3cc5537284cad15a166e55514c603 Mon Sep 17 00:00:00 2001 From: "Douglas C. R. Paes" Date: Fri, 8 Oct 2021 14:32:49 -0300 Subject: [PATCH] Optional "options" parameter and carbone upgrade The ability to receive an options json file to allow control of the process, like converting files into PDF format and carbone upgrade. --- README.md | 16 ++-- bin/carbone-cli | 20 +++-- package-lock.json | 204 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 4 +- yarn.lock | 105 +++++++++++++++--------- 5 files changed, 293 insertions(+), 56 deletions(-) create mode 100644 package-lock.json diff --git a/README.md b/README.md index 0a51696..df0b789 100644 --- a/README.md +++ b/README.md @@ -8,20 +8,20 @@ npm install -g carbon-cli ## Usage ```bash -carbone-cli [input-file] [data-file] [output-file] +carbone-cli [input-file] [data-file] [output-file] [options-file] ``` where -- [input-file] is a docx template +- [input-file] is a template - [data-file] is a json file -- [output-file] is the result docx document +- [output-file] is the result document +- [options-file] is a json file containing the carbone options + +the options file can be used, for example, to convert the file into pdf after processing e.g, ```bash -carbone-cli template.docx data.json output.docx +carbone-cli template.docx data.json output.docx options.json ``` -will generate `output.docx` from `template.docx` and `data.json` - - - +will generate `output.docx` from `template.docx` and `data.json` \ No newline at end of file diff --git a/bin/carbone-cli b/bin/carbone-cli index 499dbc6..6f9969a 100755 --- a/bin/carbone-cli +++ b/bin/carbone-cli @@ -4,31 +4,39 @@ const fs = require('fs'); const carbone = require('carbone'); function usage () { - console.info('Usage: carbone-cli [input-file] [data-file] [output-file]'); - console.info(' [input-file]\t\tTemplate in docx format'); + console.info('Usage: carbone-cli [input-file] [data-file] [output-file] [option-file]'); + console.info(' [input-file]\t\tTemplate file'); console.info(' [data-file]\t\tData file in json format'); - console.info(' [output-file]\t\tOutput file in docx format'); + console.info(' [output-file]\t\tOutput file'); + console.info(' [option-file]\t\tOption file in json format'); } -if (process.argv.length != 5) { +if (process.argv.length < 5 || process.argv.length > 6) { usage(); process.exit(); } const inputFile = process.argv[2] const dataFile = process.argv[3] -const outputFile = process.argv[4] +var outputFile = process.argv[4] +var optionsFile = {}; + +if (process.argv.length == 6) { + optionsFile = JSON.parse(fs.readFileSync(process.argv[5], 'utf8')); +} console.log(inputFile); console.log(dataFile); console.log(outputFile); +console.log(optionsFile); const res = fs.readFileSync(dataFile, "utf-8"); const data = JSON.parse(res); -carbone.render(inputFile, data, function (err, result) { +carbone.render(inputFile, data, optionsFile, function (err, result) { if (err) { return console.log(err); } fs.writeFileSync(outputFile, result); + process.exit(); }); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..d4e3294 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,204 @@ +{ + "name": "carbone-cli", + "version": "1.2.0", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "version": "1.2.0", + "license": "MIT", + "dependencies": { + "carbone": "^3.1.0" + }, + "bin": { + "carbone-cli": "bin/carbone-cli" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=", + "engines": { + "node": "*" + } + }, + "node_modules/carbone": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/carbone/-/carbone-3.2.3.tgz", + "integrity": "sha512-UV7nOsxje6/ChjbGip4lBOepozwPtH06JaiO08YAAx45f4M7HVRR8y6YPzLy0g3XfbVewODCaIFIPqCFwO6O5Q==", + "dependencies": { + "dayjs": "=1.10.4", + "debug": "=4.1.1", + "timsort": "=0.3.0", + "which": "=2.0.2", + "yauzl": "=2.10.0", + "yazl": "=2.5.1" + }, + "bin": { + "carbone": "bin/carbone" + }, + "engines": { + "node": ">= 10.15.0" + } + }, + "node_modules/dayjs": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz", + "integrity": "sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==" + }, + "node_modules/debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "deprecated": "Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dependencies": { + "buffer-crc32": "~0.2.3" + } + } + }, + "dependencies": { + "buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + }, + "carbone": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/carbone/-/carbone-3.2.3.tgz", + "integrity": "sha512-UV7nOsxje6/ChjbGip4lBOepozwPtH06JaiO08YAAx45f4M7HVRR8y6YPzLy0g3XfbVewODCaIFIPqCFwO6O5Q==", + "requires": { + "dayjs": "=1.10.4", + "debug": "=4.1.1", + "timsort": "=0.3.0", + "which": "=2.0.2", + "yauzl": "=2.10.0", + "yazl": "=2.5.1" + } + }, + "dayjs": { + "version": "1.10.4", + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz", + "integrity": "sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==" + }, + "debug": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz", + "integrity": "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==", + "requires": { + "ms": "^2.1.1" + } + }, + "fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=", + "requires": { + "pend": "~1.2.0" + } + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=", + "requires": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "requires": { + "buffer-crc32": "~0.2.3" + } + } + } +} diff --git a/package.json b/package.json index 615d045..d691144 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "carbone-cli", - "version": "1.0.1", + "version": "1.2.0", "description": "Command line interface for Carbone.io", "main": "bin/carbone-cli.js", "bin": { @@ -10,6 +10,6 @@ "author": "Nguyen Duc Tam ", "license": "MIT", "dependencies": { - "carbone": "^1.1.0" + "carbone": "^3.1.0" } } diff --git a/yarn.lock b/yarn.lock index 1daf173..cbe32ce 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,55 +2,80 @@ # yarn lockfile v1 -buffer-crc32@~0.2.3: - version "0.2.13" - resolved "https://registry.yarnpkg.com/buffer-crc32/-/buffer-crc32-0.2.13.tgz#0d333e3f00eac50aa1454abd30ef8c2a5d9a7242" +"buffer-crc32@~0.2.3": + "integrity" "sha1-DTM+PwDqxQqhRUq9MO+MKl2ackI=" + "resolved" "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz" + "version" "0.2.13" -carbone@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/carbone/-/carbone-1.1.0.tgz#499a2e8de3db7845bccc6f70c36a657ce23b64ad" +"carbone@^3.1.0": + "integrity" "sha512-UV7nOsxje6/ChjbGip4lBOepozwPtH06JaiO08YAAx45f4M7HVRR8y6YPzLy0g3XfbVewODCaIFIPqCFwO6O5Q==" + "resolved" "https://registry.npmjs.org/carbone/-/carbone-3.2.3.tgz" + "version" "3.2.3" dependencies: - debug "=2.6.8" - moment "=2.18.1" - moxie-zip "=0.0.3" - timsort "=0.3.0" - yauzl "=2.8.0" - -debug@=2.6.8: - version "2.6.8" - resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.8.tgz#e731531ca2ede27d188222427da17821d68ff4fc" + "dayjs" "=1.10.4" + "debug" "=4.1.1" + "timsort" "=0.3.0" + "which" "=2.0.2" + "yauzl" "=2.10.0" + "yazl" "=2.5.1" + +"dayjs@=1.10.4": + "integrity" "sha512-RI/Hh4kqRc1UKLOAf/T5zdMMX5DQIlDxwUe3wSyMMnEbGunnpENCdbUgM+dW7kXidZqCttBrmw7BhN4TMddkCw==" + "resolved" "https://registry.npmjs.org/dayjs/-/dayjs-1.10.4.tgz" + "version" "1.10.4" + +"debug@=4.1.1": + "integrity" "sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw==" + "resolved" "https://registry.npmjs.org/debug/-/debug-4.1.1.tgz" + "version" "4.1.1" dependencies: - ms "2.0.0" + "ms" "^2.1.1" -fd-slicer@~1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.0.1.tgz#8b5bcbd9ec327c5041bf9ab023fd6750f1177e65" +"fd-slicer@~1.1.0": + "integrity" "sha1-JcfInLH5B3+IkbvmHY85Dq4lbx4=" + "resolved" "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz" + "version" "1.1.0" dependencies: - pend "~1.2.0" + "pend" "~1.2.0" -moment@=2.18.1: - version "2.18.1" - resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" +"isexe@^2.0.0": + "integrity" "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=" + "resolved" "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz" + "version" "2.0.0" -moxie-zip@=0.0.3: - version "0.0.3" - resolved "https://registry.yarnpkg.com/moxie-zip/-/moxie-zip-0.0.3.tgz#b28023e40c0328cb4329e61eabb5b55696779c07" +"ms@^2.1.1": + "integrity" "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "resolved" "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz" + "version" "2.1.3" -ms@2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" +"pend@~1.2.0": + "integrity" "sha1-elfrVQpng/kRUzH89GY9XI4AelA=" + "resolved" "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz" + "version" "1.2.0" -pend@~1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/pend/-/pend-1.2.0.tgz#7a57eb550a6783f9115331fcf4663d5c8e007a50" +"timsort@=0.3.0": + "integrity" "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=" + "resolved" "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz" + "version" "0.3.0" -timsort@=0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/timsort/-/timsort-0.3.0.tgz#405411a8e7e6339fe64db9a234de11dc31e02bd4" +"which@=2.0.2": + "integrity" "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==" + "resolved" "https://registry.npmjs.org/which/-/which-2.0.2.tgz" + "version" "2.0.2" + dependencies: + "isexe" "^2.0.0" + +"yauzl@=2.10.0": + "integrity" "sha1-x+sXyT4RLLEIb6bY5R+wZnt5pfk=" + "resolved" "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz" + "version" "2.10.0" + dependencies: + "buffer-crc32" "~0.2.3" + "fd-slicer" "~1.1.0" -yauzl@=2.8.0: - version "2.8.0" - resolved "https://registry.yarnpkg.com/yauzl/-/yauzl-2.8.0.tgz#79450aff22b2a9c5a41ef54e02db907ccfbf9ee2" +"yazl@=2.5.1": + "integrity" "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==" + "resolved" "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz" + "version" "2.5.1" dependencies: - buffer-crc32 "~0.2.3" - fd-slicer "~1.0.1" + "buffer-crc32" "~0.2.3"