MCPcopy Create free account
hub / github.com/JordanCoin/codemap / executeBlastRadiusSubcommand

Function executeBlastRadiusSubcommand

blast_radius.go:169–255  ·  view source on GitHub ↗
(args []string)

Source from the content-addressed store, hash-verified

167}
168
169func executeBlastRadiusSubcommand(args []string) int {
170 limits := defaultBlastRadiusLimits()
171 fs := flag.NewFlagSet("blast-radius", flag.ContinueOnError)
172 fs.SetOutput(os.Stderr)
173
174 // Format flags resolve last-wins: passing more than one simply uses the
175 // last one on the command line (matching the original shell wrapper).
176 format := blastRadiusFormatMarkdown
177 chooseFormat := func(f blastRadiusFormat) func(string) error {
178 return func(string) error {
179 format = f
180 return nil
181 }
182 }
183 var help bool
184 ref := fs.String("ref", "main", "Branch/ref to compare against")
185 fs.BoolFunc("json", "Emit a single JSON object", chooseFormat(blastRadiusFormatJSON))
186 fs.BoolFunc("markdown", "Emit Markdown output", chooseFormat(blastRadiusFormatMarkdown))
187 fs.BoolFunc("md", "Emit Markdown output", chooseFormat(blastRadiusFormatMarkdown))
188 fs.BoolFunc("text", "Emit plain text output", chooseFormat(blastRadiusFormatText))
189 fs.BoolVar(&help, "help", false, "Show blast-radius help")
190 fs.BoolVar(&help, "h", false, "Show blast-radius help")
191 fs.IntVar(&limits.MaxTotalChars, "max-total-chars", limits.MaxTotalChars, "Hard cap for markdown/text output")
192 fs.IntVar(&limits.MaxChangedFiles, "max-changed-files", limits.MaxChangedFiles, "Maximum changed files to include")
193 fs.IntVar(&limits.MaxAffected, "max-affected", limits.MaxAffected, "Maximum affected files outside diff")
194 fs.IntVar(&limits.MaxContext, "max-context", limits.MaxContext, "Maximum dependency context entries outside diff")
195 fs.IntVar(&limits.MaxSnippets, "max-snippets", limits.MaxSnippets, "Maximum impact snippets")
196 fs.IntVar(&limits.MaxSnippetsPerChanged, "max-snippets-per-changed", limits.MaxSnippetsPerChanged, "Maximum snippets per changed file")
197 fs.IntVar(&limits.SnippetRadius, "snippet-radius", limits.SnippetRadius, "Lines of context around each snippet match")
198 fs.IntVar(&limits.MaxSnippetChars, "max-snippet-chars", limits.MaxSnippetChars, "Maximum characters per snippet")
199 fs.IntVar(&limits.MaxDiffChars, "max-diff-chars", limits.MaxDiffChars, "Maximum diff section characters")
200 fs.IntVar(&limits.MaxDepsChars, "max-deps-chars", limits.MaxDepsChars, "Maximum dependency section characters")
201 fs.IntVar(&limits.MaxImportersChars, "max-importers-chars", limits.MaxImportersChars, "Maximum importer section characters")
202 fs.IntVar(&limits.MaxImporterFiles, "max-importer-files", limits.MaxImporterFiles, "Maximum changed files to render importer sections for")
203 fs.IntVar(&limits.MaxImportersPerFile, "max-importers-per-file", limits.MaxImportersPerFile, "Maximum importer/import list entries per file in JSON")
204 fs.Usage = func() {
205 printBlastRadiusUsage(fs)
206 }
207
208 root, err := parseBlastRadiusArgs(fs, args)
209 if err != nil {
210 if errors.Is(err, flag.ErrHelp) {
211 return 0
212 }
213 return 2
214 }
215
216 if help {
217 fs.Usage()
218 return 0
219 }
220
221 limits = clampBlastRadiusLimits(limits)
222 absRoot, cleanup, err := resolveBlastRadiusRoot(root)
223 if err != nil {
224 fmt.Fprintf(os.Stderr, "Error preparing root: %v\n", err)
225 return 1
226 }

Callers 1

runBlastRadiusSubcommandFunction · 0.85

Calls 10

defaultBlastRadiusLimitsFunction · 0.85
printBlastRadiusUsageFunction · 0.85
parseBlastRadiusArgsFunction · 0.85
clampBlastRadiusLimitsFunction · 0.85
resolveBlastRadiusRootFunction · 0.85
buildBlastRadiusBundleFunction · 0.85
printAstGrepInstallHintFunction · 0.85
renderBlastRadiusTextFunction · 0.85
StringMethod · 0.45

Tested by

no test coverage detected