MCPcopy Create free account
hub / github.com/openclaw/gogcli / runDocsBodyMutation

Function runDocsBodyMutation

internal/cmd/docs_structural.go:95–148  ·  view source on GitHub ↗
(ctx context.Context, kctx *kong.Context, flags *RootFlags, mutation docsBodyMutation)

Source from the content-addressed store, hash-verified

93}
94
95func runDocsBodyMutation(ctx context.Context, kctx *kong.Context, flags *RootFlags, mutation docsBodyMutation) error {
96 docID := normalizeGoogleID(strings.TrimSpace(mutation.docID))
97 if docID == "" {
98 return usage("empty docId")
99 }
100 placement, err := mutation.placement.plan(kctx)
101 if err != nil {
102 return err
103 }
104 payload := mutation.placement.dryRunPayload(placement)
105 payload["documentId"] = docID
106 payload["batch"] = mutation.batch
107 for key, value := range mutation.payload {
108 payload[key] = value
109 }
110 if dryRunErr := dryRunExit(ctx, flags, mutation.action, payload); dryRunErr != nil {
111 return dryRunErr
112 }
113 if batchErr := validateDocsBatchTarget(ctx, flags, mutation.batch, docID); batchErr != nil {
114 return batchErr
115 }
116
117 svc, err := requireDocsService(ctx, flags)
118 if err != nil {
119 return err
120 }
121 batchRevision, err := captureDocsBatchRevision(ctx, svc, mutation.batch, docID)
122 if err != nil {
123 return err
124 }
125 resolved, err := resolveDocsPlacement(ctx, svc, docID, mutation.placement.Tab, placement)
126 if err != nil {
127 return err
128 }
129 if resolved.InTable {
130 return usage(fmt.Sprintf("%s cannot target text inside a table", mutation.action))
131 }
132 requests, err := mutation.build(resolved)
133 if err != nil {
134 return err
135 }
136 applyDocsRequestTarget(requests, docsTargetFromPlacement(resolved.ResolvedPlacement))
137 if queued, queueErr := queueDocsBatchRequests(ctx, flags, mutation.batch, docID, mutation.action, batchRevision, requests, false); queued || queueErr != nil {
138 return queueErr
139 }
140 response, err := svc.Documents.BatchUpdate(docID, &docs.BatchUpdateDocumentRequest{
141 Requests: requests,
142 WriteControl: docsRequiredRevisionWriteControl(resolved.RequiredRevisionID),
143 }).Context(ctx).Do()
144 if err != nil {
145 return fmt.Errorf("%s: %w", mutation.action, err)
146 }
147 return writeDocsBodyMutationResult(ctx, response, resolved, len(requests), mutation.payload)
148}
149
150func writeDocsBodyMutationResult(ctx context.Context, response *docs.BatchUpdateDocumentResponse, resolved docsResolvedPlacement, requestCount int, payload map[string]any) error {
151 documentID := ""

Callers 3

RunMethod · 0.85
RunMethod · 0.85
RunMethod · 0.85

Calls 15

normalizeGoogleIDFunction · 0.85
usageFunction · 0.85
dryRunExitFunction · 0.85
validateDocsBatchTargetFunction · 0.85
requireDocsServiceFunction · 0.85
captureDocsBatchRevisionFunction · 0.85
resolveDocsPlacementFunction · 0.85
applyDocsRequestTargetFunction · 0.85
docsTargetFromPlacementFunction · 0.85
queueDocsBatchRequestsFunction · 0.85

Tested by

no test coverage detected