@@ -104,7 +104,7 @@ export async function containerCreate(operation: Operation, script: string, comm
104
104
const event = "projectCreation" ;
105
105
const projectLocation = operation . projectInfo . location ;
106
106
const projectID = operation . projectInfo . projectID ;
107
- const projectName = projectLocation . split ( "/" ) . pop ( ) ;
107
+ const projectName = getProjectNameFromPath ( projectLocation ) ;
108
108
const projectType = operation . projectInfo . projectType ;
109
109
if ( projectList . indexOf ( projectID ) === - 1 )
110
110
projectList . push ( projectID ) ;
@@ -173,6 +173,7 @@ export async function containerCreate(operation: Operation, script: string, comm
173
173
( operation . projectInfo . forceAction ) ? String ( operation . projectInfo . forceAction ) : "NONE" , logDir , imagePushRegistry , userMavenSettings ] ;
174
174
} else if ( [ "odo" , "odo-devfile" ] . includes ( projectType ) ) {
175
175
const componentName : string = await getComponentName ( projectName ) ;
176
+ const logDir : string = await logHelper . getLogDir ( projectID , projectName ) ;
176
177
177
178
args = [
178
179
projectLocation ,
@@ -211,7 +212,7 @@ export async function containerUpdate(operation: Operation, script: string, comm
211
212
212
213
const projectLocation = operation . projectInfo . location ;
213
214
const projectID = operation . projectInfo . projectID ;
214
- const projectName = projectLocation . split ( "/" ) . pop ( ) ;
215
+ const projectName = getProjectNameFromPath ( projectLocation ) ;
215
216
const projectType = operation . projectInfo . projectType ;
216
217
logger . logProjectInfo ( "Updating container for " + operation . projectInfo . projectType + " project " + projectLocation , projectID , projectName ) ;
217
218
operation . containerName = await getContainerName ( operation . projectInfo ) ;
@@ -280,6 +281,7 @@ export async function containerUpdate(operation: Operation, script: string, comm
280
281
( operation . projectInfo . forceAction ) ? String ( operation . projectInfo . forceAction ) : "NONE" , logDir , imagePushRegistry , userMavenSettings ] ;
281
282
} else if ( [ "odo" , "odo-devfile" ] . includes ( projectType ) ) {
282
283
const componentName : string = await getComponentName ( projectName ) ;
284
+ const logDir : string = await logHelper . getLogDir ( projectID , projectName ) ;
283
285
284
286
args = [
285
287
projectLocation ,
@@ -316,7 +318,7 @@ export async function containerUpdate(operation: Operation, script: string, comm
316
318
async function executeBuildScript ( operation : Operation , script : string , args : Array < string > , event : string ) : Promise < void > {
317
319
const projectID = operation . projectInfo . projectID ;
318
320
const projectLocation = operation . projectInfo . location ;
319
- const projectName = projectLocation . split ( "/" ) . pop ( ) ;
321
+ const projectName = getProjectNameFromPath ( projectLocation ) ;
320
322
const projectInfo = {
321
323
operationId : operation . operationId ,
322
324
projectID : operation . projectInfo . projectID
@@ -612,7 +614,7 @@ export async function getProjectMavenSettings(projectInfo: ProjectInfo): Promise
612
614
export async function getProjectLogs ( projectInfo : ProjectInfo ) : Promise < ProjectLog > {
613
615
const projectID = projectInfo . projectID ;
614
616
const projectLocation = projectInfo . location ;
615
- const projectName = projectLocation . split ( "/" ) . pop ( ) ;
617
+ const projectName = getProjectNameFromPath ( projectLocation ) ;
616
618
const projectType = projectInfo . projectType ;
617
619
const projectLogDir = await logHelper . getLogDir ( projectID , projectName ) ;
618
620
const logDirectory = path . join ( projectConstants . projectsLogDir , projectLogDir ) ;
@@ -655,7 +657,7 @@ export async function getProjectLogs(projectInfo: ProjectInfo): Promise<ProjectL
655
657
export async function containerDelete ( projectInfo : ProjectInfo , script : string ) : Promise < void > {
656
658
657
659
const projectID = projectInfo . projectID ;
658
- const projectName = projectInfo . location . split ( "/" ) . pop ( ) ;
660
+ const projectName = getProjectNameFromPath ( projectInfo . location ) ;
659
661
const containerName = await getContainerName ( projectInfo ) ;
660
662
const imagePushRegistry = projectInfo . deploymentRegistry ;
661
663
logger . logProjectInfo ( "containerDelete: Kill running processes and remove container... " , projectID , projectName ) ;
@@ -725,7 +727,7 @@ export function getLogName(projectID: string, projectLocation: string): string {
725
727
const hash = crypto . createHash ( "sha1" , < TransformOptions > "utf8" ) . update ( projectLocation ) ;
726
728
727
729
let logName = projectConstants . containerPrefix + projectID + "-" + hash . digest ( "hex" ) ;
728
- const projectName = projectLocation . split ( "/" ) . pop ( ) ;
730
+ const projectName = getProjectNameFromPath ( projectLocation ) ;
729
731
730
732
if ( process . env . IN_K8 === "true" && logName . length > 53 ) {
731
733
logName = logName . substring ( 0 , 53 ) ;
@@ -1255,6 +1257,7 @@ export async function runScript(projectInfo: ProjectInfo, script: string, comman
1255
1257
1256
1258
if ( [ "odo" , "odo-devfile" ] . includes ( projectInfo . projectType ) ) {
1257
1259
const componentName : string = await getComponentName ( projectName ) ;
1260
+ const logDir : string = await logHelper . getLogDir ( projectID , projectName ) ;
1258
1261
1259
1262
args = [
1260
1263
projectInfo . location ,
@@ -1290,7 +1293,7 @@ export async function buildAndRun(operation: Operation, command: string): Promis
1290
1293
1291
1294
const projectLocation = operation . projectInfo . location ;
1292
1295
const projectID = operation . projectInfo . projectID ;
1293
- const projectName = projectLocation . split ( "/" ) . pop ( ) ;
1296
+ const projectName = getProjectNameFromPath ( projectLocation ) ;
1294
1297
1295
1298
if ( projectList . indexOf ( projectID ) === - 1 )
1296
1299
projectList . push ( projectID ) ;
@@ -1446,7 +1449,7 @@ export async function buildAndRun(operation: Operation, command: string): Promis
1446
1449
*/
1447
1450
async function containerBuildAndRun ( event : string , buildInfo : BuildRequest , operation : Operation ) : Promise < void > {
1448
1451
const normalizedProjectLocation = path . resolve ( buildInfo . projectLocation ) ;
1449
- const projectName = normalizedProjectLocation . split ( "/" ) . reverse ( ) [ 0 ] ;
1452
+ const projectName = getProjectNameFromPath ( normalizedProjectLocation ) ;
1450
1453
const logDir = await logHelper . getLogDir ( buildInfo . projectID , projectName ) ;
1451
1454
const dockerBuildLog = path . resolve ( buildInfo . projectLocation + "/../.logs/" + logDir , logHelper . buildLogs . dockerBuild + logHelper . logExtension ) ;
1452
1455
if ( process . env . IN_K8 === "true" ) {
@@ -1668,7 +1671,7 @@ async function containerBuildAndRun(event: string, buildInfo: BuildRequest, oper
1668
1671
*/
1669
1672
async function runLocalContainer ( buildInfo : BuildRequest ) : Promise < void > {
1670
1673
const normalizedProjectLocation = path . resolve ( buildInfo . projectLocation ) ;
1671
- const projectName = normalizedProjectLocation . split ( "/" ) . reverse ( ) [ 0 ] ;
1674
+ const projectName = getProjectNameFromPath ( normalizedProjectLocation ) ;
1672
1675
const logDir = await logHelper . getLogDir ( buildInfo . projectID , projectName ) ;
1673
1676
const appLog = path . resolve ( buildInfo . projectLocation + "/../.logs/" + logDir , logHelper . appLogs . app + logHelper . logExtension ) ;
1674
1677
try {
@@ -1799,7 +1802,7 @@ export async function isApplicationPodUp(buildInfo: BuildRequest, projectName: s
1799
1802
export async function removeProject ( projectInfo : ProjectInfo ) : Promise < void > {
1800
1803
1801
1804
const projectID = projectInfo . projectID ;
1802
- const projectName = projectInfo . location . split ( "/" ) . pop ( ) ;
1805
+ const projectName = getProjectNameFromPath ( projectInfo . location ) ;
1803
1806
const containerName = await getContainerName ( projectInfo ) ;
1804
1807
logger . logProjectInfo ( "removeProject: Kill running processes and remove container... " , projectID , projectName ) ;
1805
1808
logger . logProjectInfo ( "Project ID: " + projectInfo . projectID , projectID , projectName ) ;
@@ -1903,7 +1906,7 @@ async function getPODInfoAndSendToPortal(operation: Operation, event: string = "
1903
1906
const projectInfo = operation . projectInfo ;
1904
1907
const projectLocation = projectInfo . location ;
1905
1908
const projectID = projectInfo . projectID ;
1906
- const projectName = projectLocation . split ( "/" ) . pop ( ) ;
1909
+ const projectName = getProjectNameFromPath ( projectLocation ) ;
1907
1910
const keyValuePair : UpdateProjectInfoPair = {
1908
1911
key : "buildRequest" ,
1909
1912
value : false
@@ -2203,8 +2206,26 @@ export async function updateDetailedAppStatus(projectID: string, ip: string, por
2203
2206
export async function exposeOverIngress ( projectInfo : ProjectInfo , appPort ?: number ) : Promise < void > {
2204
2207
if ( process . env . IN_K8 ) {
2205
2208
const projectID = projectInfo . projectID ;
2206
- const projectName = projectInfo . location . split ( "/" ) . pop ( ) ;
2209
+ const projectName = getProjectNameFromPath ( projectInfo . location ) ;
2207
2210
projectInfo . appBaseURL = await kubeutil . exposeOverIngress ( projectID , projectName , projectInfo . isHttps , appPort , projectInfo . appBaseURL ) ;
2208
2211
await projectsController . saveProjectInfo ( projectID , projectInfo , true ) ;
2209
2212
}
2210
2213
}
2214
+
2215
+ /**
2216
+ * Get the projectName from a path
2217
+ *
2218
+ * @param location The project's location
2219
+ */
2220
+ export function getProjectNameFromPath ( location : string ) : string {
2221
+ const splitPaths = location . split ( "/" ) ;
2222
+ const cwIndex = splitPaths . indexOf ( "codewind-workspace" ) ;
2223
+ if ( cwIndex === - 1 ) {
2224
+ logger . logError ( "Unable to get project name from path: codewind-workspace isn't in the path" ) ;
2225
+ // Fall back to old method if codewind-workspace isn't in the path
2226
+ return splitPaths . pop ( ) ;
2227
+ }
2228
+ // Project name is the directory after codewind-workspace
2229
+ const projectName = splitPaths [ cwIndex + 1 ] ;
2230
+ return projectName ;
2231
+ }
0 commit comments