diff --git a/.gitignore b/.gitignore index a38ca6b..8fb4a06 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,5 @@ # JSON files (decks are .json files, and we want to create test decks) *.json + +dist/ diff --git a/.goreleaser.yaml b/.goreleaser.yaml new file mode 100644 index 0000000..a65edfe --- /dev/null +++ b/.goreleaser.yaml @@ -0,0 +1,45 @@ +# This is an example .goreleaser.yml file with some sensible defaults. +# Make sure to check the documentation at https://goreleaser.com +before: + hooks: + # You may remove this if you don't use go modules. + - go mod tidy + # you may remove this if you don't need go generate + - go generate ./... +builds: + - env: + - CGO_ENABLED=0 + goos: + - linux + - windows + - darwin + +archives: + - format: tar.gz + # this name template makes the OS and Arch compatible with the results of uname. + name_template: >- + {{ .ProjectName }}_ + {{- title .Os }}_ + {{- if eq .Arch "amd64" }}x86_64 + {{- else if eq .Arch "386" }}i386 + {{- else }}{{ .Arch }}{{ end }} + {{- if .Arm }}v{{ .Arm }}{{ end }} + # use zip for windows archives + format_overrides: + - goos: windows + format: zip +checksum: + name_template: 'checksums.txt' +snapshot: + name_template: "{{ incpatch .Version }}-next" +changelog: + sort: asc + filters: + exclude: + - '^docs:' + - '^test:' + +# The lines beneath this are called `modelines`. See `:help modeline` +# Feel free to remove those if you don't want/use them. +# yaml-language-server: $schema=https://goreleaser.com/static/schema.json +# vim: set ts=2 sw=2 tw=0 fo=cnqoj diff --git a/cmd/root.go b/cmd/root.go index 5928b22..526669b 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -1,7 +1,7 @@ /* Copyright © 2021 ADAM PICKERING - ermission is hereby granted, free of charge, to any person obtaining a copy +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell @@ -39,12 +39,6 @@ It schedules cards according to the principle of spaced repetition so that you learn most efficiently.`, } -// Execute adds all child commands to the root command and sets flags appropriately. -// This is called by main.main(). It only needs to happen once to the rootCmd. -func Execute() { - cobra.CheckErr(rootCmd.Execute()) -} - func init() { localDeckDirectory, err := os.Getwd() if err != nil { @@ -52,3 +46,12 @@ func init() { } deckDirectory = localDeckDirectory } + +func Execute() { + cobra.CheckErr(rootCmd.Execute()) +} + +func SetVersionInfo(version string) { + rootCmd.Version = version + rootCmd.SetVersionTemplate("{{ .Version }}\n") +} diff --git a/main.go b/main.go index bd42cb5..171c667 100644 --- a/main.go +++ b/main.go @@ -23,6 +23,9 @@ package main import "github.com/adamkpickering/clsr/cmd" +var version = "development" + func main() { + cmd.SetVersionInfo(version) cmd.Execute() }