repos / pico

pico services mono repo
git clone https://github.com/picosh/pico.git

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
M Dockerfile
+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
M pkg/pobj/storage/fs.go
+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(),
M pkg/pssh/server_test.go
+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 }
M pkg/shared/storage/fs_test.go
+6, -6
 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 {