mirror of
https://github.com/restic/restic.git
synced 2026-08-21 04:53:19 +00:00
Restructured repository
This commit is contained in:
@@ -0,0 +1,55 @@
|
||||
package khepri
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"io"
|
||||
"os"
|
||||
"syscall"
|
||||
"time"
|
||||
)
|
||||
|
||||
type Tree struct {
|
||||
Nodes []Node `json:"nodes"`
|
||||
}
|
||||
|
||||
type Node struct {
|
||||
Name string `json:"name"`
|
||||
Mode os.FileMode `json:"mode"`
|
||||
ModTime time.Time `json:"mtime"`
|
||||
AccessTime time.Time `json:"atime"`
|
||||
User uint32 `json:"user"`
|
||||
Group uint32 `json:"group"`
|
||||
Content ID `json:"content,omitempty"`
|
||||
}
|
||||
|
||||
func NewTree() *Tree {
|
||||
return &Tree{
|
||||
Nodes: []Node{},
|
||||
}
|
||||
}
|
||||
|
||||
func (t *Tree) Restore(r io.Reader) error {
|
||||
dec := json.NewDecoder(r)
|
||||
return dec.Decode(t)
|
||||
}
|
||||
|
||||
func (t *Tree) Save(w io.Writer) error {
|
||||
enc := json.NewEncoder(w)
|
||||
return enc.Encode(t)
|
||||
}
|
||||
|
||||
func NodeFromFileInfo(fi os.FileInfo) Node {
|
||||
node := Node{
|
||||
Name: fi.Name(),
|
||||
Mode: fi.Mode(),
|
||||
ModTime: fi.ModTime(),
|
||||
}
|
||||
|
||||
if stat, ok := fi.Sys().(*syscall.Stat_t); ok {
|
||||
node.User = stat.Uid
|
||||
node.Group = stat.Gid
|
||||
node.AccessTime = time.Unix(stat.Atim.Unix())
|
||||
}
|
||||
|
||||
return node
|
||||
}
|
||||
Reference in New Issue
Block a user