From e422a705fb6feea6efc99937a4a5e29fb01376c3 Mon Sep 17 00:00:00 2001 From: isthisnagee Date: Sun, 16 Jan 2022 19:46:18 -0800 Subject: [PATCH] wip --- cmd/add.go | 2 +- cmd/delete.go | 8 +++---- cmd/edit.go | 6 ++--- cmd/editNote.go | 6 ++--- cmd/list.go | 2 +- cmd/note.go | 4 ++-- cmd/root.go | 28 ++++++++++------------- cmd/show.go | 6 ++--- cmd/today.go | 2 +- cmd/util.go | 60 ++++++++++++++++++++++++++++++++++++++----------- go.mod | 15 ++++++++++++- go.sum | 16 +++++++++++++ 12 files changed, 107 insertions(+), 48 deletions(-) diff --git a/cmd/add.go b/cmd/add.go index 5ace645..8f33e62 100644 --- a/cmd/add.go +++ b/cmd/add.go @@ -25,7 +25,7 @@ The returned number is the ID of the added entry. This ID can be used in other commands. `, Run: func(cmd *cobra.Command, args []string) { - var entry = App.NewDiaryEntry(args[0]) + var entry = App.Db.NewDiaryEntry(args[0]) fmt.Println(entry.Id) }, } diff --git a/cmd/delete.go b/cmd/delete.go index 71d7ceb..61ce008 100644 --- a/cmd/delete.go +++ b/cmd/delete.go @@ -24,8 +24,8 @@ var deleteCmd = &cobra.Command{ if err != nil { return err } - entry, err := App.GetDiaryEntry(int64(id)) - notes := App.GetDiaryEntryNotes(int64(id)) + entry, err := App.Db.GetDiaryEntry(int64(id)) + notes := App.Db.GetDiaryEntryNotes(int64(id)) if err != nil { return err } @@ -47,8 +47,8 @@ var deleteCmd = &cobra.Command{ if err != nil { panic(err) } - _, err = App.DeleteDiaryEntry(int64(id)) - _, err = App.DeleteNotesForDiaryEntry(int64(id)) + _, err = App.Db.DeleteDiaryEntry(int64(id)) + _, err = App.Db.DeleteNotesForDiaryEntry(int64(id)) if err != nil { panic(err) } diff --git a/cmd/edit.go b/cmd/edit.go index 4b4918e..e964032 100644 --- a/cmd/edit.go +++ b/cmd/edit.go @@ -27,7 +27,7 @@ var editCmd = &cobra.Command{ if err != nil { return err } - _, err = App.GetDiaryEntry(int64(id)) + _, err = App.Db.GetDiaryEntry(int64(id)) if err != nil { return err } @@ -35,7 +35,7 @@ var editCmd = &cobra.Command{ }, Run: func(cmd *cobra.Command, args []string) { id, _ := strconv.Atoi(args[0]) - entry, _ := App.GetDiaryEntry(int64(id)) + entry, _ := App.Db.GetDiaryEntry(int64(id)) temp_file, err := ioutil.TempFile(os.TempDir(), "diary_note_title.*.md") if err != nil { log.Fatal(err) @@ -55,7 +55,7 @@ var editCmd = &cobra.Command{ if err != nil { log.Fatal(err) } - App.EditDiaryEntry(entry.Id, string(new_content)) + App.Db.EditDiaryEntry(entry.Id, string(new_content)) }, } diff --git a/cmd/editNote.go b/cmd/editNote.go index 6123f8f..46d6d17 100644 --- a/cmd/editNote.go +++ b/cmd/editNote.go @@ -28,7 +28,7 @@ var editNoteCmd = &cobra.Command{ if err != nil { return err } - _, err = App.GetDiaryEntryNote(int64(id)) + _, err = App.Db.GetDiaryEntryNote(int64(id)) if err != nil { return err } @@ -36,7 +36,7 @@ var editNoteCmd = &cobra.Command{ }, Run: func(cmd *cobra.Command, args []string) { id, _ := strconv.Atoi(args[0]) - note, _ := App.GetDiaryEntryNote(int64(id)) + note, _ := App.Db.GetDiaryEntryNote(int64(id)) temp_file, err := ioutil.TempFile(os.TempDir(), "diary_note.*.md") if err != nil { log.Fatal(err) @@ -56,7 +56,7 @@ var editNoteCmd = &cobra.Command{ if err != nil { log.Fatal(err) } - App.EditDiaryEntryNote(note.Id, strings.TrimSpace(string(new_content))) + App.Db.EditDiaryEntryNote(note.Id, strings.TrimSpace(string(new_content))) }, } diff --git a/cmd/list.go b/cmd/list.go index 1c2fc92..fe480e2 100644 --- a/cmd/list.go +++ b/cmd/list.go @@ -20,7 +20,7 @@ var listCmd = &cobra.Command{ $ diary list today `, Run: func(cmd *cobra.Command, args []string) { - results := App.GetDiaryEntries(model.GetDiaryEntriesQuery{}) + results := App.Db.GetDiaryEntries(model.GetDiaryEntriesQuery{}) PrintEntries(results) }, } diff --git a/cmd/note.go b/cmd/note.go index 244f955..b61b3f6 100644 --- a/cmd/note.go +++ b/cmd/note.go @@ -30,7 +30,7 @@ var noteCmd = &cobra.Command{ if err != nil { return err } - _, err = App.GetDiaryEntry(int64(id)) + _, err = App.Db.GetDiaryEntry(int64(id)) if err != nil { return err } @@ -57,7 +57,7 @@ var noteCmd = &cobra.Command{ if err != nil { log.Fatal(err) } - App.NewDiaryEntryNote(int64(entry_id), string(content)) + App.Db.NewDiaryEntryNote(int64(entry_id), string(content)) }, } diff --git a/cmd/root.go b/cmd/root.go index aaeb8e5..ddb6cfb 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -1,5 +1,5 @@ /* -Copyright © 2021 NAME HERE +Copyright © 2022 NAME HERE */ package cmd @@ -10,23 +10,18 @@ import ( "github.com/spf13/cobra" ) +var cfgFile string + // rootCmd represents the base command when called without any subcommands var rootCmd = &cobra.Command{ Use: "diary", - Short: "An engineer's diary", - Long: `Keep track of your day with diary, for example: -$ diary add "Issue when fixing bad data in prod" -1134 -$ diary note 1134 # this will get opened in your $EDITOR -Added note to 1134: - -Per @coworker's suggestion, we decided to ... -$ diary add "Meeting with @coworker" -1135 -$ diary minutes 1135 # alias for note. Opens in $EDITOR -Added minutes to 1134: -01:05PM Attendees: @Joe, @Nagee, @Maryam -01:11PM Decided to ... + Short: "A brief description of your application", + Long: `A longer description that spans multiple lines and likely contains +examples and usage of using your application. For example: + +Cobra is a CLI library for Go that empowers applications. +This application is a tool to generate the needed files +to quickly create a Cobra application. `, // Uncomment the following line if your bare application // has an action associated with it: @@ -44,11 +39,12 @@ func Execute() { func init() { cobra.OnInitialize(InitApp) + // Here you will define your flags and configuration settings. // Cobra supports persistent flags, which, if defined here, // will be global for your application. - // rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.diary.yaml)") + rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.diary.toml)") // Cobra also supports local flags, which will only run // when this action is called directly. diff --git a/cmd/show.go b/cmd/show.go index 5fead7b..1689ec5 100644 --- a/cmd/show.go +++ b/cmd/show.go @@ -27,7 +27,7 @@ var showCmd = &cobra.Command{ if err != nil { return err } - _, err = App.GetDiaryEntry(int64(id)) + _, err = App.Db.GetDiaryEntry(int64(id)) if err != nil { return err } @@ -35,11 +35,11 @@ var showCmd = &cobra.Command{ }, Run: func(cmd *cobra.Command, args []string) { entry_id, _ := strconv.Atoi(args[0]) - var entry, err = App.GetDiaryEntry(int64(entry_id)) + var entry, err = App.Db.GetDiaryEntry(int64(entry_id)) if err != nil { log.Fatal(err) } - var notes = App.GetDiaryEntryNotes(entry.Id) + var notes = App.Db.GetDiaryEntryNotes(entry.Id) PrintEntry(entry) fmt.Println() PrintNotes(notes) diff --git a/cmd/today.go b/cmd/today.go index c50b0bf..4e64865 100644 --- a/cmd/today.go +++ b/cmd/today.go @@ -39,7 +39,7 @@ var todayCmd = &cobra.Command{ var endOfToday = startOfToday.AddDate(0, 0, 1) *created_before_ts = endOfToday.Unix() - results := App.GetDiaryEntries(model.GetDiaryEntriesQuery{ + results := App.Db.GetDiaryEntries(model.GetDiaryEntriesQuery{ CreatedBeforeTs: created_before_ts, CreatedAfterTs: created_after_ts, }) diff --git a/cmd/util.go b/cmd/util.go index 8a4b847..485b986 100644 --- a/cmd/util.go +++ b/cmd/util.go @@ -5,6 +5,8 @@ import ( "fmt" markdown "github.com/MichaelMure/go-term-markdown" "github.com/fatih/color" + "github.com/spf13/cobra" + "github.com/spf13/viper" "isthisnagee.com/tools/diary/model" "log" "os" @@ -14,29 +16,61 @@ import ( "time" ) -var App *model.App +type Cfg struct { + DbPath string +} -func InitApp() { +type TApp struct { + Db *model.App + Cfg *Cfg +} - home_dir, err := os.UserHomeDir() - if err != nil { - log.Fatal(err.Error()) +var App *TApp + +// var App *model.App + +// initConfig reads in config file and ENV variables if set. +func initConfig() Cfg { + // Find home directory. + home, err := os.UserHomeDir() + cobra.CheckErr(err) + + if cfgFile != "" { + // Use config file from the flag. + viper.SetConfigFile(cfgFile) + } else { + + // Search config in home directory with name ".diary" (without extension). + viper.AddConfigPath(home) + viper.SetConfigType("toml") + viper.SetConfigName(".diary") } - var db_path = path.Join(home_dir, ".diary.sql") + var db_path = path.Join(home, ".diary.sql") + viper.SetDefault("db_path", db_path) + + viper.AutomaticEnv() // read in environment variables that match - if _, err := os.Stat(db_path); errors.Is(err, os.ErrNotExist) { - _, err := os.Create(db_path) + // If a config file is found, read it in. + if err := viper.ReadInConfig(); err == nil { + fmt.Fprintln(os.Stderr, "Using config file:", viper.ConfigFileUsed()) + } + + return Cfg{db_path} +} + +func InitApp() { + var cfg = initConfig() + + if _, err := os.Stat(cfg.DbPath); errors.Is(err, os.ErrNotExist) { + _, err := os.Create(cfg.DbPath) if err != nil { log.Fatal(err.Error()) } } - if err != nil { - log.Fatal(err.Error()) - } - var app = model.NewApp(db_path) - App = &app + var app = model.NewApp(cfg.DbPath) + App = &TApp{&app, &cfg} } var fmt_str = "%-10s %-20s %s\n" diff --git a/go.mod b/go.mod index 553658f..3c19bd2 100644 --- a/go.mod +++ b/go.mod @@ -11,18 +11,31 @@ require ( github.com/dlclark/regexp2 v1.1.6 // indirect github.com/eliukblau/pixterm/pkg/ansimage v0.0.0-20191210081756-9fb6cf8c2f75 // indirect github.com/fatih/color v1.13.0 // indirect + github.com/fsnotify/fsnotify v1.5.1 // indirect github.com/gomarkdown/markdown v0.0.0-20191123064959-2c17d62f5098 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect github.com/inconshreveable/mousetrap v1.0.0 // indirect github.com/kyokomi/emoji/v2 v2.2.8 // indirect github.com/lucasb-eyer/go-colorful v1.0.3 // indirect + github.com/magiconair/properties v1.8.5 // indirect github.com/mattn/go-colorable v0.1.12 // indirect github.com/mattn/go-isatty v0.0.14 // indirect github.com/mattn/go-runewidth v0.0.12 // indirect github.com/mattn/go-sqlite3 v1.14.9 // indirect + github.com/mitchellh/mapstructure v1.4.3 // indirect + github.com/pelletier/go-toml v1.9.4 // indirect github.com/rivo/uniseg v0.1.0 // indirect + github.com/spf13/afero v1.6.0 // indirect + github.com/spf13/cast v1.4.1 // indirect github.com/spf13/cobra v1.3.0 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect + github.com/spf13/viper v1.10.1 // indirect + github.com/subosito/gotenv v1.2.0 // indirect golang.org/x/image v0.0.0-20191206065243-da761ea9ff43 // indirect golang.org/x/net v0.0.0-20210813160813-60bc85c4be6d // indirect - golang.org/x/sys v0.0.0-20211205182925-97ca703d548d // indirect + golang.org/x/sys v0.0.0-20211210111614-af8b64212486 // indirect + golang.org/x/text v0.3.7 // indirect + gopkg.in/ini.v1 v1.66.2 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect ) diff --git a/go.sum b/go.sum index 73be075..f643975 100644 --- a/go.sum +++ b/go.sum @@ -123,6 +123,7 @@ github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5Kwzbycv github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI= github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= @@ -232,6 +233,7 @@ github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/b github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= github.com/hashicorp/mdns v1.0.1/go.mod h1:4gW7WsVCke5TE7EPeYliwHlRUyBtfCwuFwuMg2DmyNY= @@ -266,6 +268,7 @@ github.com/kyokomi/emoji/v2 v2.2.8/go.mod h1:JUcn42DTdsXJo1SWanHh4HKDEyPaR5Cqkmo github.com/lucasb-eyer/go-colorful v1.0.3 h1:QIbQXiugsb+q10B+MI+7DI1oQLdmnep86tWFlaaUAac= github.com/lucasb-eyer/go-colorful v1.0.3/go.mod h1:R4dSotOR9KMtayYi1e77YzuveK+i7ruzyGqttikkLy0= github.com/lyft/protoc-gen-star v0.5.3/go.mod h1:V0xaHgaf5oCCqmcxYcWiDfTiKsZsRc87/1qhoTACD8w= +github.com/magiconair/properties v1.8.5 h1:b6kJs+EmPFMYGkow9GiUyCyOvIwYetYJ3fSaWak/Gls= github.com/magiconair/properties v1.8.5/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= @@ -294,6 +297,7 @@ github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrk github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs= github.com/mitchellh/mapstructure v1.4.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= @@ -303,6 +307,7 @@ github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjY github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= @@ -335,14 +340,19 @@ github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPx github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= github.com/spf13/afero v1.3.3/go.mod h1:5KUK8ByomD5Ti5Artl0RtHeI5pTF7MIDuXL3yY520V4= +github.com/spf13/afero v1.6.0 h1:xoax2sJ2DT8S8xA2paPFjDCScCNeWsg75VG0DLRreiY= github.com/spf13/afero v1.6.0/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I= +github.com/spf13/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= github.com/spf13/cobra v1.3.0 h1:R7cSvGu+Vv+qX0gW5R/85dx2kmmJT5z5NM8ifdYjdn0= github.com/spf13/cobra v1.3.0/go.mod h1:BrRVncBjOJa/eUcVVm9CE+oC6as8k+VYr4NY7WCi9V4= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/viper v1.10.0/go.mod h1:SoyBPwAtKDzypXNDFKN5kzH7ppppbGZtls1UpIy5AsM= +github.com/spf13/viper v1.10.1 h1:nuJZuYpG7gTj/XqiUwg8bA0cp1+M2mC3J4g5luUYBKk= +github.com/spf13/viper v1.10.1/go.mod h1:IGlFPqhNAPKRxohIzWpI5QEy4kuI7tcl5WvR+8qy1rU= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= @@ -351,6 +361,7 @@ github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81P github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -560,6 +571,8 @@ golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211205182925-97ca703d548d h1:FjkYO/PPp4Wi0EAUOVLxePm7qVW4r4ctbWpURyuOD0E= golang.org/x/sys v0.0.0-20211205182925-97ca703d548d/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486 h1:5hpz5aRr+W1erYCL5JRhSUBJRph7l9XkNveoExlrKYk= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -569,6 +582,7 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -779,6 +793,7 @@ gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8 gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/ini.v1 v1.66.2 h1:XfR1dOYubytKy4Shzc2LHrrGhU0lDCfDGG1yLPmpgsI= gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= @@ -786,6 +801,7 @@ gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=