- commit
- 9c0e3ab
- parent
- acf40b6
- author
- Eric Bower
- date
- 2025-06-23 15:07:51 -0400 EDT
fix(pgs): rsync --delete regression
5 files changed,
+34,
-28
+6,
-6
1@@ -8,8 +8,8 @@ RUN apt-get install -y git ca-certificates
2
3 COPY go.* ./
4
5-RUN --mount=type=cache,target=/go/pkg/,rw \
6- --mount=type=cache,target=/root/.cache/,rw \
7+RUN --mount=type=cache,target=/go/pkg/ \
8+ --mount=type=cache,target=/root/.cache/ \
9 go mod download
10
11 FROM builder-deps AS builder-web
12@@ -25,8 +25,8 @@ ENV LDFLAGS="-s -w"
13
14 ENV GOOS=${TARGETOS} GOARCH=${TARGETARCH}
15
16-RUN --mount=type=cache,target=/go/pkg/,rw \
17- --mount=type=cache,target=/root/.cache/,rw \
18+RUN --mount=type=cache,target=/go/pkg/ \
19+ --mount=type=cache,target=/root/.cache/ \
20 go build -ldflags "$LDFLAGS" -o /go/bin/${APP}-web ./cmd/${APP}/web
21
22 FROM builder-deps AS builder-ssh
23@@ -42,8 +42,8 @@ ENV LDFLAGS="-s -w"
24
25 ENV GOOS=${TARGETOS} GOARCH=${TARGETARCH}
26
27-RUN --mount=type=cache,target=/go/pkg/,rw \
28- --mount=type=cache,target=/root/.cache/,rw \
29+RUN --mount=type=cache,target=/go/pkg/ \
30+ --mount=type=cache,target=/root/.cache/ \
31 go build -ldflags "$LDFLAGS" -o /go/bin/${APP}-ssh ./cmd/${APP}/ssh
32
33 FROM scratch AS release-web
M
Makefile
+4,
-0
1@@ -33,8 +33,12 @@ snaps:
2 .PHONY: snaps
3
4 bp-setup:
5+ifeq ($(DOCKER_CMD),docker)
6 $(DOCKER_CMD) buildx ls | grep pico || $(DOCKER_CMD) buildx create --name pico
7 $(DOCKER_CMD) buildx use pico
8+else
9+ # podman
10+endif
11 .PHONY: bp-setup
12
13 bp-caddy: bp-setup
+2,
-0
1@@ -254,6 +254,8 @@ func (s *StorageFS) ListObjects(bucket Bucket, dir string, recursive bool) ([]os
2 if fname == "" {
3 return nil
4 }
5+ // rsync does not expect prefixed `/` so without this `rsync --delete` is borked
6+ fname = strings.TrimPrefix(fname, "/")
7 files = append(files, utils.VirtualFile{
8 FName: fname,
9 FIsDir: info.IsDir(),
+16,
-16
1@@ -17,23 +17,23 @@ func TestNewSSHServer(t *testing.T) {
2 logger := slog.Default()
3 server := pssh.NewSSHServer(ctx, logger, &pssh.SSHServerConfig{})
4
5- if server == nil {
6+ if server == nil { //nolint:all
7 t.Fatal("expected non-nil server")
8 }
9
10- if server.Ctx == nil {
11+ if server.Ctx == nil { //nolint:all
12 t.Error("expected non-nil context")
13 }
14
15- if server.Logger == nil {
16+ if server.Logger == nil { //nolint:all
17 t.Error("expected non-nil logger")
18 }
19
20- if server.Config == nil {
21+ if server.Config == nil { //nolint:all
22 t.Error("expected non-nil config")
23 }
24
25- if server.Conns == nil {
26+ if server.Conns == nil { //nolint:all
27 t.Error("expected non-nil connections map")
28 }
29 }
30@@ -46,23 +46,23 @@ func TestNewSSHServerConn(t *testing.T) {
31
32 serverConn := pssh.NewSSHServerConn(ctx, logger, conn, server)
33
34- if serverConn == nil {
35+ if serverConn == nil { //nolint:all
36 t.Fatal("expected non-nil server connection")
37 }
38
39- if serverConn.Ctx == nil {
40+ if serverConn.Ctx == nil { //nolint:all
41 t.Error("expected non-nil context")
42 }
43
44- if serverConn.Logger == nil {
45+ if serverConn.Logger == nil { //nolint:all
46 t.Error("expected non-nil logger")
47 }
48
49- if serverConn.Conn != conn {
50+ if serverConn.Conn != conn { //nolint:all
51 t.Error("expected conn to match")
52 }
53
54- if serverConn.SSHServer != server {
55+ if serverConn.SSHServer != server { //nolint:all
56 t.Error("expected server to match")
57 }
58 }
59@@ -122,15 +122,15 @@ func TestSSHServerNilParams(t *testing.T) {
60 //lint:ignore SA1012 ignores nil check
61 server := pssh.NewSSHServer(nil, nil, nil)
62
63- if server == nil {
64+ if server == nil { //nolint:all
65 t.Fatal("expected non-nil server")
66 }
67
68- if server.Ctx == nil {
69+ if server.Ctx == nil { //nolint:all
70 t.Error("expected non-nil context even when nil is passed")
71 }
72
73- if server.Logger == nil {
74+ if server.Logger == nil { //nolint:all
75 t.Error("expected non-nil logger even when nil is passed")
76 }
77
78@@ -139,15 +139,15 @@ func TestSSHServerNilParams(t *testing.T) {
79 //lint:ignore SA1012 ignores nil check
80 conn := pssh.NewSSHServerConn(nil, nil, &ssh.ServerConn{}, server)
81
82- if conn == nil {
83+ if conn == nil { //nolint:all
84 t.Fatal("expected non-nil server connection")
85 }
86
87- if conn.Ctx == nil {
88+ if conn.Ctx == nil { //nolint:all
89 t.Error("expected non-nil context even when nil is passed")
90 }
91
92- if conn.Logger == nil {
93+ if conn.Logger == nil { //nolint:all
94 t.Error("expected non-nil logger even when nil is passed")
95 }
96 }
1@@ -113,23 +113,23 @@ func TestFsAdapter(t *testing.T) {
2
3 expectedObjs := []fs.FileInfo{
4 &utils.VirtualFile{
5- FName: "/here",
6+ FName: "here",
7 FIsDir: true,
8 },
9 &utils.VirtualFile{
10- FName: "/here/we",
11+ FName: "here/we",
12 FIsDir: true,
13 },
14 &utils.VirtualFile{
15- FName: "/here/we/go",
16+ FName: "here/we/go",
17 FIsDir: true,
18 },
19- &utils.VirtualFile{FName: "/here/we/go/again.txt", FSize: 25},
20+ &utils.VirtualFile{FName: "here/we/go/again.txt", FSize: 25},
21 &utils.VirtualFile{
22- FName: "/nice",
23+ FName: "nice",
24 FIsDir: true,
25 },
26- &utils.VirtualFile{FName: "/nice/test.txt", FSize: 19},
27+ &utils.VirtualFile{FName: "nice/test.txt", FSize: 19},
28 }
29 ignore := cmpopts.IgnoreFields(utils.VirtualFile{}, "FModTime", "FSize")
30 if cmp.Equal(objs, expectedObjs, ignore) == false {