summaryrefslogtreecommitdiff
path: root/cmd
diff options
context:
space:
mode:
authorPhilipp Tanlak <philipp.tanlak@gmail.com>2024-01-08 17:48:37 +0100
committerGitHub <noreply@github.com>2024-01-08 17:48:37 +0100
commit8b7425e58909cdfa458ca00a10efc95f197bfb0b (patch)
treeb0f7aa309a6471ea3387779ab498201d71c71433 /cmd
parent0f9e334a19e7224ee08b611107029b4cd86c0267 (diff)
Add version command (#29)v0.6.1
Diffstat (limited to 'cmd')
-rw-r--r--cmd/main.go9
-rw-r--r--cmd/version.go40
2 files changed, 46 insertions, 3 deletions
diff --git a/cmd/main.go b/cmd/main.go
index b4f8d1d..20210be 100644
--- a/cmd/main.go
+++ b/cmd/main.go
@@ -40,6 +40,8 @@ func (m *Main) Run(args []string) error {
return (&RunCommand{}).Run(args)
case "dev":
return (&DevCommand{}).Run(args)
+ case "version":
+ return (&VersionCommand{}).Run(args)
default:
if cmd == "" || cmd == "help" || strings.HasPrefix(cmd, "-") {
m.Usage()
@@ -59,8 +61,9 @@ Usage:
Commands:
- new creates a sample scraping script
- run runs a scraping script
- dev watches and re-runs a scraping script
+ new creates a sample scraping script
+ run runs a scraping script
+ dev watches and re-runs a scraping script
+ version prints the version
`[1:])
}
diff --git a/cmd/version.go b/cmd/version.go
new file mode 100644
index 0000000..bb1e453
--- /dev/null
+++ b/cmd/version.go
@@ -0,0 +1,40 @@
+// This Source Code Form is subject to the terms of the Mozilla Public
+// License, v. 2.0. If a copy of the MPL was not distributed with this
+// file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+package cmd
+
+import (
+ "fmt"
+ "runtime/debug"
+
+ "github.com/philippta/flyscrape"
+)
+
+type VersionCommand struct{}
+
+func (c *VersionCommand) Run(args []string) error {
+ info, ok := debug.ReadBuildInfo()
+ if !ok {
+ return fmt.Errorf("no build info found")
+ }
+
+ var os, arch, version string
+ for _, setting := range info.Settings {
+ switch setting.Key {
+ case "GOARCH":
+ arch = setting.Value
+ case "GOOS":
+ os = setting.Value
+ case "vcs.revision":
+ version = "v0.0.0-" + setting.Value
+ }
+ }
+
+ if flyscrape.Version != "" {
+ version = flyscrape.Version
+ }
+
+ fmt.Printf("flyscrape %s %s/%s\n", version, os, arch)
+ return nil
+}