add some info to exe

This commit is contained in:
Cyberes 2024-02-03 20:05:48 -07:00
parent e1e6e2cbc2
commit 5c3a646918
2 changed files with 34 additions and 3 deletions

View File

@ -1,4 +1,11 @@
#!/bin/bash
if [ -z ${1+x} ]; then
VERSION="0.0.0"
else
VERSION="$1"
fi
mkdir -p ../dist
go build -v -trimpath -ldflags "-s -w" -tags "$(date -u)" -o ../dist/crazyfs
go build -v -trimpath -ldflags "-s -w -X main.VersionDate=$(date -u --iso-8601=minutes) -X main.Version=v$VERSION" -o ../dist/crazyfs

View File

@ -16,6 +16,7 @@ import (
"net/http"
"os"
"path/filepath"
"runtime/debug"
"time"
)
@ -27,8 +28,12 @@ type cliConfig struct {
debug bool
disableElasticSync bool
help bool
version bool
}
var Version = "development"
var VersionDate = "not set"
// TODO: optional serving of frontend
// TODO: admin api to clear cache, get number of items in cache, get memory usage
// TODO: health api endpoint that tells us if the server is still starting
@ -37,13 +42,31 @@ type cliConfig struct {
// TODO: admin api endpoint to get status and progress of the full refresh of elasticsearch
func main() {
fmt.Println("=== Crazy File Server ===")
cliArgs := parseArgs()
if cliArgs.help {
flag.Usage()
os.Exit(0)
}
if cliArgs.version {
buildInfo, ok := debug.ReadBuildInfo()
if ok {
buildSettings := make(map[string]string)
for i := range buildInfo.Settings {
buildSettings[buildInfo.Settings[i].Key] = buildInfo.Settings[i].Value
}
fmt.Printf("Version: %s\n\n", Version)
fmt.Printf("Date Compiled: %s\n", VersionDate)
fmt.Printf("Git Revision: %s\n", buildSettings["vcs.revision"])
fmt.Printf("Git Revision Date: %s\n", buildSettings["vcs.time"])
fmt.Printf("Git Modified: %s\n", buildSettings["vcs.modified"])
} else {
fmt.Println("Build info not available")
}
os.Exit(0)
}
fmt.Println("=== Crazy File Server ===")
if cliArgs.debug {
logging.InitLogger(logrus.DebugLevel)
} else {
@ -163,12 +186,13 @@ func main() {
func parseArgs() cliConfig {
var cliArgs cliConfig
flag.StringVar(&cliArgs.configFile, "config", "", "StartPath to the config file")
flag.StringVar(&cliArgs.configFile, "config", "", "Path to the config file")
flag.BoolVar(&cliArgs.initialCrawl, "initial-crawl", false, "Do an initial crawl to fill the cache")
flag.BoolVar(&cliArgs.initialCrawl, "i", false, "Do an initial crawl to fill the cache")
flag.BoolVar(&cliArgs.debug, "d", false, "Enable debug mode")
flag.BoolVar(&cliArgs.debug, "debug", false, "Enable debug mode")
flag.BoolVar(&cliArgs.disableElasticSync, "disable-elastic-sync", false, "Disable the Elasticsearch background sync thread")
flag.BoolVar(&cliArgs.version, "v", false, "Print version and exit")
flag.Parse()
return cliArgs
}