github.com/attic-labs/noms@v0.0.0-20210827224422-e5fa29d95e8b/samples/go/counter/counter.go (about) 1 // Copyright 2016 Attic Labs, Inc. All rights reserved. 2 // Licensed under the Apache License, version 2.0: 3 // http://www.apache.org/licenses/LICENSE-2.0 4 5 package main 6 7 import ( 8 "fmt" 9 "os" 10 11 "github.com/attic-labs/kingpin" 12 13 "github.com/attic-labs/noms/go/config" 14 "github.com/attic-labs/noms/go/types" 15 "github.com/attic-labs/noms/go/util/verbose" 16 ) 17 18 func main() { 19 app := kingpin.New("counter", "") 20 dsStr := app.Arg("ds", "dataset to count in").Required().String() 21 verbose.RegisterVerboseFlags(app) 22 kingpin.MustParse(app.Parse(os.Args[1:])) 23 24 cfg := config.NewResolver() 25 db, ds, err := cfg.GetDataset(*dsStr) 26 if err != nil { 27 fmt.Fprintf(os.Stderr, "Could not create dataset: %s\n", err) 28 return 29 } 30 defer db.Close() 31 32 newVal := uint64(1) 33 if lastVal, ok := ds.MaybeHeadValue(); ok { 34 newVal = uint64(lastVal.(types.Number)) + 1 35 } 36 37 _, err = db.CommitValue(ds, types.Number(newVal)) 38 if err != nil { 39 fmt.Fprintf(os.Stderr, "Error committing: %s\n", err) 40 return 41 } 42 43 fmt.Println(newVal) 44 }