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

Method Run

internal/cmd/sheets_format.go:22–122  ·  view source on GitHub ↗
(ctx context.Context, flags *RootFlags)

Source from the content-addressed store, hash-verified

20}
21
22func (c *SheetsFormatCmd) Run(ctx context.Context, flags *RootFlags) error {
23 u := ui.FromContext(ctx)
24 spreadsheetID := normalizeGoogleID(strings.TrimSpace(c.SpreadsheetID))
25 rangeSpec := cleanRange(c.Range)
26 if spreadsheetID == "" {
27 return usage("empty spreadsheetId")
28 }
29 if strings.TrimSpace(rangeSpec) == "" {
30 return usage("empty range")
31 }
32 if strings.TrimSpace(c.FormatJSON) == "" {
33 return usage("provide format JSON via --format-json")
34 }
35
36 var format sheets.CellFormat
37 b, err := resolveInlineOrFileBytes(c.FormatJSON, stdinReader(ctx))
38 if err != nil {
39 return usagef("read --format-json: %v", err)
40 }
41 if err = sheetsformat.Decode(b, &format); err != nil {
42 return usagef("invalid format JSON: %v", err)
43 }
44
45 formatFields := strings.TrimSpace(c.FormatFields)
46 var formatJSONPaths []string
47 if formatFields == "" {
48 var inferErr error
49 formatFields, formatJSONPaths, inferErr = sheetsformat.InferMask(b)
50 if inferErr != nil {
51 return sheetsFormatInputError(inferErr)
52 }
53 } else {
54 if sheetsformat.HasBordersTypo(formatFields) {
55 return usage(`invalid --format-fields: found "boarders"; use "borders"`)
56 }
57 normalizedFields, paths := sheetsformat.NormalizeMask(formatFields)
58 if normalizedFields != "" {
59 formatFields = normalizedFields
60 }
61 formatJSONPaths = paths
62 }
63 if err = sheetsformat.ApplyForceSendFields(&format, formatJSONPaths); err != nil {
64 return usage(err.Error())
65 }
66
67 if dryRunErr := dryRunExit(ctx, flags, "sheets.format", map[string]any{
68 "spreadsheet_id": spreadsheetID,
69 "range": rangeSpec,
70 "fields": formatFields,
71 "format": format,
72 }); dryRunErr != nil {
73 return dryRunErr
74 }
75
76 account, err := requireAccount(flags)
77 if err != nil {
78 return err
79 }

Callers

nothing calls this directly

Calls 15

FromContextFunction · 0.92
DecodeFunction · 0.92
InferMaskFunction · 0.92
HasBordersTypoFunction · 0.92
NormalizeMaskFunction · 0.92
ApplyForceSendFieldsFunction · 0.92
IsJSONFunction · 0.92
WriteJSONFunction · 0.92
normalizeGoogleIDFunction · 0.85
cleanRangeFunction · 0.85
usageFunction · 0.85
resolveInlineOrFileBytesFunction · 0.85

Tested by

no test coverage detected