From 9f86b72ce933776fcaf9374e22789582c2a99160 Mon Sep 17 00:00:00 2001 From: parra Date: Wed, 15 Mar 2023 20:38:50 +0100 Subject: [PATCH] Naming refactor --- .drone.yml | 1 + cmd/drone-ntfy/main.go | 96 +++++++++---------- .../config/config.go => pkg/model/model.go | 2 +- 3 files changed, 50 insertions(+), 49 deletions(-) rename cmd/drone-ntfy/config/config.go => pkg/model/model.go (98%) diff --git a/.drone.yml b/.drone.yml index 9a409e1..40e301d 100644 --- a/.drone.yml +++ b/.drone.yml @@ -9,6 +9,7 @@ steps: - name: deps path: /go commands: + - go mod tidy - GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -o bin/ cmd/drone-ntfy/main.go - name: Build docker image diff --git a/cmd/drone-ntfy/main.go b/cmd/drone-ntfy/main.go index bf78cf4..471bd81 100644 --- a/cmd/drone-ntfy/main.go +++ b/cmd/drone-ntfy/main.go @@ -6,93 +6,93 @@ import ( "net/http" "strings" - "git.parravidales.es/parra/drone-ntfy/cmd/drone-ntfy/config" + "git.parravidales.es/parra/drone-ntfy/pkg/model" "github.com/caarlos0/env/v7" "github.com/joho/godotenv" ) -type Config struct { - App config.App - Drone config.Drone - Ci config.Ci +type Data struct { + App model.App + Drone model.Drone + Ci model.Ci } func main() { - cfg := loadCfg() + data := loadData() - updateAppConfig(&cfg) - addTagsBasedOnResult(&cfg) - sendNotification(&cfg) + buildAppData(&data) + addResultToTags(&data) + sendNotification(&data) } -func loadCfg() Config { +func loadData() Data { envErr := godotenv.Load() if envErr == nil { fmt.Printf("loaded .env file.") } - conf := Config{ - App: config.App{}, - Drone: config.Drone{}, - Ci: config.Ci{}, + data := Data{ + App: model.App{}, + Drone: model.Drone{}, + Ci: model.Ci{}, } - loadConfig(&conf.App) - loadConfig(&conf.Drone) - loadConfig(&conf.Ci) + loadDataFromEnv(&data.App) + loadDataFromEnv(&data.Drone) + loadDataFromEnv(&data.Ci) - conf.App.Tags = append(conf.App.DefaultTags, conf.App.Tags...) + data.App.Tags = append(data.App.DefaultTags, data.App.Tags...) - return conf + return data } -func loadConfig(cfg any) { - err := env.Parse(cfg) +func loadDataFromEnv(data any) { + err := env.Parse(data) if err != nil { log.Fatalf("unable to parse environment variables: %e", err) } } -func updateAppConfig(cfg *Config) { +func buildAppData(data *Data) { - cfg.App.Title = "Build #" + cfg.Drone.BuildNumber + " " + cfg.Drone.BuildStatus + data.App.Title = "Build #" + data.Drone.BuildNumber + " " + data.Drone.BuildStatus - if strings.Contains(cfg.Ci.CommitRef, "refs/tags/") { - cfg.App.Tags = append(cfg.App.Tags, cfg.Drone.Tag) - cfg.App.Message = "Tag " + cfg.Drone.Tag + " created" + if strings.Contains(data.Ci.CommitRef, "refs/tags/") { + data.App.Tags = append(data.App.Tags, data.Drone.Tag) + data.App.Message = "Tag " + data.Drone.Tag + " created" } else { - cfg.App.Tags = append(cfg.App.Tags, cfg.Drone.RepoName+"/"+cfg.Ci.CommitBranch) - cfg.App.Message = "[" + cfg.Ci.CommitSha[0:8] + "] " + cfg.Ci.CommitMessage + data.App.Tags = append(data.App.Tags, data.Drone.RepoName+"/"+data.Ci.CommitBranch) + data.App.Message = "[" + data.Ci.CommitSha[0:8] + "] " + data.Ci.CommitMessage } } -func addTagsBasedOnResult(cfg *Config) { +func addResultToTags(data *Data) { - if cfg.Drone.BuildStatus == "success" { - cfg.App.Tags = append(cfg.App.Tags, "white_check_mark") - } else if cfg.Drone.BuildStatus == "failure" { - cfg.App.Tags = append(cfg.App.Tags, "x") + if data.Drone.BuildStatus == "success" { + data.App.Tags = append(data.App.Tags, "white_check_mark") + } else if data.Drone.BuildStatus == "failure" { + data.App.Tags = append(data.App.Tags, "x") } else { - cfg.App.Tags = append(cfg.App.Tags, "grey_question") + data.App.Tags = append(data.App.Tags, "grey_question") } } -func sendNotification(cfg *Config) { +func sendNotification(data *Data) { req, _ := http.NewRequest("POST", - cfg.App.BaseUrl+"/"+cfg.App.Topic, - strings.NewReader(cfg.App.Message)) + data.App.BaseUrl+"/"+data.App.Topic, + strings.NewReader(data.App.Message)) - if cfg.App.Token != "" { - req.Header.Add("Authorization", "Bearer "+cfg.App.Token) + if data.App.Token != "" { + req.Header.Add("Authorization", "Bearer "+data.App.Token) } else { - req.SetBasicAuth(cfg.App.Username, cfg.App.Password) + req.SetBasicAuth(data.App.Username, data.App.Password) } - req.Header.Set("Title", cfg.App.Title) - req.Header.Set("Priority", cfg.App.Priority) - req.Header.Set("Tags", strings.Join(cfg.App.Tags, ",")) - req.Header.Set("Actions", getActions(cfg)) + req.Header.Set("Title", data.App.Title) + req.Header.Set("Priority", data.App.Priority) + req.Header.Set("Tags", strings.Join(data.App.Tags, ",")) + req.Header.Set("Actions", getActions(data)) res, err := http.DefaultClient.Do(req) if err != nil { log.Fatalf("error trying to notify the result. Error: %+v", err) @@ -102,10 +102,10 @@ func sendNotification(cfg *Config) { } } -func getActions(cfg *Config) string { - var buildLink = "view, Build, " + cfg.Drone.BuildLink - if strings.Contains(cfg.Ci.CommitRef, "refs/tags/") { +func getActions(data *Data) string { + var buildLink = "view, Build, " + data.Drone.BuildLink + if strings.Contains(data.Ci.CommitRef, "refs/tags/") { return buildLink } - return buildLink + "; view, Changes, " + cfg.Drone.CommitLink + return buildLink + "; view, Changes, " + data.Drone.CommitLink } diff --git a/cmd/drone-ntfy/config/config.go b/pkg/model/model.go similarity index 98% rename from cmd/drone-ntfy/config/config.go rename to pkg/model/model.go index 691bb9c..ceabd52 100644 --- a/cmd/drone-ntfy/config/config.go +++ b/pkg/model/model.go @@ -1,4 +1,4 @@ -package config +package model type App struct { BaseUrl string `env:"PLUGIN_URL" envDefault:"https://ntfy.sh"`