X-Git-Url: https://ruderich.org/simon/gitweb/?a=blobdiff_plain;f=cmd%2Fsafcm%2Fsync_sync.go;h=7e1457fec70372ef27313ff5c3453a8147a5531e;hb=7181f7906e7fb6e73ebc0daa46975bfa9c71478f;hp=6977edd584406247c9df8ebbd24d75ecfba5a31c;hpb=a583eff808817656f8ddb81ddfca3c1fd1f6c85f;p=safcm%2Fsafcm.git diff --git a/cmd/safcm/sync_sync.go b/cmd/safcm/sync_sync.go index 6977edd..7e1457f 100644 --- a/cmd/safcm/sync_sync.go +++ b/cmd/safcm/sync_sync.go @@ -1,6 +1,6 @@ // "sync" sub-command: sync files -// Copyright (C) 2021 Simon Ruderich +// Copyright (C) 2021-2024 Simon Ruderich // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by @@ -21,12 +21,12 @@ import ( "fmt" "math" "os" - "path/filepath" "sort" "strings" "ruderich.org/simon/safcm" "ruderich.org/simon/safcm/cmd/safcm/config" + "ruderich.org/simon/safcm/frontend" "ruderich.org/simon/safcm/rpc" ) @@ -35,19 +35,20 @@ func (s *Sync) hostSync(conn *rpc.Conn, detectedGroups []string) error { if err != nil { return err } - x, err := s.sendRecv(conn, req) + resp, err := s.loop.HostSyncMsg(s, conn, req) if err != nil { return err } - resp, ok := x.(safcm.MsgSyncResp) - if !ok { - return fmt.Errorf("unexpected response %v", x) - } // Display changes - changes := s.formatChanges(resp) + c := frontend.Changes{ + DryRun: s.config.DryRun, + Quiet: s.config.Quiet, + IsTTY: s.isTTY, + } + changes := c.FormatChanges(resp) if changes != "" { - s.logf(safcm.LogInfo, true, "%s", changes) + s.log(safcm.LogInfo, true, changes) } if resp.Error != "" { @@ -186,7 +187,7 @@ func (s *Sync) resolveHostGroups(detectedGroups []string) ( return nil, nil, err } - // Early entries have higher priorities + // Early entries in "group_priority" have higher priorities groupPriority := make(map[string]int) for i, x := range s.config.GroupPriority { groupPriority[x] = len(s.config.GroupPriority) - i @@ -241,7 +242,7 @@ func (s *Sync) checkFileConflict(group string, path string, file *safcm.File, return nil } - return fmt.Errorf("groups %s and %s both provide file %q\n"+ + return fmt.Errorf("groups %s and %s both provide %q\n"+ "Use 'group_priority' in config.yaml to declare preference", group, old.OrigGroup, path) } @@ -255,7 +256,8 @@ func resolveFileDirConflicts(files map[string]*safcm.File) { return paths[i] < paths[j] }) - const sep = string(filepath.Separator) + // Slash separated paths are used for the configuration + const sep = "/" // Remove invalid paths which can result from group_priority // overriding paths from another group (e.g. "/foo" as file from one