diff --git a/src/meson.build b/src/meson.build index 4fea438..c178bb3 100644 --- a/src/meson.build +++ b/src/meson.build @@ -34,6 +34,7 @@ sources = files( 'pkg/utils/arch.go', 'pkg/utils/errors.go', 'pkg/utils/fedora.go', + 'pkg/utils/rhel.go', 'pkg/utils/utils.go', 'pkg/utils/utils_cgo.go', 'pkg/utils/utils_test.go', diff --git a/src/pkg/utils/rhel.go b/src/pkg/utils/rhel.go new file mode 100644 index 0000000..3c3f227 --- /dev/null +++ b/src/pkg/utils/rhel.go @@ -0,0 +1,64 @@ +/* + * Copyright © 2021 – 2025 Red Hat Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package utils + +import ( + "fmt" + "strconv" + "strings" + + "github.com/sirupsen/logrus" +) + +func getDefaultReleaseRHEL() (string, error) { + release, err := getHostVersionID() + if err != nil { + return "", err + } + + return release, nil +} + +func getFullyQualifiedImageRHEL(image, release string) string { + i := strings.IndexRune(release, '.') + if i == -1 { + panicMsg := fmt.Sprintf("release %s not in '.' format", release) + panic(panicMsg) + } + + releaseMajor := release[:i] + imageFull := "registry.access.redhat.com/ubi" + releaseMajor + "/" + image + return imageFull +} + +func parseReleaseRHEL(release string) (string, error) { + if i := strings.IndexRune(release, '.'); i == -1 { + return "", &ParseReleaseError{"The release must be in the '.' format."} + } + + releaseN, err := strconv.ParseFloat(release, 32) + if err != nil { + logrus.Debugf("Parsing release %s as a float failed: %s", release, err) + return "", &ParseReleaseError{"The release must be in the '.' format."} + } + + if releaseN <= 0 { + return "", &ParseReleaseError{"The release must be a positive number."} + } + + return release, nil +} diff --git a/src/pkg/utils/utils.go b/src/pkg/utils/utils.go index 44aab83..6286aa8 100644 --- a/src/pkg/utils/utils.go +++ b/src/pkg/utils/utils.go @@ -328,15 +328,6 @@ func getDefaultReleaseForDistro(distro string) (string, error) { return release, nil } -func getDefaultReleaseRHEL() (string, error) { - release, err := getHostVersionID() - if err != nil { - return "", err - } - - return release, nil -} - func getDefaultReleaseUbuntu() (string, error) { release, err := getHostVersionID() if err != nil { @@ -406,18 +397,6 @@ func GetFullyQualifiedImageFromDistros(image, release string) (string, error) { return "", fmt.Errorf("failed to resolve image %s", image) } -func getFullyQualifiedImageRHEL(image, release string) string { - i := strings.IndexRune(release, '.') - if i == -1 { - panicMsg := fmt.Sprintf("release %s not in '.' format", release) - panic(panicMsg) - } - - releaseMajor := release[:i] - imageFull := "registry.access.redhat.com/ubi" + releaseMajor + "/" + image - return imageFull -} - func getFullyQualifiedImageUbuntu(image, release string) string { imageFull := "quay.io/toolbx/" + image return imageFull @@ -733,24 +712,6 @@ func parseRelease(distro, release string) (string, error) { return release, err } -func parseReleaseRHEL(release string) (string, error) { - if i := strings.IndexRune(release, '.'); i == -1 { - return "", &ParseReleaseError{"The release must be in the '.' format."} - } - - releaseN, err := strconv.ParseFloat(release, 32) - if err != nil { - logrus.Debugf("Parsing release %s as a float failed: %s", release, err) - return "", &ParseReleaseError{"The release must be in the '.' format."} - } - - if releaseN <= 0 { - return "", &ParseReleaseError{"The release must be a positive number."} - } - - return release, nil -} - func parseReleaseUbuntu(release string) (string, error) { releaseParts := strings.Split(release, ".") if len(releaseParts) != 2 {