Program skeleton
This commit is contained in:
parent
564b4d1c7a
commit
5c7c3cf237
4 changed files with 68 additions and 45 deletions
27
checks.go
Normal file
27
checks.go
Normal file
|
@ -0,0 +1,27 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import(
|
||||||
|
"log"
|
||||||
|
"io/ioutil"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
)
|
||||||
|
|
||||||
|
func checkRootFolder(storage string) {
|
||||||
|
files, err := ioutil.ReadDir(storage)
|
||||||
|
if err != nil { log.Fatal(err) }
|
||||||
|
|
||||||
|
checked_folders := map[string]bool{"fs": false, "commits": false, "blocks": false}
|
||||||
|
for _, f := range files {
|
||||||
|
if _, ok := checked_folders[f.Name()]; ok {
|
||||||
|
info, err := os.Stat(filepath.Join(storage, f.Name()));
|
||||||
|
if err == nil && info.IsDir() {
|
||||||
|
checked_folders[f.Name()] = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for path, seen := range checked_folders {
|
||||||
|
if !seen { log.Fatal("Folder ", path, " is required but not present!") }
|
||||||
|
}
|
||||||
|
}
|
26
commit.go
Normal file
26
commit.go
Normal file
|
@ -0,0 +1,26 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Commit struct {
|
||||||
|
CommitId string `json:"commit_id"`
|
||||||
|
RootId string `json:"root_id"`
|
||||||
|
RepoId string `json:"repo_id"`
|
||||||
|
CreatorName string `json:"creator_name"`
|
||||||
|
Creator string `json:"creator"`
|
||||||
|
Description string `json:"description"`
|
||||||
|
Ctime uint64 `json:"ctime"`
|
||||||
|
ParentId string `json:"parent_id"`
|
||||||
|
SecondParentId string `json:"second_parent_id"`
|
||||||
|
RepoName string `json:"repo_name"`
|
||||||
|
RepoDesc string `json:"repo_desc"`
|
||||||
|
RepoCategory string `json:"repo_category"`
|
||||||
|
NoLocalHistory int `json:"no_local_history"`
|
||||||
|
Version int `json:"version"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func cmdCommit(config configCollect) {
|
||||||
|
log.Println(config)
|
||||||
|
}
|
7
config.go
Normal file
7
config.go
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
package main
|
||||||
|
|
||||||
|
type configCollect struct {
|
||||||
|
Commits bool `docopt:"commits"`
|
||||||
|
Storage string `docopt:"--storage"`
|
||||||
|
RepoId string `docopt:"<repoid>"`
|
||||||
|
}
|
|
@ -1,49 +1,10 @@
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"io/ioutil"
|
|
||||||
"os"
|
|
||||||
"path/filepath"
|
|
||||||
"log"
|
"log"
|
||||||
"github.com/docopt/docopt-go"
|
"github.com/docopt/docopt-go"
|
||||||
)
|
)
|
||||||
|
|
||||||
type Commit struct {
|
|
||||||
CommitId string `json:"commit_id"`
|
|
||||||
RootId string `json:"root_id"`
|
|
||||||
RepoId string `json:"repo_id"`
|
|
||||||
CreatorName string `json:"creator_name"`
|
|
||||||
Creator string `json:"creator"`
|
|
||||||
Description string `json:"description"`
|
|
||||||
Ctime uint64 `json:"ctime"`
|
|
||||||
ParentId string `json:"parent_id"`
|
|
||||||
SecondParentId string `json:"second_parent_id"`
|
|
||||||
RepoName string `json:"repo_name"`
|
|
||||||
RepoDesc string `json:"repo_desc"`
|
|
||||||
RepoCategory string `json:"repo_category"`
|
|
||||||
NoLocalHistory int `json:"no_local_history"`
|
|
||||||
Version int `json:"version"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func checkFolder(storage string) {
|
|
||||||
files, err := ioutil.ReadDir(storage)
|
|
||||||
if err != nil { log.Fatal(err) }
|
|
||||||
|
|
||||||
checked_folders := map[string]bool{"fs": false, "commits": false, "blocks": false}
|
|
||||||
for _, f := range files {
|
|
||||||
if _, ok := checked_folders[f.Name()]; ok {
|
|
||||||
info, err := os.Stat(filepath.Join(storage, f.Name()));
|
|
||||||
if err == nil && info.IsDir() {
|
|
||||||
checked_folders[f.Name()] = true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for path, seen := range checked_folders {
|
|
||||||
if !seen { log.Fatal("Folder ", path, " is required but not present!") }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
usage := `Seafile Recovery.
|
usage := `Seafile Recovery.
|
||||||
|
|
||||||
|
@ -55,14 +16,16 @@ Options:
|
||||||
-h --help Show this screen
|
-h --help Show this screen
|
||||||
--storage=<sto> Set Seafile storage path [default: ./storage]`
|
--storage=<sto> Set Seafile storage path [default: ./storage]`
|
||||||
|
|
||||||
var config struct {
|
var config configCollect
|
||||||
Commits bool `docopt:"commits"`
|
|
||||||
Storage string `docopt:"--storage"`
|
|
||||||
RepoId string `docopt:"<repoid>"`
|
|
||||||
}
|
|
||||||
opts, err := docopt.ParseDoc(usage)
|
opts, err := docopt.ParseDoc(usage)
|
||||||
if err != nil { log.Fatal(err) }
|
if err != nil { log.Fatal(err) }
|
||||||
opts.Bind(&config)
|
opts.Bind(&config)
|
||||||
|
|
||||||
checkFolder(config.Storage)
|
checkRootFolder(config.Storage)
|
||||||
|
|
||||||
|
if config.Commits {
|
||||||
|
cmdCommit(config)
|
||||||
|
} else {
|
||||||
|
log.Fatal("This command is not implemented")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue