1 // MsgSyncReq: sync data on the remote host
3 // SPDX-License-Identifier: GPL-3.0-or-later
4 // Copyright (C) 2021-2024 Simon Ruderich
12 "ruderich.org/simon/safcm"
13 "ruderich.org/simon/safcm/remote/log"
14 "ruderich.org/simon/safcm/remote/run"
19 resp safcm.MsgSyncResp
25 triggersActive map[string]bool
31 func Handle(req safcm.MsgSyncReq,
32 runner run.Runner, fun log.LogFunc) safcm.MsgSyncResp {
36 log: log.NewLogger(fun),
38 s.cmd = run.NewCmd(runner, s.log)
40 err := s.setDefaults()
42 s.resp.Error = fmt.Sprintf("%v", err)
48 s.resp.Error = fmt.Sprintf("files: %v", err)
51 err = s.syncPackages()
53 s.resp.Error = fmt.Sprintf("packages: %v", err)
56 err = s.syncServices()
58 s.resp.Error = fmt.Sprintf("services: %v", err)
61 err = s.syncCommands()
63 s.resp.Error = fmt.Sprintf("commands: %v", err)
69 func (s *Sync) setDefaults() error {
70 u, err := user.Current()
74 s.defaultUser = u.Username
75 g, err := user.LookupGroupId(u.Gid)
79 s.defaultGroup = g.Name
81 s.triggersActive = make(map[string]bool)