diff --git a/commands/project/upload.ts b/commands/project/upload.ts index b11ab329b..57ff4bac4 100644 --- a/commands/project/upload.ts +++ b/commands/project/upload.ts @@ -11,7 +11,6 @@ const { logger } = require('@hubspot/local-dev-lib/logger'); const { uiBetaTag, uiCommandReference } = require('../../lib/ui'); const { trackCommandUsage } = require('../../lib/usageTracking'); const { - ensureProjectExists, getProjectConfig, logFeedbackMessage, validateProjectConfig, @@ -44,21 +43,18 @@ exports.handler = async options => { validateProjectConfig(projectConfig, projectDir); - await ensureProjectExists(derivedAccountId, projectConfig.name, { - forceCreate, - uploadCommand: true, - }); - try { - const { result, uploadError } = await handleProjectUpload( - derivedAccountId, + const { result, uploadError } = await handleProjectUpload({ + accountId: derivedAccountId, projectConfig, projectDir, - pollProjectBuildAndDeploy, - message, - useV3Api(projectConfig?.platformVersion), - skipValidation - ); + callbackFunc: pollProjectBuildAndDeploy, + uploadMessage: message, + forceCreate, + isUploadCommand: true, + sendIR: useV3Api(projectConfig?.platformVersion), + skipValidation, + }); if (uploadError) { if ( diff --git a/commands/project/watch.ts b/commands/project/watch.ts index db969c6fd..804bdc6a7 100644 --- a/commands/project/watch.ts +++ b/commands/project/watch.ts @@ -1,4 +1,6 @@ // @ts-nocheck +import { useV3Api } from '../../lib/projects/buildAndDeploy'; + const { i18n } = require('../../lib/lang'); const { createWatcher } = require('../../lib/projects/watch'); const { logError, ApiErrorContext } = require('../../lib/errorHandlers/index'); @@ -12,7 +14,6 @@ const { const { trackCommandUsage } = require('../../lib/usageTracking'); const { uiBetaTag } = require('../../lib/ui'); const { - ensureProjectExists, getProjectConfig, validateProjectConfig, logFeedbackMessage, @@ -91,9 +92,13 @@ exports.handler = async options => { const { projectConfig, projectDir } = await getProjectConfig(); - validateProjectConfig(projectConfig, projectDir); + if (useV3Api(projectConfig?.platformVersion)) { + // TODO: i18n + logger.error('This command is not supported in V3 API'); + process.exit(EXIT_CODES.ERROR); + } - await ensureProjectExists(derivedAccountId, projectConfig.name); + validateProjectConfig(projectConfig, projectDir); try { const { @@ -113,12 +118,13 @@ exports.handler = async options => { // Upload all files if no build exists for this project yet if (initialUpload || hasNoBuilds) { - const { uploadError } = await handleProjectUpload( - derivedAccountId, + const { uploadError } = await handleProjectUpload({ + accountId: derivedAccountId, projectConfig, projectDir, - startWatching - ); + callbackFunc: startWatching, + isUploadCommand: false, + }); if (uploadError) { if ( diff --git a/lib/localDev.ts b/lib/localDev.ts index dec2edad0..702735086 100644 --- a/lib/localDev.ts +++ b/lib/localDev.ts @@ -475,14 +475,21 @@ export async function createInitialBuildForNewProject( sendIr?: boolean ): Promise { const { result: initialUploadResult, uploadError } = - await handleProjectUpload( - targetAccountId, + await handleProjectUpload({ + accountId: targetAccountId, projectConfig, projectDir, - projectUploadCallback, - i18n(`${i18nKey}.createInitialBuildForNewProject.initialUploadMessage`), - sendIr - ); + callbackFunc: projectUploadCallback, + uploadMessage: i18n( + `${i18nKey}.createInitialBuildForNewProject.initialUploadMessage`, + { + uploadCommand: uiCommandReference('hs project upload'), + } + ), + forceCreate: true, + skipValidation: true, + sendIR: sendIr, + }); if (uploadError) { if ( diff --git a/lib/projects/upload.ts b/lib/projects/upload.ts index 6f03c0abc..8eed663f3 100644 --- a/lib/projects/upload.ts +++ b/lib/projects/upload.ts @@ -14,6 +14,7 @@ import { ProjectConfig } from '../../types/Projects'; import { isTranslationError, translate } from '@hubspot/project-parsing-lib'; import { logError } from '../errorHandlers'; import util from 'node:util'; +import { ensureProjectExists } from './index'; const i18nKey = 'lib.projectUpload'; @@ -92,15 +93,29 @@ type ProjectUploadResult = { uploadError?: unknown; }; -export async function handleProjectUpload( - accountId: number, - projectConfig: ProjectConfig, - projectDir: string, - callbackFunc: ProjectUploadCallbackFunction, - uploadMessage: string, - sendIR: boolean = false, - skipValidation: boolean = false -): Promise> { +type HandleProjectUploadArg = { + accountId: number; + projectConfig: ProjectConfig; + projectDir: string; + callbackFunc: ProjectUploadCallbackFunction; + uploadMessage?: string; + forceCreate?: boolean; + isUploadCommand?: boolean; + sendIR?: boolean; + skipValidation?: boolean; +}; + +export async function handleProjectUpload({ + accountId, + projectConfig, + projectDir, + callbackFunc, + uploadMessage, + forceCreate = false, + isUploadCommand = false, + sendIR = false, + skipValidation = false, +}: HandleProjectUploadArg): Promise> { const srcDir = path.resolve(projectDir, projectConfig.srcDir); const filenames = fs.readdirSync(srcDir); @@ -158,11 +173,16 @@ export async function handleProjectUpload( } } + await ensureProjectExists(accountId, projectConfig.name, { + forceCreate, + uploadCommand: isUploadCommand, + }); + const { buildId, error } = await uploadProjectFiles( accountId, projectConfig.name, tempFile.name, - uploadMessage, + uploadMessage || '', projectConfig.platformVersion, intermediateRepresentation );