diff --git a/README.md b/README.md
index 77fe0b96eb78e3d6ccd4470e0d64714808a60efd..68b6bfe69402c6b4e482c3fdf78e81158dc1702b 100644
--- a/README.md
+++ b/README.md
@@ -10,7 +10,7 @@ Soft Serve
diff --git a/main.go b/main.go
index f6052c285da945e926d99b911beb1fdf4799118a..b9a702bc723f77557b4be84e34e43597114f52f9 100644
--- a/main.go
+++ b/main.go
@@ -1,13 +1,42 @@
package main
import (
+ "flag"
+ "fmt"
"log"
+ "os"
"github.com/charmbracelet/soft/config"
"github.com/charmbracelet/soft/server"
)
+var (
+ Version = ""
+ CommitSHA = ""
+
+ version = flag.Bool("version", false, "display version")
+)
+
func main() {
+ flag.Parse()
+
+ if *version {
+ if len(CommitSHA) > 7 {
+ CommitSHA = CommitSHA[:7]
+ }
+ if Version == "" {
+ Version = "(built from source)"
+ }
+
+ fmt.Printf("Soft Serve %s", Version)
+ if len(CommitSHA) > 0 {
+ fmt.Printf(" (%s)", CommitSHA)
+ }
+
+ fmt.Println()
+ os.Exit(0)
+ }
+
cfg := config.DefaultConfig()
s := server.NewServer(cfg)
log.Printf("Starting SSH server on %s:%d\n", cfg.Host, cfg.Port)