mirror of
https://github.com/octoleo/restic.git
synced 2024-11-21 20:35:12 +00:00
Rename Dir -> DirRepository
This commit is contained in:
parent
f690e91faf
commit
b24390909c
@ -66,14 +66,14 @@ func (n Name) Encode() string {
|
|||||||
return url.QueryEscape(string(n))
|
return url.QueryEscape(string(n))
|
||||||
}
|
}
|
||||||
|
|
||||||
type Dir struct {
|
type DirRepository struct {
|
||||||
path string
|
path string
|
||||||
hash func() hash.Hash
|
hash func() hash.Hash
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewDir creates a new dir-baked repository at the given path.
|
// NewDirRepository creates a new dir-baked repository at the given path.
|
||||||
func NewDir(path string) (*Dir, error) {
|
func NewDirRepository(path string) (*DirRepository, error) {
|
||||||
d := &Dir{
|
d := &DirRepository{
|
||||||
path: path,
|
path: path,
|
||||||
hash: sha256.New,
|
hash: sha256.New,
|
||||||
}
|
}
|
||||||
@ -87,7 +87,7 @@ func NewDir(path string) (*Dir, error) {
|
|||||||
return d, nil
|
return d, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *Dir) create() error {
|
func (r *DirRepository) create() error {
|
||||||
dirs := []string{
|
dirs := []string{
|
||||||
r.path,
|
r.path,
|
||||||
path.Join(r.path, objectPath),
|
path.Join(r.path, objectPath),
|
||||||
@ -106,17 +106,17 @@ func (r *Dir) create() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// SetHash changes the hash function used for deriving IDs. Default is SHA256.
|
// SetHash changes the hash function used for deriving IDs. Default is SHA256.
|
||||||
func (r *Dir) SetHash(h func() hash.Hash) {
|
func (r *DirRepository) SetHash(h func() hash.Hash) {
|
||||||
r.hash = h
|
r.hash = h
|
||||||
}
|
}
|
||||||
|
|
||||||
// Path returns the directory used for this repository.
|
// Path returns the directory used for this repository.
|
||||||
func (r *Dir) Path() string {
|
func (r *DirRepository) Path() string {
|
||||||
return r.path
|
return r.path
|
||||||
}
|
}
|
||||||
|
|
||||||
// Put saves content and returns the ID.
|
// Put saves content and returns the ID.
|
||||||
func (r *Dir) Put(reader io.Reader) (ID, error) {
|
func (r *DirRepository) Put(reader io.Reader) (ID, error) {
|
||||||
// save contents to tempfile, hash while writing
|
// save contents to tempfile, hash while writing
|
||||||
file, err := ioutil.TempFile(path.Join(r.path, tempPath), "temp-")
|
file, err := ioutil.TempFile(path.Join(r.path, tempPath), "temp-")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -146,7 +146,7 @@ func (r *Dir) Put(reader io.Reader) (ID, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// PutFile saves a file's content to the repository and returns the ID.
|
// PutFile saves a file's content to the repository and returns the ID.
|
||||||
func (r *Dir) PutFile(path string) (ID, error) {
|
func (r *DirRepository) PutFile(path string) (ID, error) {
|
||||||
f, err := os.Open(path)
|
f, err := os.Open(path)
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -157,7 +157,7 @@ func (r *Dir) PutFile(path string) (ID, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Test returns true if the given ID exists in the repository.
|
// Test returns true if the given ID exists in the repository.
|
||||||
func (r *Dir) Test(id ID) (bool, error) {
|
func (r *DirRepository) Test(id ID) (bool, error) {
|
||||||
// try to open file
|
// try to open file
|
||||||
file, err := os.Open(path.Join(r.path, objectPath, id.String()))
|
file, err := os.Open(path.Join(r.path, objectPath, id.String()))
|
||||||
defer func() {
|
defer func() {
|
||||||
@ -175,7 +175,7 @@ func (r *Dir) Test(id ID) (bool, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get returns a reader for the content stored under the given ID.
|
// Get returns a reader for the content stored under the given ID.
|
||||||
func (r *Dir) Get(id ID) (io.Reader, error) {
|
func (r *DirRepository) Get(id ID) (io.Reader, error) {
|
||||||
// try to open file
|
// try to open file
|
||||||
file, err := os.Open(path.Join(r.path, objectPath, id.String()))
|
file, err := os.Open(path.Join(r.path, objectPath, id.String()))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -186,17 +186,17 @@ func (r *Dir) Get(id ID) (io.Reader, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Remove removes the content stored at ID.
|
// Remove removes the content stored at ID.
|
||||||
func (r *Dir) Remove(id ID) error {
|
func (r *DirRepository) Remove(id ID) error {
|
||||||
return os.Remove(path.Join(r.path, objectPath, id.String()))
|
return os.Remove(path.Join(r.path, objectPath, id.String()))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Unlink removes a named ID.
|
// Unlink removes a named ID.
|
||||||
func (r *Dir) Unlink(name string) error {
|
func (r *DirRepository) Unlink(name string) error {
|
||||||
return os.Remove(path.Join(r.path, refPath, Name(name).Encode()))
|
return os.Remove(path.Join(r.path, refPath, Name(name).Encode()))
|
||||||
}
|
}
|
||||||
|
|
||||||
// Link assigns a name to an ID. Name must be unique in this repository and ID must exist.
|
// Link assigns a name to an ID. Name must be unique in this repository and ID must exist.
|
||||||
func (r *Dir) Link(name string, id ID) error {
|
func (r *DirRepository) Link(name string, id ID) error {
|
||||||
exist, err := r.Test(id)
|
exist, err := r.Test(id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -219,7 +219,7 @@ func (r *Dir) Link(name string, id ID) error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Resolve returns the ID associated with the given name.
|
// Resolve returns the ID associated with the given name.
|
||||||
func (r *Dir) Resolve(name string) (ID, error) {
|
func (r *DirRepository) Resolve(name string) (ID, error) {
|
||||||
f, err := os.Open(path.Join(r.path, refPath, Name(name).Encode()))
|
f, err := os.Open(path.Join(r.path, refPath, Name(name).Encode()))
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -36,7 +36,7 @@ var _ = Describe("Storage", func() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
repo, err = storage.NewDir(tempdir)
|
repo, err = storage.NewDirRepository(tempdir)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(err)
|
||||||
}
|
}
|
||||||
|
@ -20,6 +20,22 @@ func hash(filename string) (storage.ID, error) {
|
|||||||
return h.Sum([]byte{}), nil
|
return h.Sum([]byte{}), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func archive_dir(repo storage.Repository, path string) {
|
||||||
|
log.Printf("archiving dir %q", path)
|
||||||
|
// items := make()
|
||||||
|
// filepath.Walk(path, func(item string, info os.FileInfo, err error) error {
|
||||||
|
// log.Printf(" archiving %q", item)
|
||||||
|
|
||||||
|
// if item != path && info.IsDir() {
|
||||||
|
// archive_dir(repo, item)
|
||||||
|
// } else {
|
||||||
|
|
||||||
|
// }
|
||||||
|
|
||||||
|
// return nil
|
||||||
|
// })
|
||||||
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
repo, err := storage.NewDir("repo")
|
repo, err := storage.NewDir("repo")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -68,6 +84,10 @@ func main() {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("error linking name %q to id %v", name, id)
|
log.Fatalf("error linking name %q to id %v", name, id)
|
||||||
}
|
}
|
||||||
|
case "putdir":
|
||||||
|
for _, dir := range os.Args[2:] {
|
||||||
|
archive_dir(repo, dir)
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
log.Fatalf("unknown command: %q", os.Args[1])
|
log.Fatalf("unknown command: %q", os.Args[1])
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user