Program skeleton

This commit is contained in:
Quentin 2021-04-21 14:44:49 +02:00
parent 564b4d1c7a
commit 5c7c3cf237
Signed by: quentin
GPG Key ID: A98E9B769E4FF428
4 changed files with 68 additions and 45 deletions

27
checks.go Normal file
View 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
View 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
View File

@ -0,0 +1,7 @@
package main
type configCollect struct {
Commits bool `docopt:"commits"`
Storage string `docopt:"--storage"`
RepoId string `docopt:"<repoid>"`
}

View File

@ -1,49 +1,10 @@
package main
import (
"io/ioutil"
"os"
"path/filepath"
"log"
"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() {
usage := `Seafile Recovery.
@ -55,14 +16,16 @@ Options:
-h --help Show this screen
--storage=<sto> Set Seafile storage path [default: ./storage]`
var config struct {
Commits bool `docopt:"commits"`
Storage string `docopt:"--storage"`
RepoId string `docopt:"<repoid>"`
}
var config configCollect
opts, err := docopt.ParseDoc(usage)
if err != nil { log.Fatal(err) }
opts.Bind(&config)
checkFolder(config.Storage)
checkRootFolder(config.Storage)
if config.Commits {
cmdCommit(config)
} else {
log.Fatal("This command is not implemented")
}
}