Skip to content

Commit ed9f368

Browse files
committed
enhance: use workspace file revisions to avoid clobbering the database
Signed-off-by: Nick Hale <[email protected]>
1 parent 1a70c22 commit ed9f368

File tree

6 files changed

+86
-43
lines changed

6 files changed

+86
-43
lines changed

database/go.mod

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,23 @@ module obot-platform/database
22

33
go 1.23.3
44

5+
replace github.com/gptscript-ai/go-gptscript => github.com/thedadams/go-gptscript v0.0.0-20250219113618-25d959a071ff
6+
57
require (
6-
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510
7-
github.com/gptscript-ai/go-gptscript v0.9.6-0.20250204133419-744b25b84a61
8+
github.com/gptscript-ai/go-gptscript v0.9.6-0.20250211184209-834896a4bb9f
89
github.com/ncruces/go-sqlite3 v0.20.3
910
)
1011

1112
require (
12-
github.com/getkin/kin-openapi v0.124.0 // indirect
13-
github.com/go-openapi/jsonpointer v0.20.2 // indirect
14-
github.com/go-openapi/swag v0.22.8 // indirect
15-
github.com/invopop/yaml v0.2.0 // indirect
13+
github.com/getkin/kin-openapi v0.129.0 // indirect
14+
github.com/go-openapi/jsonpointer v0.21.0 // indirect
15+
github.com/go-openapi/swag v0.23.0 // indirect
1616
github.com/josharian/intern v1.0.0 // indirect
17-
github.com/mailru/easyjson v0.7.7 // indirect
17+
github.com/mailru/easyjson v0.9.0 // indirect
1818
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 // indirect
1919
github.com/ncruces/julianday v1.0.0 // indirect
20+
github.com/oasdiff/yaml v0.0.0-20241210131133-6b86fb107d80 // indirect
21+
github.com/oasdiff/yaml3 v0.0.0-20241210130736-a94c01f36349 // indirect
2022
github.com/perimeterx/marshmallow v1.1.5 // indirect
2123
github.com/tetratelabs/wazero v1.8.2 // indirect
2224
golang.org/x/sys v0.27.0 // indirect

database/go.sum

Lines changed: 16 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,43 @@
11
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
22
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
3-
github.com/getkin/kin-openapi v0.124.0 h1:VSFNMB9C9rTKBnQ/fpyDU8ytMTr4dWI9QovSKj9kz/M=
4-
github.com/getkin/kin-openapi v0.124.0/go.mod h1:wb1aSZA/iWmorQP9KTAS/phLj/t17B5jT7+fS8ed9NM=
5-
github.com/go-openapi/jsonpointer v0.20.2 h1:mQc3nmndL8ZBzStEo3JYF8wzmeWffDH4VbXz58sAx6Q=
6-
github.com/go-openapi/jsonpointer v0.20.2/go.mod h1:bHen+N0u1KEO3YlmqOjTT9Adn1RfD91Ar825/PuiRVs=
7-
github.com/go-openapi/swag v0.22.8 h1:/9RjDSQ0vbFR+NyjGMkFTsA1IA0fmhKSThmfGZjicbw=
8-
github.com/go-openapi/swag v0.22.8/go.mod h1:6QT22icPLEqAM/z/TChgb4WAveCHF92+2gF0CNjHpPI=
3+
github.com/getkin/kin-openapi v0.129.0 h1:QGYTNcmyP5X0AtFQ2Dkou9DGBJsUETeLH9rFrJXZh30=
4+
github.com/getkin/kin-openapi v0.129.0/go.mod h1:gmWI+b/J45xqpyK5wJmRRZse5wefA5H0RDMK46kLUtI=
5+
github.com/go-openapi/jsonpointer v0.21.0 h1:YgdVicSA9vH5RiHs9TZW5oyafXZFc6+2Vc1rr/O9oNQ=
6+
github.com/go-openapi/jsonpointer v0.21.0/go.mod h1:IUyH9l/+uyhIYQ/PXVA41Rexl+kOkAPDdXEYns6fzUY=
7+
github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+GrE=
8+
github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
99
github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM=
1010
github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
11-
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4=
12-
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
13-
github.com/gptscript-ai/go-gptscript v0.9.6-0.20250204133419-744b25b84a61 h1:QxLjsLOYlsVLPwuRkP0Q8EcAoZT1s8vU2ZBSX0+R6CI=
14-
github.com/gptscript-ai/go-gptscript v0.9.6-0.20250204133419-744b25b84a61/go.mod h1:/FVuLwhz+sIfsWUgUHWKi32qT0i6+IXlUlzs70KKt/Q=
15-
github.com/invopop/yaml v0.2.0 h1:7zky/qH+O0DwAyoobXUqvVBwgBFRxKoQ/3FjcVpjTMY=
16-
github.com/invopop/yaml v0.2.0/go.mod h1:2XuRLgs/ouIrW3XNzuNj7J3Nvu/Dig5MXvbCEdiBN3Q=
1711
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
1812
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
1913
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
2014
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
2115
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
2216
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
23-
github.com/mailru/easyjson v0.7.7 h1:UGYAvKxe3sBsEDzO8ZeWOSlIQfWFlxbzLZe7hwFURr0=
24-
github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc=
17+
github.com/mailru/easyjson v0.9.0 h1:PrnmzHw7262yW8sTBwxi1PdJA3Iw/EKBa8psRf7d9a4=
18+
github.com/mailru/easyjson v0.9.0/go.mod h1:1+xMtQp2MRNVL/V1bOzuP3aP8VNwRW55fQUto+XFtTU=
2519
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826 h1:RWengNIwukTxcDr9M+97sNutRR1RKhG96O6jWumTTnw=
2620
github.com/mohae/deepcopy v0.0.0-20170929034955-c48cc78d4826/go.mod h1:TaXosZuwdSHYgviHp1DAtfrULt5eUgsSMsZf+YrPgl8=
2721
github.com/ncruces/go-sqlite3 v0.20.3 h1:+4G4uEqOeusF0yRuQVUl9fuoEebUolwQSnBUjYBLYIw=
2822
github.com/ncruces/go-sqlite3 v0.20.3/go.mod h1:ojLIAB243gtz68Eo283Ps+k9PyR3dvzS+9/RgId4+AA=
2923
github.com/ncruces/julianday v1.0.0 h1:fH0OKwa7NWvniGQtxdJRxAgkBMolni2BjDHaWTxqt7M=
3024
github.com/ncruces/julianday v1.0.0/go.mod h1:Dusn2KvZrrovOMJuOt0TNXL6tB7U2E8kvza5fFc9G7g=
25+
github.com/oasdiff/yaml v0.0.0-20241210131133-6b86fb107d80 h1:nZspmSkneBbtxU9TopEAE0CY+SBJLxO8LPUlw2vG4pU=
26+
github.com/oasdiff/yaml v0.0.0-20241210131133-6b86fb107d80/go.mod h1:7tFDb+Y51LcDpn26GccuUgQXUk6t0CXZsivKjyimYX8=
27+
github.com/oasdiff/yaml3 v0.0.0-20241210130736-a94c01f36349 h1:t05Ww3DxZutOqbMN+7OIuqDwXbhl32HiZGpLy26BAPc=
28+
github.com/oasdiff/yaml3 v0.0.0-20241210130736-a94c01f36349/go.mod h1:y5+oSEHCPT/DGrS++Wc/479ERge0zTFxaF8PbGKcg2o=
3129
github.com/perimeterx/marshmallow v1.1.5 h1:a2LALqQ1BlHM8PZblsDdidgv1mWi1DgC2UmX50IvK2s=
3230
github.com/perimeterx/marshmallow v1.1.5/go.mod h1:dsXbUu8CRzfYP5a87xpp0xq9S3u0Vchtcl8we9tYaXw=
3331
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
3432
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
3533
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
3634
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
37-
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
38-
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
35+
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
36+
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
3937
github.com/tetratelabs/wazero v1.8.2 h1:yIgLR/b2bN31bjxwXHD8a3d+BogigR952csSDdLYEv4=
4038
github.com/tetratelabs/wazero v1.8.2/go.mod h1:yAI0XTsMBhREkM/YDAK/zNou3GoiAce1P6+rp/wQhjs=
39+
github.com/thedadams/go-gptscript v0.0.0-20250219113618-25d959a071ff h1:mywQbNqkwJEWtNOF6YhUQnqRlccwX7Ipe5tJ6cKZ5bs=
40+
github.com/thedadams/go-gptscript v0.0.0-20250219113618-25d959a071ff/go.mod h1:QvGPZoRuAiA8P5EzPI05kTrs+LZ0ipHywUGsKruSknw=
4141
github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0=
4242
github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
4343
golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s=
@@ -47,6 +47,5 @@ golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4=
4747
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
4848
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
4949
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
50-
gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
5150
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
5251
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

database/main.go

Lines changed: 49 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"errors"
88
"fmt"
99
"os"
10+
"slices"
1011

1112
"obot-platform/database/pkg/cmd"
1213

@@ -24,23 +25,29 @@ func main() {
2425
}
2526
command := os.Args[1]
2627

27-
g, err := gptscript.NewGPTScript()
28+
g, err := gptscript.NewGPTScript(
29+
gptscript.GlobalOptions{
30+
WorkspaceTool: "github.com/thedadams/workspace-provider@open-file-with-revision-id",
31+
},
32+
)
2833
if err != nil {
2934
fmt.Printf("Error creating GPTScript: %v\n", err)
3035
os.Exit(1)
3136
}
3237
defer g.Close()
3338

3439
var (
35-
ctx = context.Background()
36-
dbFileName = "acorn.db"
37-
dbWorkspacePath = "/databases/" + dbFileName
40+
ctx = context.Background()
41+
dbFileName = "acorn.db"
42+
dbWorkspacePath = "/databases/" + dbFileName
43+
revisionID string = "-1"
44+
initialDBData []byte
3845
)
3946

40-
// Read the database file from the workspace
41-
initialDBData, err := g.ReadFileInWorkspace(ctx, dbWorkspacePath, gptscript.ReadFileInWorkspaceOptions{
47+
workspaceDB, err := g.ReadFileWithRevisionInWorkspace(ctx, dbWorkspacePath, gptscript.ReadFileInWorkspaceOptions{
4248
WorkspaceID: workspaceID,
4349
})
50+
4451
var notFoundErr *gptscript.NotFoundInWorkspaceError
4552
if err != nil && !errors.As(err, &notFoundErr) {
4653
fmt.Printf("Error reading DB file: %v\n", err)
@@ -57,11 +64,15 @@ func main() {
5764
defer os.Remove(dbFile.Name())
5865

5966
// Write the data to the temporary file
60-
if initialDBData != nil {
67+
if workspaceDB != nil && workspaceDB.Content != nil {
68+
initialDBData = workspaceDB.Content
6169
if err := os.WriteFile(dbFile.Name(), initialDBData, 0644); err != nil {
6270
fmt.Printf("Error writing to temp file: %v\n", err)
6371
os.Exit(1)
6472
}
73+
if workspaceDB.RevisionID != "" {
74+
revisionID = workspaceDB.RevisionID
75+
}
6576
}
6677

6778
// Run the requested command
@@ -74,7 +85,7 @@ func main() {
7485
case "runDatabaseSQL":
7586
result, err = cmd.RunDatabaseCommand(ctx, dbFile, os.Getenv("SQL"), "-header")
7687
if err == nil {
77-
err = saveWorkspaceDB(ctx, g, dbWorkspacePath, dbFile, initialDBData)
88+
err = saveWorkspaceDB(ctx, g, dbWorkspacePath, revisionID, dbFile, initialDBData)
7889
}
7990
case "databaseContext":
8091
result, err = cmd.DatabaseContext(ctx, dbFile)
@@ -95,6 +106,7 @@ func saveWorkspaceDB(
95106
ctx context.Context,
96107
g *gptscript.GPTScript,
97108
dbWorkspacePath string,
109+
revisionID string,
98110
dbFile *os.File,
99111
initialDBData []byte,
100112
) error {
@@ -108,11 +120,39 @@ func saveWorkspaceDB(
108120
}
109121

110122
if err := g.WriteFileInWorkspace(ctx, dbWorkspacePath, updatedDBData, gptscript.WriteFileInWorkspaceOptions{
111-
WorkspaceID: workspaceID,
123+
WorkspaceID: workspaceID,
124+
CreateRevision: &([]bool{true}[0]),
125+
LatestRevisionID: revisionID,
112126
}); err != nil {
113127
return fmt.Errorf("Error writing updated DB file to workspace: %v", err)
114128
}
115129

130+
// Delete old revisions after successfully writing the new revision
131+
revisions, err := g.ListRevisionsForFileInWorkspace(ctx, dbWorkspacePath, gptscript.ListRevisionsForFileInWorkspaceOptions{
132+
WorkspaceID: workspaceID,
133+
})
134+
if err != nil {
135+
fmt.Fprintf(os.Stderr, "Error listing revisions: %v\n", err)
136+
return nil
137+
}
138+
139+
// Delete all revisions older than the one we just used as LatestRevisionID
140+
lastRevisionIndex := slices.IndexFunc(revisions, func(rev gptscript.FileInfo) bool {
141+
return rev.RevisionID == revisionID
142+
})
143+
144+
if lastRevisionIndex < 0 {
145+
return nil
146+
}
147+
148+
for _, rev := range revisions[:lastRevisionIndex+1] {
149+
if err := g.DeleteRevisionForFileInWorkspace(ctx, dbWorkspacePath, rev.RevisionID, gptscript.DeleteRevisionForFileInWorkspaceOptions{
150+
WorkspaceID: workspaceID,
151+
}); err != nil {
152+
fmt.Fprintf(os.Stderr, "Error deleting revision %s: %v\n", rev.RevisionID, err)
153+
}
154+
}
155+
116156
return nil
117157
}
118158

workspace-files/go.mod

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ module github.com/obot-platform/tools/context
22

33
go 1.23.2
44

5+
replace github.com/gptscript-ai/go-gptscript => github.com/thedadams/go-gptscript v0.0.0-20250213160028-965e8afaa113
6+
57
require github.com/gptscript-ai/go-gptscript v0.9.6-0.20250204133419-744b25b84a61
68

79
require (

workspace-files/go.sum

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@ github.com/go-openapi/swag v0.23.0 h1:vsEVJDUo2hPJ2tu0/Xc+4noaxyEffXNIs3cOULZ+Gr
88
github.com/go-openapi/swag v0.23.0/go.mod h1:esZ8ITTYEsH1V2trKHjAN8Ai7xHb8RV+YSZ577vPjgQ=
99
github.com/go-test/deep v1.0.8 h1:TDsG77qcSprGbC6vTN8OuXp5g+J+b5Pcguhf7Zt61VM=
1010
github.com/go-test/deep v1.0.8/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE=
11-
github.com/gptscript-ai/go-gptscript v0.9.6-0.20250204133419-744b25b84a61 h1:QxLjsLOYlsVLPwuRkP0Q8EcAoZT1s8vU2ZBSX0+R6CI=
12-
github.com/gptscript-ai/go-gptscript v0.9.6-0.20250204133419-744b25b84a61/go.mod h1:/FVuLwhz+sIfsWUgUHWKi32qT0i6+IXlUlzs70KKt/Q=
1311
github.com/josharian/intern v1.0.0 h1:vlS4z54oSdjm0bgjRigI+G1HpF+tI+9rE5LLzOg8HmY=
1412
github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y=
1513
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
@@ -30,8 +28,10 @@ github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRI
3028
github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
3129
github.com/rogpeppe/go-internal v1.12.0 h1:exVL4IDcn6na9z1rAb56Vxr+CgyK3nn3O+epU5NdKM8=
3230
github.com/rogpeppe/go-internal v1.12.0/go.mod h1:E+RYuTGaKKdloAfM02xzb0FW3Paa99yedzYV+kq4uf4=
33-
github.com/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg=
34-
github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
31+
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
32+
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
33+
github.com/thedadams/go-gptscript v0.0.0-20250213160028-965e8afaa113 h1:YH/7QBzjrI4LPyNJG4FQPd5nWBBAHqkFC5WcCsKeUsk=
34+
github.com/thedadams/go-gptscript v0.0.0-20250213160028-965e8afaa113/go.mod h1:QvGPZoRuAiA8P5EzPI05kTrs+LZ0ipHywUGsKruSknw=
3535
github.com/ugorji/go/codec v1.2.7 h1:YPXUKf7fYbp/y8xloBqZOw2qaVggbfwMlI8WM3wZUJ0=
3636
github.com/ugorji/go/codec v1.2.7/go.mod h1:WGN1fab3R1fzQlVQTkfxVtIBhWDRqOviHU95kRgeqEY=
3737
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=

workspace-files/main.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -174,17 +174,17 @@ func read(ctx context.Context, filename string) error {
174174
return err
175175
}
176176

177-
data, err := client.ReadFileInWorkspace(ctx, path.Join(FilesDir, filename))
177+
response, err := client.ReadFileInWorkspace(ctx, path.Join(FilesDir, filename))
178178
if err != nil {
179179
return err
180180
}
181181

182-
if len(data) > MaxFileSize {
182+
if len(response.Content) > MaxFileSize {
183183
return fmt.Errorf("file size exceeds %d bytes", MaxFileSize)
184184
}
185185

186-
if utf8.Valid(data) {
187-
fmt.Println(string(data))
186+
if utf8.Valid(response.Content) {
187+
fmt.Println(string(response.Content))
188188
return nil
189189
}
190190

@@ -206,10 +206,10 @@ func copy(ctx context.Context, filename, toFilename string) error {
206206
return err
207207
}
208208

209-
data, err := client.ReadFileInWorkspace(ctx, path.Join(FilesDir, filename))
209+
response, err := client.ReadFileInWorkspace(ctx, path.Join(FilesDir, filename))
210210
if err != nil {
211211
return err
212212
}
213213

214-
return client.WriteFileInWorkspace(ctx, path.Join(FilesDir, toFilename), data)
214+
return client.WriteFileInWorkspace(ctx, path.Join(FilesDir, toFilename), response.Content)
215215
}

0 commit comments

Comments
 (0)