Commit 11a5c7e
Changed files (4)
configs
internal
shouldideploytoday
cmd/shouldideploytoday.go
@@ -1,54 +1,15 @@
package cmd
import (
- "fmt"
- "time"
-
- "context"
-
- "github.com/carlmjohnson/requests"
- "github.com/kahnwong/swissknife/color"
- "github.com/rs/zerolog/log"
+ "github.com/kahnwong/swissknife/internal/shouldideploytoday"
"github.com/spf13/cobra"
)
-type ShouldIDeploy struct {
- Timezone string `json:"timezone"`
- Date time.Time `json:"date"`
- ShouldIDeploy bool `json:"shouldideploy"`
- Message string `json:"message"`
-}
-
-func ShouldIDeployToday() ShouldIDeploy {
- url := "https://shouldideploy.today"
-
- var response ShouldIDeploy
- err := requests.
- URL(url).
- Path("api").
- Param("tz", "UTC").
- Param("date", time.Now().UTC().Format("2006-01-02T15:04:05.000Z")).
- ToJSON(&response).
- Fetch(context.Background())
-
- if err != nil {
- log.Fatal().Msg("Error calling ShouldIDeploy API")
- }
-
- return response
-}
-
var ShouldIDeployTodayCmd = &cobra.Command{
Use: "shouldideploytoday",
Short: "Should I deploy today?",
Run: func(cmd *cobra.Command, args []string) {
- response := ShouldIDeployToday()
-
- if response.ShouldIDeploy {
- fmt.Printf("%s\n", color.Green(response.Message))
- } else if !response.ShouldIDeploy {
- fmt.Printf("%s\n", color.Red(response.Message))
- }
+ shouldideploytoday.ShouldIDeployToday()
},
}
configs/colors.go
@@ -0,0 +1,19 @@
+package configs
+
+import "github.com/fatih/color"
+
+type ColorsStruct struct {
+ Green func(a ...interface{}) string
+ Magenta func(a ...interface{}) string
+ Red func(a ...interface{}) string
+ Yellow func(a ...interface{}) string
+ Blue func(a ...interface{}) string
+}
+
+var Colors = ColorsStruct{
+ Green: color.New(color.FgHiGreen).SprintFunc(),
+ Magenta: color.New(color.FgHiMagenta).SprintFunc(),
+ Red: color.New(color.FgRed).SprintFunc(),
+ Yellow: color.New(color.FgYellow).SprintFunc(),
+ Blue: color.New(color.FgBlue).SprintFunc(),
+}
internal/shouldideploytoday/shouldideploytoday.go
@@ -0,0 +1,47 @@
+package shouldideploytoday
+
+import (
+ "context"
+ "fmt"
+ "time"
+
+ "github.com/carlmjohnson/requests"
+ "github.com/kahnwong/swissknife/configs"
+ "github.com/rs/zerolog/log"
+)
+
+type ShouldIDeploy struct {
+ Timezone string `json:"timezone"`
+ Date time.Time `json:"date"`
+ ShouldIDeploy bool `json:"shouldideploy"`
+ Message string `json:"message"`
+}
+
+func getResponse() ShouldIDeploy {
+ url := "https://shouldideploy.today"
+
+ var response ShouldIDeploy
+ err := requests.
+ URL(url).
+ Path("api").
+ Param("tz", "UTC").
+ Param("date", time.Now().UTC().Format("2006-01-02T15:04:05.000Z")).
+ ToJSON(&response).
+ Fetch(context.Background())
+
+ if err != nil {
+ log.Fatal().Msg("Error calling ShouldIDeploy API")
+ }
+
+ return response
+}
+
+func ShouldIDeployToday() {
+ response := getResponse()
+
+ if response.ShouldIDeploy {
+ fmt.Printf("%s\n", configs.Colors.Green(response.Message))
+ } else if !response.ShouldIDeploy {
+ fmt.Printf("%s\n", configs.Colors.Red(response.Message))
+ }
+}
go.sum
@@ -113,8 +113,6 @@ github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo
github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.39.0 h1:SHs+kF4LP+f+p14esP5jAoDpHU8Gu/v9lFRK6IT5imM=
-golang.org/x/crypto v0.39.0/go.mod h1:L+Xg3Wf6HoL4Bn4238Z6ft6KfEpN0tJGo53AAPC632U=
golang.org/x/crypto v0.40.0 h1:r4x+VvoG5Fm+eJcxMaY8CQM7Lb0l1lsmjGBQ6s8BfKM=
golang.org/x/crypto v0.40.0/go.mod h1:Qr1vMER5WyS2dfPHAlsOj01wgLbsyWtFn/aY+5+ZdxY=
golang.org/x/exp v0.0.0-20220909182711-5c715a9e8561 h1:MDc5xs78ZrZr3HMQugiXOAkSZtfTpbJLDr/lwfgO53E=
@@ -123,13 +121,9 @@ golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPI
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
-golang.org/x/net v0.38.0 h1:vRMAPTMaeGqVhG5QyLJHqNDwecKTomGeqbnfZyKlBI8=
-golang.org/x/net v0.38.0/go.mod h1:ivrbrMbzFq5J41QOQh0siUuly180yBYtLp+CKbEaFx8=
golang.org/x/net v0.41.0 h1:vBTly1HeNPEn3wtREYfy4GZ/NECgw2Cnl+nK6Nz3uvw=
golang.org/x/net v0.41.0/go.mod h1:B/K4NNqkfmg07DQYrbwvSluqCJOOXwUjeb/5lOisjbA=
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
-golang.org/x/sync v0.15.0 h1:KWH3jNZsfyT6xfAfKiz6MRNmd46ByHDYaZ7KSkCtdW8=
-golang.org/x/sync v0.15.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sync v0.16.0 h1:ycBJEhp9p4vXvUZNszeOq0kGTPghopOL8q0fq3vstxw=
golang.org/x/sync v0.16.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
@@ -140,15 +134,11 @@ golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBc
golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
-golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
golang.org/x/sys v0.34.0 h1:H5Y5sJ2L2JRdyv7ROF1he/lPdvFsd0mJHFw2ThKHxLA=
golang.org/x/sys v0.34.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
-golang.org/x/term v0.32.0 h1:DR4lr0TjUs3epypdhTOkMmuF5CDFJ/8pOnbzMZPQ7bg=
-golang.org/x/term v0.32.0/go.mod h1:uZG1FhGx848Sqfsq4/DlJr3xGGsYMu/L5GW4abiaEPQ=
+golang.org/x/term v0.33.0 h1:NuFncQrRcaRvVmgRkvM3j/F00gWIAlcmlB8ACEKmGIg=
+golang.org/x/term v0.33.0/go.mod h1:s18+ql9tYWp1IfpV9DmCtQDDSRBUjKaw9M1eAv5UeF0=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.26.0 h1:P42AVeLghgTYr4+xUnTRKDMqpar+PtX7KWuNQL21L8M=
-golang.org/x/text v0.26.0/go.mod h1:QK15LZJUUQVJxhz7wXgxSy/CJaTFjd0G+YLonydOVQA=
golang.org/x/text v0.27.0 h1:4fGWRpyh641NLlecmyl4LOe6yDdfaYNrGb2zdfo4JV4=
golang.org/x/text v0.27.0/go.mod h1:1D28KMCvyooCX9hBiosv5Tz/+YLxj0j7XhWjpSUF7CU=
golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=