MCPcopy Index your code
hub / github.com/idank/explainshell / explain_program

Function explain_program

explainshell/web/views.py:406–448  ·  view source on GitHub ↗
(program, store, distro=None, release=None)

Source from the content-addressed store, hash-verified

404
405
406def explain_program(program, store, distro=None, release=None):
407 mps = store.find_man_page(program, distro=distro, release=release)
408 raw_mp = mps.pop(0)
409 program = raw_mp.name_section
410
411 synopsis = raw_mp.synopsis
412 if not synopsis:
413 synopsis = None
414
415 url = manpage_url(raw_mp.source)
416
417 mp = {
418 "source": os.path.basename(raw_mp.source)[:-3],
419 "section": raw_mp.section,
420 "program": program,
421 "synopsis": synopsis,
422 "options": [render_markdown(o.text) for o in raw_mp.options],
423 "url": url,
424 }
425
426 debug_info = {}
427 if config.DEBUG:
428 for i, o in enumerate(raw_mp.options):
429 debug_info[f"option-{i}"] = {
430 "kind": "option",
431 "short": o.short,
432 "long": o.long,
433 "has_argument": o.has_argument,
434 "positional": o.positional,
435 "prefix": o.prefix,
436 "nested_cmd": o.nested_cmd,
437 "meta": o.meta,
438 }
439
440 suggestions = []
441 for other_mp in mps:
442 d = {
443 "text": other_mp.name_section,
444 "link": f"{other_mp.section}/{other_mp.name}",
445 }
446 suggestions.append(d)
447 logger.info("suggestions: %s", suggestions)
448 return mp, suggestions, raw_mp, debug_info
449
450
451def _make_match(start, end, match, cmd_class, help_class):

Calls 3

render_markdownFunction · 0.90
manpage_urlFunction · 0.85
find_man_pageMethod · 0.45