From 63fa9241e3b54ec0604aba70dcdec27e75bed227 Mon Sep 17 00:00:00 2001 From: Nick Goodall Date: Tue, 13 Jan 2026 13:41:10 +0000 Subject: [PATCH] slight speedup --- deploy.go | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) diff --git a/deploy.go b/deploy.go index b9539c6..5c61f49 100644 --- a/deploy.go +++ b/deploy.go @@ -362,8 +362,8 @@ func systemdScript(serviceDir, envFile, serviceName string) string { return fmt.Sprintf(`set -euo pipefail cat <<'EOF' > /etc/systemd/system/pb@.service [Unit] -Description=PocketBase instance %%i -After=network.target +Description = PocketBase instance %%i +After = network.target [Service] Type = simple @@ -379,11 +379,11 @@ EnvironmentFile = %s ExecStart = %s/pocketbase serve --http="127.0.0.1:${PORT}" [Install] -WantedBy=multi-user.target +WantedBy = multi-user.target EOF -systemctl daemon-reload -systemctl enable --now pb@%s -systemctl restart pb@%s + systemctl daemon-reload + systemctl --no-block enable --now pb@%s + systemctl --no-block restart pb@%s `, serviceDir, serviceDir, serviceDir, envFile, serviceDir, serviceName, serviceName) } @@ -426,6 +426,7 @@ func runSSHOutput(server, script string) (string, error) { } func syncLocalDirectories(server, remoteBase string, dirs []string) error { + var toSync []string for _, dir := range dirs { localPath := filepath.Join(".", dir) info, err := os.Stat(localPath) @@ -441,16 +442,21 @@ func syncLocalDirectories(server, remoteBase string, dirs []string) error { continue } - remotePath := fmt.Sprintf("root@%s:%s/%s", server, remoteBase, dir) - rsyncCmd := rsyncSSHCommand(server) - cmd := exec.Command("rsync", "-e", rsyncCmd, "-az", "--delete", localPath+"/", remotePath) - cmd.Stdout = os.Stdout - cmd.Stderr = os.Stderr - if err := cmd.Run(); err != nil { - return err - } + toSync = append(toSync, dir+"/") } - return nil + + if len(toSync) == 0 { + return nil + } + + rsyncCmd := rsyncSSHCommand(server) + remotePath := fmt.Sprintf("root@%s:%s", server, remoteBase) + args := append([]string{"-e", rsyncCmd, "-avz", "--delete", "--relative"}, toSync...) + args = append(args, remotePath) + cmd := exec.Command("rsync", args...) + cmd.Stdout = os.Stdout + cmd.Stderr = os.Stderr + return cmd.Run() } func rsyncSSHCommand(server string) string {