Skip to content

Commit 28683ed

Browse files
committed
adding relative path to url case
Signed-off-by: Michael Hoang <[email protected]>
1 parent 6391190 commit 28683ed

File tree

3 files changed

+173
-126
lines changed

3 files changed

+173
-126
lines changed

pkg/devfile/parser/parse.go

Lines changed: 23 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -406,39 +406,43 @@ func parseFromURI(importReference v1.ImportReference, curDevfileCtx devfileCtx.D
406406
return DevfileObj{}, err
407407
}
408408
}
409-
} else if absoluteURL {
410-
// absolute URL address
411-
newUri = uri
409+
} else {
410+
if absoluteURL {
411+
// absolute URL address
412+
newUri = uri
413+
} else if curDevfileCtx.GetURL() != "" {
414+
// relative path to a URL
415+
u, err := url.Parse(curDevfileCtx.GetURL())
416+
if err != nil {
417+
return DevfileObj{}, err
418+
}
419+
u.Path = path.Join(u.Path, uri)
420+
newUri = u.String()
421+
} else {
422+
return DevfileObj{}, fmt.Errorf("failed to resolve parent uri, devfile context is missing absolute url and relative path to url. %s", resolveImportReference(importReference))
423+
}
424+
412425
d.Ctx = devfileCtx.NewURLDevfileCtx(newUri)
413426
if strings.Contains(newUri, "raw.githubusercontent.com") {
414427
urlComponents, err := util.GetGitUrlComponentsFromRaw(newUri)
415428
if err != nil {
416429
return DevfileObj{}, err
417430
}
418431
destDir := path.Dir(curDevfileCtx.GetAbsPath())
419-
err = getStackFromGit(urlComponents, destDir)
432+
err = getResourcesFromGit(urlComponents, destDir)
420433
if err != nil {
421434
return DevfileObj{}, err
422435
}
423436
}
424-
} else if curDevfileCtx.GetURL() != "" {
425-
// relative path to a URL
426-
u, err := url.Parse(curDevfileCtx.GetURL())
427-
if err != nil {
428-
return DevfileObj{}, err
429-
}
430-
u.Path = path.Join(path.Dir(u.Path), uri)
431-
newUri = u.String()
432-
d.Ctx = devfileCtx.NewURLDevfileCtx(newUri)
433437
}
434438
importReference.Uri = newUri
435439
newResolveCtx := resolveCtx.appendNode(importReference)
436440

437441
return populateAndParseDevfile(d, newResolveCtx, tool, true)
438442
}
439443

440-
func getStackFromGit(gitUrlComponents map[string]string, destDir string) error {
441-
stackDir, err := ioutil.TempDir(os.TempDir(), fmt.Sprintf("stack-git"))
444+
func getResourcesFromGit(gitUrlComponents map[string]string, destDir string) error {
445+
stackDir, err := ioutil.TempDir(os.TempDir(), fmt.Sprintf("git-resources"))
442446
if err != nil {
443447
return fmt.Errorf("failed to create dir: %s, error: %v", stackDir, err)
444448
}
@@ -474,7 +478,7 @@ func parseFromRegistry(importReference v1.ImportReference, resolveCtx *resolutio
474478
}
475479
newResolveCtx := resolveCtx.appendNode(importReference)
476480

477-
err = getStackFromRegistry(id, registryURL, destDir)
481+
err = getResourcesFromRegistry(id, registryURL, destDir)
478482
if err != nil {
479483
return DevfileObj{}, err
480484
}
@@ -492,7 +496,7 @@ func parseFromRegistry(importReference v1.ImportReference, resolveCtx *resolutio
492496
importReference.RegistryUrl = registryURL
493497
newResolveCtx := resolveCtx.appendNode(importReference)
494498

495-
err := getStackFromRegistry(id, registryURL, destDir)
499+
err := getResourcesFromRegistry(id, registryURL, destDir)
496500
if err != nil {
497501
return DevfileObj{}, err
498502
}
@@ -520,8 +524,8 @@ func getDevfileFromRegistry(id, registryURL, version string, httpTimeout *int) (
520524
return util.HTTPGetRequest(param, 0)
521525
}
522526

523-
func getStackFromRegistry(id, registryURL, destDir string) error {
524-
stackDir, err := ioutil.TempDir(os.TempDir(), fmt.Sprintf("stack-%s", id))
527+
func getResourcesFromRegistry(id, registryURL, destDir string) error {
528+
stackDir, err := ioutil.TempDir(os.TempDir(), fmt.Sprintf("registry-resources-%s", id))
525529
if err != nil {
526530
return fmt.Errorf("failed to create dir: %s, error: %v", stackDir, err)
527531
}

0 commit comments

Comments
 (0)