func start(dataset string, mount mount) { ds, err := spec.GetDataset(dataset) if err != nil { fmt.Fprintf(os.Stderr, "Could not create dataset: %s\n", err) return } hv, ok := ds.MaybeHeadValue() if ok { if !types.IsSubtype(fsType, hv.Type()) { fmt.Fprintf(os.Stderr, "Invalid dataset head: expected type '%s' but found type '%s'\n", fsType.Desc.(types.StructDesc).Name, hv.Type().Desc.(types.StructDesc).Name) return } } else { rootAttr := makeAttr(0777) // create the root directory with maximally permissive permissions rootDir := types.NewStructWithType(directoryType, types.ValueSlice{types.NewMap()}) rootInode := types.NewStructWithType(inodeType, types.ValueSlice{rootAttr, rootDir}) hv = types.NewStructWithType(fsType, types.ValueSlice{rootInode}) } mount(&nomsFS{ FileSystem: pathfs.NewDefaultFileSystem(), ds: ds, head: hv.(types.Struct), mdLock: &sync.Mutex{}, nodes: make(map[hash.Hash]*nNode), }) }
func IsCommitType(t *types.Type) bool { return types.IsSubtype(valueCommitType, t) }