From 981b9db6a82417b7f9fa4f1a65cb57438c51b103 Mon Sep 17 00:00:00 2001 From: Allison Kemmerle Date: Mon, 26 Aug 2024 12:08:45 -0400 Subject: [PATCH 1/2] Sanitize project name during download --- packages/cli/commands/project/cloneApp.js | 15 ++++++++++----- packages/cli/commands/project/download.js | 4 ++-- packages/cli/commands/project/migrateApp.js | 4 ++-- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/packages/cli/commands/project/cloneApp.js b/packages/cli/commands/project/cloneApp.js index 4de1cd7f8..7ee935995 100644 --- a/packages/cli/commands/project/cloneApp.js +++ b/packages/cli/commands/project/cloneApp.js @@ -38,7 +38,7 @@ const { checkCloneStatus, downloadClonedProject, } = require('@hubspot/local-dev-lib/api/projects'); -const { getCwd } = require('@hubspot/local-dev-lib/path'); +const { getCwd, sanitizeFileName } = require('@hubspot/local-dev-lib/path'); const { logger } = require('@hubspot/local-dev-lib/logger'); const { getAccountConfig } = require('@hubspot/local-dev-lib/config'); const { extractZipArchive } = require('@hubspot/local-dev-lib/archive'); @@ -119,10 +119,15 @@ exports.handler = async options => { // Extract zipped app files and place them in correct directory const zippedApp = await downloadClonedProject(accountId, exportId); - await extractZipArchive(zippedApp, name, absoluteDestPath, { - includesRootDir: true, - hideLogs: true, - }); + await extractZipArchive( + zippedApp, + sanitizeFileName(name), + absoluteDestPath, + { + includesRootDir: true, + hideLogs: true, + } + ); // Create hsproject.json file const configPath = path.join(baseDestPath, PROJECT_CONFIG_FILE); diff --git a/packages/cli/commands/project/download.js b/packages/cli/commands/project/download.js index 1a1b6cae2..8c18cd9ec 100644 --- a/packages/cli/commands/project/download.js +++ b/packages/cli/commands/project/download.js @@ -6,7 +6,7 @@ const { addUseEnvironmentOptions, } = require('../../lib/commonOpts'); const { trackCommandUsage } = require('../../lib/usageTracking'); -const { getCwd } = require('@hubspot/local-dev-lib/path'); +const { getCwd, sanitizeFileName } = require('@hubspot/local-dev-lib/path'); const { logApiErrorInstance, ApiErrorContext, @@ -95,7 +95,7 @@ exports.handler = async options => { await extractZipArchive( zippedProject, - projectName, + sanitizeFileName(projectName), path.resolve(absoluteDestPath), { includesRootDir: false } ); diff --git a/packages/cli/commands/project/migrateApp.js b/packages/cli/commands/project/migrateApp.js index f9c5d0e15..dd5fce738 100644 --- a/packages/cli/commands/project/migrateApp.js +++ b/packages/cli/commands/project/migrateApp.js @@ -39,7 +39,7 @@ const { migrateApp, checkMigrationStatus, } = require('@hubspot/local-dev-lib/api/projects'); -const { getCwd } = require('@hubspot/local-dev-lib/path'); +const { getCwd, sanitizeFileName } = require('@hubspot/local-dev-lib/path'); const { logger } = require('@hubspot/local-dev-lib/logger'); const { getAccountConfig } = require('@hubspot/local-dev-lib/config'); const { downloadProject } = require('@hubspot/local-dev-lib/api/projects'); @@ -186,7 +186,7 @@ exports.handler = async options => { await extractZipArchive( zippedProject, - projectName, + sanitizeFileName(projectName), path.resolve(absoluteDestPath), { includesRootDir: true, hideLogs: true } ); From 567f649f4464cf12656ef9006994ed265b438c7f Mon Sep 17 00:00:00 2001 From: Allison Kemmerle Date: Mon, 26 Aug 2024 12:27:10 -0400 Subject: [PATCH 2/2] Encode project url correctly --- packages/cli/commands/project/migrateApp.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/cli/commands/project/migrateApp.js b/packages/cli/commands/project/migrateApp.js index dd5fce738..1f80d44f9 100644 --- a/packages/cli/commands/project/migrateApp.js +++ b/packages/cli/commands/project/migrateApp.js @@ -209,7 +209,9 @@ exports.handler = async options => { logger.log( uiLink( i18n(`${i18nKey}.projectDetailsLink`), - `${baseUrl}/developer-projects/${accountId}/project/${project.name}` + `${baseUrl}/developer-projects/${accountId}/project/${encodeURIComponent( + project.name + )}` ) ); process.exit(EXIT_CODES.SUCCESS);