mirror of
https://github.com/dolthub/dolt.git
synced 2026-05-20 11:29:13 -05:00
Introduce noms-ds command
This commit is contained in:
@@ -0,0 +1,61 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/attic-labs/noms/clients/go/flags"
|
||||
"github.com/attic-labs/noms/clients/go/util"
|
||||
"github.com/attic-labs/noms/types"
|
||||
)
|
||||
|
||||
var (
|
||||
toDelete = flag.String("d", "", "dataset to delete")
|
||||
)
|
||||
|
||||
func main() {
|
||||
flag.Usage = func() {
|
||||
fmt.Fprintf(os.Stderr, "Usage: %s [<Datastore> | -d <dataset>]\n", os.Args[0])
|
||||
flag.PrintDefaults()
|
||||
fmt.Fprintf(os.Stderr, "\nFor detailed information on spelling datastores and datasets, see: at https://github.com/attic-labs/noms/blob/master/doc/spelling.md.\n\n")
|
||||
}
|
||||
|
||||
flag.Parse()
|
||||
|
||||
if *toDelete != "" {
|
||||
setSpec, err := flags.ParseDatasetSpec(*toDelete)
|
||||
util.CheckError(err)
|
||||
|
||||
set, err := setSpec.Dataset()
|
||||
util.CheckError(err)
|
||||
|
||||
oldCommitRef, errBool := set.MaybeHeadRef()
|
||||
if !errBool {
|
||||
util.CheckError(fmt.Errorf("Dataset %v not found", set.ID()))
|
||||
}
|
||||
|
||||
store, err := set.Store().Delete(set.ID())
|
||||
util.CheckError(err)
|
||||
defer store.Close()
|
||||
|
||||
fmt.Printf("Deleted dataset %v (was %v)\n\n", set.ID(), oldCommitRef.TargetRef().String())
|
||||
} else {
|
||||
if flag.NArg() != 1 {
|
||||
flag.Usage()
|
||||
return
|
||||
}
|
||||
|
||||
storeSpec, err := flags.ParseDatabaseSpec(flag.Arg(0))
|
||||
util.CheckError(err)
|
||||
|
||||
store, err := storeSpec.Database()
|
||||
util.CheckError(err)
|
||||
defer store.Close()
|
||||
|
||||
store.Datasets().IterAll(func(k, v types.Value) {
|
||||
fmt.Println(k)
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/attic-labs/noms/chunks"
|
||||
"github.com/attic-labs/noms/clients/go/test_util"
|
||||
"github.com/attic-labs/noms/datas"
|
||||
"github.com/attic-labs/noms/dataset"
|
||||
"github.com/attic-labs/noms/types"
|
||||
"github.com/stretchr/testify/suite"
|
||||
)
|
||||
|
||||
func TestDs(t *testing.T) {
|
||||
suite.Run(t, &testSuite{})
|
||||
}
|
||||
|
||||
type testSuite struct {
|
||||
test_util.ClientTestSuite
|
||||
}
|
||||
|
||||
func (s *testSuite) TestEmptyNomsDs() {
|
||||
dir := s.LdbDir
|
||||
|
||||
cs := chunks.NewLevelDBStore(dir+"/name", "", 24, false)
|
||||
ds := datas.NewDatabase(cs)
|
||||
|
||||
ds.Close()
|
||||
|
||||
dataStoreName := "ldb:" + dir + "/name"
|
||||
rtnVal := s.Run(main, []string{dataStoreName})
|
||||
s.Equal("", rtnVal)
|
||||
}
|
||||
|
||||
func (s *testSuite) TestNomsDs() {
|
||||
dir := s.LdbDir
|
||||
|
||||
cs := chunks.NewLevelDBStore(dir+"/name", "", 24, false)
|
||||
ds := datas.NewDatabase(cs)
|
||||
id := "testdataset"
|
||||
|
||||
set := dataset.NewDataset(ds, id)
|
||||
set, err := set.Commit(types.NewString("Commit Value"))
|
||||
s.NoError(err)
|
||||
|
||||
id2 := "testdataset2"
|
||||
|
||||
set2 := dataset.NewDataset(ds, id2)
|
||||
set2, err = set2.Commit(types.NewString("Commit Value2"))
|
||||
s.NoError(err)
|
||||
|
||||
err = ds.Close()
|
||||
s.NoError(err)
|
||||
|
||||
dataStoreName := "ldb:" + dir + "/name"
|
||||
datasetName := dataStoreName + ":" + id
|
||||
dataset2Name := dataStoreName + ":" + id2
|
||||
|
||||
// both datasets show up
|
||||
rtnVal := s.Run(main, []string{dataStoreName})
|
||||
s.Equal(id+"\n"+id2+"\n", rtnVal)
|
||||
|
||||
// both datasets again, to make sure printing doesn't change them
|
||||
rtnVal = s.Run(main, []string{dataStoreName})
|
||||
s.Equal(id+"\n"+id2+"\n", rtnVal)
|
||||
|
||||
// delete one dataset, print message at delete
|
||||
rtnVal = s.Run(main, []string{"-d", datasetName})
|
||||
s.Equal("Deleted dataset "+id+" (was sha1-923a61316a5bf5e9a3ef4fe860b1eeb762eb69c0)\n\n", rtnVal)
|
||||
|
||||
// resetting flag because main is called multiple times
|
||||
*toDelete = ""
|
||||
// print datasets, just one left
|
||||
rtnVal = s.Run(main, []string{dataStoreName})
|
||||
s.Equal(id2+"\n", rtnVal)
|
||||
|
||||
// delete the second dataset
|
||||
rtnVal = s.Run(main, []string{"-d", dataset2Name})
|
||||
s.Equal("Deleted dataset "+id2+" (was sha1-40ddfc9469a16653e4199e942d22c8ed81252fa3)\n\n", rtnVal)
|
||||
|
||||
//resetting flag because main is called multiple times
|
||||
*toDelete = ""
|
||||
// print datasets, none left
|
||||
rtnVal = s.Run(main, []string{dataStoreName})
|
||||
s.Equal("", rtnVal)
|
||||
}
|
||||
Reference in New Issue
Block a user