Home

tmpl @main - refs - log -
-
https://git.jolheiser.com/tmpl.git
Template automation
tree log patch
Update and move to woodpecker (#18) Reviewed-on: https://git.jojodev.com/jolheiser/tmpl/pulls/18 Co-authored-by: jolheiser <john.olheiser@gmail.com> Co-committed-by: jolheiser <john.olheiser@gmail.com>
jolheiser <john.olheiser@gmail.com>
3 years ago
23 changed files, 135 additions(+), 236 deletions(-)
.drone.yml.woodpecker.ymlDOCS.mdEarthfileMakefileREADME.mdcmd/app.gocmd/download.gocmd/env.gocmd/flags/flags.gocmd/init.gocmd/remove.gocmd/restore.gocmd/save.gocmd/source.gocmd/test.gocmd/update.gocmd/use.godocs.gogo.modgo.summain.gotools.go
D .drone.yml
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
diff --git a/.drone.yml b/.drone.yml
deleted file mode 100644
index 7849981d561e35f030da1e39e4b0915a8142100a..0000000000000000000000000000000000000000
--- a/.drone.yml
+++ /dev/null
@@ -1,148 +0,0 @@
----
-kind: pipeline
-name: compliance
-
-platform:
-  os: linux
-  arch: arm64
-
-trigger:
-  event:
-    - pull_request
-
-steps:
-  - name: build
-    pull: always
-    image: golang:1.15
-    environment:
-      GOPROXY: https://goproxy.cn
-    commands:
-      - make test
-      - make build
-
-  - name: vet
-    pull: always
-    image: golang:1.15
-    environment:
-      GOPROXY: https://goproxy.cn
-    commands:
-      - make vet
-    depends_on:
-      - build
-
-  - name: lint
-    pull: always
-    image: golangci/golangci-lint:v1.32
-    commands:
-      - golangci-lint --timeout 5m run
-    depends_on:
-      - build
-
----
-kind: pipeline
-name: release-main
-
-platform:
-  os: linux
-  arch: amd64
-
-trigger:
-  event:
-    - push
-  branch:
-    - main
-
-steps:
-  - name: build
-    pull: always
-    image: golang:1.15
-    environment:
-      GOPROXY: https://goproxy.cn
-      VERSION: ${DRONE_COMMIT}
-    commands:
-      - make build
-  - name: build-windows
-    pull: always
-    image: golang:1.15
-    environment:
-      GOPROXY: https://goproxy.cn
-      VERSION: ${DRONE_COMMIT}
-      GOOS: windows
-    commands:
-      - make build
-  - name: gitea-release
-    pull: always
-    image: jolheiser/drone-gitea-main:latest
-    environment:
-      GOPROXY: https://goproxy.cn
-    settings:
-      token:
-        from_secret: gitea_token
-      base: https://gitea.com
-      files:
-        - "tmpl"
-        - "tmpl.exe"
-    depends_on:
-      - build
-      - build-windows
-
-
----
-kind: pipeline
-name: release-tag
-
-platform:
-  os: linux
-  arch: amd64
-
-trigger:
-  ref:
-    include:
-    - refs/tags/*
-    exclude:
-    - refs/tags/latest
-
-steps:
-  - name: build
-    pull: always
-    image: golang:1.15
-    environment:
-      GOPROXY: https://goproxy.cn
-      VERSION: ${DRONE_TAG}
-    commands:
-      - make build
-  - name: build-windows
-    pull: always
-    image: golang:1.15
-    environment:
-      GOPROXY: https://goproxy.cn
-      GOOS: windows
-      VERSION: ${DRONE_TAG}
-    commands:
-      - make build
-  - name: gitea-release
-    pull: always
-    image: plugins/gitea-release:1
-    environment:
-      GOPROXY: https://goproxy.cn
-    settings:
-      api_key:
-        from_secret: gitea_token
-      base_url: https://gitea.com
-      files:
-        - "tmpl"
-        - "tmpl.exe"
-    depends_on:
-      - build
-      - build-windows
-  - name: gitea-prune
-    pull: always
-    image: jolheiser/drone-gitea-prune
-    environment:
-      GOPROXY: https://goproxy.cn
-    settings:
-      token:
-        from_secret: gitea_token
-      base: https://gitea.com
-    depends_on:
-      - gitea-release
\ No newline at end of file
I .woodpecker.yml
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
diff --git a/.woodpecker.yml b/.woodpecker.yml
new file mode 100644
index 0000000000000000000000000000000000000000..27d80cf63e0051f4fc9fd961e1e29ec4fba74390
--- /dev/null
+++ b/.woodpecker.yml
@@ -0,0 +1,59 @@
+clone:
+  git:
+    image: woodpeckerci/plugin-git:next
+
+pipeline:
+  compliance:
+    image: golang:1.17
+    commands:
+      - go test -race ./...
+      - go vet ./...
+      - go run github.com/rs/zerolog/cmd/lint go.jolheiser.com/tmpl
+      - go build
+    when:
+      event: pull_request
+
+  build:
+    image: golang:1.17
+    commands:
+      - GOOS="windows" go build
+      - GOOS="linux" go build
+    when:
+      event: [ push, tag ]
+      branch: main
+
+  release-main:
+    image: jolheiser/drone-gitea-main:latest
+    secrets:
+      - source: gitea_token
+        target: token
+    base: https://git.jojodev.com
+    files:
+      - "tmpl"
+      - "tmpl.exe"
+    when:
+      event: push
+      branch: main
+
+  release-tag:
+    image: plugins/gitea-release:1
+    secrets:
+      - source: gitea_token
+        target: api_key
+    base_url: https://git.jojodev.com
+    files:
+      - "tmpl"
+      - "tmpl.exe"
+    when:
+      event: tag
+      tag: v*
+
+  prune:
+    image: jolheiser/drone-gitea-prune
+    secrets:
+      - source: gitea_token
+        target: token
+    base: https://git.jojodev.com
+    when:
+      event: tag
+      tag: v*
M DOCS.mdDOCS.md
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
diff --git a/DOCS.md b/DOCS.md
index 7a3f2b916fc8ba8f3e51685c5c34c4ec46fffcc9..005df0b563724c88cc5d4cdd6157eeef2b059cf6 100644
--- a/DOCS.md
+++ b/DOCS.md
@@ -102,7 +102,7 @@
 ```
 tmpl --source gitea download --branch license jolheiser/tmpls license
 ```
-The above command would download the [license](https://gitea.com/jolheiser/tmpls/src/branch/license) template from `jolheiser/tmpls`
+The above command would download the [license](https://git.jojodev.com/jolheiser/tmpls/src/branch/license) template from `jolheiser/tmpls`
 
 ## Putting it all together
 
D Earthfile
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
diff --git a/Earthfile b/Earthfile
deleted file mode 100644
index dbe98be1778b02dcf2f6ef373d00194c422dd826..0000000000000000000000000000000000000000
--- a/Earthfile
+++ /dev/null
@@ -1,10 +0,0 @@
-# To lint, install Earthly and run `earth +lint`
-# This ensures the usage of the same version of golangci-lint
-
-FROM golangci/golangci-lint:v1.32
-
-WORKDIR /tmpl
-
-lint:
-    COPY . .
-    RUN golangci-lint --timeout 5m run
\ No newline at end of file
D Makefile
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
diff --git a/Makefile b/Makefile
deleted file mode 100644
index 9a94c1df64e4e60f3d23def3297f5af076ab4370..0000000000000000000000000000000000000000
--- a/Makefile
+++ /dev/null
@@ -1,26 +0,0 @@
-GO ?= go
-VERSION ?= $(shell git describe --tags --always | sed 's/-/+/' | sed 's/^v//')
-
-.PHONY: build
-build:
-	$(GO) build -ldflags '-s -w -X "go.jolheiser.com/tmpl/cmd.Version=$(VERSION)"'
-
-.PHONY: vet
-vet:
-	$(GO) vet ./...
-
-.PHONY: fmt
-fmt:
-	$(GO) fmt ./...
-
-.PHONY: test
-test:
-	$(GO) test -race ./...
-
-.PHONY: lint
-lint:
-	earth +lint
-
-.PHONY: docs
-docs:
-	$(GO) run docs.go
M README.mdREADME.md
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
diff --git a/README.md b/README.md
index ea9fca4db42d71a35902008512fe1f393775e029..c41731578629b89b465b05f4d313687028121a12 100644
--- a/README.md
+++ b/README.md
@@ -12,7 +12,7 @@ [Project Docs/FAQs](DOCS.md)
 
 ## Examples 
 
-Check out the [license](https://gitea.com/jolheiser/tmpls/src/branch/license) and [makefile](https://gitea.com/jolheiser/tmpls/src/branch/makefile) branch of my [template repository](https://gitea.com/jolheiser/tmpls). 
+Check out the [license](https://git.jojodev.com/jolheiser/tmpls/src/branch/license) and [makefile](https://git.jojodev.com/jolheiser/tmpls/src/branch/makefile) branch of my [template repository](https://git.jojodev.com/jolheiser/tmpls). 
 
 ## License
 
M cmd/app.gocmd/app.go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
diff --git a/cmd/app.go b/cmd/app.go
index 71c130c0db9551d802eb42efa81918ac177a8a48..1befa0cbcea8e5b05f82a7a775cfc8558fc865af 100644
--- a/cmd/app.go
+++ b/cmd/app.go
@@ -6,8 +6,8 @@ 	"path/filepath"
 
 	"go.jolheiser.com/tmpl/cmd/flags"
 
+	"github.com/rs/zerolog/log"
 	"github.com/urfave/cli/v2"
-	"go.jolheiser.com/beaver"
 )
 
 var (
@@ -18,7 +18,7 @@
 func init() {
 	home, err := os.UserHomeDir()
 	if err != nil {
-		beaver.Error("could not locate user's home directory, tmpl will use temp dir for registry")
+		log.Error().Msg("could not locate user's home directory, tmpl will use temp dir for registry")
 		return
 	}
 	defaultDir = filepath.Join(home, ".tmpl")
M cmd/download.gocmd/download.go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
diff --git a/cmd/download.go b/cmd/download.go
index 76983a57df3814713e5929dc8d7841167405b70b..dac63bb158bcdff5d9545b71f626bef15fa867a1 100644
--- a/cmd/download.go
+++ b/cmd/download.go
@@ -7,8 +7,8 @@
 	"go.jolheiser.com/tmpl/cmd/flags"
 	"go.jolheiser.com/tmpl/registry"
 
+	"github.com/rs/zerolog/log"
 	"github.com/urfave/cli/v2"
-	"go.jolheiser.com/beaver"
 )
 
 var Download = &cli.Command{
@@ -64,6 +64,6 @@ 	if err != nil {
 		return err
 	}
 
-	beaver.Infof("Added new template %s", t.Name)
+	log.Info().Msgf("Added new template %q", t.Name)
 	return nil
 }
M cmd/env.gocmd/env.go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
diff --git a/cmd/env.go b/cmd/env.go
index 3ecc12d4edfd4ce820ade73338ff9b819d4837b8..703efbf63b1920ca7ccb692c3935bfbc507570ba 100644
--- a/cmd/env.go
+++ b/cmd/env.go
@@ -3,9 +3,8 @@
 import (
 	"os"
 
+	"github.com/rs/zerolog/log"
 	"github.com/urfave/cli/v2"
-	"go.jolheiser.com/beaver"
-	"go.jolheiser.com/beaver/color"
 )
 
 var Env = &cli.Command{
@@ -18,17 +17,15 @@
 func runEnv(_ *cli.Context) error {
 
 	// Source
-	beaver.Infof("TMPL_SOURCE: %s", getEnv("TMPL_SOURCE"))
+	log.Info().Str("TMPL_SOURCE", os.Getenv("TMPL_SOURCE")).Msg("")
 
 	// Registry Path
-	beaver.Infof("TMPL_REGISTRY: %s", getEnv("TMPL_REGISTRY"))
+	log.Info().Str("TMPL_REGISTRY", os.Getenv("TMPL_REGISTRY")).Msg("")
 
 	// Branch
-	beaver.Infof("TMPL_BRANCH: %s", getEnv("TMPL_BRANCH"))
+	log.Info().Str("TMPL_BRANCH", os.Getenv("TMPL_BRANCH")).Msg("")
 
 	return nil
 }
 
-func getEnv(key string) string {
-	return color.FgHiBlue.Format(os.Getenv(key))
-}
+
M cmd/flags/flags.gocmd/flags/flags.go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
diff --git a/cmd/flags/flags.go b/cmd/flags/flags.go
index fc13bfaabc0c143ec61750f73032b9427fd1c3ac..8bc7cac7eb466a22fda15b2a76f075f6fed2fb17 100644
--- a/cmd/flags/flags.go
+++ b/cmd/flags/flags.go
@@ -1,7 +1,6 @@
 package flags
 
 var (
-	Debug    bool
 	Registry string
 	Source   string
 )
M cmd/init.gocmd/init.go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
diff --git a/cmd/init.go b/cmd/init.go
index 9f2f5cc21ecc3d9e3ce39a5d1bccc5934ac272e9..08ba88c7ae296de73659fa81cba2a498725de5c1 100644
--- a/cmd/init.go
+++ b/cmd/init.go
@@ -4,8 +4,8 @@ import (
 	"errors"
 	"os"
 
+	"github.com/rs/zerolog/log"
 	"github.com/urfave/cli/v2"
-	"go.jolheiser.com/beaver"
 )
 
 var Init = &cli.Command{
@@ -42,7 +42,7 @@ 	}
 	if err := os.Mkdir("template", os.ModePerm); err != nil {
 		return err
 	}
-	beaver.Info("Template initialized!")
+	log.Info().Msg("Template initialized!")
 	return fi.Close()
 }
 
M cmd/remove.gocmd/remove.go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
diff --git a/cmd/remove.go b/cmd/remove.go
index 3521a29b7be9000718f399653f8793af6004c105..98001187a55600aca14c128a72e774960bd0af18 100644
--- a/cmd/remove.go
+++ b/cmd/remove.go
@@ -4,8 +4,8 @@ import (
 	"go.jolheiser.com/tmpl/cmd/flags"
 	"go.jolheiser.com/tmpl/registry"
 
+	"github.com/rs/zerolog/log"
 	"github.com/urfave/cli/v2"
-	"go.jolheiser.com/beaver"
 )
 
 var Remove = &cli.Command{
@@ -30,6 +30,6 @@ 	if err := reg.RemoveTemplate(ctx.Args().First()); err != nil {
 		return err
 	}
 
-	beaver.Infof("Successfully removed %s", ctx.Args().First())
+	log.Info().Msgf("Successfully removed %q", ctx.Args().First())
 	return nil
 }
M cmd/restore.gocmd/restore.go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
diff --git a/cmd/restore.go b/cmd/restore.go
index b6a1ecc0aeac398ca303258360f7c8ca4930d6f9..cf96172f2d8f833eaeaa618b916c13383ab2a5a6 100644
--- a/cmd/restore.go
+++ b/cmd/restore.go
@@ -6,8 +6,8 @@
 	"go.jolheiser.com/tmpl/cmd/flags"
 	"go.jolheiser.com/tmpl/registry"
 
+	"github.com/rs/zerolog/log"
 	"github.com/urfave/cli/v2"
-	"go.jolheiser.com/beaver"
 )
 
 var Restore = &cli.Command{
@@ -26,7 +26,7 @@
 	var num int
 	for _, tmpl := range reg.Templates {
 		if _, err := os.Lstat(tmpl.ArchivePath()); os.IsNotExist(err) {
-			beaver.Infof("Restoring %s...", tmpl.Name)
+			log.Info().Msgf("Restoring %q...", tmpl.Name)
 			if err := reg.UpdateTemplate(tmpl.Name); err != nil {
 				return err
 			}
@@ -34,6 +34,6 @@ 			num++
 		}
 	}
 
-	beaver.Infof("Restored %d templates.", num)
+	log.Info().Int("count", num).Msgf("Restored templates.")
 	return nil
 }
M cmd/save.gocmd/save.go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
diff --git a/cmd/save.go b/cmd/save.go
index cd647ccc57793fd0a675cecb04d4b8e0baffd940..8b8ccfc5c9f762fc82cc8f45f66e5ced748fe5b6 100644
--- a/cmd/save.go
+++ b/cmd/save.go
@@ -6,8 +6,8 @@
 	"go.jolheiser.com/tmpl/cmd/flags"
 	"go.jolheiser.com/tmpl/registry"
 
+	"github.com/rs/zerolog/log"
 	"github.com/urfave/cli/v2"
-	"go.jolheiser.com/beaver"
 )
 
 var Save = &cli.Command{
@@ -39,6 +39,6 @@ 	if err != nil {
 		return err
 	}
 
-	beaver.Infof("Added new template %s", t.Name)
+	log.Info().Msgf("Added new template %q", t.Name)
 	return nil
 }
M cmd/source.gocmd/source.go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
diff --git a/cmd/source.go b/cmd/source.go
index e14530e429abd2249e3dd14472bdfd6c00623ade..355038edaedb86efc868c91bd99ffce02fe67824 100644
--- a/cmd/source.go
+++ b/cmd/source.go
@@ -8,8 +8,8 @@
 	"go.jolheiser.com/tmpl/cmd/flags"
 	"go.jolheiser.com/tmpl/registry"
 
+	"github.com/rs/zerolog/log"
 	"github.com/urfave/cli/v2"
-	"go.jolheiser.com/beaver"
 )
 
 var (
@@ -82,7 +82,7 @@ 	if err != nil {
 		return err
 	}
 
-	beaver.Infof("Added new source %s", s.Name)
+	log.Info().Msgf("Added new source %q", s.Name)
 	return nil
 }
 
@@ -100,6 +100,6 @@ 	if err := reg.RemoveSource(ctx.Args().First()); err != nil {
 		return err
 	}
 
-	beaver.Infof("Successfully removed source for %s", ctx.Args().First())
+	log.Info().Msgf("Successfully removed source for %q", ctx.Args().First())
 	return nil
 }
M cmd/test.gocmd/test.go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
diff --git a/cmd/test.go b/cmd/test.go
index cecaf1193836ee2be8c237ef4972e1140b5ac9dc..44502237b7bb70d29c2cb7f798a7bbad6f52e1c7 100644
--- a/cmd/test.go
+++ b/cmd/test.go
@@ -4,8 +4,8 @@ import (
 	"os"
 	"path/filepath"
 
+	"github.com/rs/zerolog/log"
 	"github.com/urfave/cli/v2"
-	"go.jolheiser.com/beaver"
 )
 
 var Test = &cli.Command{
@@ -37,10 +37,10 @@ 	}
 
 	if len(errs) > 0 {
 		for _, err := range errs {
-			beaver.Error(err)
+			log.Error().Msg(err)
 		}
 		return nil
 	}
-	beaver.Info("this is a valid tmpl template")
+	log.Info().Msg("this is a valid tmpl template")
 	return nil
 }
M cmd/update.gocmd/update.go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
diff --git a/cmd/update.go b/cmd/update.go
index f20ae9478e895b828cb74f50d9ad17328b012f21..d621bc6422fb148c34ad2ff981d1322f3b00e90b 100644
--- a/cmd/update.go
+++ b/cmd/update.go
@@ -4,8 +4,8 @@ import (
 	"go.jolheiser.com/tmpl/cmd/flags"
 	"go.jolheiser.com/tmpl/registry"
 
+	"github.com/rs/zerolog/log"
 	"github.com/urfave/cli/v2"
-	"go.jolheiser.com/beaver"
 )
 
 var Update = &cli.Command{
@@ -35,6 +35,6 @@ 	if err := reg.UpdateTemplate(tmpl.Name); err != nil {
 		return err
 	}
 
-	beaver.Infof("Successfully updated %s", tmpl.Name)
+	log.Info().Msgf("Successfully updated %q", tmpl.Name)
 	return nil
 }
M cmd/use.gocmd/use.go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
diff --git a/cmd/use.go b/cmd/use.go
index 351b22f9b330e1868c4f9e75390bf6d169d2c4ec..74fa3d63419e3e3e4f911774246461cf0c41dd17 100644
--- a/cmd/use.go
+++ b/cmd/use.go
@@ -4,8 +4,8 @@ import (
 	"go.jolheiser.com/tmpl/cmd/flags"
 	"go.jolheiser.com/tmpl/registry"
 
+	"github.com/rs/zerolog/log"
 	"github.com/urfave/cli/v2"
-	"go.jolheiser.com/beaver"
 )
 
 var Use = &cli.Command{
@@ -50,6 +50,6 @@ 	if err := tmpl.Execute(dest, ctx.Bool("defaults"), ctx.Bool("force")); err != nil {
 		return err
 	}
 
-	beaver.Infof("Successfully executed %s", tmpl.Name)
+	log.Info().Msgf("Successfully executed %q", tmpl.Name)
 	return nil
 }
M docs.godocs.go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
diff --git a/docs.go b/docs.go
index aa13bf6048df5e6ed3f858f08bf725a73cf48505..00deb1fa59f2a2883ecdb97fa51185fc7f1c512c 100644
--- a/docs.go
+++ b/docs.go
@@ -1,3 +1,4 @@
+//go:build docs
 // +build docs
 
 package main
@@ -10,6 +11,7 @@
 	"go.jolheiser.com/tmpl/cmd"
 )
 
+//go:generate go run docs.go
 func main() {
 	app := cmd.NewApp()
 
M go.modgo.mod
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
diff --git a/go.mod b/go.mod
index 2aca80163b8de2d071b5b7e518a6987e6ea8a763..63613e52265b7222b269d692526d2eb288e9ce40 100644
--- a/go.mod
+++ b/go.mod
@@ -9,8 +9,7 @@ 	github.com/huandu/xstrings v1.3.2
 	github.com/mattn/go-isatty v0.0.12 // indirect
 	github.com/mholt/archiver/v3 v3.5.0
 	github.com/pelletier/go-toml v1.8.1
+	github.com/rs/zerolog v1.26.0
 	github.com/urfave/cli/v2 v2.3.0
-	go.jolheiser.com/beaver v1.0.2
 	golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9 // indirect
-	golang.org/x/sys v0.0.0-20201113135734-0a15ea8d9b02 // indirect
 )
M go.sumgo.sum
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
diff --git a/go.sum b/go.sum
index 08f29283fbf9b07ae5b50cc2cbe2b0608444491f..e9c797a88faeceb0832d5354d0dba32991a09037 100644
--- a/go.sum
+++ b/go.sum
@@ -11,6 +11,7 @@ github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239 h1:kFOfPq6dUM1hTo4JG6LR5AXSUEsOjtdm0kw0FtQtMJA=
 github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c=
 github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5 h1:0CwZNZbxp69SHPdPJAN/hZIm0C4OItdklCFmMRWYpio=
 github.com/armon/go-socks5 v0.0.0-20160902184237-e75332964ef5/go.mod h1:wHh0iHkYZB8zMSxRWpUBQtwG5a7fFgvEO+odwuTv2gs=
+github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc=
 github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d h1:U+s90UTSYgptZMwQh2aRr3LuazLJIa+Pg3Kc1ylSYVY=
 github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
 github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
@@ -34,6 +35,7 @@ github.com/go-git/go-git-fixtures/v4 v4.0.2-0.20200613231340-f56387b50c12 h1:PbKy9zOy4aAKrJ5pibIRpVO2BXnK1Tlcg+caKI7Ox5M=
 github.com/go-git/go-git-fixtures/v4 v4.0.2-0.20200613231340-f56387b50c12/go.mod h1:m+ICp2rF3jDhFgEZ/8yziagdT1C+ZpZcrJjappBCDSw=
 github.com/go-git/go-git/v5 v5.2.0 h1:YPBLG/3UK1we1ohRkncLjaXWLW+HKp5QNM/jTli2JgI=
 github.com/go-git/go-git/v5 v5.2.0/go.mod h1:kh02eMX+wdqqxgNMEyq8YgwlIOsDOa9homkUq1PoTMs=
+github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
 github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
 github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
 github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY=
@@ -66,7 +68,6 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
 github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
 github.com/mattn/go-colorable v0.1.2 h1:/bC9yWikZXAL9uJdulbSfyVNIR3n3trXl+v8+1sx8mU=
 github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
-github.com/mattn/go-isatty v0.0.8 h1:HLtExJ+uU2HOZ+wI0Tt5DtUDrx8yhUqDcp7fYERX4CE=
 github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
 github.com/mattn/go-isatty v0.0.12 h1:wuysRhFDzyxgEmMf5xjvJ2M9dZoWAXNNr5LSBS7uHXY=
 github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU=
@@ -84,10 +85,14 @@ github.com/pelletier/go-toml v1.8.1 h1:1Nf83orprkJyknT6h7zbuEGUEjcyVlCxSUGTENmNCRM=
 github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc=
 github.com/pierrec/lz4/v4 v4.0.3 h1:vNQKSVZNYUEAvRY9FaUXAF1XPbSOHJtDTiP41kzDz2E=
 github.com/pierrec/lz4/v4 v4.0.3/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4=
-github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
 github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
+github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
 github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
 github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/rs/xid v1.3.0/go.mod h1:trrq9SKmegXys3aeAKXMUTdJsYXVwGY3RLcfgqegfbg=
+github.com/rs/zerolog v1.26.0 h1:ORM4ibhEZeTeQlCojCK2kPz1ogAY4bGs4tD+SaAdGaE=
+github.com/rs/zerolog v1.26.0/go.mod h1:yBiM87lvSqX8h0Ww4sdzNSkVYZ8dL2xjZJG1lAuGZEo=
 github.com/russross/blackfriday/v2 v2.0.1 h1:lPqVAte+HuHNfhJ/0LC98ESWRz8afy9tM/0RK8m9o+Q=
 github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
 github.com/sergi/go-diff v1.1.0 h1:we8PVUC3FE2uYfodKH/nBHMSetSfHDR6scGdBi+erh0=
@@ -107,34 +112,47 @@ github.com/xanzy/ssh-agent v0.2.1 h1:TCbipTQL2JiiCprBWx9frJ2eJlCYT00NmctrHxVAr70=
 github.com/xanzy/ssh-agent v0.2.1/go.mod h1:mLlQY/MoOhWBj+gOGMQkOeiEvkx+8pJSI+0Bx9h2kr4=
 github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo=
 github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos=
-go.jolheiser.com/beaver v1.0.2 h1:KA2D6iO8MQhZi1nZYi/Chak/f1Cxfrs6b1XO623+Khk=
-go.jolheiser.com/beaver v1.0.2/go.mod h1:7X4F5+XOGSC3LejTShoBdqtRCnPWcnRgmYGmG3EKW8g=
+github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
 golang.org/x/crypto v0.0.0-20190219172222-a4c6cb3142f2/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
 golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
 golang.org/x/crypto v0.0.0-20190530122614-20be4c3c3ed5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
-golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073 h1:xMPOj6Pz6UipU1wXLkrtqpHbR0AVFnyPEQq/wRWz9lM=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
 golang.org/x/crypto v0.0.0-20200302210943-78000ba7a073/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
 golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9 h1:umElSU9WZirRdgu2yFHY0ayQkEnKiOC1TtM3fWXFnoU=
 golang.org/x/crypto v0.0.0-20201112155050-0c6587e931a9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/mod v0.4.2 h1:Gz96sIWK3OalVv/I/qNygP42zyoKp3xptRVCWRFEBvo=
+golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
-golang.org/x/net v0.0.0-20200301022130-244492dfa37a h1:GuSPYbZzB5/dcLNCwLQLsg3obCJtX9IJhpXkvY7kzk0=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
 golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d h1:20cMwl2fHAzkJMEA+8J4JgqBQcQGzbisXo31MIeenXI=
+golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190221075227-b4e8571b14e0/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
 golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20190530182044-ad28b68e88f1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a h1:aYOabOQFp6Vj6W1F80affTUvO9UxmJRx8K0gsfABByQ=
-golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
 golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527 h1:uYVVQ9WP/Ds2ROhcaGPeIdVq0RIXVLwsHlnvJ+cT1So=
 golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
-golang.org/x/sys v0.0.0-20201113135734-0a15ea8d9b02 h1:5Ftd3YbC/kANXWCBjvppvUmv1BMakgFcBKA7MpYYp4M=
-golang.org/x/sys v0.0.0-20201113135734-0a15ea8d9b02/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e h1:WUoyKPm6nCo1BnNUvPGnFG3T5DUVem42yDJZZ4CNxMA=
+golang.org/x/sys v0.0.0-20210809222454-d867a43fc93e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
-golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
 golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
+golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M=
+golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
 golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.1.7 h1:6j8CgantCy3yc8JGBqkDLMKWqZ0RDU2g1HVgacojGWQ=
+golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
 gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f h1:BLraFXnmrev5lT+xlilqcH8XK9/i0At2xKjWk4p6zsU=
M main.gomain.go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
diff --git a/main.go b/main.go
index fe9da6f44fc7ec4cd40b5cbff541fd3c2dfad4b0..93f41e84d1a3360bd93f9a728976a271df50a29d 100644
--- a/main.go
+++ b/main.go
@@ -5,14 +5,15 @@ 	"os"
 
 	"go.jolheiser.com/tmpl/cmd"
 
-	"go.jolheiser.com/beaver"
-	"go.jolheiser.com/beaver/color"
+	"github.com/rs/zerolog"
+	"github.com/rs/zerolog/log"
 )
 
 func main() {
+	log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
+
 	app := cmd.NewApp()
-	color.Fatal = color.Error // Easier to read, doesn't need to stand out as much in a CLI
 	if err := app.Run(os.Args); err != nil {
-		beaver.Fatal(err)
+		log.Fatal().Err(err).Msg("")
 	}
 }
I tools.go
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
diff --git a/tools.go b/tools.go
new file mode 100644
index 0000000000000000000000000000000000000000..048b2fa9451573cc3be774d6ba393bc16a7b1793
--- /dev/null
+++ b/tools.go
@@ -0,0 +1,8 @@
+//go:build tools
+// +build tools
+
+package main
+
+import (
+	_ "github.com/rs/zerolog/cmd/lint"
+)