oc-deploy/src/versionOc/versionOc.go

90 lines
1.7 KiB
Go
Raw Normal View History

2024-09-02 09:09:46 +02:00
// Package :
package versionOc
import (
"fmt"
"os"
"errors"
2024-09-03 15:18:20 +02:00
"io"
2024-09-04 09:11:13 +02:00
"path/filepath"
2024-09-02 09:09:46 +02:00
"gopkg.in/yaml.v2"
log "oc-deploy/log_wrapper"
)
type versionInput struct {
Version string `yaml:"version"`
}
2024-09-04 09:11:13 +02:00
var OFFLINE_DIR string = "../offline"
2024-09-02 13:43:11 +02:00
func GetFromFile(fileversion string) (string, error) {
fin, err := os.Open(fileversion)
if err != nil {
return "", err
}
defer fin.Close()
2024-09-03 15:18:20 +02:00
byteValue, err := io.ReadAll(fin)
2024-09-02 13:43:11 +02:00
if err != nil {
return "", err
}
var objmap versionInput
2024-09-04 09:11:13 +02:00
err = yaml.Unmarshal(byteValue, &objmap)
if err != nil {
return "", err
}
2024-09-02 13:43:11 +02:00
return objmap.Version, nil
}
2024-09-02 09:09:46 +02:00
// Get : Retourne la version
func Get(version string) (string, error) {
version2 := version
if version == "latest" {
versionLatest, err := readLatestFile()
if err != nil {
return "", err
}
version2 = versionLatest
}
2024-09-04 09:11:13 +02:00
ficversion := fmt.Sprintf("oc_%s.yml", version2)
src := filepath.Join(OFFLINE_DIR, ficversion)
2024-09-02 09:09:46 +02:00
if _, err := os.Stat(src); err != nil {
log.Log().Debug().Msg(err.Error())
return "", errors.New("Version non disponible")
}
return version2, nil
}
// readLatestFile : Lit le numéro de la version dans le fichier lastest.yml
func readLatestFile() (string, error) {
2024-09-04 09:11:13 +02:00
src := filepath.Join(OFFLINE_DIR, "latest.yml")
2024-09-02 09:09:46 +02:00
fin, err := os.Open(src)
2024-09-04 09:11:13 +02:00
2024-09-02 09:09:46 +02:00
if err != nil {
return "", err
}
defer fin.Close()
2024-09-03 15:18:20 +02:00
byteValue, err := io.ReadAll(fin)
2024-09-02 09:09:46 +02:00
if err != nil {
return "", err
}
2024-09-02 13:43:11 +02:00
var objmap versionInput
2024-09-02 09:09:46 +02:00
2024-09-04 09:11:13 +02:00
err = yaml.Unmarshal(byteValue, &objmap)
if err != nil {
return "", err
}
2024-09-02 09:09:46 +02:00
return objmap.Version, nil
2024-09-03 15:18:20 +02:00
}