diff --git a/Makefile b/Makefile index 2f97157..b6e3e66 100644 --- a/Makefile +++ b/Makefile @@ -10,7 +10,7 @@ endif .PHONY: build build: - $(GO) build -o $(OUTPATH) -ldflags "-X github.com/livingsilver94/backee/cmd.Version=$(VERSION)" bin/log.go bin/main.go + $(GO) build -o $(OUTPATH) -ldflags "-X github.com/livingsilver94/backee/cmd.Version=$(VERSION)" log.go main.go .PHONY: check check: diff --git a/bin/cli/cli.go b/cli/cli.go similarity index 100% rename from bin/cli/cli.go rename to cli/cli.go diff --git a/bin/cli/install.go b/cli/install.go similarity index 90% rename from bin/cli/install.go rename to cli/install.go index ef9f551..9915e64 100644 --- a/bin/cli/install.go +++ b/cli/install.go @@ -6,10 +6,10 @@ import ( "os" "strings" - "github.com/livingsilver94/backee" "github.com/livingsilver94/backee/installer" "github.com/livingsilver94/backee/repo" "github.com/livingsilver94/backee/secret" + "github.com/livingsilver94/backee/service" ) type keepassXC struct { @@ -61,15 +61,15 @@ func (in *install) Run() error { return nil } -func (in *install) services(rep repo.FSRepo) ([]*backee.Service, error) { +func (in *install) services(rep repo.FSRepo) ([]*service.Service, error) { if len(in.PkgManager) != 0 { - backee.DefaultPkgManager = in.PkgManager + service.DefaultPkgManager = in.PkgManager } if len(in.Services) == 0 { return rep.AllServices() } - services := make([]*backee.Service, 0, len(in.Services)) + services := make([]*service.Service, 0, len(in.Services)) for _, name := range in.Services { srv, err := rep.Service(name) if err != nil { @@ -100,7 +100,7 @@ func (in *install) installer(rep repo.FSRepo, fileList **os.File) installer.Inst vrs.Common = envVars() if in.KeepassXC.Path != "" { kee := secret.NewKeepassXC(in.KeepassXC.Path, in.KeepassXC.Password) - vrs.RegisterStore(backee.VarKind("keepassxc"), kee) + vrs.RegisterStore(service.VarKind("keepassxc"), kee) } return installer.New(rep, installer.WithVariables(vrs), installer.WithList(list)) diff --git a/bin/cli/privileged.go b/cli/privileged.go similarity index 100% rename from bin/cli/privileged.go rename to cli/privileged.go diff --git a/installer/fs.go b/installer/fs.go index 3c706b1..f335f9f 100644 --- a/installer/fs.go +++ b/installer/fs.go @@ -9,7 +9,7 @@ import ( "path/filepath" "strings" - "github.com/livingsilver94/backee" + "github.com/livingsilver94/backee/service" ) type FileWriter interface { @@ -17,7 +17,7 @@ type FileWriter interface { writeDestination(dst string) error } -func WritePath(dst backee.FilePath, src string, wr FileWriter) error { +func WritePath(dst service.FilePath, src string, wr FileWriter) error { err := wr.loadSource(src) if err != nil { return err @@ -97,7 +97,7 @@ func (w *CopyWriter) writeDestination(dst string) error { return buff.Flush() } -func writeFiles(files map[string]backee.FilePath, baseDir string, repl Replacer, wr FileWriter) error { +func writeFiles(files map[string]service.FilePath, baseDir string, repl Replacer, wr FileWriter) error { var resolvedDst strings.Builder for srcFile, dstFile := range files { err := repl.ReplaceString(dstFile.Path, &resolvedDst) @@ -105,7 +105,7 @@ func writeFiles(files map[string]backee.FilePath, baseDir string, repl Replacer, return err } err = WritePath( - backee.FilePath{Path: resolvedDst.String(), Mode: dstFile.Mode}, + service.FilePath{Path: resolvedDst.String(), Mode: dstFile.Mode}, filepath.Join(baseDir, srcFile), wr, ) diff --git a/installer/installer.go b/installer/installer.go index 6b465bd..0b7dc52 100644 --- a/installer/installer.go +++ b/installer/installer.go @@ -3,14 +3,14 @@ package installer import ( "log/slog" - "github.com/livingsilver94/backee" "github.com/livingsilver94/backee/repo" + "github.com/livingsilver94/backee/service" ) type Repository interface { DataDir(srvName string) (string, error) LinkDir(srvName string) (string, error) - ResolveDeps(srv *backee.Service) (repo.DepGraph, error) + ResolveDeps(srv *service.Service) (repo.DepGraph, error) } type VarStore interface { @@ -35,7 +35,7 @@ func New(repository Repository, options ...Option) Installer { return i } -func (inst *Installer) Install(srv *backee.Service) error { +func (inst *Installer) Install(srv *service.Service) error { if srv == nil { return nil } @@ -55,7 +55,7 @@ func (inst *Installer) Install(srv *backee.Service) error { return inst.installSingle(srv) } -func (inst *Installer) installSingle(srv *backee.Service) error { +func (inst *Installer) installSingle(srv *service.Service) error { log := slog.Default().WithGroup(srv.Name) if inst.list.Contains(srv.Name) { log.Info("Already installed") @@ -66,15 +66,15 @@ func (inst *Installer) installSingle(srv *backee.Service) error { return err } repl := NewReplacer(srv.Name, inst.variables) - performers := []Performer{ - Setup, - PackageInstaller, - SymlinkPerformer(inst.repository, repl), - CopyPerformer(inst.repository, repl), - Finalizer(repl), + steps := []Step{ + Setup{}, + OSPackages{}, + NewSymlinks(inst.repository, repl), + NewCopies(inst.repository, repl), + NewFinalization(repl), } - for _, perf := range performers { - err := perf(log, srv) + for _, step := range steps { + err := step.Run(log, srv) if err != nil { return err } @@ -83,15 +83,15 @@ func (inst *Installer) installSingle(srv *backee.Service) error { return nil } -func (inst *Installer) cacheVars(srv *backee.Service) error { +func (inst *Installer) cacheVars(srv *service.Service) error { datadir, err := inst.repository.DataDir(srv.Name) if err != nil { return err } err = inst.variables.Insert( srv.Name, - backee.VarDatadir, - backee.VarValue{Kind: backee.ClearText, Value: datadir}) + service.VarDatadir, + service.VarValue{Kind: service.ClearText, Value: datadir}) if err != nil { return err } diff --git a/installer/replacer.go b/installer/replacer.go index 826c923..6a44735 100644 --- a/installer/replacer.go +++ b/installer/replacer.go @@ -6,7 +6,7 @@ import ( "io" "strings" - "github.com/livingsilver94/backee" + "github.com/livingsilver94/backee/service" "github.com/valyala/fasttemplate" ) @@ -28,7 +28,7 @@ func (t Replacer) Replace(r io.Reader, w io.Writer) error { for scanner.Scan() { _, err := fasttemplate.ExecuteFunc( scanner.Text(), - backee.VarOpenTag, backee.VarCloseTag, + service.VarOpenTag, service.VarCloseTag, w, t.replaceTag, ) @@ -42,7 +42,7 @@ func (t Replacer) Replace(r io.Reader, w io.Writer) error { func (t Replacer) ReplaceString(s string, w io.Writer) error { _, err := fasttemplate.ExecuteFunc( s, - backee.VarOpenTag, backee.VarCloseTag, + service.VarOpenTag, service.VarCloseTag, w, t.replaceTag, ) @@ -52,18 +52,18 @@ func (t Replacer) ReplaceString(s string, w io.Writer) error { func (t Replacer) ReplaceStringToString(s string) (string, error) { return fasttemplate.ExecuteFuncStringWithErr( s, - backee.VarOpenTag, backee.VarCloseTag, + service.VarOpenTag, service.VarCloseTag, t.replaceTag, ) } func (t Replacer) replaceTag(w io.Writer, varName string) (int, error) { if val, err := t.variables.Get(t.serviceName, varName); err == nil { - // Matched a variable local to the backee. + // Matched a variable local to the service. return w.Write([]byte(val)) } - parentName, parentVar, found := strings.Cut(varName, backee.VarParentSep) + parentName, parentVar, found := strings.Cut(varName, service.VarParentSep) if !found { return 0, ErrNoVariable } @@ -92,12 +92,12 @@ func greedyTagSplitter(data []byte, atEOF bool) (advance int, token []byte, err return 0, nil, nil } - iTag := bytes.LastIndex(data, []byte(backee.VarOpenTag)) + iTag := bytes.LastIndex(data, []byte(service.VarOpenTag)) if iTag < 0 { // No tags in this string. return len(data), data, nil } - if bytes.Contains(data[iTag+len(backee.VarOpenTag):], []byte(backee.VarCloseTag)) { + if bytes.Contains(data[iTag+len(service.VarOpenTag):], []byte(service.VarCloseTag)) { // Tag is correctly closed. Return whole string. return len(data), data, nil } diff --git a/installer/replacer_test.go b/installer/replacer_test.go index d2ec649..fc44d92 100644 --- a/installer/replacer_test.go +++ b/installer/replacer_test.go @@ -6,8 +6,8 @@ import ( "strings" "testing" - "github.com/livingsilver94/backee" "github.com/livingsilver94/backee/installer" + "github.com/livingsilver94/backee/service" ) func TestReplaceServiceVar(t *testing.T) { @@ -53,7 +53,7 @@ func TestReplaceExtraVar(t *testing.T) { func TestReplaceParentVar(t *testing.T) { vars := createVariables("var1", "value1", "var2", "value2") - vars.Insert("parent", "var1", backee.VarValue{Kind: backee.ClearText, Value: "parentValue1"}) + vars.Insert("parent", "var1", service.VarValue{Kind: service.ClearText, Value: "parentValue1"}) vars.AddParent(serviceName, "parent") repl := installer.NewReplacer(serviceName, vars) @@ -81,7 +81,7 @@ func TestReplaceReader(t *testing.T) { s := strings.NewReader(test.in) vars := installer.NewVariables() for key, val := range test.vars { - vars.Insert("service", key, backee.VarValue{Kind: backee.ClearText, Value: val}) + vars.Insert("service", key, service.VarValue{Kind: service.ClearText, Value: val}) } rep := installer.NewReplacer("service", vars) writer := &bytes.Buffer{} diff --git a/installer/step.go b/installer/step.go index 25facad..51974d8 100644 --- a/installer/step.go +++ b/installer/step.go @@ -10,16 +10,16 @@ import ( "path/filepath" "strings" - "github.com/livingsilver94/backee" + "github.com/livingsilver94/backee/service" ) type Step interface { - Run(*slog.Logger, *backee.Service) error + Run(*slog.Logger, *service.Service) error } type Setup struct{} -func (Setup) Run(log *slog.Logger, srv *backee.Service) error { +func (Setup) Run(log *slog.Logger, srv *service.Service) error { if srv.Setup == nil || *srv.Setup == "" { return nil } @@ -29,7 +29,7 @@ func (Setup) Run(log *slog.Logger, srv *backee.Service) error { type OSPackages struct{} -func (OSPackages) Run(log *slog.Logger, srv *backee.Service) error { +func (OSPackages) Run(log *slog.Logger, srv *service.Service) error { if len(srv.Packages) == 0 { return nil } @@ -52,7 +52,7 @@ func NewSymlinks(repo Repository, repl Replacer) Symlinks { } } -func (s Symlinks) Run(log *slog.Logger, srv *backee.Service) error { +func (s Symlinks) Run(log *slog.Logger, srv *service.Service) error { if len(srv.Links) == 0 { return nil } @@ -76,7 +76,7 @@ func NewCopies(repo Repository, repl Replacer) Copies { } } -func (c Copies) Run(log *slog.Logger, srv *backee.Service) error { +func (c Copies) Run(log *slog.Logger, srv *service.Service) error { if len(srv.Copies) == 0 { return nil } @@ -98,7 +98,7 @@ func NewFinalization(repl Replacer) Finalization { } } -func (f Finalization) Run(log *slog.Logger, srv *backee.Service) error { +func (f Finalization) Run(log *slog.Logger, srv *service.Service) error { if srv.Finalize == nil || *srv.Finalize == "" { return nil } diff --git a/installer/variables.go b/installer/variables.go index b9fa646..3720310 100644 --- a/installer/variables.go +++ b/installer/variables.go @@ -4,7 +4,7 @@ import ( "errors" "fmt" - "github.com/livingsilver94/backee" + "github.com/livingsilver94/backee/service" ) var ( @@ -16,13 +16,13 @@ type Variables struct { Common map[string]string resolved map[string]value - stores map[backee.VarKind]VarStore + stores map[service.VarKind]VarStore } func NewVariables() Variables { return Variables{ resolved: make(map[string]value), - stores: make(map[backee.VarKind]VarStore), + stores: make(map[service.VarKind]VarStore), } } @@ -46,7 +46,7 @@ func (c Variables) AddParent(srv, parent string) error { // Insert saves value for a service named srv under key. // If the value is not clear text, it is resolved immediately and then cached. // If key is already present for srv, Insert is no-op. -func (c Variables) Insert(srv, key string, value backee.VarValue) error { +func (c Variables) Insert(srv, key string, value service.VarValue) error { switch _, err := c.Get(srv, key); err { case ErrNoService: c.resolved[srv] = newValue() @@ -56,7 +56,7 @@ func (c Variables) Insert(srv, key string, value backee.VarValue) error { return nil } var v string - if kind := value.Kind; kind == backee.ClearText { + if kind := value.Kind; kind == service.ClearText { v = value.Value } else { store, ok := c.stores[kind] @@ -73,7 +73,7 @@ func (c Variables) Insert(srv, key string, value backee.VarValue) error { return nil } -func (c Variables) InsertMany(srv string, values map[string]backee.VarValue) error { +func (c Variables) InsertMany(srv string, values map[string]service.VarValue) error { for key, value := range values { err := c.Insert(srv, key, value) if err != nil { @@ -113,7 +113,7 @@ func (c Variables) Length() int { return len(c.resolved) } -func (c Variables) RegisterStore(kind backee.VarKind, store VarStore) { +func (c Variables) RegisterStore(kind service.VarKind, store VarStore) { c.stores[kind] = store } diff --git a/installer/variables_test.go b/installer/variables_test.go index b583d56..5b81d75 100644 --- a/installer/variables_test.go +++ b/installer/variables_test.go @@ -5,13 +5,13 @@ import ( "reflect" "testing" - "github.com/livingsilver94/backee" "github.com/livingsilver94/backee/installer" + "github.com/livingsilver94/backee/service" ) func TestAddParent(t *testing.T) { cache := createVariables("key", "val") - cache.Insert("parent", "parentKey", backee.VarValue{Kind: backee.ClearText, Value: "parentValue"}) + cache.Insert("parent", "parentKey", service.VarValue{Kind: service.ClearText, Value: "parentValue"}) err := cache.AddParent(serviceName, "parent") if err != nil { t.Fatalf("expected nil error. Got %v", err) @@ -20,7 +20,7 @@ func TestAddParent(t *testing.T) { func TestAddParentNoService(t *testing.T) { cache := createVariables("key", "val") - cache.Insert("parent", "parentKey", backee.VarValue{Kind: backee.ClearText, Value: "parentValue"}) + cache.Insert("parent", "parentKey", service.VarValue{Kind: service.ClearText, Value: "parentValue"}) err := cache.AddParent("not a service", "parent") if !errors.Is(err, installer.ErrNoService) { t.Fatalf("expected %v error. Got %v", installer.ErrNoService, err) @@ -29,7 +29,7 @@ func TestAddParentNoService(t *testing.T) { func TestAddParentNoParent(t *testing.T) { cache := createVariables("key", "val") - cache.Insert("parent", "parentKey", backee.VarValue{Kind: backee.ClearText, Value: "parentValue"}) + cache.Insert("parent", "parentKey", service.VarValue{Kind: service.ClearText, Value: "parentValue"}) err := cache.AddParent(serviceName, "not a parent") if !errors.Is(err, installer.ErrNoService) { t.Fatalf("expected %v error. Got %v", installer.ErrNoService, err) @@ -60,11 +60,11 @@ func (testVarStore) Value(key string) (value string, err error) { } func TestInsertStore(t *testing.T) { - const kind backee.VarKind = "testKind" + const kind service.VarKind = "testKind" cache := installer.NewVariables() cache.RegisterStore(kind, testVarStore{}) - err := cache.Insert(serviceName, "key", backee.VarValue{Kind: kind, Value: "storeValue"}) + err := cache.Insert(serviceName, "key", service.VarValue{Kind: kind, Value: "storeValue"}) if err != nil { t.Fatal(err) } @@ -103,7 +103,7 @@ func TestGetNoVariable(t *testing.T) { func TestParents(t *testing.T) { cache := createVariables("key", "val") - cache.Insert("parent", "parentKey", backee.VarValue{Kind: backee.ClearText, Value: "parentValue"}) + cache.Insert("parent", "parentKey", service.VarValue{Kind: service.ClearText, Value: "parentValue"}) err := cache.AddParent(serviceName, "parent") if err != nil { t.Fatalf("expected nil error. Got %v", err) @@ -126,7 +126,7 @@ func createVariables(keyVal ...string) installer.Variables { } v := installer.NewVariables() for i := 0; i < len(keyVal)-1; i += 2 { - v.Insert(serviceName, keyVal[i], backee.VarValue{Kind: backee.ClearText, Value: keyVal[i+1]}) + v.Insert(serviceName, keyVal[i], service.VarValue{Kind: service.ClearText, Value: keyVal[i+1]}) } return v } diff --git a/bin/log.go b/log.go similarity index 100% rename from bin/log.go rename to log.go diff --git a/bin/main.go b/main.go similarity index 93% rename from bin/main.go rename to main.go index 7c924f4..a0c563b 100644 --- a/bin/main.go +++ b/main.go @@ -5,7 +5,7 @@ import ( "log/slog" "os" - "github.com/livingsilver94/backee/bin/cli" + "github.com/livingsilver94/backee/cli" ) func main() { diff --git a/repo/depgraph.go b/repo/depgraph.go index 1c998c3..e45619d 100644 --- a/repo/depgraph.go +++ b/repo/depgraph.go @@ -4,7 +4,7 @@ import ( "fmt" "github.com/hashicorp/go-set" - "github.com/livingsilver94/backee" + "github.com/livingsilver94/backee/service" ) // DepGraph is the dependency graph of a service, akin to a family tree. @@ -26,7 +26,7 @@ const depSetDefaultCap = 10 // Insert inserts srv at level in the dependency graph. // Insert panics if level is greater than graph's current depth. -func (dg *DepGraph) Insert(level int, srv *backee.Service) { +func (dg *DepGraph) Insert(level int, srv *service.Service) { if level > dg.Depth() { panic(fmt.Sprintf("inserting dep on level %d but level %d does not exist", level, level-1)) } @@ -62,12 +62,12 @@ func (dg *DepGraph) Equal(dg2 DepGraph) bool { // DepSet is a unique set of services. type DepSet struct { - *set.HashSet[*backee.Service, string] + *set.HashSet[*service.Service, string] } // NewDepSet returns an empty set of services with an initial capacity. func NewDepSet(initialCap int) DepSet { - return DepSet{set.NewHashSet[*backee.Service, string](initialCap)} + return DepSet{set.NewHashSet[*service.Service, string](initialCap)} } // Equal compares the set with another. diff --git a/repo/depgraph_test.go b/repo/depgraph_test.go index 70b0913..414b127 100644 --- a/repo/depgraph_test.go +++ b/repo/depgraph_test.go @@ -3,13 +3,13 @@ package repo_test import ( "testing" - "github.com/livingsilver94/backee" "github.com/livingsilver94/backee/repo" + "github.com/livingsilver94/backee/service" ) func TestInsert1Level(t *testing.T) { graph := repo.NewDepGraph(1) - service := &backee.Service{Name: "serv1"} + service := &service.Service{Name: "serv1"} graph.Insert(0, service) if graph.Depth() != 1 { t.Fatalf("graph depth (%d) went deeper than expected (%d)", graph.Depth(), 1) @@ -21,8 +21,8 @@ func TestInsert1Level(t *testing.T) { func TestInsert2Level(t *testing.T) { graph := repo.NewDepGraph(1) - service1 := &backee.Service{Name: "serv1"} - service2 := &backee.Service{Name: "serv2"} + service1 := &service.Service{Name: "serv1"} + service2 := &service.Service{Name: "serv2"} graph.Insert(0, service1) graph.Insert(1, service2) if graph.Depth() != 2 { diff --git a/repo/fsrepo.go b/repo/fsrepo.go index e8330c0..643c462 100644 --- a/repo/fsrepo.go +++ b/repo/fsrepo.go @@ -6,7 +6,7 @@ import ( "os" "path/filepath" - "github.com/livingsilver94/backee" + "github.com/livingsilver94/backee/service" ) const ( @@ -41,7 +41,7 @@ func NewFSRepoVariant(baseFS fs.FS, variant string) FSRepo { } // Service returns the service with the name provided. -func (repo FSRepo) Service(name string) (*backee.Service, error) { +func (repo FSRepo) Service(name string) (*service.Service, error) { var fname string if repo.variant != "" { fname = name + "/" + (fsRepoFilenamePrefix + "_" + repo.variant + fsRepoFilenameSuffix) @@ -53,16 +53,16 @@ func (repo FSRepo) Service(name string) (*backee.Service, error) { return nil, err } defer file.Close() - return backee.NewServiceFromYAMLReader(name, file) + return service.NewServiceFromYAMLReader(name, file) } // AllServices returns all services in the filesystem. -func (repo FSRepo) AllServices() ([]*backee.Service, error) { +func (repo FSRepo) AllServices() ([]*service.Service, error) { children, err := fs.ReadDir(repo.baseFS, ".") if err != nil { return nil, err } - services := make([]*backee.Service, 0, len(children)) + services := make([]*service.Service, 0, len(children)) for _, child := range children { if !child.IsDir() { continue @@ -83,7 +83,7 @@ const depGraphDefaultDepth = 4 // ResolveDeps resolves the dependency graph for srv. // If srv has no dependencies, the dependency graph will be empty. -func (repo FSRepo) ResolveDeps(srv *backee.Service) (DepGraph, error) { +func (repo FSRepo) ResolveDeps(srv *service.Service) (DepGraph, error) { graph := NewDepGraph(depGraphDefaultDepth) if srv.Depends == nil { return graph, nil @@ -115,7 +115,7 @@ func (repo FSRepo) LinkDir(name string) (string, error) { } } -func (repo FSRepo) resolveDeps(graph *DepGraph, level int, deps *backee.DepSet) error { +func (repo FSRepo) resolveDeps(graph *DepGraph, level int, deps *service.DepSet) error { for _, depName := range deps.Slice() { srv, err := repo.Service(depName) if err != nil { @@ -128,7 +128,7 @@ func (repo FSRepo) resolveDeps(graph *DepGraph, level int, deps *backee.DepSet) } // Gather dependencies of dependencies. - subdeps := backee.NewDepSet(depSetDefaultCap) + subdeps := service.NewDepSet(depSetDefaultCap) for _, subdep := range graph.Level(level).Slice() { if subdep.Depends == nil { continue diff --git a/repo/fsrepo_test.go b/repo/fsrepo_test.go index e813295..0d392b2 100644 --- a/repo/fsrepo_test.go +++ b/repo/fsrepo_test.go @@ -6,14 +6,14 @@ import ( "testing" "testing/fstest" - "github.com/livingsilver94/backee" "github.com/livingsilver94/backee/repo" + "github.com/livingsilver94/backee/service" ) func TestService(t *testing.T) { fs := fstest.MapFS{"srv/service.yaml": &fstest.MapFile{}} rep := repo.NewFSRepo(fs) - expected := &backee.Service{Name: "srv", PkgManager: backee.DefaultPkgManager} + expected := &service.Service{Name: "srv", PkgManager: service.DefaultPkgManager} obtained, err := rep.Service("srv") if err != nil { t.Fatal(err) @@ -31,9 +31,9 @@ func TestAllServices(t *testing.T) { "garbage.txt": &fstest.MapFile{Data: []byte("please ignore"), Mode: 0644}, } rep := repo.NewFSRepo(fs) - expected := []*backee.Service{ - {Name: "srv1", PkgManager: backee.DefaultPkgManager}, - {Name: "srv2", PkgManager: backee.DefaultPkgManager}} + expected := []*service.Service{ + {Name: "srv1", PkgManager: service.DefaultPkgManager}, + {Name: "srv2", PkgManager: service.DefaultPkgManager}} obtained, err := rep.AllServices() if err != nil { t.Fatal(err) @@ -50,21 +50,21 @@ func TestResolveDeps(t *testing.T) { "lvl2-1/service.yaml": &fstest.MapFile{}, "lvl2-2/service.yaml": &fstest.MapFile{}, } - deps := backee.NewDepSet(2) + deps := service.NewDepSet(2) for _, name := range []string{"lvl1-1", "lvl1-2"} { deps.Insert(name) } - srv := &backee.Service{ + srv := &service.Service{ Name: "srv", Depends: &deps, } rep := repo.NewFSRepo(fs) expected := repo.NewDepGraph(2) - expected.Insert(0, &backee.Service{Name: "lvl1-1"}) - expected.Insert(0, &backee.Service{Name: "lvl1-2"}) - expected.Insert(1, &backee.Service{Name: "lvl2-1"}) - expected.Insert(1, &backee.Service{Name: "lvl2-2"}) + expected.Insert(0, &service.Service{Name: "lvl1-1"}) + expected.Insert(0, &service.Service{Name: "lvl1-2"}) + expected.Insert(1, &service.Service{Name: "lvl2-1"}) + expected.Insert(1, &service.Service{Name: "lvl2-2"}) obtained, err := rep.ResolveDeps(srv) if err != nil { t.Fatal(err) diff --git a/service.go b/service/service.go similarity index 99% rename from service.go rename to service/service.go index d7dfe83..e66500d 100644 --- a/service.go +++ b/service/service.go @@ -1,4 +1,4 @@ -package backee +package service import ( "errors" diff --git a/service_test.go b/service/service_test.go similarity index 73% rename from service_test.go rename to service/service_test.go index fea779b..6efc14b 100644 --- a/service_test.go +++ b/service/service_test.go @@ -1,17 +1,17 @@ -package backee_test +package service_test import ( "reflect" "strings" "testing" - "github.com/livingsilver94/backee" + "github.com/livingsilver94/backee/service" ) const name = "testName" func TestParseEmptyDocument(t *testing.T) { - srv, err := backee.NewServiceFromYAML(name, []byte("# This is an empty document")) + srv, err := service.NewServiceFromYAML(name, []byte("# This is an empty document")) if err != nil { t.Fatal(err) } @@ -21,7 +21,7 @@ func TestParseEmptyDocument(t *testing.T) { } func TestParseEmptyDocumentReader(t *testing.T) { - srv, err := backee.NewServiceFromYAMLReader(name, strings.NewReader("# This is an empty document")) + srv, err := service.NewServiceFromYAMLReader(name, strings.NewReader("# This is an empty document")) if err != nil { t.Fatal(err) } @@ -31,13 +31,13 @@ func TestParseEmptyDocumentReader(t *testing.T) { } func TestParseDepends(t *testing.T) { - expect := backee.NewDepSetFrom([]string{"service1", "service2"}) + expect := service.NewDepSetFrom([]string{"service1", "service2"}) const doc = ` depends: - service1 - service2 - service1` - srv, err := backee.NewServiceFromYAML(name, []byte(doc)) + srv, err := service.NewServiceFromYAML(name, []byte(doc)) if err != nil { t.Fatal(err) } @@ -52,7 +52,7 @@ func TestParseSetup(t *testing.T) { setup: | echo "Test!" # Another line.` - srv, err := backee.NewServiceFromYAML(name, []byte(doc)) + srv, err := service.NewServiceFromYAML(name, []byte(doc)) if err != nil { t.Fatal(err) } @@ -68,7 +68,7 @@ func TestParsePkgManager(t *testing.T) { expect := []string{"sudo", "apt-get", "install", "-y"} const doc = ` pkgmanager: ["sudo", "apt-get", "install", "-y"]` - srv, err := backee.NewServiceFromYAML(name, []byte(doc)) + srv, err := service.NewServiceFromYAML(name, []byte(doc)) if err != nil { t.Fatal(err) } @@ -84,7 +84,7 @@ packages: - nano - micro - zsh` - srv, err := backee.NewServiceFromYAML(name, []byte(doc)) + srv, err := service.NewServiceFromYAML(name, []byte(doc)) if err != nil { t.Fatal(err) } @@ -94,7 +94,7 @@ packages: } func TestParseLinks(t *testing.T) { - expect := map[string]backee.FilePath{ + expect := map[string]service.FilePath{ "/my/path/file1": {Path: "/tmp/alias1", Mode: 0o000}, "my/path/file2": {Path: "/tmp/alias2", Mode: 0o755}, } @@ -106,7 +106,7 @@ links: my/path/file2: path: /tmp/alias2 mode: 0o755` - srv, err := backee.NewServiceFromYAML(name, []byte(doc)) + srv, err := service.NewServiceFromYAML(name, []byte(doc)) if err != nil { t.Fatal(err) } @@ -116,7 +116,7 @@ links: } func TestParseLinksString(t *testing.T) { - expect := map[string]backee.FilePath{ + expect := map[string]service.FilePath{ "/my/path/file1": {Path: "/tmp/alias1", Mode: 0644}, "my/path/file2": {Path: "/tmp/alias2", Mode: 0o644}, } @@ -124,7 +124,7 @@ func TestParseLinksString(t *testing.T) { links: /my/path/file1: /tmp/alias1 my/path/file2: /tmp/alias2` - srv, err := backee.NewServiceFromYAML(name, []byte(doc)) + srv, err := service.NewServiceFromYAML(name, []byte(doc)) if err != nil { t.Fatal(err) } @@ -134,11 +134,11 @@ links: } func TestParseVariables(t *testing.T) { - expect := map[string]backee.VarValue{ - "username": {Kind: backee.ClearText, Value: "value1"}, - "password": {Kind: backee.VarKind("keepassxc"), Value: "dbKey"}, - "implicitKind": {Kind: backee.ClearText, Value: "value2"}, - "scalar": {Kind: backee.ClearText, Value: "value3"}, + expect := map[string]service.VarValue{ + "username": {Kind: service.ClearText, Value: "value1"}, + "password": {Kind: service.VarKind("keepassxc"), Value: "dbKey"}, + "implicitKind": {Kind: service.ClearText, Value: "value2"}, + "scalar": {Kind: service.ClearText, Value: "value3"}, } const doc = ` variables: @@ -151,7 +151,7 @@ variables: implicitKind: value: value2 scalar: value3` - srv, err := backee.NewServiceFromYAML(name, []byte(doc)) + srv, err := service.NewServiceFromYAML(name, []byte(doc)) if err != nil { t.Fatal(err) } @@ -161,13 +161,13 @@ variables: } func TestParseVariablesString(t *testing.T) { - expect := map[string]backee.VarValue{ - "username": {Kind: backee.ClearText, Value: "value1"}, + expect := map[string]service.VarValue{ + "username": {Kind: service.ClearText, Value: "value1"}, } const doc = ` variables: username: value1` - srv, err := backee.NewServiceFromYAML(name, []byte(doc)) + srv, err := service.NewServiceFromYAML(name, []byte(doc)) if err != nil { t.Fatal(err) } @@ -177,7 +177,7 @@ variables: } func TestParseCopies(t *testing.T) { - expect := map[string]backee.FilePath{ + expect := map[string]service.FilePath{ "nginx.conf": {Path: "/etc/nginx/nginx.conf", Mode: 0o000}, "config": {Path: "${HOME}/.ssh/config", Mode: 0o600}, } @@ -189,7 +189,7 @@ copies: config: path: ${HOME}/.ssh/config mode: 0o600` - srv, err := backee.NewServiceFromYAML(name, []byte(doc)) + srv, err := service.NewServiceFromYAML(name, []byte(doc)) if err != nil { t.Fatal(err) } @@ -199,7 +199,7 @@ copies: } func TestParseCopiesString(t *testing.T) { - expect := map[string]backee.FilePath{ + expect := map[string]service.FilePath{ "/my/path/file1": {Path: "/tmp/alias1", Mode: 0644}, "my/path/file2": {Path: "/tmp/alias2", Mode: 0o644}, } @@ -207,7 +207,7 @@ func TestParseCopiesString(t *testing.T) { copies: /my/path/file1: /tmp/alias1 my/path/file2: /tmp/alias2` - srv, err := backee.NewServiceFromYAML(name, []byte(doc)) + srv, err := service.NewServiceFromYAML(name, []byte(doc)) if err != nil { t.Fatal(err) } @@ -222,7 +222,7 @@ func TestParseFinalize(t *testing.T) { finalize: | echo "Test!" # Another line.` - srv, err := backee.NewServiceFromYAML(name, []byte(doc)) + srv, err := service.NewServiceFromYAML(name, []byte(doc)) if err != nil { t.Fatal(err) } @@ -235,7 +235,7 @@ finalize: | } func TestServiceHash(t *testing.T) { - srv := backee.Service{Name: "myName"} + srv := service.Service{Name: "myName"} expected := srv.Name obtained := srv.Hash() if obtained != expected {