Skip to content

Commit 2061107

Browse files
authored
Add "Improved command line tool documentation" project idea for GSoC (#903)
1 parent 3ec302d commit 2061107

File tree

1 file changed

+27
-0
lines changed

1 file changed

+27
-0
lines changed

gsoc2025/index.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -303,6 +303,33 @@ Enhance Swift Testing's reporting of test results to the console/terminal. Consi
303303

304304
- [Stuart Montgomery](https://github.com/stmontgomery)
305305

306+
### Improved command line tool documentation
307+
308+
**Project size**: 175 hours (medium)
309+
310+
**Estimated difficulty**: Intermediate
311+
312+
**Recommended skills**
313+
314+
- Basic proficiency in Swift.
315+
316+
**Description**
317+
318+
Swift Argument Parser recently added a [command plugin](https://github.com/apple/swift-argument-parser/pull/694) to generate documentation markup for a command line tool.
319+
This plugin could be improved by providing support for generating separate pages for each command and by leveraging additional markdown syntax to organize command line flags into sections and display possible values and default values.
320+
321+
Beyond the markdown output, this plugin could be further improved by generating a ["symbol graph"](https://github.com/swiftlang/swift-docc-symbolkit/tree/main) that describe each command and its flags, options, and subcommands. By describing the commands' structure, tools like [Swift DocC](https://github.com/swiftlang/swift-docc/tree/main) can further customize the display of command line tool documentation, support links to individual flags, and allow developers to extend or override the documentation for individual flags in ways that isn't overwritten when regenerating the documentation markup from the plugin. If time allows, prototype some enhancement to command line documentation in Swift DocC that leverage the information from the command symbol graph file.
322+
323+
**Expected outcomes/benefits/deliverables**
324+
325+
- A richer markdown output from the plugin.
326+
- Support for generating separate pages for each command.
327+
- Output a supplementary symbol graph file that describe the commands' structure.
328+
329+
**Potential mentors**
330+
331+
- [David Rönnqvist](https://github.com/d-ronnqvist)
332+
306333
### Example project name
307334

308335
**Project size**: N hours

0 commit comments

Comments
 (0)