mirror of
https://github.com/kairos-io/kairos-sdk.git
synced 2025-09-13 05:42:25 +00:00
1999 introduce versioneer (#59)
* Introduce versioneer package to replace the naming.sh script in kairos-io/kairos Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Implement BootableName for bootable artifacts also introduce Version and SoftwareVersion fields Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Refactor to introduce commondName to be used with ContainerName Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Implement ContainerName and add missing tests Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Introduce NewArtifactFromJSON Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Introduce NewFromOSRelease to be used within a Kairos image See also discussion: https://github.com/kairos-io/kairos/discussions/2035 Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Introduce 3 methods to find releases (TODO: implement them) Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Use existing OSRelease method and remove the new one the existing method had to be adapted to accept and optional path to the os-release file to allow the tests to pass a tmp file. Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Introduce TagList and some basic filtering of tags also introduce RegistryInspector which finds tags from a container registry for a specific repository. Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Implement OtherVersions method of TagList to return different Kairos versions of the exact same artifact. Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * [WIP] Add TODOs for 2 more methods Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Implement Sorted() method on TagList Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Implement RSorted and change OtherVersions test to ensure it also returns older versions too. Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Implement NewerVersions method Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Make json file pretty Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Implement OtherSoftwareVersions and NewerSoftwareVersions Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Implement NewerAnyVersions and OtherAnyVersions Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Make TagList a struct so that it has an "Artifact" field Now the Artifact has a TagList method that returns a TagList which is associated to the specific Artifact. All methods of TagList are now available to the Artifact. E.g. tagList, _ := artifact.TagList("quay.io/kairos") tagList.NewerAnyVersion(...) Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Use the field Artifact in TagList methods instead of needing an argument Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Fix linting errors Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Restructure files and introduce main.go for versioneer to provide a user interface that will replace naming.sh script of the kairos repository Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Fix imports Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Implement bootable-artifact-name cli command Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Implement BaseContainerName method Signed-off-by: Dimitris Karakasilis <dimitris@spectrocloud.com> * Create a wrapper command base-container-artifact-name Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> * Extract the cli command to the packag to be re-used in kairos-agent Signed-off-by: Dimitris Karakasilis <dimitris@spectrocloud.com> * Go back to original package structure and just nest the cli Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Move the versioneer "main" package outside the tree to allow it to be imported in kairos-agent Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Allow setting the cli flags using environment variables Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Implement os-release-variables command to replace the logic in Earthly and Dockerfiles Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Fix test Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Fix TODO in Readme Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> * Dry the creation of the Artifact Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> --------- Signed-off-by: Dimitris Karakasilis <dimitris@karakasilis.me> Signed-off-by: Dimitris Karakasilis <dimitris@spectrocloud.com> Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com> Co-authored-by: Mauro Morales <mauro.morales@spectrocloud.com> Co-authored-by: Dimitris Karakasilis <dimitris@spectrocloud.com>
This commit is contained in:
committed by
GitHub
parent
9bbc110598
commit
29fc4851f4
@@ -4,6 +4,7 @@ import (
|
||||
"bufio"
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fmt"
|
||||
"image"
|
||||
"net"
|
||||
@@ -58,8 +59,21 @@ func UUID() string {
|
||||
return fmt.Sprintf("%s-%s", id, hostname)
|
||||
}
|
||||
|
||||
func OSRelease(key string) (string, error) {
|
||||
release, err := godotenv.Read("/etc/os-release")
|
||||
// OSRelease finds the value of the specified key in the /etc/os-release file
|
||||
// or, if a second argument is passed, on the file specified by the second argument.
|
||||
// (optionally file argument is there for testing reasons).
|
||||
func OSRelease(key string, file ...string) (string, error) {
|
||||
var osReleaseFile string
|
||||
|
||||
if len(file) > 1 {
|
||||
return "", errors.New("too many arguments passed")
|
||||
}
|
||||
if len(file) > 0 {
|
||||
osReleaseFile = file[0]
|
||||
} else {
|
||||
osReleaseFile = "/etc/os-release"
|
||||
}
|
||||
release, err := godotenv.Read(osReleaseFile)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
@@ -69,7 +83,7 @@ func OSRelease(key string) (string, error) {
|
||||
// We try with the old naming without the prefix in case the key wasn't found
|
||||
v, exists = release[key]
|
||||
if !exists {
|
||||
return "", fmt.Errorf("key not found")
|
||||
return "", fmt.Errorf("%s key not found", kairosKey)
|
||||
}
|
||||
}
|
||||
return v, nil
|
||||
|
Reference in New Issue
Block a user