diff --git a/README.md b/README.md index c20c3a3..64b775c 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,7 @@ Or, if using [yarn 🔗](https://yarnpkg.com/lang/en/): yarn add contentful-cli-export ``` -> Similarly, if you are using [Bun 🔗](https://bun.sh), just run `bun add contentful-cli-export` +> Similarly, if you are using [Bun 🔗](https://bun.sh), just run
`bun add contentful-cli-export` ### Requirements @@ -51,7 +51,7 @@ yarn add contentful-cli-export * `npm` >= 8.5.5 * `contentful-management` >= 7.50.0 * `contentful-export` >= 7.18.7 -* [contentful-lib-helpers](https://www.npmjs.com/package/contentful-lib-helpers) >= 1.9.0 +* [contentful-lib-helpers](https://www.npmjs.com/package/contentful-lib-helpers) >= 0.1.10 ### Set-up diff --git a/contentful-cli-export.js b/contentful-cli-export.js index 8b9bfc4..5a6cb50 100755 --- a/contentful-cli-export.js +++ b/contentful-cli-export.js @@ -17,7 +17,7 @@ const DEFAULT_EXPORT_DIR = 'export/' envValues?.CMS_MANAGEMENT_TOKEN ?? PLACEHOLDER_MANAGEMENT_TOKEN const cmsSpaceId = envValues?.CMS_SPACE_ID ?? PLACEHOLDER_SPACE_ID const cmsMaxEntries = - parseInt(envValues?.CMS_MAX_ALLOWED_LIMIT) ?? DEFAULT_ALLOWED_LIMIT + parseInt(envValues?.CMS_MAX_ALLOWED_LIMIT, 10) ?? DEFAULT_ALLOWED_LIMIT const cmsExportDir = envValues?.CMS_EXPORT_DIR ?? DEFAULT_EXPORT_DIR const initialSettings = await parseArguments( @@ -101,23 +101,21 @@ async function parseArguments( const parsedArgs = minimist(process.argv.slice(2)) await checkArgs(parsedArgs) - let environmentId = null - const spaceId = parsedArgs['space-id'] ?? cmsSpaceId - const managementToken = - parsedArgs['management-token'] ?? parsedArgs['mt'] ?? cmsManagementToken - const maxEntries = parsedArgs['max-allowed-limit'] ?? cmsMaxEntries + const { + 'space-id': spaceId = cmsSpaceId, + 'management-token': managementToken = parsedArgs['mt'] ?? + cmsManagementToken, + 'max-allowed-limit': maxEntries = cmsMaxEntries + } = parsedArgs + const rootDestinationFolder = await getDestinationFolder( rootFolder, cmsExportDir, parsedArgs ) - if ( - parsedArgs.hasOwnProperty('from') || - parsedArgs.hasOwnProperty('environment-id') - ) { - environmentId = parsedArgs.from ?? parsedArgs['environment-id'] - } else { + const environmentId = parsedArgs.from || parsedArgs['environment-id'] + if (!environmentId) { console.error('@@/ERROR: An environment-id should be specified') process.exit(1) } @@ -160,24 +158,14 @@ async function parseArguments( * @throws {Error} If both 'management-token' and 'mt' options are specified. */ async function checkArgs(parsedArgs) { - if ( - (parsedArgs.hasOwnProperty('from') && - parsedArgs.hasOwnProperty('environment-id')) || - !( - parsedArgs.hasOwnProperty('from') || - parsedArgs.hasOwnProperty('environment-id') - ) - ) { + if (!(Boolean(parsedArgs.from) ^ Boolean(parsedArgs['environment-id']))) { console.error( "@@/ERROR: Only one of the two options '--environment-id' or '--from' should be specified" ) process.exit(1) } - if ( - parsedArgs.hasOwnProperty('management-token') && - parsedArgs.hasOwnProperty('mt') - ) { + if (Boolean(parsedArgs['management-token']) && Boolean(parsedArgs.mt)) { console.error( "@@/ERROR: Only one of the two options '--management-token' or '--mt' can be specified" ) @@ -192,7 +180,7 @@ async function checkArgs(parsedArgs) { * @param {string} cmsExportDir - The CMS Default Export Directory. * @param {Object} parsedArgs - The object that contains the parsed command line arguments. * - * @returns {Promise} An object containing the evaluated destination folder and a flag indicating whether a custom folder was used. + * @returns {Promise} The path of the evaluated destination folder. * @property {string} destinationFolder - The destination folder for the export. * * @throws {Error} If the destination folder does not exist or is not accessible. @@ -251,8 +239,6 @@ async function extractOptions(initialSettings) { const exportDirname = rootFolder + defaultExportName + '/' const mainFolder = isCompressed ? rootFolder : exportDirname - fileSystem.mkdirSync(exportDirname) - let contentFile = defaultExportName + '.json' let logFilePath = mainFolder + defaultExportName + '.log' @@ -266,8 +252,10 @@ async function extractOptions(initialSettings) { )) ) { console.error( - "@@/ERROR: Unable to retrieve Destination environment '" + + "@@/ERROR: Unable to retrieve Destination environment-id '" + initialSettings?.environmentId + + "' for space-id '" + + initialSettings?.spaceId + "'!" ) console.error( @@ -276,6 +264,8 @@ async function extractOptions(initialSettings) { process.exit(1) } + fileSystem.mkdirSync(exportDirname) + console.log( '##/INFO: Export of space-id "' + initialSettings?.spaceId + diff --git a/package-lock.json b/package-lock.json index 3643394..a494eaa 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,17 +1,17 @@ { "name": "contentful-cli-export", - "version": "0.1.4", + "version": "0.1.5", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "contentful-cli-export", - "version": "0.1.4", + "version": "0.1.5", "license": "MIT", "dependencies": { "adm-zip": "^0.5.9", "contentful-export": ">=7.18.7", - "contentful-lib-helpers": ">=0.1.9", + "contentful-lib-helpers": ">=0.1.10", "contentful-management": ">7.50.0", "dateformat": "^4.6.3", "dotenv": ">=10.0.0", @@ -24,7 +24,6 @@ }, "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.54.1", - "dotenv": "^16.0.3", "eslint": "^8.35.0", "eslint-config-prettier": "^8.7.0", "eslint-plugin-import": "^2.27.5", @@ -976,9 +975,9 @@ } }, "node_modules/contentful-lib-helpers": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/contentful-lib-helpers/-/contentful-lib-helpers-0.1.9.tgz", - "integrity": "sha512-gHPYyBa1R+Ws4T7NtIKrYJB0SbfL8LOsqtUAEdzHgHh5f+e0EvHXM+7Nojk1EVZ/+MuG25PsPyMbTkVa7T5zkw==", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/contentful-lib-helpers/-/contentful-lib-helpers-0.1.10.tgz", + "integrity": "sha512-whd9b3yQbBoMRUtyu7uuBNXImTrnd6K27nXIeV8QpaPYHxDyn+fEmeaagFzsAXW9EqHJNyEjVntxldtaZg897A==", "dependencies": { "contentful-management": ">7.50.0" }, @@ -1181,7 +1180,6 @@ "version": "16.1.3", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.3.tgz", "integrity": "sha512-FYssxsmCTtKL72fGBSvb1K9dRz0/VZeWqFme/vSb7r7323x4CRaHu4LvQ5JG3+s6yt2YPbBrkpiEODktfyjI9A==", - "dev": true, "engines": { "node": ">=12" }, @@ -5181,9 +5179,9 @@ } }, "contentful-lib-helpers": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/contentful-lib-helpers/-/contentful-lib-helpers-0.1.9.tgz", - "integrity": "sha512-gHPYyBa1R+Ws4T7NtIKrYJB0SbfL8LOsqtUAEdzHgHh5f+e0EvHXM+7Nojk1EVZ/+MuG25PsPyMbTkVa7T5zkw==", + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/contentful-lib-helpers/-/contentful-lib-helpers-0.1.10.tgz", + "integrity": "sha512-whd9b3yQbBoMRUtyu7uuBNXImTrnd6K27nXIeV8QpaPYHxDyn+fEmeaagFzsAXW9EqHJNyEjVntxldtaZg897A==", "requires": { "contentful-management": ">7.50.0" } @@ -5336,8 +5334,7 @@ "dotenv": { "version": "16.1.3", "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.1.3.tgz", - "integrity": "sha512-FYssxsmCTtKL72fGBSvb1K9dRz0/VZeWqFme/vSb7r7323x4CRaHu4LvQ5JG3+s6yt2YPbBrkpiEODktfyjI9A==", - "dev": true + "integrity": "sha512-FYssxsmCTtKL72fGBSvb1K9dRz0/VZeWqFme/vSb7r7323x4CRaHu4LvQ5JG3+s6yt2YPbBrkpiEODktfyjI9A==" }, "ecdsa-sig-formatter": { "version": "1.0.11", diff --git a/package.json b/package.json index 3c5015e..6273e60 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "contentful-cli-export", - "version": "0.1.4", + "version": "0.1.5", "type": "module", "description": "Contentful CLI Export Environment", "homepage": "https://github.com/AtidaTech/contentful-cli-export", @@ -31,10 +31,10 @@ "lint-fix": "node_modules/eslint/bin/eslint.js --resolve-plugins-relative-to ./ --ext js,mjs,cjs,jsx,ts,tsx ./contentful-cli-export.js --fix" }, "dependencies": { - "contentful-management": ">7.50.0", - "contentful-lib-helpers": ">=0.1.9", - "contentful-export": ">=7.18.7", "adm-zip": "^0.5.9", + "contentful-export": ">=7.18.7", + "contentful-lib-helpers": ">=0.1.10", + "contentful-management": ">7.50.0", "dateformat": "^4.6.3", "dotenv": ">=10.0.0", "fs": "0.0.1-security", @@ -43,7 +43,6 @@ }, "devDependencies": { "@typescript-eslint/eslint-plugin": "^5.54.1", - "dotenv": "^16.0.3", "eslint": "^8.35.0", "eslint-config-prettier": "^8.7.0", "eslint-plugin-import": "^2.27.5",