diff --git a/cmd/golink/link-snapshot.json b/cmd/golink/link-snapshot.json deleted file mode 100644 index 8b13789..0000000 --- a/cmd/golink/link-snapshot.json +++ /dev/null @@ -1 +0,0 @@ - diff --git a/cmd/golink/main.go b/cmd/golink/main.go index d766a48..56c6d52 100644 --- a/cmd/golink/main.go +++ b/cmd/golink/main.go @@ -8,11 +8,7 @@ import ( "github.com/tailscale/golink" ) -//go:embed link-snapshot.json -var lastSnapshot []byte - func main() { - golink.LastSnapshot = lastSnapshot if err := golink.Run(); err != nil { log.Fatal(err) } diff --git a/golink.go b/golink.go index 1b26d5f..6ee7432 100644 --- a/golink.go +++ b/golink.go @@ -16,6 +16,7 @@ import ( "log" "net/http" "net/url" + "os" "path/filepath" "regexp" "sort" @@ -33,6 +34,7 @@ var ( verbose = flag.Bool("verbose", false, "be verbose") sqlitefile = flag.String("sqlitedb", "", "path of SQLite database to store links") dev = flag.String("dev-listen", "", "if non-empty, listen on this addr and run in dev mode; auto-set sqlitedb if empty and don't use tsnet") + snapshot = flag.String("snapshot", "", "file path of snapshot file") ) var stats struct { @@ -76,6 +78,17 @@ func Run() error { return fmt.Errorf("NewSQLiteDB(%q): %w", *sqlitefile, err) } + if *snapshot != "" { + if LastSnapshot != nil { + log.Printf("LastSnapshot already set; ignoring --snapshot") + } else { + var err error + LastSnapshot, err = os.ReadFile(*snapshot) + if err != nil { + log.Fatalf("error reading snapshot file %q: %v", *snapshot, err) + } + } + } if err := restoreLastSnapshot(); err != nil { log.Printf("restoring snapshot: %v", err) }