Skip to content

Commit 30300a3

Browse files
committed
Read with revision updates
Signed-off-by: Donnie Adams <[email protected]>
1 parent 03e013e commit 30300a3

File tree

2 files changed

+34
-3
lines changed

2 files changed

+34
-3
lines changed

pkg/sdkserver/routes.go

+1
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ func (s *server) addRoutes(mux *http.ServeMux) {
7979
mux.HandleFunc("POST /workspaces/write-file", s.writeFileInWorkspace)
8080
mux.HandleFunc("POST /workspaces/delete-file", s.removeFileInWorkspace)
8181
mux.HandleFunc("POST /workspaces/read-file", s.readFileInWorkspace)
82+
mux.HandleFunc("POST /workspaces/read-file-with-revision", s.readFileWithRevisionInWorkspace)
8283
mux.HandleFunc("POST /workspaces/stat-file", s.statFileInWorkspace)
8384
mux.HandleFunc("POST /workspaces/list-revisions", s.listRevisions)
8485
mux.HandleFunc("POST /workspaces/get-revision", s.getRevisionForFileInWorkspace)

pkg/sdkserver/workspaces.go

+33-3
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,6 @@ func (s *server) removeFileInWorkspace(w http.ResponseWriter, r *http.Request) {
260260
type readFileInWorkspaceRequest struct {
261261
workspaceCommonRequest `json:",inline"`
262262
FilePath string `json:"filePath"`
263-
WithLatestRevisionID bool `json:"withLatestRevisionID"`
264263
}
265264

266265
func (s *server) readFileInWorkspace(w http.ResponseWriter, r *http.Request) {
@@ -282,8 +281,39 @@ func (s *server) readFileInWorkspace(w http.ResponseWriter, r *http.Request) {
282281
prg,
283282
s.getServerToolsEnv(reqObject.Env),
284283
fmt.Sprintf(
285-
`{"workspace_id": "%s", "file_path": "%s", "with_latest_revision_id": "%v"}`,
286-
reqObject.ID, reqObject.FilePath, reqObject.WithLatestRevisionID,
284+
`{"workspace_id": "%s", "file_path": "%s"}`,
285+
reqObject.ID, reqObject.FilePath,
286+
),
287+
)
288+
if err != nil {
289+
writeError(logger, w, http.StatusInternalServerError, fmt.Errorf("failed to run program: %w", err))
290+
return
291+
}
292+
293+
writeResponse(logger, w, map[string]any{"stdout": out})
294+
}
295+
296+
func (s *server) readFileWithRevisionInWorkspace(w http.ResponseWriter, r *http.Request) {
297+
logger := gcontext.GetLogger(r.Context())
298+
var reqObject readFileInWorkspaceRequest
299+
if err := json.NewDecoder(r.Body).Decode(&reqObject); err != nil {
300+
writeError(logger, w, http.StatusBadRequest, fmt.Errorf("invalid request body: %w", err))
301+
return
302+
}
303+
304+
prg, err := loader.Program(r.Context(), s.getWorkspaceTool(reqObject.workspaceCommonRequest), "Read File With Revision In Workspace", loader.Options{Cache: s.client.Cache})
305+
if err != nil {
306+
writeError(logger, w, http.StatusInternalServerError, fmt.Errorf("failed to load program: %w", err))
307+
return
308+
}
309+
310+
out, err := s.client.Run(
311+
r.Context(),
312+
prg,
313+
s.getServerToolsEnv(reqObject.Env),
314+
fmt.Sprintf(
315+
`{"workspace_id": "%s", "file_path": "%s", "with_latest_revision_id": "true"}`,
316+
reqObject.ID, reqObject.FilePath,
287317
),
288318
)
289319
if err != nil {

0 commit comments

Comments
 (0)