Skip to content

Revise documentation module structure and workflow with automated man page generation #572

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 10 commits into
base: main
Choose a base branch
from

Conversation

Tearran
Copy link
Member

@Tearran Tearran commented Apr 30, 2025

Reformatted Document to output compatible man page with pandoc.

Reformatted Document to output man page with pandoc.
Copy link
Contributor

coderabbitai bot commented Apr 30, 2025

Walkthrough

The GitHub Actions workflow for documentation was updated by adding a step to install the pandoc package on the runner. The DOCUMENTATION.md file was updated to remove references to OpenMediaVault and Filebrowser and to change IP addresses from "10.1.0.118" to "10.1.0.29" in command examples. The generate_readme function in tools/modules/docs/config.docs.sh was extensively refactored to produce a formal Markdown documentation file with YAML front matter and man-page style sections, ensure necessary directories exist, and attempt conversion to a compressed man page using pandoc with success/failure reporting. The see_use function's usage message and help formatting were improved. No changes were made to exported or public entities; all modifications relate to documentation content, formatting, generation, and workflow.

Suggested labels

ready to merge

Tip

⚡️ Faster reviews with caching
  • CodeRabbit now supports caching for code and dependencies, helping speed up reviews. This means quicker feedback, reduced wait times, and a smoother review experience overall. Cached data is encrypted and stored securely. This feature will be automatically enabled for all accounts on May 16th. To opt out, configure Review - Disable Cache at either the organization or repository level. If you prefer to disable all data retention across your organization, simply turn off the Data Retention setting under your Organization Settings.

Enjoy the performance boost—your workflow just got faster.

✨ Finishing Touches
  • 📝 Generate Docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@github-actions github-actions bot added size/medium PR with more then 50 and less then 250 lines 05 Milestone: Second quarter release labels Apr 30, 2025
@github-actions github-actions bot added size/large PR with 250 lines or more size/medium PR with more then 50 and less then 250 lines Documentation Documentation changes or additions and removed size/medium PR with more then 50 and less then 250 lines labels Apr 30, 2025
@github-actions github-actions bot added GitHub Actions GitHub Actions code GitHub GitHub-related changes like labels, templates, ... and removed size/medium PR with more then 50 and less then 250 lines labels Apr 30, 2025
@Tearran Tearran changed the title Update doc module to include Man page Update doc module @coderabbitai Apr 30, 2025
@Tearran Tearran marked this pull request as ready for review April 30, 2025 23:44
@coderabbitai coderabbitai bot changed the title Update doc module @coderabbitai Update doc module Revise documentation structure and workflow with automated man page generation Apr 30, 2025
@coderabbitai coderabbitai bot added the Ready to merge Reviewed, tested and ready for merge label Apr 30, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🧹 Nitpick comments (7)
.github/workflows/docs.yml (2)

19-19: Remove trailing whitespace
YAMLlint spots trailing spaces on this line. Removing them ensures cleaner diffs and avoids lint failures.

🧰 Tools
🪛 YAMLlint (1.35.1)

[error] 19-19: trailing spaces

(trailing-spaces)


20-21: Use official Pandoc action or cache APT
Consider using a dedicated GitHub Action for Pandoc (e.g., mikeal/pandoc-action@v2) for more reliable installs, or leverage actions/cache on /var/cache/apt/archives to speed up subsequent workflow runs.

DOCUMENTATION.md (4)

7-7: Add alt text to image for accessibility
Images in Markdown should include alt text. For example:

<img src="https://raw.githubusercontent.com/armbian/configng/main/share/icons/hicolor/scalable/configng-tux.svg" alt="Armbian Config Logo">
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

7-7: Images should have alternate text (alt text)
null

(MD045, no-alt-text)


73-77: Specify language for fenced code blocks
Markdown code fences should declare a language for syntax highlighting. For example:

- ```
+ ```bash
  $(see_cmd_list)
- ```
+ ```
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

73-73: Hard tabs
Column: 1

(MD010, no-hard-tabs)


74-74: Hard tabs
Column: 1

(MD010, no-hard-tabs)


75-75: Hard tabs
Column: 1

(MD010, no-hard-tabs)


76-76: Hard tabs
Column: 1

(MD010, no-hard-tabs)


77-77: Hard tabs
Column: 1

(MD010, no-hard-tabs)


80-82: Specify language for fenced code blocks
Likewise, add a language identifier to this fence:

- ```
+ ```bash
  $(see_use)
- ```
+ ```
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

80-80: Hard tabs
Column: 1

(MD010, no-hard-tabs)


81-81: Hard tabs
Column: 1

(MD010, no-hard-tabs)


82-82: Hard tabs
Column: 1

(MD010, no-hard-tabs)


66-82: Replace hard tabs with spaces
Multiple lines use tab characters for indentation in command lists, which may render inconsistently. Convert tabs to spaces (e.g., 2 or 4 spaces) for reliable Markdown formatting.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

66-66: Hard tabs
Column: 1

(MD010, no-hard-tabs)


67-67: Hard tabs
Column: 1

(MD010, no-hard-tabs)


69-69: Hard tabs
Column: 1

(MD010, no-hard-tabs)


70-70: Hard tabs
Column: 1

(MD010, no-hard-tabs)


71-71: Hard tabs
Column: 1

(MD010, no-hard-tabs)


72-72: Hard tabs
Column: 1

(MD010, no-hard-tabs)


73-73: Hard tabs
Column: 1

(MD010, no-hard-tabs)


74-74: Hard tabs
Column: 1

(MD010, no-hard-tabs)


75-75: Hard tabs
Column: 1

(MD010, no-hard-tabs)


76-76: Hard tabs
Column: 1

(MD010, no-hard-tabs)


77-77: Hard tabs
Column: 1

(MD010, no-hard-tabs)


78-78: Hard tabs
Column: 1

(MD010, no-hard-tabs)


79-79: Hard tabs
Column: 1

(MD010, no-hard-tabs)


80-80: Hard tabs
Column: 1

(MD010, no-hard-tabs)


81-81: Hard tabs
Column: 1

(MD010, no-hard-tabs)


82-82: Hard tabs
Column: 1

(MD010, no-hard-tabs)

tools/modules/docs/config.docs.sh (1)

19-20: Avoid masking return values with local assignment
SC2155 warns that assigning and declaring a local variable in one line can mask return codes. For better error handling, split the declaration:

-local current_date=$(date)
+local current_date
+current_date=$(date)
🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 19-19: Declare and assign separately to avoid masking return values.

(SC2155)

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 1120218 and 39c1373.

⛔ Files ignored due to path filters (1)
  • share/man1/armbian-config.1.gz is excluded by !**/*.gz
📒 Files selected for processing (3)
  • .github/workflows/docs.yml (1 hunks)
  • DOCUMENTATION.md (8 hunks)
  • tools/modules/docs/config.docs.sh (2 hunks)
🧰 Additional context used
🪛 YAMLlint (1.35.1)
.github/workflows/docs.yml

[error] 19-19: trailing spaces

(trailing-spaces)

🪛 Shellcheck (0.10.0)
tools/modules/docs/config.docs.sh

[warning] 19-19: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 22-22: script_dir is referenced but not assigned.

(SC2154)

🪛 markdownlint-cli2 (0.17.2)
DOCUMENTATION.md

7-7: Images should have alternate text (alt text)
null

(MD045, no-alt-text)


42-42: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)


66-66: Hard tabs
Column: 1

(MD010, no-hard-tabs)


82-82: Hard tabs
Column: 1

(MD010, no-hard-tabs)


127-127: Hard tabs
Column: 1

(MD010, no-hard-tabs)


128-128: Hard tabs
Column: 1

(MD010, no-hard-tabs)


129-129: Hard tabs
Column: 1

(MD010, no-hard-tabs)


130-130: Hard tabs
Column: 1

(MD010, no-hard-tabs)


131-131: Hard tabs
Column: 1

(MD010, no-hard-tabs)


132-132: Hard tabs
Column: 1

(MD010, no-hard-tabs)


133-133: Hard tabs
Column: 1

(MD010, no-hard-tabs)


134-134: Hard tabs
Column: 1

(MD010, no-hard-tabs)


135-135: Hard tabs
Column: 1

(MD010, no-hard-tabs)


136-136: Hard tabs
Column: 1

(MD010, no-hard-tabs)


137-137: Hard tabs
Column: 1

(MD010, no-hard-tabs)


139-139: Hard tabs
Column: 1

(MD010, no-hard-tabs)


140-140: Hard tabs
Column: 1

(MD010, no-hard-tabs)


141-141: Hard tabs
Column: 1

(MD010, no-hard-tabs)


142-142: Hard tabs
Column: 1

(MD010, no-hard-tabs)


143-143: Hard tabs
Column: 1

(MD010, no-hard-tabs)


144-144: Hard tabs
Column: 1

(MD010, no-hard-tabs)


145-145: Hard tabs
Column: 1

(MD010, no-hard-tabs)


146-146: Hard tabs
Column: 1

(MD010, no-hard-tabs)


147-147: Hard tabs
Column: 1

(MD010, no-hard-tabs)


148-148: Hard tabs
Column: 1

(MD010, no-hard-tabs)


150-150: Hard tabs
Column: 1

(MD010, no-hard-tabs)


151-151: Hard tabs
Column: 1

(MD010, no-hard-tabs)


152-152: Hard tabs
Column: 1

(MD010, no-hard-tabs)


154-154: Hard tabs
Column: 1

(MD010, no-hard-tabs)


155-155: Hard tabs
Column: 1

(MD010, no-hard-tabs)


156-156: Hard tabs
Column: 1

(MD010, no-hard-tabs)


158-158: Hard tabs
Column: 1

(MD010, no-hard-tabs)


159-159: Hard tabs
Column: 1

(MD010, no-hard-tabs)


160-160: Hard tabs
Column: 1

(MD010, no-hard-tabs)


162-162: Hard tabs
Column: 1

(MD010, no-hard-tabs)


163-163: Hard tabs
Column: 1

(MD010, no-hard-tabs)


164-164: Hard tabs
Column: 1

(MD010, no-hard-tabs)


165-165: Hard tabs
Column: 1

(MD010, no-hard-tabs)


166-166: Hard tabs
Column: 1

(MD010, no-hard-tabs)


167-167: Hard tabs
Column: 1

(MD010, no-hard-tabs)


168-168: Hard tabs
Column: 1

(MD010, no-hard-tabs)


169-169: Hard tabs
Column: 1

(MD010, no-hard-tabs)


170-170: Hard tabs
Column: 1

(MD010, no-hard-tabs)


171-171: Hard tabs
Column: 1

(MD010, no-hard-tabs)


172-172: Hard tabs
Column: 1

(MD010, no-hard-tabs)


173-173: Hard tabs
Column: 1

(MD010, no-hard-tabs)


174-174: Hard tabs
Column: 1

(MD010, no-hard-tabs)


175-175: Hard tabs
Column: 1

(MD010, no-hard-tabs)


176-176: Hard tabs
Column: 1

(MD010, no-hard-tabs)


177-177: Hard tabs
Column: 1

(MD010, no-hard-tabs)


178-178: Hard tabs
Column: 1

(MD010, no-hard-tabs)


179-179: Hard tabs
Column: 1

(MD010, no-hard-tabs)


180-180: Hard tabs
Column: 1

(MD010, no-hard-tabs)


181-181: Hard tabs
Column: 1

(MD010, no-hard-tabs)


182-182: Hard tabs
Column: 1

(MD010, no-hard-tabs)


183-183: Hard tabs
Column: 1

(MD010, no-hard-tabs)


184-184: Hard tabs
Column: 1

(MD010, no-hard-tabs)


185-185: Hard tabs
Column: 1

(MD010, no-hard-tabs)


186-186: Hard tabs
Column: 1

(MD010, no-hard-tabs)


187-187: Hard tabs
Column: 1

(MD010, no-hard-tabs)


188-188: Hard tabs
Column: 1

(MD010, no-hard-tabs)


189-189: Hard tabs
Column: 1

(MD010, no-hard-tabs)


190-190: Hard tabs
Column: 1

(MD010, no-hard-tabs)


191-191: Hard tabs
Column: 1

(MD010, no-hard-tabs)


192-192: Hard tabs
Column: 1

(MD010, no-hard-tabs)


193-193: Hard tabs
Column: 1

(MD010, no-hard-tabs)


194-194: Hard tabs
Column: 1

(MD010, no-hard-tabs)


195-195: Hard tabs
Column: 1

(MD010, no-hard-tabs)


196-196: Hard tabs
Column: 1

(MD010, no-hard-tabs)


197-197: Hard tabs
Column: 1

(MD010, no-hard-tabs)


199-199: Hard tabs
Column: 1

(MD010, no-hard-tabs)


200-200: Hard tabs
Column: 1

(MD010, no-hard-tabs)


201-201: Hard tabs
Column: 1

(MD010, no-hard-tabs)


202-202: Hard tabs
Column: 1

(MD010, no-hard-tabs)


203-203: Hard tabs
Column: 1

(MD010, no-hard-tabs)


204-204: Hard tabs
Column: 1

(MD010, no-hard-tabs)


205-205: Hard tabs
Column: 1

(MD010, no-hard-tabs)


206-206: Hard tabs
Column: 1

(MD010, no-hard-tabs)


207-207: Hard tabs
Column: 1

(MD010, no-hard-tabs)


208-208: Hard tabs
Column: 1

(MD010, no-hard-tabs)


209-209: Hard tabs
Column: 1

(MD010, no-hard-tabs)


224-224: Hard tabs
Column: 1

(MD010, no-hard-tabs)


225-225: Hard tabs
Column: 1

(MD010, no-hard-tabs)


227-227: Hard tabs
Column: 1

(MD010, no-hard-tabs)


228-228: Hard tabs
Column: 1

(MD010, no-hard-tabs)


229-229: Hard tabs
Column: 1

(MD010, no-hard-tabs)


230-230: Hard tabs
Column: 1

(MD010, no-hard-tabs)


231-231: Hard tabs
Column: 1

(MD010, no-hard-tabs)


232-232: Hard tabs
Column: 1

(MD010, no-hard-tabs)


233-233: Hard tabs
Column: 1

(MD010, no-hard-tabs)


234-234: Hard tabs
Column: 1

(MD010, no-hard-tabs)


235-235: Hard tabs
Column: 1

(MD010, no-hard-tabs)


236-236: Hard tabs
Column: 1

(MD010, no-hard-tabs)


237-237: Hard tabs
Column: 1

(MD010, no-hard-tabs)


238-238: Hard tabs
Column: 1

(MD010, no-hard-tabs)


239-239: Hard tabs
Column: 1

(MD010, no-hard-tabs)


240-240: Hard tabs
Column: 1

(MD010, no-hard-tabs)


241-241: Hard tabs
Column: 1

(MD010, no-hard-tabs)


242-242: Hard tabs
Column: 1

(MD010, no-hard-tabs)


243-243: Hard tabs
Column: 1

(MD010, no-hard-tabs)


244-244: Hard tabs
Column: 1

(MD010, no-hard-tabs)


245-245: Hard tabs
Column: 1

(MD010, no-hard-tabs)


246-246: Hard tabs
Column: 1

(MD010, no-hard-tabs)


247-247: Hard tabs
Column: 1

(MD010, no-hard-tabs)


249-249: Hard tabs
Column: 1

(MD010, no-hard-tabs)


250-250: Hard tabs
Column: 1

(MD010, no-hard-tabs)


251-251: Hard tabs
Column: 1

(MD010, no-hard-tabs)


252-252: Hard tabs
Column: 1

(MD010, no-hard-tabs)


253-253: Hard tabs
Column: 1

(MD010, no-hard-tabs)


254-254: Hard tabs
Column: 1

(MD010, no-hard-tabs)


255-255: Hard tabs
Column: 1

(MD010, no-hard-tabs)


256-256: Hard tabs
Column: 1

(MD010, no-hard-tabs)


257-257: Hard tabs
Column: 1

(MD010, no-hard-tabs)


258-258: Hard tabs
Column: 1

(MD010, no-hard-tabs)


259-259: Hard tabs
Column: 1

(MD010, no-hard-tabs)


260-260: Hard tabs
Column: 1

(MD010, no-hard-tabs)


261-261: Hard tabs
Column: 1

(MD010, no-hard-tabs)


262-262: Hard tabs
Column: 1

(MD010, no-hard-tabs)


263-263: Hard tabs
Column: 1

(MD010, no-hard-tabs)


265-265: Hard tabs
Column: 1

(MD010, no-hard-tabs)


266-266: Hard tabs
Column: 1

(MD010, no-hard-tabs)


267-267: Hard tabs
Column: 1

(MD010, no-hard-tabs)


268-268: Hard tabs
Column: 1

(MD010, no-hard-tabs)


269-269: Hard tabs
Column: 1

(MD010, no-hard-tabs)


270-270: Hard tabs
Column: 1

(MD010, no-hard-tabs)


271-271: Hard tabs
Column: 1

(MD010, no-hard-tabs)


272-272: Hard tabs
Column: 1

(MD010, no-hard-tabs)


273-273: Hard tabs
Column: 1

(MD010, no-hard-tabs)


275-275: Hard tabs
Column: 1

(MD010, no-hard-tabs)


276-276: Hard tabs
Column: 1

(MD010, no-hard-tabs)


296-296: Fenced code blocks should have a language specified
null

(MD040, fenced-code-language)


300-300: Hard tabs
Column: 1

(MD010, no-hard-tabs)


303-303: Hard tabs
Column: 1

(MD010, no-hard-tabs)


306-306: Hard tabs
Column: 1

(MD010, no-hard-tabs)


309-309: Hard tabs
Column: 1

(MD010, no-hard-tabs)


312-312: Hard tabs
Column: 1

(MD010, no-hard-tabs)


315-315: Hard tabs
Column: 1

(MD010, no-hard-tabs)


318-318: Hard tabs
Column: 1

(MD010, no-hard-tabs)


321-321: Hard tabs
Column: 1

(MD010, no-hard-tabs)


324-324: Hard tabs
Column: 1

(MD010, no-hard-tabs)


327-327: Hard tabs
Column: 1

(MD010, no-hard-tabs)


330-330: Hard tabs
Column: 1

(MD010, no-hard-tabs)


333-333: Hard tabs
Column: 1

(MD010, no-hard-tabs)


336-336: Hard tabs
Column: 1

(MD010, no-hard-tabs)


339-339: Hard tabs
Column: 1

(MD010, no-hard-tabs)


342-342: Hard tabs
Column: 1

(MD010, no-hard-tabs)


345-345: Hard tabs
Column: 1

(MD010, no-hard-tabs)


348-348: Hard tabs
Column: 1

(MD010, no-hard-tabs)


351-351: Hard tabs
Column: 1

(MD010, no-hard-tabs)


354-354: Hard tabs
Column: 1

(MD010, no-hard-tabs)


357-357: Hard tabs
Column: 1

(MD010, no-hard-tabs)


360-360: Hard tabs
Column: 1

(MD010, no-hard-tabs)


363-363: Hard tabs
Column: 1

(MD010, no-hard-tabs)


366-366: Hard tabs
Column: 1

(MD010, no-hard-tabs)


369-369: Hard tabs
Column: 1

(MD010, no-hard-tabs)


372-372: Hard tabs
Column: 1

(MD010, no-hard-tabs)


375-375: Hard tabs
Column: 1

(MD010, no-hard-tabs)


378-378: Hard tabs
Column: 1

(MD010, no-hard-tabs)


381-381: Hard tabs
Column: 1

(MD010, no-hard-tabs)


384-384: Hard tabs
Column: 1

(MD010, no-hard-tabs)


387-387: Hard tabs
Column: 1

(MD010, no-hard-tabs)


390-390: Hard tabs
Column: 1

(MD010, no-hard-tabs)


393-393: Hard tabs
Column: 1

(MD010, no-hard-tabs)


396-396: Hard tabs
Column: 1

(MD010, no-hard-tabs)


399-399: Hard tabs
Column: 1

(MD010, no-hard-tabs)


402-402: Hard tabs
Column: 1

(MD010, no-hard-tabs)


405-405: Hard tabs
Column: 1

(MD010, no-hard-tabs)


408-408: Hard tabs
Column: 1

(MD010, no-hard-tabs)


411-411: Hard tabs
Column: 1

(MD010, no-hard-tabs)


414-414: Hard tabs
Column: 1

(MD010, no-hard-tabs)


417-417: Hard tabs
Column: 1

(MD010, no-hard-tabs)


420-420: Hard tabs
Column: 1

(MD010, no-hard-tabs)


423-423: Hard tabs
Column: 1

(MD010, no-hard-tabs)


426-426: Hard tabs
Column: 1

(MD010, no-hard-tabs)


429-429: Hard tabs
Column: 1

(MD010, no-hard-tabs)


432-432: Hard tabs
Column: 1

(MD010, no-hard-tabs)


435-435: Hard tabs
Column: 1

(MD010, no-hard-tabs)


438-438: Hard tabs
Column: 1

(MD010, no-hard-tabs)


441-441: Hard tabs
Column: 1

(MD010, no-hard-tabs)


444-444: Hard tabs
Column: 1

(MD010, no-hard-tabs)


447-447: Hard tabs
Column: 1

(MD010, no-hard-tabs)


450-450: Hard tabs
Column: 1

(MD010, no-hard-tabs)


453-453: Hard tabs
Column: 1

(MD010, no-hard-tabs)


456-456: Hard tabs
Column: 1

(MD010, no-hard-tabs)


459-459: Hard tabs
Column: 1

(MD010, no-hard-tabs)


462-462: Hard tabs
Column: 1

(MD010, no-hard-tabs)


465-465: Hard tabs
Column: 1

(MD010, no-hard-tabs)


468-468: Hard tabs
Column: 1

(MD010, no-hard-tabs)


471-471: Hard tabs
Column: 1

(MD010, no-hard-tabs)


474-474: Hard tabs
Column: 1

(MD010, no-hard-tabs)


477-477: Hard tabs
Column: 1

(MD010, no-hard-tabs)


480-480: Hard tabs
Column: 1

(MD010, no-hard-tabs)


483-483: Hard tabs
Column: 1

(MD010, no-hard-tabs)


486-486: Hard tabs
Column: 1

(MD010, no-hard-tabs)


489-489: Hard tabs
Column: 1

(MD010, no-hard-tabs)


492-492: Hard tabs
Column: 1

(MD010, no-hard-tabs)


495-495: Hard tabs
Column: 1

(MD010, no-hard-tabs)


498-498: Hard tabs
Column: 1

(MD010, no-hard-tabs)


501-501: Hard tabs
Column: 1

(MD010, no-hard-tabs)


504-504: Hard tabs
Column: 1

(MD010, no-hard-tabs)


507-507: Hard tabs
Column: 1

(MD010, no-hard-tabs)


510-510: Hard tabs
Column: 1

(MD010, no-hard-tabs)


513-513: Hard tabs
Column: 1

(MD010, no-hard-tabs)


516-516: Hard tabs
Column: 1

(MD010, no-hard-tabs)


519-519: Hard tabs
Column: 1

(MD010, no-hard-tabs)


522-522: Hard tabs
Column: 1

(MD010, no-hard-tabs)


525-525: Hard tabs
Column: 1

(MD010, no-hard-tabs)


528-528: Hard tabs
Column: 1

(MD010, no-hard-tabs)


531-531: Hard tabs
Column: 1

(MD010, no-hard-tabs)


534-534: Hard tabs
Column: 1

(MD010, no-hard-tabs)


537-537: Hard tabs
Column: 1

(MD010, no-hard-tabs)


540-540: Hard tabs
Column: 1

(MD010, no-hard-tabs)


543-543: Hard tabs
Column: 1

(MD010, no-hard-tabs)


546-546: Hard tabs
Column: 1

(MD010, no-hard-tabs)


549-549: Hard tabs
Column: 1

(MD010, no-hard-tabs)


552-552: Hard tabs
Column: 1

(MD010, no-hard-tabs)


555-555: Hard tabs
Column: 1

(MD010, no-hard-tabs)


558-558: Hard tabs
Column: 1

(MD010, no-hard-tabs)


561-561: Hard tabs
Column: 1

(MD010, no-hard-tabs)


564-564: Hard tabs
Column: 1

(MD010, no-hard-tabs)


567-567: Hard tabs
Column: 1

(MD010, no-hard-tabs)


570-570: Hard tabs
Column: 1

(MD010, no-hard-tabs)


573-573: Hard tabs
Column: 1

(MD010, no-hard-tabs)


576-576: Hard tabs
Column: 1

(MD010, no-hard-tabs)


579-579: Hard tabs
Column: 1

(MD010, no-hard-tabs)


582-582: Hard tabs
Column: 1

(MD010, no-hard-tabs)


585-585: Hard tabs
Column: 1

(MD010, no-hard-tabs)


588-588: Hard tabs
Column: 1

(MD010, no-hard-tabs)


591-591: Hard tabs
Column: 1

(MD010, no-hard-tabs)


594-594: Hard tabs
Column: 1

(MD010, no-hard-tabs)


597-597: Hard tabs
Column: 1

(MD010, no-hard-tabs)


600-600: Hard tabs
Column: 1

(MD010, no-hard-tabs)


603-603: Hard tabs
Column: 1

(MD010, no-hard-tabs)


606-606: Hard tabs
Column: 1

(MD010, no-hard-tabs)


609-609: Hard tabs
Column: 1

(MD010, no-hard-tabs)


612-612: Hard tabs
Column: 1

(MD010, no-hard-tabs)


615-615: Hard tabs
Column: 1

(MD010, no-hard-tabs)


618-618: Hard tabs
Column: 1

(MD010, no-hard-tabs)


621-621: Hard tabs
Column: 1

(MD010, no-hard-tabs)


624-624: Hard tabs
Column: 1

(MD010, no-hard-tabs)


627-627: Hard tabs
Column: 1

(MD010, no-hard-tabs)


630-630: Hard tabs
Column: 1

(MD010, no-hard-tabs)


633-633: Hard tabs
Column: 1

(MD010, no-hard-tabs)


636-636: Hard tabs
Column: 1

(MD010, no-hard-tabs)


639-639: Hard tabs
Column: 1

(MD010, no-hard-tabs)


642-642: Hard tabs
Column: 1

(MD010, no-hard-tabs)


645-645: Hard tabs
Column: 1

(MD010, no-hard-tabs)


648-648: Hard tabs
Column: 1

(MD010, no-hard-tabs)


651-651: Hard tabs
Column: 1

(MD010, no-hard-tabs)


654-654: Hard tabs
Column: 1

(MD010, no-hard-tabs)


657-657: Hard tabs
Column: 1

(MD010, no-hard-tabs)


660-660: Hard tabs
Column: 1

(MD010, no-hard-tabs)


663-663: Hard tabs
Column: 1

(MD010, no-hard-tabs)


666-666: Hard tabs
Column: 1

(MD010, no-hard-tabs)


669-669: Hard tabs
Column: 1

(MD010, no-hard-tabs)


672-672: Hard tabs
Column: 1

(MD010, no-hard-tabs)


675-675: Hard tabs
Column: 1

(MD010, no-hard-tabs)


678-678: Hard tabs
Column: 1

(MD010, no-hard-tabs)


681-681: Hard tabs
Column: 1

(MD010, no-hard-tabs)


684-684: Hard tabs
Column: 1

(MD010, no-hard-tabs)


687-687: Hard tabs
Column: 1

(MD010, no-hard-tabs)


690-690: Hard tabs
Column: 1

(MD010, no-hard-tabs)


693-693: Hard tabs
Column: 1

(MD010, no-hard-tabs)


696-696: Hard tabs
Column: 1

(MD010, no-hard-tabs)


699-699: Hard tabs
Column: 1

(MD010, no-hard-tabs)


702-702: Hard tabs
Column: 1

(MD010, no-hard-tabs)


705-705: Hard tabs
Column: 1

(MD010, no-hard-tabs)


708-708: Hard tabs
Column: 1

(MD010, no-hard-tabs)


711-711: Hard tabs
Column: 1

(MD010, no-hard-tabs)


714-714: Hard tabs
Column: 1

(MD010, no-hard-tabs)

🔇 Additional comments (1)
DOCUMENTATION.md (1)

1-5: Structured front matter added
The YAML front matter (title, author, date) correctly formalizes this document as a man page source.

@github-actions github-actions bot removed the Ready to merge Reviewed, tested and ready for merge label May 1, 2025
@coderabbitai coderabbitai bot added the Ready to merge Reviewed, tested and ready for merge label May 1, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

🔭 Outside diff range comments (1)
DOCUMENTATION.md (1)

44-714: 🛠️ Refactor suggestion

Replace hard tabs with spaces

There are numerous hard tabs in the command listings (MD010). Replace them with consistent spaces (e.g., two or four) to ensure proper rendering and adherence to markdownlint rules. You can locate all tabs with:

rg -P '\t' -n DOCUMENTATION.md
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

46-46: Hard tabs
Column: 1

(MD010, no-hard-tabs)


47-47: Hard tabs
Column: 1

(MD010, no-hard-tabs)


48-48: Hard tabs
Column: 1

(MD010, no-hard-tabs)


49-49: Hard tabs
Column: 1

(MD010, no-hard-tabs)


50-50: Hard tabs
Column: 1

(MD010, no-hard-tabs)


51-51: Hard tabs
Column: 1

(MD010, no-hard-tabs)


53-53: Hard tabs
Column: 1

(MD010, no-hard-tabs)


54-54: Hard tabs
Column: 1

(MD010, no-hard-tabs)


55-55: Hard tabs
Column: 1

(MD010, no-hard-tabs)


56-56: Hard tabs
Column: 1

(MD010, no-hard-tabs)


57-57: Hard tabs
Column: 1

(MD010, no-hard-tabs)


59-59: Hard tabs
Column: 1

(MD010, no-hard-tabs)


60-60: Hard tabs
Column: 1

(MD010, no-hard-tabs)


61-61: Hard tabs
Column: 1

(MD010, no-hard-tabs)


62-62: Hard tabs
Column: 1

(MD010, no-hard-tabs)


64-64: Hard tabs
Column: 1

(MD010, no-hard-tabs)


65-65: Hard tabs
Column: 1

(MD010, no-hard-tabs)


66-66: Hard tabs
Column: 1

(MD010, no-hard-tabs)


67-67: Hard tabs
Column: 1

(MD010, no-hard-tabs)


69-69: Hard tabs
Column: 1

(MD010, no-hard-tabs)


70-70: Hard tabs
Column: 1

(MD010, no-hard-tabs)


71-71: Hard tabs
Column: 1

(MD010, no-hard-tabs)


72-72: Hard tabs
Column: 1

(MD010, no-hard-tabs)


73-73: Hard tabs
Column: 1

(MD010, no-hard-tabs)


74-74: Hard tabs
Column: 1

(MD010, no-hard-tabs)


75-75: Hard tabs
Column: 1

(MD010, no-hard-tabs)


76-76: Hard tabs
Column: 1

(MD010, no-hard-tabs)


77-77: Hard tabs
Column: 1

(MD010, no-hard-tabs)


78-78: Hard tabs
Column: 1

(MD010, no-hard-tabs)


79-79: Hard tabs
Column: 1

(MD010, no-hard-tabs)


80-80: Hard tabs
Column: 1

(MD010, no-hard-tabs)


81-81: Hard tabs
Column: 1

(MD010, no-hard-tabs)


82-82: Hard tabs
Column: 1

(MD010, no-hard-tabs)


83-83: Hard tabs
Column: 1

(MD010, no-hard-tabs)


85-85: Hard tabs
Column: 1

(MD010, no-hard-tabs)


86-86: Hard tabs
Column: 1

(MD010, no-hard-tabs)


87-87: Hard tabs
Column: 1

(MD010, no-hard-tabs)


89-89: Hard tabs
Column: 1

(MD010, no-hard-tabs)


90-90: Hard tabs
Column: 1

(MD010, no-hard-tabs)


91-91: Hard tabs
Column: 1

(MD010, no-hard-tabs)


92-92: Hard tabs
Column: 1

(MD010, no-hard-tabs)


93-93: Hard tabs
Column: 1

(MD010, no-hard-tabs)


94-94: Hard tabs
Column: 1

(MD010, no-hard-tabs)


95-95: Hard tabs
Column: 1

(MD010, no-hard-tabs)


96-96: Hard tabs
Column: 1

(MD010, no-hard-tabs)


97-97: Hard tabs
Column: 1

(MD010, no-hard-tabs)


104-104: Hard tabs
Column: 1

(MD010, no-hard-tabs)


105-105: Hard tabs
Column: 1

(MD010, no-hard-tabs)


106-106: Hard tabs
Column: 1

(MD010, no-hard-tabs)


107-107: Hard tabs
Column: 1

(MD010, no-hard-tabs)


121-121: Hard tabs
Column: 1

(MD010, no-hard-tabs)


122-122: Hard tabs
Column: 1

(MD010, no-hard-tabs)


123-123: Hard tabs
Column: 1

(MD010, no-hard-tabs)


124-124: Hard tabs
Column: 1

(MD010, no-hard-tabs)


126-126: Hard tabs
Column: 1

(MD010, no-hard-tabs)


127-127: Hard tabs
Column: 1

(MD010, no-hard-tabs)


128-128: Hard tabs
Column: 1

(MD010, no-hard-tabs)


129-129: Hard tabs
Column: 1

(MD010, no-hard-tabs)


130-130: Hard tabs
Column: 1

(MD010, no-hard-tabs)


131-131: Hard tabs
Column: 1

(MD010, no-hard-tabs)


132-132: Hard tabs
Column: 1

(MD010, no-hard-tabs)


133-133: Hard tabs
Column: 1

(MD010, no-hard-tabs)


134-134: Hard tabs
Column: 1

(MD010, no-hard-tabs)


135-135: Hard tabs
Column: 1

(MD010, no-hard-tabs)


136-136: Hard tabs
Column: 1

(MD010, no-hard-tabs)


137-137: Hard tabs
Column: 1

(MD010, no-hard-tabs)


139-139: Hard tabs
Column: 1

(MD010, no-hard-tabs)


140-140: Hard tabs
Column: 1

(MD010, no-hard-tabs)


141-141: Hard tabs
Column: 1

(MD010, no-hard-tabs)


142-142: Hard tabs
Column: 1

(MD010, no-hard-tabs)


143-143: Hard tabs
Column: 1

(MD010, no-hard-tabs)


144-144: Hard tabs
Column: 1

(MD010, no-hard-tabs)


145-145: Hard tabs
Column: 1

(MD010, no-hard-tabs)


146-146: Hard tabs
Column: 1

(MD010, no-hard-tabs)


147-147: Hard tabs
Column: 1

(MD010, no-hard-tabs)


148-148: Hard tabs
Column: 1

(MD010, no-hard-tabs)


150-150: Hard tabs
Column: 1

(MD010, no-hard-tabs)


151-151: Hard tabs
Column: 1

(MD010, no-hard-tabs)


152-152: Hard tabs
Column: 1

(MD010, no-hard-tabs)


154-154: Hard tabs
Column: 1

(MD010, no-hard-tabs)


155-155: Hard tabs
Column: 1

(MD010, no-hard-tabs)


156-156: Hard tabs
Column: 1

(MD010, no-hard-tabs)


158-158: Hard tabs
Column: 1

(MD010, no-hard-tabs)


159-159: Hard tabs
Column: 1

(MD010, no-hard-tabs)


160-160: Hard tabs
Column: 1

(MD010, no-hard-tabs)


162-162: Hard tabs
Column: 1

(MD010, no-hard-tabs)


163-163: Hard tabs
Column: 1

(MD010, no-hard-tabs)


164-164: Hard tabs
Column: 1

(MD010, no-hard-tabs)


165-165: Hard tabs
Column: 1

(MD010, no-hard-tabs)


166-166: Hard tabs
Column: 1

(MD010, no-hard-tabs)


167-167: Hard tabs
Column: 1

(MD010, no-hard-tabs)


168-168: Hard tabs
Column: 1

(MD010, no-hard-tabs)


169-169: Hard tabs
Column: 1

(MD010, no-hard-tabs)


170-170: Hard tabs
Column: 1

(MD010, no-hard-tabs)


171-171: Hard tabs
Column: 1

(MD010, no-hard-tabs)


172-172: Hard tabs
Column: 1

(MD010, no-hard-tabs)


173-173: Hard tabs
Column: 1

(MD010, no-hard-tabs)


174-174: Hard tabs
Column: 1

(MD010, no-hard-tabs)


175-175: Hard tabs
Column: 1

(MD010, no-hard-tabs)


176-176: Hard tabs
Column: 1

(MD010, no-hard-tabs)


177-177: Hard tabs
Column: 1

(MD010, no-hard-tabs)


178-178: Hard tabs
Column: 1

(MD010, no-hard-tabs)


179-179: Hard tabs
Column: 1

(MD010, no-hard-tabs)


180-180: Hard tabs
Column: 1

(MD010, no-hard-tabs)


181-181: Hard tabs
Column: 1

(MD010, no-hard-tabs)


182-182: Hard tabs
Column: 1

(MD010, no-hard-tabs)


183-183: Hard tabs
Column: 1

(MD010, no-hard-tabs)


184-184: Hard tabs
Column: 1

(MD010, no-hard-tabs)


185-185: Hard tabs
Column: 1

(MD010, no-hard-tabs)


186-186: Hard tabs
Column: 1

(MD010, no-hard-tabs)


187-187: Hard tabs
Column: 1

(MD010, no-hard-tabs)


188-188: Hard tabs
Column: 1

(MD010, no-hard-tabs)


189-189: Hard tabs
Column: 1

(MD010, no-hard-tabs)


190-190: Hard tabs
Column: 1

(MD010, no-hard-tabs)


191-191: Hard tabs
Column: 1

(MD010, no-hard-tabs)


192-192: Hard tabs
Column: 1

(MD010, no-hard-tabs)


193-193: Hard tabs
Column: 1

(MD010, no-hard-tabs)


194-194: Hard tabs
Column: 1

(MD010, no-hard-tabs)


195-195: Hard tabs
Column: 1

(MD010, no-hard-tabs)


196-196: Hard tabs
Column: 1

(MD010, no-hard-tabs)


197-197: Hard tabs
Column: 1

(MD010, no-hard-tabs)


199-199: Hard tabs
Column: 1

(MD010, no-hard-tabs)


200-200: Hard tabs
Column: 1

(MD010, no-hard-tabs)


201-201: Hard tabs
Column: 1

(MD010, no-hard-tabs)


202-202: Hard tabs
Column: 1

(MD010, no-hard-tabs)


203-203: Hard tabs
Column: 1

(MD010, no-hard-tabs)


204-204: Hard tabs
Column: 1

(MD010, no-hard-tabs)


205-205: Hard tabs
Column: 1

(MD010, no-hard-tabs)


206-206: Hard tabs
Column: 1

(MD010, no-hard-tabs)


207-207: Hard tabs
Column: 1

(MD010, no-hard-tabs)


208-208: Hard tabs
Column: 1

(MD010, no-hard-tabs)


209-209: Hard tabs
Column: 1

(MD010, no-hard-tabs)


210-210: Hard tabs
Column: 1

(MD010, no-hard-tabs)


212-212: Hard tabs
Column: 1

(MD010, no-hard-tabs)


213-213: Hard tabs
Column: 1

(MD010, no-hard-tabs)


214-214: Hard tabs
Column: 1

(MD010, no-hard-tabs)


215-215: Hard tabs
Column: 1

(MD010, no-hard-tabs)


216-216: Hard tabs
Column: 1

(MD010, no-hard-tabs)


217-217: Hard tabs
Column: 1

(MD010, no-hard-tabs)


219-219: Hard tabs
Column: 1

(MD010, no-hard-tabs)


220-220: Hard tabs
Column: 1

(MD010, no-hard-tabs)


221-221: Hard tabs
Column: 1

(MD010, no-hard-tabs)


222-222: Hard tabs
Column: 1

(MD010, no-hard-tabs)


223-223: Hard tabs
Column: 1

(MD010, no-hard-tabs)


224-224: Hard tabs
Column: 1

(MD010, no-hard-tabs)


225-225: Hard tabs
Column: 1

(MD010, no-hard-tabs)


227-227: Hard tabs
Column: 1

(MD010, no-hard-tabs)


228-228: Hard tabs
Column: 1

(MD010, no-hard-tabs)


229-229: Hard tabs
Column: 1

(MD010, no-hard-tabs)


230-230: Hard tabs
Column: 1

(MD010, no-hard-tabs)


231-231: Hard tabs
Column: 1

(MD010, no-hard-tabs)


232-232: Hard tabs
Column: 1

(MD010, no-hard-tabs)


233-233: Hard tabs
Column: 1

(MD010, no-hard-tabs)


234-234: Hard tabs
Column: 1

(MD010, no-hard-tabs)


235-235: Hard tabs
Column: 1

(MD010, no-hard-tabs)


236-236: Hard tabs
Column: 1

(MD010, no-hard-tabs)


237-237: Hard tabs
Column: 1

(MD010, no-hard-tabs)


238-238: Hard tabs
Column: 1

(MD010, no-hard-tabs)


239-239: Hard tabs
Column: 1

(MD010, no-hard-tabs)


240-240: Hard tabs
Column: 1

(MD010, no-hard-tabs)


241-241: Hard tabs
Column: 1

(MD010, no-hard-tabs)


242-242: Hard tabs
Column: 1

(MD010, no-hard-tabs)


243-243: Hard tabs
Column: 1

(MD010, no-hard-tabs)


244-244: Hard tabs
Column: 1

(MD010, no-hard-tabs)


245-245: Hard tabs
Column: 1

(MD010, no-hard-tabs)


246-246: Hard tabs
Column: 1

(MD010, no-hard-tabs)


247-247: Hard tabs
Column: 1

(MD010, no-hard-tabs)


249-249: Hard tabs
Column: 1

(MD010, no-hard-tabs)


250-250: Hard tabs
Column: 1

(MD010, no-hard-tabs)


251-251: Hard tabs
Column: 1

(MD010, no-hard-tabs)


252-252: Hard tabs
Column: 1

(MD010, no-hard-tabs)


253-253: Hard tabs
Column: 1

(MD010, no-hard-tabs)


254-254: Hard tabs
Column: 1

(MD010, no-hard-tabs)


255-255: Hard tabs
Column: 1

(MD010, no-hard-tabs)


256-256: Hard tabs
Column: 1

(MD010, no-hard-tabs)


257-257: Hard tabs
Column: 1

(MD010, no-hard-tabs)


258-258: Hard tabs
Column: 1

(MD010, no-hard-tabs)


259-259: Hard tabs
Column: 1

(MD010, no-hard-tabs)


260-260: Hard tabs
Column: 1

(MD010, no-hard-tabs)


261-261: Hard tabs
Column: 1

(MD010, no-hard-tabs)


262-262: Hard tabs
Column: 1

(MD010, no-hard-tabs)


263-263: Hard tabs
Column: 1

(MD010, no-hard-tabs)


265-265: Hard tabs
Column: 1

(MD010, no-hard-tabs)


266-266: Hard tabs
Column: 1

(MD010, no-hard-tabs)


267-267: Hard tabs
Column: 1

(MD010, no-hard-tabs)


268-268: Hard tabs
Column: 1

(MD010, no-hard-tabs)


269-269: Hard tabs
Column: 1

(MD010, no-hard-tabs)


270-270: Hard tabs
Column: 1

(MD010, no-hard-tabs)


271-271: Hard tabs
Column: 1

(MD010, no-hard-tabs)


272-272: Hard tabs
Column: 1

(MD010, no-hard-tabs)


273-273: Hard tabs
Column: 1

(MD010, no-hard-tabs)


275-275: Hard tabs
Column: 1

(MD010, no-hard-tabs)


276-276: Hard tabs
Column: 1

(MD010, no-hard-tabs)


277-277: Hard tabs
Column: 1

(MD010, no-hard-tabs)


279-279: Hard tabs
Column: 1

(MD010, no-hard-tabs)


280-280: Hard tabs
Column: 1

(MD010, no-hard-tabs)


281-281: Hard tabs
Column: 1

(MD010, no-hard-tabs)


282-282: Hard tabs
Column: 1

(MD010, no-hard-tabs)


283-283: Hard tabs
Column: 1

(MD010, no-hard-tabs)


284-284: Hard tabs
Column: 1

(MD010, no-hard-tabs)


285-285: Hard tabs
Column: 1

(MD010, no-hard-tabs)


286-286: Hard tabs
Column: 1

(MD010, no-hard-tabs)


288-288: Hard tabs
Column: 1

(MD010, no-hard-tabs)


300-300: Hard tabs
Column: 1

(MD010, no-hard-tabs)


303-303: Hard tabs
Column: 1

(MD010, no-hard-tabs)


306-306: Hard tabs
Column: 1

(MD010, no-hard-tabs)


309-309: Hard tabs
Column: 1

(MD010, no-hard-tabs)


312-312: Hard tabs
Column: 1

(MD010, no-hard-tabs)


315-315: Hard tabs
Column: 1

(MD010, no-hard-tabs)


318-318: Hard tabs
Column: 1

(MD010, no-hard-tabs)


321-321: Hard tabs
Column: 1

(MD010, no-hard-tabs)


324-324: Hard tabs
Column: 1

(MD010, no-hard-tabs)


327-327: Hard tabs
Column: 1

(MD010, no-hard-tabs)


330-330: Hard tabs
Column: 1

(MD010, no-hard-tabs)


333-333: Hard tabs
Column: 1

(MD010, no-hard-tabs)


336-336: Hard tabs
Column: 1

(MD010, no-hard-tabs)


339-339: Hard tabs
Column: 1

(MD010, no-hard-tabs)


342-342: Hard tabs
Column: 1

(MD010, no-hard-tabs)


345-345: Hard tabs
Column: 1

(MD010, no-hard-tabs)


348-348: Hard tabs
Column: 1

(MD010, no-hard-tabs)


351-351: Hard tabs
Column: 1

(MD010, no-hard-tabs)


354-354: Hard tabs
Column: 1

(MD010, no-hard-tabs)


357-357: Hard tabs
Column: 1

(MD010, no-hard-tabs)


360-360: Hard tabs
Column: 1

(MD010, no-hard-tabs)


363-363: Hard tabs
Column: 1

(MD010, no-hard-tabs)


366-366: Hard tabs
Column: 1

(MD010, no-hard-tabs)


369-369: Hard tabs
Column: 1

(MD010, no-hard-tabs)


372-372: Hard tabs
Column: 1

(MD010, no-hard-tabs)


375-375: Hard tabs
Column: 1

(MD010, no-hard-tabs)


378-378: Hard tabs
Column: 1

(MD010, no-hard-tabs)


381-381: Hard tabs
Column: 1

(MD010, no-hard-tabs)


384-384: Hard tabs
Column: 1

(MD010, no-hard-tabs)


387-387: Hard tabs
Column: 1

(MD010, no-hard-tabs)


390-390: Hard tabs
Column: 1

(MD010, no-hard-tabs)


393-393: Hard tabs
Column: 1

(MD010, no-hard-tabs)


396-396: Hard tabs
Column: 1

(MD010, no-hard-tabs)


399-399: Hard tabs
Column: 1

(MD010, no-hard-tabs)


402-402: Hard tabs
Column: 1

(MD010, no-hard-tabs)


405-405: Hard tabs
Column: 1

(MD010, no-hard-tabs)


408-408: Hard tabs
Column: 1

(MD010, no-hard-tabs)


411-411: Hard tabs
Column: 1

(MD010, no-hard-tabs)


414-414: Hard tabs
Column: 1

(MD010, no-hard-tabs)


417-417: Hard tabs
Column: 1

(MD010, no-hard-tabs)


420-420: Hard tabs
Column: 1

(MD010, no-hard-tabs)


423-423: Hard tabs
Column: 1

(MD010, no-hard-tabs)


426-426: Hard tabs
Column: 1

(MD010, no-hard-tabs)


429-429: Hard tabs
Column: 1

(MD010, no-hard-tabs)


432-432: Hard tabs
Column: 1

(MD010, no-hard-tabs)


435-435: Hard tabs
Column: 1

(MD010, no-hard-tabs)


438-438: Hard tabs
Column: 1

(MD010, no-hard-tabs)


441-441: Hard tabs
Column: 1

(MD010, no-hard-tabs)


444-444: Hard tabs
Column: 1

(MD010, no-hard-tabs)


447-447: Hard tabs
Column: 1

(MD010, no-hard-tabs)


450-450: Hard tabs
Column: 1

(MD010, no-hard-tabs)


453-453: Hard tabs
Column: 1

(MD010, no-hard-tabs)


456-456: Hard tabs
Column: 1

(MD010, no-hard-tabs)


459-459: Hard tabs
Column: 1

(MD010, no-hard-tabs)


462-462: Hard tabs
Column: 1

(MD010, no-hard-tabs)


465-465: Hard tabs
Column: 1

(MD010, no-hard-tabs)


468-468: Hard tabs
Column: 1

(MD010, no-hard-tabs)


471-471: Hard tabs
Column: 1

(MD010, no-hard-tabs)


474-474: Hard tabs
Column: 1

(MD010, no-hard-tabs)


477-477: Hard tabs
Column: 1

(MD010, no-hard-tabs)


480-480: Hard tabs
Column: 1

(MD010, no-hard-tabs)


483-483: Hard tabs
Column: 1

(MD010, no-hard-tabs)


486-486: Hard tabs
Column: 1

(MD010, no-hard-tabs)


489-489: Hard tabs
Column: 1

(MD010, no-hard-tabs)


492-492: Hard tabs
Column: 1

(MD010, no-hard-tabs)


495-495: Hard tabs
Column: 1

(MD010, no-hard-tabs)


498-498: Hard tabs
Column: 1

(MD010, no-hard-tabs)


501-501: Hard tabs
Column: 1

(MD010, no-hard-tabs)


504-504: Hard tabs
Column: 1

(MD010, no-hard-tabs)


507-507: Hard tabs
Column: 1

(MD010, no-hard-tabs)


510-510: Hard tabs
Column: 1

(MD010, no-hard-tabs)


513-513: Hard tabs
Column: 1

(MD010, no-hard-tabs)


516-516: Hard tabs
Column: 1

(MD010, no-hard-tabs)


519-519: Hard tabs
Column: 1

(MD010, no-hard-tabs)


522-522: Hard tabs
Column: 1

(MD010, no-hard-tabs)


525-525: Hard tabs
Column: 1

(MD010, no-hard-tabs)


528-528: Hard tabs
Column: 1

(MD010, no-hard-tabs)


531-531: Hard tabs
Column: 1

(MD010, no-hard-tabs)


534-534: Hard tabs
Column: 1

(MD010, no-hard-tabs)


537-537: Hard tabs
Column: 1

(MD010, no-hard-tabs)


540-540: Hard tabs
Column: 1

(MD010, no-hard-tabs)


543-543: Hard tabs
Column: 1

(MD010, no-hard-tabs)


546-546: Hard tabs
Column: 1

(MD010, no-hard-tabs)


549-549: Hard tabs
Column: 1

(MD010, no-hard-tabs)


552-552: Hard tabs
Column: 1

(MD010, no-hard-tabs)


555-555: Hard tabs
Column: 1

(MD010, no-hard-tabs)


558-558: Hard tabs
Column: 1

(MD010, no-hard-tabs)


561-561: Hard tabs
Column: 1

(MD010, no-hard-tabs)


564-564: Hard tabs
Column: 1

(MD010, no-hard-tabs)


567-567: Hard tabs
Column: 1

(MD010, no-hard-tabs)


570-570: Hard tabs
Column: 1

(MD010, no-hard-tabs)


573-573: Hard tabs
Column: 1

(MD010, no-hard-tabs)


576-576: Hard tabs
Column: 1

(MD010, no-hard-tabs)


579-579: Hard tabs
Column: 1

(MD010, no-hard-tabs)


582-582: Hard tabs
Column: 1

(MD010, no-hard-tabs)


585-585: Hard tabs
Column: 1

(MD010, no-hard-tabs)


588-588: Hard tabs
Column: 1

(MD010, no-hard-tabs)


591-591: Hard tabs
Column: 1

(MD010, no-hard-tabs)


594-594: Hard tabs
Column: 1

(MD010, no-hard-tabs)


597-597: Hard tabs
Column: 1

(MD010, no-hard-tabs)


600-600: Hard tabs
Column: 1

(MD010, no-hard-tabs)


603-603: Hard tabs
Column: 1

(MD010, no-hard-tabs)


606-606: Hard tabs
Column: 1

(MD010, no-hard-tabs)


609-609: Hard tabs
Column: 1

(MD010, no-hard-tabs)


612-612: Hard tabs
Column: 1

(MD010, no-hard-tabs)


615-615: Hard tabs
Column: 1

(MD010, no-hard-tabs)


618-618: Hard tabs
Column: 1

(MD010, no-hard-tabs)


621-621: Hard tabs
Column: 1

(MD010, no-hard-tabs)


624-624: Hard tabs
Column: 1

(MD010, no-hard-tabs)


627-627: Hard tabs
Column: 1

(MD010, no-hard-tabs)


630-630: Hard tabs
Column: 1

(MD010, no-hard-tabs)


633-633: Hard tabs
Column: 1

(MD010, no-hard-tabs)


636-636: Hard tabs
Column: 1

(MD010, no-hard-tabs)


639-639: Hard tabs
Column: 1

(MD010, no-hard-tabs)


642-642: Hard tabs
Column: 1

(MD010, no-hard-tabs)


645-645: Hard tabs
Column: 1

(MD010, no-hard-tabs)


648-648: Hard tabs
Column: 1

(MD010, no-hard-tabs)


651-651: Hard tabs
Column: 1

(MD010, no-hard-tabs)


654-654: Hard tabs
Column: 1

(MD010, no-hard-tabs)


657-657: Hard tabs
Column: 1

(MD010, no-hard-tabs)


660-660: Hard tabs
Column: 1

(MD010, no-hard-tabs)


663-663: Hard tabs
Column: 1

(MD010, no-hard-tabs)


666-666: Hard tabs
Column: 1

(MD010, no-hard-tabs)


669-669: Hard tabs
Column: 1

(MD010, no-hard-tabs)


672-672: Hard tabs
Column: 1

(MD010, no-hard-tabs)


675-675: Hard tabs
Column: 1

(MD010, no-hard-tabs)


678-678: Hard tabs
Column: 1

(MD010, no-hard-tabs)


681-681: Hard tabs
Column: 1

(MD010, no-hard-tabs)


684-684: Hard tabs
Column: 1

(MD010, no-hard-tabs)


687-687: Hard tabs
Column: 1

(MD010, no-hard-tabs)


690-690: Hard tabs
Column: 1

(MD010, no-hard-tabs)


693-693: Hard tabs
Column: 1

(MD010, no-hard-tabs)


696-696: Hard tabs
Column: 1

(MD010, no-hard-tabs)


699-699: Hard tabs
Column: 1

(MD010, no-hard-tabs)


702-702: Hard tabs
Column: 1

(MD010, no-hard-tabs)


705-705: Hard tabs
Column: 1

(MD010, no-hard-tabs)


708-708: Hard tabs
Column: 1

(MD010, no-hard-tabs)


711-711: Hard tabs
Column: 1

(MD010, no-hard-tabs)


714-714: Hard tabs
Column: 1

(MD010, no-hard-tabs)

♻️ Duplicate comments (1)
tools/modules/docs/config.docs.sh (1)

22-24: script_dir scoping is handled upstream

SC2154 flagged script_dir as undefined, but per project conventions it’s defined in the main script (bin/armbian-config) before sourcing this module. This warning can be safely ignored.

🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 22-22: script_dir is referenced but not assigned.

(SC2154)

🧹 Nitpick comments (6)
DOCUMENTATION.md (2)

7-7: Add alt text to the image

The raw HTML <img> tag lacks an alt attribute, which violates MD045 (no-alt-text). Consider switching to Markdown image syntax with descriptive alt text, for example:

![Armbian Config icon](https://raw.githubusercontent.com/armbian/configng/main/share/icons/hicolor/scalable/configng-tux.svg)
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

7-7: Images should have alternate text (alt text)
null

(MD045, no-alt-text)


12-13: Clarify SYNOPSIS formatting

In man-page style, include a space between the command and its options. Update to:

# SYNOPSIS
`armbian-config [option] [arguments] [@]`
tools/modules/docs/config.docs.sh (4)

19-20: Separate declaration and assignment for current_date

To prevent masking return values (SC2155), split the declaration from the assignment:

-   local current_date=$(date)
+   local current_date
+   current_date="$(date)"
🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 19-19: Declare and assign separately to avoid masking return values.

(SC2155)


29-31: Use printf instead of echo -e for portability

echo -e behaviour varies between shells. Prefer printf for consistent newline handling:

-   echo -e "Sorting data\nUpdating documentation"
+   printf '%s\n' "Sorting data" "Updating documentation"

32-82: Convert HTML image tag and use dedented here-doc

Within the generated Markdown, replace the HTML <img> tag with Markdown syntax (including alt text) and leverage a dedented here-doc (<<-EOF_DOC) to maintain clean indentation:

-   <img src="https://raw.githubusercontent.com/armbian/configng/main/share/icons/hicolor/scalable/configng-tux.svg">
+   ![Armbian Config icon](https://raw.githubusercontent.com/armbian/configng/main/share/icons/hicolor/scalable/configng-tux.svg)

And update the here-doc start to:

cat <<-EOF_DOC > "$doc_dir/DOCUMENTATION.md"

159-178: Restore IFS and display script name correctly in see_use

  1. Save and restore IFS when splitting keys to avoid side effects:
    local old_ifs="$IFS"
    IFS=','
    read -r function_name type <<< "$key"
    IFS="$old_ifs"
  2. Use $(basename "$0") instead of ${0} for a cleaner usage message.
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 39c1373 and 6d47020.

⛔ Files ignored due to path filters (1)
  • share/man1/armbian-config.1.gz is excluded by !**/*.gz
📒 Files selected for processing (2)
  • DOCUMENTATION.md (8 hunks)
  • tools/modules/docs/config.docs.sh (2 hunks)
🧰 Additional context used
🧠 Learnings (1)
tools/modules/docs/config.docs.sh (1)
Learnt from: Tearran
PR: armbian/configng#572
File: tools/modules/docs/config.docs.sh:21-24
Timestamp: 2025-04-30T23:57:15.251Z
Learning: In the armbian/configng project, `script_dir` is defined in the main script `bin/armbian-config` and is available to all sourced module files like `tools/modules/docs/config.docs.sh`. The variable doesn't need to be redefined in each module file.
🪛 Shellcheck (0.10.0)
tools/modules/docs/config.docs.sh

[warning] 19-19: Declare and assign separately to avoid masking return values.

(SC2155)


[warning] 22-22: script_dir is referenced but not assigned.

(SC2154)

🪛 markdownlint-cli2 (0.17.2)
DOCUMENTATION.md

7-7: Images should have alternate text (alt text)
null

(MD045, no-alt-text)


66-66: Hard tabs
Column: 1

(MD010, no-hard-tabs)


82-82: Hard tabs
Column: 1

(MD010, no-hard-tabs)


127-127: Hard tabs
Column: 1

(MD010, no-hard-tabs)


128-128: Hard tabs
Column: 1

(MD010, no-hard-tabs)


129-129: Hard tabs
Column: 1

(MD010, no-hard-tabs)


130-130: Hard tabs
Column: 1

(MD010, no-hard-tabs)


131-131: Hard tabs
Column: 1

(MD010, no-hard-tabs)


132-132: Hard tabs
Column: 1

(MD010, no-hard-tabs)


133-133: Hard tabs
Column: 1

(MD010, no-hard-tabs)


134-134: Hard tabs
Column: 1

(MD010, no-hard-tabs)


135-135: Hard tabs
Column: 1

(MD010, no-hard-tabs)


136-136: Hard tabs
Column: 1

(MD010, no-hard-tabs)


137-137: Hard tabs
Column: 1

(MD010, no-hard-tabs)


139-139: Hard tabs
Column: 1

(MD010, no-hard-tabs)


140-140: Hard tabs
Column: 1

(MD010, no-hard-tabs)


141-141: Hard tabs
Column: 1

(MD010, no-hard-tabs)


142-142: Hard tabs
Column: 1

(MD010, no-hard-tabs)


143-143: Hard tabs
Column: 1

(MD010, no-hard-tabs)


144-144: Hard tabs
Column: 1

(MD010, no-hard-tabs)


145-145: Hard tabs
Column: 1

(MD010, no-hard-tabs)


146-146: Hard tabs
Column: 1

(MD010, no-hard-tabs)


147-147: Hard tabs
Column: 1

(MD010, no-hard-tabs)


148-148: Hard tabs
Column: 1

(MD010, no-hard-tabs)


150-150: Hard tabs
Column: 1

(MD010, no-hard-tabs)


151-151: Hard tabs
Column: 1

(MD010, no-hard-tabs)


152-152: Hard tabs
Column: 1

(MD010, no-hard-tabs)


154-154: Hard tabs
Column: 1

(MD010, no-hard-tabs)


155-155: Hard tabs
Column: 1

(MD010, no-hard-tabs)


156-156: Hard tabs
Column: 1

(MD010, no-hard-tabs)


158-158: Hard tabs
Column: 1

(MD010, no-hard-tabs)


159-159: Hard tabs
Column: 1

(MD010, no-hard-tabs)


160-160: Hard tabs
Column: 1

(MD010, no-hard-tabs)


162-162: Hard tabs
Column: 1

(MD010, no-hard-tabs)


163-163: Hard tabs
Column: 1

(MD010, no-hard-tabs)


164-164: Hard tabs
Column: 1

(MD010, no-hard-tabs)


165-165: Hard tabs
Column: 1

(MD010, no-hard-tabs)


166-166: Hard tabs
Column: 1

(MD010, no-hard-tabs)


167-167: Hard tabs
Column: 1

(MD010, no-hard-tabs)


168-168: Hard tabs
Column: 1

(MD010, no-hard-tabs)


169-169: Hard tabs
Column: 1

(MD010, no-hard-tabs)


170-170: Hard tabs
Column: 1

(MD010, no-hard-tabs)


171-171: Hard tabs
Column: 1

(MD010, no-hard-tabs)


172-172: Hard tabs
Column: 1

(MD010, no-hard-tabs)


173-173: Hard tabs
Column: 1

(MD010, no-hard-tabs)


174-174: Hard tabs
Column: 1

(MD010, no-hard-tabs)


175-175: Hard tabs
Column: 1

(MD010, no-hard-tabs)


176-176: Hard tabs
Column: 1

(MD010, no-hard-tabs)


177-177: Hard tabs
Column: 1

(MD010, no-hard-tabs)


178-178: Hard tabs
Column: 1

(MD010, no-hard-tabs)


179-179: Hard tabs
Column: 1

(MD010, no-hard-tabs)


180-180: Hard tabs
Column: 1

(MD010, no-hard-tabs)


181-181: Hard tabs
Column: 1

(MD010, no-hard-tabs)


182-182: Hard tabs
Column: 1

(MD010, no-hard-tabs)


183-183: Hard tabs
Column: 1

(MD010, no-hard-tabs)


184-184: Hard tabs
Column: 1

(MD010, no-hard-tabs)


185-185: Hard tabs
Column: 1

(MD010, no-hard-tabs)


186-186: Hard tabs
Column: 1

(MD010, no-hard-tabs)


187-187: Hard tabs
Column: 1

(MD010, no-hard-tabs)


188-188: Hard tabs
Column: 1

(MD010, no-hard-tabs)


189-189: Hard tabs
Column: 1

(MD010, no-hard-tabs)


190-190: Hard tabs
Column: 1

(MD010, no-hard-tabs)


191-191: Hard tabs
Column: 1

(MD010, no-hard-tabs)


192-192: Hard tabs
Column: 1

(MD010, no-hard-tabs)


193-193: Hard tabs
Column: 1

(MD010, no-hard-tabs)


194-194: Hard tabs
Column: 1

(MD010, no-hard-tabs)


195-195: Hard tabs
Column: 1

(MD010, no-hard-tabs)


196-196: Hard tabs
Column: 1

(MD010, no-hard-tabs)


197-197: Hard tabs
Column: 1

(MD010, no-hard-tabs)


199-199: Hard tabs
Column: 1

(MD010, no-hard-tabs)


200-200: Hard tabs
Column: 1

(MD010, no-hard-tabs)


201-201: Hard tabs
Column: 1

(MD010, no-hard-tabs)


202-202: Hard tabs
Column: 1

(MD010, no-hard-tabs)


203-203: Hard tabs
Column: 1

(MD010, no-hard-tabs)


204-204: Hard tabs
Column: 1

(MD010, no-hard-tabs)


205-205: Hard tabs
Column: 1

(MD010, no-hard-tabs)


206-206: Hard tabs
Column: 1

(MD010, no-hard-tabs)


207-207: Hard tabs
Column: 1

(MD010, no-hard-tabs)


208-208: Hard tabs
Column: 1

(MD010, no-hard-tabs)


209-209: Hard tabs
Column: 1

(MD010, no-hard-tabs)


224-224: Hard tabs
Column: 1

(MD010, no-hard-tabs)


225-225: Hard tabs
Column: 1

(MD010, no-hard-tabs)


227-227: Hard tabs
Column: 1

(MD010, no-hard-tabs)


228-228: Hard tabs
Column: 1

(MD010, no-hard-tabs)


229-229: Hard tabs
Column: 1

(MD010, no-hard-tabs)


230-230: Hard tabs
Column: 1

(MD010, no-hard-tabs)


231-231: Hard tabs
Column: 1

(MD010, no-hard-tabs)


232-232: Hard tabs
Column: 1

(MD010, no-hard-tabs)


233-233: Hard tabs
Column: 1

(MD010, no-hard-tabs)


234-234: Hard tabs
Column: 1

(MD010, no-hard-tabs)


235-235: Hard tabs
Column: 1

(MD010, no-hard-tabs)


236-236: Hard tabs
Column: 1

(MD010, no-hard-tabs)


237-237: Hard tabs
Column: 1

(MD010, no-hard-tabs)


238-238: Hard tabs
Column: 1

(MD010, no-hard-tabs)


239-239: Hard tabs
Column: 1

(MD010, no-hard-tabs)


240-240: Hard tabs
Column: 1

(MD010, no-hard-tabs)


241-241: Hard tabs
Column: 1

(MD010, no-hard-tabs)


242-242: Hard tabs
Column: 1

(MD010, no-hard-tabs)


243-243: Hard tabs
Column: 1

(MD010, no-hard-tabs)


244-244: Hard tabs
Column: 1

(MD010, no-hard-tabs)


245-245: Hard tabs
Column: 1

(MD010, no-hard-tabs)


246-246: Hard tabs
Column: 1

(MD010, no-hard-tabs)


247-247: Hard tabs
Column: 1

(MD010, no-hard-tabs)


249-249: Hard tabs
Column: 1

(MD010, no-hard-tabs)


250-250: Hard tabs
Column: 1

(MD010, no-hard-tabs)


251-251: Hard tabs
Column: 1

(MD010, no-hard-tabs)


252-252: Hard tabs
Column: 1

(MD010, no-hard-tabs)


253-253: Hard tabs
Column: 1

(MD010, no-hard-tabs)


254-254: Hard tabs
Column: 1

(MD010, no-hard-tabs)


255-255: Hard tabs
Column: 1

(MD010, no-hard-tabs)


256-256: Hard tabs
Column: 1

(MD010, no-hard-tabs)


257-257: Hard tabs
Column: 1

(MD010, no-hard-tabs)


258-258: Hard tabs
Column: 1

(MD010, no-hard-tabs)


259-259: Hard tabs
Column: 1

(MD010, no-hard-tabs)


260-260: Hard tabs
Column: 1

(MD010, no-hard-tabs)


261-261: Hard tabs
Column: 1

(MD010, no-hard-tabs)


262-262: Hard tabs
Column: 1

(MD010, no-hard-tabs)


263-263: Hard tabs
Column: 1

(MD010, no-hard-tabs)


265-265: Hard tabs
Column: 1

(MD010, no-hard-tabs)


266-266: Hard tabs
Column: 1

(MD010, no-hard-tabs)


267-267: Hard tabs
Column: 1

(MD010, no-hard-tabs)


268-268: Hard tabs
Column: 1

(MD010, no-hard-tabs)


269-269: Hard tabs
Column: 1

(MD010, no-hard-tabs)


270-270: Hard tabs
Column: 1

(MD010, no-hard-tabs)


271-271: Hard tabs
Column: 1

(MD010, no-hard-tabs)


272-272: Hard tabs
Column: 1

(MD010, no-hard-tabs)


273-273: Hard tabs
Column: 1

(MD010, no-hard-tabs)


275-275: Hard tabs
Column: 1

(MD010, no-hard-tabs)


276-276: Hard tabs
Column: 1

(MD010, no-hard-tabs)


300-300: Hard tabs
Column: 1

(MD010, no-hard-tabs)


303-303: Hard tabs
Column: 1

(MD010, no-hard-tabs)


306-306: Hard tabs
Column: 1

(MD010, no-hard-tabs)


309-309: Hard tabs
Column: 1

(MD010, no-hard-tabs)


312-312: Hard tabs
Column: 1

(MD010, no-hard-tabs)


315-315: Hard tabs
Column: 1

(MD010, no-hard-tabs)


318-318: Hard tabs
Column: 1

(MD010, no-hard-tabs)


321-321: Hard tabs
Column: 1

(MD010, no-hard-tabs)


324-324: Hard tabs
Column: 1

(MD010, no-hard-tabs)


327-327: Hard tabs
Column: 1

(MD010, no-hard-tabs)


330-330: Hard tabs
Column: 1

(MD010, no-hard-tabs)


333-333: Hard tabs
Column: 1

(MD010, no-hard-tabs)


336-336: Hard tabs
Column: 1

(MD010, no-hard-tabs)


339-339: Hard tabs
Column: 1

(MD010, no-hard-tabs)


342-342: Hard tabs
Column: 1

(MD010, no-hard-tabs)


345-345: Hard tabs
Column: 1

(MD010, no-hard-tabs)


348-348: Hard tabs
Column: 1

(MD010, no-hard-tabs)


351-351: Hard tabs
Column: 1

(MD010, no-hard-tabs)


354-354: Hard tabs
Column: 1

(MD010, no-hard-tabs)


357-357: Hard tabs
Column: 1

(MD010, no-hard-tabs)


360-360: Hard tabs
Column: 1

(MD010, no-hard-tabs)


363-363: Hard tabs
Column: 1

(MD010, no-hard-tabs)


366-366: Hard tabs
Column: 1

(MD010, no-hard-tabs)


369-369: Hard tabs
Column: 1

(MD010, no-hard-tabs)


372-372: Hard tabs
Column: 1

(MD010, no-hard-tabs)


375-375: Hard tabs
Column: 1

(MD010, no-hard-tabs)


378-378: Hard tabs
Column: 1

(MD010, no-hard-tabs)


381-381: Hard tabs
Column: 1

(MD010, no-hard-tabs)


384-384: Hard tabs
Column: 1

(MD010, no-hard-tabs)


387-387: Hard tabs
Column: 1

(MD010, no-hard-tabs)


390-390: Hard tabs
Column: 1

(MD010, no-hard-tabs)


393-393: Hard tabs
Column: 1

(MD010, no-hard-tabs)


396-396: Hard tabs
Column: 1

(MD010, no-hard-tabs)


399-399: Hard tabs
Column: 1

(MD010, no-hard-tabs)


402-402: Hard tabs
Column: 1

(MD010, no-hard-tabs)


405-405: Hard tabs
Column: 1

(MD010, no-hard-tabs)


408-408: Hard tabs
Column: 1

(MD010, no-hard-tabs)


411-411: Hard tabs
Column: 1

(MD010, no-hard-tabs)


414-414: Hard tabs
Column: 1

(MD010, no-hard-tabs)


417-417: Hard tabs
Column: 1

(MD010, no-hard-tabs)


420-420: Hard tabs
Column: 1

(MD010, no-hard-tabs)


423-423: Hard tabs
Column: 1

(MD010, no-hard-tabs)


426-426: Hard tabs
Column: 1

(MD010, no-hard-tabs)


429-429: Hard tabs
Column: 1

(MD010, no-hard-tabs)


432-432: Hard tabs
Column: 1

(MD010, no-hard-tabs)


435-435: Hard tabs
Column: 1

(MD010, no-hard-tabs)


438-438: Hard tabs
Column: 1

(MD010, no-hard-tabs)


441-441: Hard tabs
Column: 1

(MD010, no-hard-tabs)


444-444: Hard tabs
Column: 1

(MD010, no-hard-tabs)


447-447: Hard tabs
Column: 1

(MD010, no-hard-tabs)


450-450: Hard tabs
Column: 1

(MD010, no-hard-tabs)


453-453: Hard tabs
Column: 1

(MD010, no-hard-tabs)


456-456: Hard tabs
Column: 1

(MD010, no-hard-tabs)


459-459: Hard tabs
Column: 1

(MD010, no-hard-tabs)


462-462: Hard tabs
Column: 1

(MD010, no-hard-tabs)


465-465: Hard tabs
Column: 1

(MD010, no-hard-tabs)


468-468: Hard tabs
Column: 1

(MD010, no-hard-tabs)


471-471: Hard tabs
Column: 1

(MD010, no-hard-tabs)


474-474: Hard tabs
Column: 1

(MD010, no-hard-tabs)


477-477: Hard tabs
Column: 1

(MD010, no-hard-tabs)


480-480: Hard tabs
Column: 1

(MD010, no-hard-tabs)


483-483: Hard tabs
Column: 1

(MD010, no-hard-tabs)


486-486: Hard tabs
Column: 1

(MD010, no-hard-tabs)


489-489: Hard tabs
Column: 1

(MD010, no-hard-tabs)


492-492: Hard tabs
Column: 1

(MD010, no-hard-tabs)


495-495: Hard tabs
Column: 1

(MD010, no-hard-tabs)


498-498: Hard tabs
Column: 1

(MD010, no-hard-tabs)


501-501: Hard tabs
Column: 1

(MD010, no-hard-tabs)


504-504: Hard tabs
Column: 1

(MD010, no-hard-tabs)


507-507: Hard tabs
Column: 1

(MD010, no-hard-tabs)


510-510: Hard tabs
Column: 1

(MD010, no-hard-tabs)


513-513: Hard tabs
Column: 1

(MD010, no-hard-tabs)


516-516: Hard tabs
Column: 1

(MD010, no-hard-tabs)


519-519: Hard tabs
Column: 1

(MD010, no-hard-tabs)


522-522: Hard tabs
Column: 1

(MD010, no-hard-tabs)


525-525: Hard tabs
Column: 1

(MD010, no-hard-tabs)


528-528: Hard tabs
Column: 1

(MD010, no-hard-tabs)


531-531: Hard tabs
Column: 1

(MD010, no-hard-tabs)


534-534: Hard tabs
Column: 1

(MD010, no-hard-tabs)


537-537: Hard tabs
Column: 1

(MD010, no-hard-tabs)


540-540: Hard tabs
Column: 1

(MD010, no-hard-tabs)


543-543: Hard tabs
Column: 1

(MD010, no-hard-tabs)


546-546: Hard tabs
Column: 1

(MD010, no-hard-tabs)


549-549: Hard tabs
Column: 1

(MD010, no-hard-tabs)


552-552: Hard tabs
Column: 1

(MD010, no-hard-tabs)


555-555: Hard tabs
Column: 1

(MD010, no-hard-tabs)


558-558: Hard tabs
Column: 1

(MD010, no-hard-tabs)


561-561: Hard tabs
Column: 1

(MD010, no-hard-tabs)


564-564: Hard tabs
Column: 1

(MD010, no-hard-tabs)


567-567: Hard tabs
Column: 1

(MD010, no-hard-tabs)


570-570: Hard tabs
Column: 1

(MD010, no-hard-tabs)


573-573: Hard tabs
Column: 1

(MD010, no-hard-tabs)


576-576: Hard tabs
Column: 1

(MD010, no-hard-tabs)


579-579: Hard tabs
Column: 1

(MD010, no-hard-tabs)


582-582: Hard tabs
Column: 1

(MD010, no-hard-tabs)


585-585: Hard tabs
Column: 1

(MD010, no-hard-tabs)


588-588: Hard tabs
Column: 1

(MD010, no-hard-tabs)


591-591: Hard tabs
Column: 1

(MD010, no-hard-tabs)


594-594: Hard tabs
Column: 1

(MD010, no-hard-tabs)


597-597: Hard tabs
Column: 1

(MD010, no-hard-tabs)


600-600: Hard tabs
Column: 1

(MD010, no-hard-tabs)


603-603: Hard tabs
Column: 1

(MD010, no-hard-tabs)


606-606: Hard tabs
Column: 1

(MD010, no-hard-tabs)


609-609: Hard tabs
Column: 1

(MD010, no-hard-tabs)


612-612: Hard tabs
Column: 1

(MD010, no-hard-tabs)


615-615: Hard tabs
Column: 1

(MD010, no-hard-tabs)


618-618: Hard tabs
Column: 1

(MD010, no-hard-tabs)


621-621: Hard tabs
Column: 1

(MD010, no-hard-tabs)


624-624: Hard tabs
Column: 1

(MD010, no-hard-tabs)


627-627: Hard tabs
Column: 1

(MD010, no-hard-tabs)


630-630: Hard tabs
Column: 1

(MD010, no-hard-tabs)


633-633: Hard tabs
Column: 1

(MD010, no-hard-tabs)


636-636: Hard tabs
Column: 1

(MD010, no-hard-tabs)


639-639: Hard tabs
Column: 1

(MD010, no-hard-tabs)


642-642: Hard tabs
Column: 1

(MD010, no-hard-tabs)


645-645: Hard tabs
Column: 1

(MD010, no-hard-tabs)


648-648: Hard tabs
Column: 1

(MD010, no-hard-tabs)


651-651: Hard tabs
Column: 1

(MD010, no-hard-tabs)


654-654: Hard tabs
Column: 1

(MD010, no-hard-tabs)


657-657: Hard tabs
Column: 1

(MD010, no-hard-tabs)


660-660: Hard tabs
Column: 1

(MD010, no-hard-tabs)


663-663: Hard tabs
Column: 1

(MD010, no-hard-tabs)


666-666: Hard tabs
Column: 1

(MD010, no-hard-tabs)


669-669: Hard tabs
Column: 1

(MD010, no-hard-tabs)


672-672: Hard tabs
Column: 1

(MD010, no-hard-tabs)


675-675: Hard tabs
Column: 1

(MD010, no-hard-tabs)


678-678: Hard tabs
Column: 1

(MD010, no-hard-tabs)


681-681: Hard tabs
Column: 1

(MD010, no-hard-tabs)


684-684: Hard tabs
Column: 1

(MD010, no-hard-tabs)


687-687: Hard tabs
Column: 1

(MD010, no-hard-tabs)


690-690: Hard tabs
Column: 1

(MD010, no-hard-tabs)


693-693: Hard tabs
Column: 1

(MD010, no-hard-tabs)


696-696: Hard tabs
Column: 1

(MD010, no-hard-tabs)


699-699: Hard tabs
Column: 1

(MD010, no-hard-tabs)


702-702: Hard tabs
Column: 1

(MD010, no-hard-tabs)


705-705: Hard tabs
Column: 1

(MD010, no-hard-tabs)


708-708: Hard tabs
Column: 1

(MD010, no-hard-tabs)


711-711: Hard tabs
Column: 1

(MD010, no-hard-tabs)


714-714: Hard tabs
Column: 1

(MD010, no-hard-tabs)

🔇 Additional comments (1)
DOCUMENTATION.md (1)

1-5: Front Matter Structure Looks Good

The YAML front matter (---, title, author, date, ---) is correctly formatted for pandoc and man-page generation.

@github-actions github-actions bot removed the Ready to merge Reviewed, tested and ready for merge label May 1, 2025
	modified:   share/man1/armbian-config.1.gz
	modified:   tools/modules/docs/config.docs.sh
@coderabbitai coderabbitai bot added the Ready to merge Reviewed, tested and ready for merge label May 1, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🔭 Outside diff range comments (1)
DOCUMENTATION.md (1)

66-720: ⚠️ Potential issue

Replace hard tabs with spaces.
Markdownlint reports hard tabs throughout the command listings, which can lead to inconsistent rendering. Convert all leading tabs to spaces (e.g., 2 or 4 spaces). For instance:

sed -i 's/^\t\+/    /' DOCUMENTATION.md
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

66-66: Hard tabs
Column: 1

(MD010, no-hard-tabs)


67-67: Hard tabs
Column: 1

(MD010, no-hard-tabs)


69-69: Hard tabs
Column: 1

(MD010, no-hard-tabs)


70-70: Hard tabs
Column: 1

(MD010, no-hard-tabs)


71-71: Hard tabs
Column: 1

(MD010, no-hard-tabs)


72-72: Hard tabs
Column: 1

(MD010, no-hard-tabs)


73-73: Hard tabs
Column: 1

(MD010, no-hard-tabs)


74-74: Hard tabs
Column: 1

(MD010, no-hard-tabs)


75-75: Hard tabs
Column: 1

(MD010, no-hard-tabs)


76-76: Hard tabs
Column: 1

(MD010, no-hard-tabs)


77-77: Hard tabs
Column: 1

(MD010, no-hard-tabs)


78-78: Hard tabs
Column: 1

(MD010, no-hard-tabs)


79-79: Hard tabs
Column: 1

(MD010, no-hard-tabs)


80-80: Hard tabs
Column: 1

(MD010, no-hard-tabs)


81-81: Hard tabs
Column: 1

(MD010, no-hard-tabs)


82-82: Hard tabs
Column: 1

(MD010, no-hard-tabs)


83-83: Hard tabs
Column: 1

(MD010, no-hard-tabs)


85-85: Hard tabs
Column: 1

(MD010, no-hard-tabs)


86-86: Hard tabs
Column: 1

(MD010, no-hard-tabs)


87-87: Hard tabs
Column: 1

(MD010, no-hard-tabs)


89-89: Hard tabs
Column: 1

(MD010, no-hard-tabs)


90-90: Hard tabs
Column: 1

(MD010, no-hard-tabs)


91-91: Hard tabs
Column: 1

(MD010, no-hard-tabs)


92-92: Hard tabs
Column: 1

(MD010, no-hard-tabs)


93-93: Hard tabs
Column: 1

(MD010, no-hard-tabs)


94-94: Hard tabs
Column: 1

(MD010, no-hard-tabs)


95-95: Hard tabs
Column: 1

(MD010, no-hard-tabs)


96-96: Hard tabs
Column: 1

(MD010, no-hard-tabs)


97-97: Hard tabs
Column: 1

(MD010, no-hard-tabs)


104-104: Hard tabs
Column: 1

(MD010, no-hard-tabs)


105-105: Hard tabs
Column: 1

(MD010, no-hard-tabs)


106-106: Hard tabs
Column: 1

(MD010, no-hard-tabs)


107-107: Hard tabs
Column: 1

(MD010, no-hard-tabs)


121-121: Hard tabs
Column: 1

(MD010, no-hard-tabs)


122-122: Hard tabs
Column: 1

(MD010, no-hard-tabs)


123-123: Hard tabs
Column: 1

(MD010, no-hard-tabs)


124-124: Hard tabs
Column: 1

(MD010, no-hard-tabs)


126-126: Hard tabs
Column: 1

(MD010, no-hard-tabs)


127-127: Hard tabs
Column: 1

(MD010, no-hard-tabs)


128-128: Hard tabs
Column: 1

(MD010, no-hard-tabs)


129-129: Hard tabs
Column: 1

(MD010, no-hard-tabs)


130-130: Hard tabs
Column: 1

(MD010, no-hard-tabs)


131-131: Hard tabs
Column: 1

(MD010, no-hard-tabs)


132-132: Hard tabs
Column: 1

(MD010, no-hard-tabs)


133-133: Hard tabs
Column: 1

(MD010, no-hard-tabs)


134-134: Hard tabs
Column: 1

(MD010, no-hard-tabs)


135-135: Hard tabs
Column: 1

(MD010, no-hard-tabs)


136-136: Hard tabs
Column: 1

(MD010, no-hard-tabs)


137-137: Hard tabs
Column: 1

(MD010, no-hard-tabs)


139-139: Hard tabs
Column: 1

(MD010, no-hard-tabs)


140-140: Hard tabs
Column: 1

(MD010, no-hard-tabs)


141-141: Hard tabs
Column: 1

(MD010, no-hard-tabs)


142-142: Hard tabs
Column: 1

(MD010, no-hard-tabs)


143-143: Hard tabs
Column: 1

(MD010, no-hard-tabs)


144-144: Hard tabs
Column: 1

(MD010, no-hard-tabs)


145-145: Hard tabs
Column: 1

(MD010, no-hard-tabs)


146-146: Hard tabs
Column: 1

(MD010, no-hard-tabs)


147-147: Hard tabs
Column: 1

(MD010, no-hard-tabs)


148-148: Hard tabs
Column: 1

(MD010, no-hard-tabs)


150-150: Hard tabs
Column: 1

(MD010, no-hard-tabs)


151-151: Hard tabs
Column: 1

(MD010, no-hard-tabs)


152-152: Hard tabs
Column: 1

(MD010, no-hard-tabs)


154-154: Hard tabs
Column: 1

(MD010, no-hard-tabs)


155-155: Hard tabs
Column: 1

(MD010, no-hard-tabs)


156-156: Hard tabs
Column: 1

(MD010, no-hard-tabs)


158-158: Hard tabs
Column: 1

(MD010, no-hard-tabs)


159-159: Hard tabs
Column: 1

(MD010, no-hard-tabs)


160-160: Hard tabs
Column: 1

(MD010, no-hard-tabs)


162-162: Hard tabs
Column: 1

(MD010, no-hard-tabs)


163-163: Hard tabs
Column: 1

(MD010, no-hard-tabs)


164-164: Hard tabs
Column: 1

(MD010, no-hard-tabs)


165-165: Hard tabs
Column: 1

(MD010, no-hard-tabs)


166-166: Hard tabs
Column: 1

(MD010, no-hard-tabs)


167-167: Hard tabs
Column: 1

(MD010, no-hard-tabs)


168-168: Hard tabs
Column: 1

(MD010, no-hard-tabs)


169-169: Hard tabs
Column: 1

(MD010, no-hard-tabs)


170-170: Hard tabs
Column: 1

(MD010, no-hard-tabs)


171-171: Hard tabs
Column: 1

(MD010, no-hard-tabs)


172-172: Hard tabs
Column: 1

(MD010, no-hard-tabs)


173-173: Hard tabs
Column: 1

(MD010, no-hard-tabs)


174-174: Hard tabs
Column: 1

(MD010, no-hard-tabs)


175-175: Hard tabs
Column: 1

(MD010, no-hard-tabs)


176-176: Hard tabs
Column: 1

(MD010, no-hard-tabs)


177-177: Hard tabs
Column: 1

(MD010, no-hard-tabs)


178-178: Hard tabs
Column: 1

(MD010, no-hard-tabs)


179-179: Hard tabs
Column: 1

(MD010, no-hard-tabs)


180-180: Hard tabs
Column: 1

(MD010, no-hard-tabs)


181-181: Hard tabs
Column: 1

(MD010, no-hard-tabs)


182-182: Hard tabs
Column: 1

(MD010, no-hard-tabs)


183-183: Hard tabs
Column: 1

(MD010, no-hard-tabs)


184-184: Hard tabs
Column: 1

(MD010, no-hard-tabs)


185-185: Hard tabs
Column: 1

(MD010, no-hard-tabs)


186-186: Hard tabs
Column: 1

(MD010, no-hard-tabs)


187-187: Hard tabs
Column: 1

(MD010, no-hard-tabs)


188-188: Hard tabs
Column: 1

(MD010, no-hard-tabs)


189-189: Hard tabs
Column: 1

(MD010, no-hard-tabs)


190-190: Hard tabs
Column: 1

(MD010, no-hard-tabs)


191-191: Hard tabs
Column: 1

(MD010, no-hard-tabs)


192-192: Hard tabs
Column: 1

(MD010, no-hard-tabs)


193-193: Hard tabs
Column: 1

(MD010, no-hard-tabs)


194-194: Hard tabs
Column: 1

(MD010, no-hard-tabs)


195-195: Hard tabs
Column: 1

(MD010, no-hard-tabs)


196-196: Hard tabs
Column: 1

(MD010, no-hard-tabs)


197-197: Hard tabs
Column: 1

(MD010, no-hard-tabs)


199-199: Hard tabs
Column: 1

(MD010, no-hard-tabs)


200-200: Hard tabs
Column: 1

(MD010, no-hard-tabs)


201-201: Hard tabs
Column: 1

(MD010, no-hard-tabs)


202-202: Hard tabs
Column: 1

(MD010, no-hard-tabs)


203-203: Hard tabs
Column: 1

(MD010, no-hard-tabs)


204-204: Hard tabs
Column: 1

(MD010, no-hard-tabs)


205-205: Hard tabs
Column: 1

(MD010, no-hard-tabs)


206-206: Hard tabs
Column: 1

(MD010, no-hard-tabs)


207-207: Hard tabs
Column: 1

(MD010, no-hard-tabs)


208-208: Hard tabs
Column: 1

(MD010, no-hard-tabs)


209-209: Hard tabs
Column: 1

(MD010, no-hard-tabs)


210-210: Hard tabs
Column: 1

(MD010, no-hard-tabs)


212-212: Hard tabs
Column: 1

(MD010, no-hard-tabs)


213-213: Hard tabs
Column: 1

(MD010, no-hard-tabs)


214-214: Hard tabs
Column: 1

(MD010, no-hard-tabs)


215-215: Hard tabs
Column: 1

(MD010, no-hard-tabs)


216-216: Hard tabs
Column: 1

(MD010, no-hard-tabs)


217-217: Hard tabs
Column: 1

(MD010, no-hard-tabs)


219-219: Hard tabs
Column: 1

(MD010, no-hard-tabs)


220-220: Hard tabs
Column: 1

(MD010, no-hard-tabs)


221-221: Hard tabs
Column: 1

(MD010, no-hard-tabs)


222-222: Hard tabs
Column: 1

(MD010, no-hard-tabs)


223-223: Hard tabs
Column: 1

(MD010, no-hard-tabs)


224-224: Hard tabs
Column: 1

(MD010, no-hard-tabs)


225-225: Hard tabs
Column: 1

(MD010, no-hard-tabs)


227-227: Hard tabs
Column: 1

(MD010, no-hard-tabs)


228-228: Hard tabs
Column: 1

(MD010, no-hard-tabs)


229-229: Hard tabs
Column: 1

(MD010, no-hard-tabs)


230-230: Hard tabs
Column: 1

(MD010, no-hard-tabs)


231-231: Hard tabs
Column: 1

(MD010, no-hard-tabs)


232-232: Hard tabs
Column: 1

(MD010, no-hard-tabs)


233-233: Hard tabs
Column: 1

(MD010, no-hard-tabs)


234-234: Hard tabs
Column: 1

(MD010, no-hard-tabs)


235-235: Hard tabs
Column: 1

(MD010, no-hard-tabs)


236-236: Hard tabs
Column: 1

(MD010, no-hard-tabs)


237-237: Hard tabs
Column: 1

(MD010, no-hard-tabs)


238-238: Hard tabs
Column: 1

(MD010, no-hard-tabs)


239-239: Hard tabs
Column: 1

(MD010, no-hard-tabs)


240-240: Hard tabs
Column: 1

(MD010, no-hard-tabs)


241-241: Hard tabs
Column: 1

(MD010, no-hard-tabs)


242-242: Hard tabs
Column: 1

(MD010, no-hard-tabs)


243-243: Hard tabs
Column: 1

(MD010, no-hard-tabs)


244-244: Hard tabs
Column: 1

(MD010, no-hard-tabs)


245-245: Hard tabs
Column: 1

(MD010, no-hard-tabs)


246-246: Hard tabs
Column: 1

(MD010, no-hard-tabs)


247-247: Hard tabs
Column: 1

(MD010, no-hard-tabs)


248-248: Hard tabs
Column: 1

(MD010, no-hard-tabs)


249-249: Hard tabs
Column: 1

(MD010, no-hard-tabs)


250-250: Hard tabs
Column: 1

(MD010, no-hard-tabs)


252-252: Hard tabs
Column: 1

(MD010, no-hard-tabs)


253-253: Hard tabs
Column: 1

(MD010, no-hard-tabs)


254-254: Hard tabs
Column: 1

(MD010, no-hard-tabs)


255-255: Hard tabs
Column: 1

(MD010, no-hard-tabs)


256-256: Hard tabs
Column: 1

(MD010, no-hard-tabs)


257-257: Hard tabs
Column: 1

(MD010, no-hard-tabs)


258-258: Hard tabs
Column: 1

(MD010, no-hard-tabs)


259-259: Hard tabs
Column: 1

(MD010, no-hard-tabs)


260-260: Hard tabs
Column: 1

(MD010, no-hard-tabs)


261-261: Hard tabs
Column: 1

(MD010, no-hard-tabs)


262-262: Hard tabs
Column: 1

(MD010, no-hard-tabs)


263-263: Hard tabs
Column: 1

(MD010, no-hard-tabs)


264-264: Hard tabs
Column: 1

(MD010, no-hard-tabs)


265-265: Hard tabs
Column: 1

(MD010, no-hard-tabs)


266-266: Hard tabs
Column: 1

(MD010, no-hard-tabs)


268-268: Hard tabs
Column: 1

(MD010, no-hard-tabs)


269-269: Hard tabs
Column: 1

(MD010, no-hard-tabs)


270-270: Hard tabs
Column: 1

(MD010, no-hard-tabs)


271-271: Hard tabs
Column: 1

(MD010, no-hard-tabs)


272-272: Hard tabs
Column: 1

(MD010, no-hard-tabs)


273-273: Hard tabs
Column: 1

(MD010, no-hard-tabs)


274-274: Hard tabs
Column: 1

(MD010, no-hard-tabs)


275-275: Hard tabs
Column: 1

(MD010, no-hard-tabs)


276-276: Hard tabs
Column: 1

(MD010, no-hard-tabs)


278-278: Hard tabs
Column: 1

(MD010, no-hard-tabs)


279-279: Hard tabs
Column: 1

(MD010, no-hard-tabs)


280-280: Hard tabs
Column: 1

(MD010, no-hard-tabs)


282-282: Hard tabs
Column: 1

(MD010, no-hard-tabs)


283-283: Hard tabs
Column: 1

(MD010, no-hard-tabs)


284-284: Hard tabs
Column: 1

(MD010, no-hard-tabs)


285-285: Hard tabs
Column: 1

(MD010, no-hard-tabs)


286-286: Hard tabs
Column: 1

(MD010, no-hard-tabs)


287-287: Hard tabs
Column: 1

(MD010, no-hard-tabs)


288-288: Hard tabs
Column: 1

(MD010, no-hard-tabs)


289-289: Hard tabs
Column: 1

(MD010, no-hard-tabs)


291-291: Hard tabs
Column: 1

(MD010, no-hard-tabs)


303-303: Hard tabs
Column: 1

(MD010, no-hard-tabs)


306-306: Hard tabs
Column: 1

(MD010, no-hard-tabs)


309-309: Hard tabs
Column: 1

(MD010, no-hard-tabs)


312-312: Hard tabs
Column: 1

(MD010, no-hard-tabs)


315-315: Hard tabs
Column: 1

(MD010, no-hard-tabs)


318-318: Hard tabs
Column: 1

(MD010, no-hard-tabs)


321-321: Hard tabs
Column: 1

(MD010, no-hard-tabs)


324-324: Hard tabs
Column: 1

(MD010, no-hard-tabs)


327-327: Hard tabs
Column: 1

(MD010, no-hard-tabs)


330-330: Hard tabs
Column: 1

(MD010, no-hard-tabs)


333-333: Hard tabs
Column: 1

(MD010, no-hard-tabs)


336-336: Hard tabs
Column: 1

(MD010, no-hard-tabs)


339-339: Hard tabs
Column: 1

(MD010, no-hard-tabs)


342-342: Hard tabs
Column: 1

(MD010, no-hard-tabs)


345-345: Hard tabs
Column: 1

(MD010, no-hard-tabs)


348-348: Hard tabs
Column: 1

(MD010, no-hard-tabs)


351-351: Hard tabs
Column: 1

(MD010, no-hard-tabs)


354-354: Hard tabs
Column: 1

(MD010, no-hard-tabs)


357-357: Hard tabs
Column: 1

(MD010, no-hard-tabs)


360-360: Hard tabs
Column: 1

(MD010, no-hard-tabs)


363-363: Hard tabs
Column: 1

(MD010, no-hard-tabs)


366-366: Hard tabs
Column: 1

(MD010, no-hard-tabs)


369-369: Hard tabs
Column: 1

(MD010, no-hard-tabs)


372-372: Hard tabs
Column: 1

(MD010, no-hard-tabs)


375-375: Hard tabs
Column: 1

(MD010, no-hard-tabs)


378-378: Hard tabs
Column: 1

(MD010, no-hard-tabs)


381-381: Hard tabs
Column: 1

(MD010, no-hard-tabs)


384-384: Hard tabs
Column: 1

(MD010, no-hard-tabs)


387-387: Hard tabs
Column: 1

(MD010, no-hard-tabs)


390-390: Hard tabs
Column: 1

(MD010, no-hard-tabs)


393-393: Hard tabs
Column: 1

(MD010, no-hard-tabs)


396-396: Hard tabs
Column: 1

(MD010, no-hard-tabs)


399-399: Hard tabs
Column: 1

(MD010, no-hard-tabs)


402-402: Hard tabs
Column: 1

(MD010, no-hard-tabs)


405-405: Hard tabs
Column: 1

(MD010, no-hard-tabs)


408-408: Hard tabs
Column: 1

(MD010, no-hard-tabs)


411-411: Hard tabs
Column: 1

(MD010, no-hard-tabs)


414-414: Hard tabs
Column: 1

(MD010, no-hard-tabs)


417-417: Hard tabs
Column: 1

(MD010, no-hard-tabs)


420-420: Hard tabs
Column: 1

(MD010, no-hard-tabs)


423-423: Hard tabs
Column: 1

(MD010, no-hard-tabs)


426-426: Hard tabs
Column: 1

(MD010, no-hard-tabs)


429-429: Hard tabs
Column: 1

(MD010, no-hard-tabs)


432-432: Hard tabs
Column: 1

(MD010, no-hard-tabs)


435-435: Hard tabs
Column: 1

(MD010, no-hard-tabs)


438-438: Hard tabs
Column: 1

(MD010, no-hard-tabs)


441-441: Hard tabs
Column: 1

(MD010, no-hard-tabs)


444-444: Hard tabs
Column: 1

(MD010, no-hard-tabs)


447-447: Hard tabs
Column: 1

(MD010, no-hard-tabs)


450-450: Hard tabs
Column: 1

(MD010, no-hard-tabs)


453-453: Hard tabs
Column: 1

(MD010, no-hard-tabs)


456-456: Hard tabs
Column: 1

(MD010, no-hard-tabs)


459-459: Hard tabs
Column: 1

(MD010, no-hard-tabs)


462-462: Hard tabs
Column: 1

(MD010, no-hard-tabs)


465-465: Hard tabs
Column: 1

(MD010, no-hard-tabs)


468-468: Hard tabs
Column: 1

(MD010, no-hard-tabs)


471-471: Hard tabs
Column: 1

(MD010, no-hard-tabs)


474-474: Hard tabs
Column: 1

(MD010, no-hard-tabs)


477-477: Hard tabs
Column: 1

(MD010, no-hard-tabs)


480-480: Hard tabs
Column: 1

(MD010, no-hard-tabs)


483-483: Hard tabs
Column: 1

(MD010, no-hard-tabs)


486-486: Hard tabs
Column: 1

(MD010, no-hard-tabs)


489-489: Hard tabs
Column: 1

(MD010, no-hard-tabs)


492-492: Hard tabs
Column: 1

(MD010, no-hard-tabs)


495-495: Hard tabs
Column: 1

(MD010, no-hard-tabs)


498-498: Hard tabs
Column: 1

(MD010, no-hard-tabs)


501-501: Hard tabs
Column: 1

(MD010, no-hard-tabs)


504-504: Hard tabs
Column: 1

(MD010, no-hard-tabs)


507-507: Hard tabs
Column: 1

(MD010, no-hard-tabs)


510-510: Hard tabs
Column: 1

(MD010, no-hard-tabs)


513-513: Hard tabs
Column: 1

(MD010, no-hard-tabs)


516-516: Hard tabs
Column: 1

(MD010, no-hard-tabs)


519-519: Hard tabs
Column: 1

(MD010, no-hard-tabs)


522-522: Hard tabs
Column: 1

(MD010, no-hard-tabs)


525-525: Hard tabs
Column: 1

(MD010, no-hard-tabs)


528-528: Hard tabs
Column: 1

(MD010, no-hard-tabs)


531-531: Hard tabs
Column: 1

(MD010, no-hard-tabs)


534-534: Hard tabs
Column: 1

(MD010, no-hard-tabs)


537-537: Hard tabs
Column: 1

(MD010, no-hard-tabs)


540-540: Hard tabs
Column: 1

(MD010, no-hard-tabs)


543-543: Hard tabs
Column: 1

(MD010, no-hard-tabs)


546-546: Hard tabs
Column: 1

(MD010, no-hard-tabs)


549-549: Hard tabs
Column: 1

(MD010, no-hard-tabs)


552-552: Hard tabs
Column: 1

(MD010, no-hard-tabs)


555-555: Hard tabs
Column: 1

(MD010, no-hard-tabs)


558-558: Hard tabs
Column: 1

(MD010, no-hard-tabs)


561-561: Hard tabs
Column: 1

(MD010, no-hard-tabs)


564-564: Hard tabs
Column: 1

(MD010, no-hard-tabs)


567-567: Hard tabs
Column: 1

(MD010, no-hard-tabs)


570-570: Hard tabs
Column: 1

(MD010, no-hard-tabs)


573-573: Hard tabs
Column: 1

(MD010, no-hard-tabs)


576-576: Hard tabs
Column: 1

(MD010, no-hard-tabs)


579-579: Hard tabs
Column: 1

(MD010, no-hard-tabs)


582-582: Hard tabs
Column: 1

(MD010, no-hard-tabs)


585-585: Hard tabs
Column: 1

(MD010, no-hard-tabs)


588-588: Hard tabs
Column: 1

(MD010, no-hard-tabs)


591-591: Hard tabs
Column: 1

(MD010, no-hard-tabs)


594-594: Hard tabs
Column: 1

(MD010, no-hard-tabs)


597-597: Hard tabs
Column: 1

(MD010, no-hard-tabs)


600-600: Hard tabs
Column: 1

(MD010, no-hard-tabs)


603-603: Hard tabs
Column: 1

(MD010, no-hard-tabs)


606-606: Hard tabs
Column: 1

(MD010, no-hard-tabs)


609-609: Hard tabs
Column: 1

(MD010, no-hard-tabs)


612-612: Hard tabs
Column: 1

(MD010, no-hard-tabs)


615-615: Hard tabs
Column: 1

(MD010, no-hard-tabs)


618-618: Hard tabs
Column: 1

(MD010, no-hard-tabs)


621-621: Hard tabs
Column: 1

(MD010, no-hard-tabs)


624-624: Hard tabs
Column: 1

(MD010, no-hard-tabs)


627-627: Hard tabs
Column: 1

(MD010, no-hard-tabs)


630-630: Hard tabs
Column: 1

(MD010, no-hard-tabs)


633-633: Hard tabs
Column: 1

(MD010, no-hard-tabs)


636-636: Hard tabs
Column: 1

(MD010, no-hard-tabs)


639-639: Hard tabs
Column: 1

(MD010, no-hard-tabs)


642-642: Hard tabs
Column: 1

(MD010, no-hard-tabs)


645-645: Hard tabs
Column: 1

(MD010, no-hard-tabs)


648-648: Hard tabs
Column: 1

(MD010, no-hard-tabs)


651-651: Hard tabs
Column: 1

(MD010, no-hard-tabs)


654-654: Hard tabs
Column: 1

(MD010, no-hard-tabs)


657-657: Hard tabs
Column: 1

(MD010, no-hard-tabs)


660-660: Hard tabs
Column: 1

(MD010, no-hard-tabs)


663-663: Hard tabs
Column: 1

(MD010, no-hard-tabs)


666-666: Hard tabs
Column: 1

(MD010, no-hard-tabs)


669-669: Hard tabs
Column: 1

(MD010, no-hard-tabs)


672-672: Hard tabs
Column: 1

(MD010, no-hard-tabs)


675-675: Hard tabs
Column: 1

(MD010, no-hard-tabs)


678-678: Hard tabs
Column: 1

(MD010, no-hard-tabs)


681-681: Hard tabs
Column: 1

(MD010, no-hard-tabs)


684-684: Hard tabs
Column: 1

(MD010, no-hard-tabs)


687-687: Hard tabs
Column: 1

(MD010, no-hard-tabs)


690-690: Hard tabs
Column: 1

(MD010, no-hard-tabs)


693-693: Hard tabs
Column: 1

(MD010, no-hard-tabs)


696-696: Hard tabs
Column: 1

(MD010, no-hard-tabs)


699-699: Hard tabs
Column: 1

(MD010, no-hard-tabs)


702-702: Hard tabs
Column: 1

(MD010, no-hard-tabs)


705-705: Hard tabs
Column: 1

(MD010, no-hard-tabs)


708-708: Hard tabs
Column: 1

(MD010, no-hard-tabs)


711-711: Hard tabs
Column: 1

(MD010, no-hard-tabs)


714-714: Hard tabs
Column: 1

(MD010, no-hard-tabs)


717-717: Hard tabs
Column: 1

(MD010, no-hard-tabs)


720-720: Hard tabs
Column: 1

(MD010, no-hard-tabs)

♻️ Duplicate comments (1)
tools/modules/docs/config.docs.sh (1)

22-23: Ignore SC2154 warning for script_dir.
script_dir is initialized in the main bin/armbian-config script and available to all sourced modules. This ShellCheck warning can be safely ignored.

🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 22-22: script_dir is referenced but not assigned.

(SC2154)

🧹 Nitpick comments (6)
DOCUMENTATION.md (1)

13-13: Insert missing space in the SYNOPSIS.
The command and its options should be separated by a space:

- `armbian-config[option] [arguments] [@]`
+ `armbian-config [option] [arguments] [@]`
tools/modules/docs/config.docs.sh (5)

32-39: Add alt text in the here-doc template as well.
Mirror the change in DOCUMENTATION.md by including alt text in the generated template:

@@ EOF_DOC > "$doc_dir/DOCUMENTATION.md"
-<img src="https://raw.githubusercontent.com/armbian/configng/main/share/icons/hicolor/scalable/configng-tux.svg">
+<img alt="Armbian Config Logo" src="https://raw.githubusercontent.com/armbian/configng/main/share/icons/hicolor/scalable/configng-tux.svg">

97-104: Man-page conversion feedback.
Consider referencing the $man_dir variable in the gzip call for consistency:

-if pandoc -s -t man "$doc_dir/DOCUMENTATION.md" -o "$man_dir/armbian-config.1" && gzip -f "$script_dir/../share/man1/armbian-config.1"; then
+if pandoc -s -t man "$doc_dir/DOCUMENTATION.md" -o "$man_dir/armbian-config.1" && gzip -f "$man_dir/armbian-config.1"; then

This avoids hardcoding the path twice.


159-159: Use the script’s basename in the usage header.
Instead of ${0}, display only the executable’s name:

-mod_message="Usage: ${0} --api [module] [options]\n\n"
+local script_name=$(basename "$0")
+mod_message="Usage: ${script_name} --api [module] [options]\n\n"

161-166: Sort keys for deterministic output.
Iterating an associative array yields arbitrary order. For consistent help listings, sort the keys:

-for key in "${!module_options[@]}"; do
+for key in $(printf "%s\n" "${!module_options[@]}" | sort); do

165-174: Review conditional example logic.
The empty-example fallback is correct, but you may simplify the condition by centralizing the “no example” default. This is purely optional as the current logic works.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 6d47020 and 8533dff.

⛔ Files ignored due to path filters (1)
  • share/man1/armbian-config.1.gz is excluded by !**/*.gz
📒 Files selected for processing (2)
  • DOCUMENTATION.md (8 hunks)
  • tools/modules/docs/config.docs.sh (3 hunks)
🧰 Additional context used
🧠 Learnings (1)
tools/modules/docs/config.docs.sh (1)
Learnt from: Tearran
PR: armbian/configng#572
File: tools/modules/docs/config.docs.sh:21-24
Timestamp: 2025-04-30T23:57:15.251Z
Learning: In the armbian/configng project, `script_dir` is defined in the main script `bin/armbian-config` and is available to all sourced module files like `tools/modules/docs/config.docs.sh`. The variable doesn't need to be redefined in each module file.
🪛 Shellcheck (0.10.0)
tools/modules/docs/config.docs.sh

[warning] 22-22: script_dir is referenced but not assigned.

(SC2154)

🪛 GitHub Actions: Coding style check
tools/modules/docs/config.docs.sh

[error] 105-105: Wrong indentation type (spaces instead of tabs) detected by editorconfig-checker.

🪛 markdownlint-cli2 (0.17.2)
DOCUMENTATION.md

7-7: Images should have alternate text (alt text)
null

(MD045, no-alt-text)


66-66: Hard tabs
Column: 1

(MD010, no-hard-tabs)


82-82: Hard tabs
Column: 1

(MD010, no-hard-tabs)


127-127: Hard tabs
Column: 1

(MD010, no-hard-tabs)


128-128: Hard tabs
Column: 1

(MD010, no-hard-tabs)


129-129: Hard tabs
Column: 1

(MD010, no-hard-tabs)


130-130: Hard tabs
Column: 1

(MD010, no-hard-tabs)


131-131: Hard tabs
Column: 1

(MD010, no-hard-tabs)


132-132: Hard tabs
Column: 1

(MD010, no-hard-tabs)


133-133: Hard tabs
Column: 1

(MD010, no-hard-tabs)


134-134: Hard tabs
Column: 1

(MD010, no-hard-tabs)


135-135: Hard tabs
Column: 1

(MD010, no-hard-tabs)


136-136: Hard tabs
Column: 1

(MD010, no-hard-tabs)


137-137: Hard tabs
Column: 1

(MD010, no-hard-tabs)


139-139: Hard tabs
Column: 1

(MD010, no-hard-tabs)


140-140: Hard tabs
Column: 1

(MD010, no-hard-tabs)


141-141: Hard tabs
Column: 1

(MD010, no-hard-tabs)


142-142: Hard tabs
Column: 1

(MD010, no-hard-tabs)


143-143: Hard tabs
Column: 1

(MD010, no-hard-tabs)


144-144: Hard tabs
Column: 1

(MD010, no-hard-tabs)


145-145: Hard tabs
Column: 1

(MD010, no-hard-tabs)


146-146: Hard tabs
Column: 1

(MD010, no-hard-tabs)


147-147: Hard tabs
Column: 1

(MD010, no-hard-tabs)


148-148: Hard tabs
Column: 1

(MD010, no-hard-tabs)


150-150: Hard tabs
Column: 1

(MD010, no-hard-tabs)


151-151: Hard tabs
Column: 1

(MD010, no-hard-tabs)


152-152: Hard tabs
Column: 1

(MD010, no-hard-tabs)


154-154: Hard tabs
Column: 1

(MD010, no-hard-tabs)


155-155: Hard tabs
Column: 1

(MD010, no-hard-tabs)


156-156: Hard tabs
Column: 1

(MD010, no-hard-tabs)


158-158: Hard tabs
Column: 1

(MD010, no-hard-tabs)


159-159: Hard tabs
Column: 1

(MD010, no-hard-tabs)


160-160: Hard tabs
Column: 1

(MD010, no-hard-tabs)


162-162: Hard tabs
Column: 1

(MD010, no-hard-tabs)


163-163: Hard tabs
Column: 1

(MD010, no-hard-tabs)


164-164: Hard tabs
Column: 1

(MD010, no-hard-tabs)


165-165: Hard tabs
Column: 1

(MD010, no-hard-tabs)


166-166: Hard tabs
Column: 1

(MD010, no-hard-tabs)


167-167: Hard tabs
Column: 1

(MD010, no-hard-tabs)


168-168: Hard tabs
Column: 1

(MD010, no-hard-tabs)


169-169: Hard tabs
Column: 1

(MD010, no-hard-tabs)


170-170: Hard tabs
Column: 1

(MD010, no-hard-tabs)


171-171: Hard tabs
Column: 1

(MD010, no-hard-tabs)


172-172: Hard tabs
Column: 1

(MD010, no-hard-tabs)


173-173: Hard tabs
Column: 1

(MD010, no-hard-tabs)


174-174: Hard tabs
Column: 1

(MD010, no-hard-tabs)


175-175: Hard tabs
Column: 1

(MD010, no-hard-tabs)


176-176: Hard tabs
Column: 1

(MD010, no-hard-tabs)


177-177: Hard tabs
Column: 1

(MD010, no-hard-tabs)


178-178: Hard tabs
Column: 1

(MD010, no-hard-tabs)


179-179: Hard tabs
Column: 1

(MD010, no-hard-tabs)


180-180: Hard tabs
Column: 1

(MD010, no-hard-tabs)


181-181: Hard tabs
Column: 1

(MD010, no-hard-tabs)


182-182: Hard tabs
Column: 1

(MD010, no-hard-tabs)


183-183: Hard tabs
Column: 1

(MD010, no-hard-tabs)


184-184: Hard tabs
Column: 1

(MD010, no-hard-tabs)


185-185: Hard tabs
Column: 1

(MD010, no-hard-tabs)


186-186: Hard tabs
Column: 1

(MD010, no-hard-tabs)


187-187: Hard tabs
Column: 1

(MD010, no-hard-tabs)


188-188: Hard tabs
Column: 1

(MD010, no-hard-tabs)


189-189: Hard tabs
Column: 1

(MD010, no-hard-tabs)


190-190: Hard tabs
Column: 1

(MD010, no-hard-tabs)


191-191: Hard tabs
Column: 1

(MD010, no-hard-tabs)


192-192: Hard tabs
Column: 1

(MD010, no-hard-tabs)


193-193: Hard tabs
Column: 1

(MD010, no-hard-tabs)


194-194: Hard tabs
Column: 1

(MD010, no-hard-tabs)


195-195: Hard tabs
Column: 1

(MD010, no-hard-tabs)


196-196: Hard tabs
Column: 1

(MD010, no-hard-tabs)


197-197: Hard tabs
Column: 1

(MD010, no-hard-tabs)


199-199: Hard tabs
Column: 1

(MD010, no-hard-tabs)


200-200: Hard tabs
Column: 1

(MD010, no-hard-tabs)


201-201: Hard tabs
Column: 1

(MD010, no-hard-tabs)


202-202: Hard tabs
Column: 1

(MD010, no-hard-tabs)


203-203: Hard tabs
Column: 1

(MD010, no-hard-tabs)


204-204: Hard tabs
Column: 1

(MD010, no-hard-tabs)


205-205: Hard tabs
Column: 1

(MD010, no-hard-tabs)


206-206: Hard tabs
Column: 1

(MD010, no-hard-tabs)


207-207: Hard tabs
Column: 1

(MD010, no-hard-tabs)


208-208: Hard tabs
Column: 1

(MD010, no-hard-tabs)


209-209: Hard tabs
Column: 1

(MD010, no-hard-tabs)


224-224: Hard tabs
Column: 1

(MD010, no-hard-tabs)


225-225: Hard tabs
Column: 1

(MD010, no-hard-tabs)


227-227: Hard tabs
Column: 1

(MD010, no-hard-tabs)


228-228: Hard tabs
Column: 1

(MD010, no-hard-tabs)


229-229: Hard tabs
Column: 1

(MD010, no-hard-tabs)


230-230: Hard tabs
Column: 1

(MD010, no-hard-tabs)


231-231: Hard tabs
Column: 1

(MD010, no-hard-tabs)


232-232: Hard tabs
Column: 1

(MD010, no-hard-tabs)


233-233: Hard tabs
Column: 1

(MD010, no-hard-tabs)


234-234: Hard tabs
Column: 1

(MD010, no-hard-tabs)


235-235: Hard tabs
Column: 1

(MD010, no-hard-tabs)


236-236: Hard tabs
Column: 1

(MD010, no-hard-tabs)


237-237: Hard tabs
Column: 1

(MD010, no-hard-tabs)


238-238: Hard tabs
Column: 1

(MD010, no-hard-tabs)


239-239: Hard tabs
Column: 1

(MD010, no-hard-tabs)


240-240: Hard tabs
Column: 1

(MD010, no-hard-tabs)


241-241: Hard tabs
Column: 1

(MD010, no-hard-tabs)


242-242: Hard tabs
Column: 1

(MD010, no-hard-tabs)


243-243: Hard tabs
Column: 1

(MD010, no-hard-tabs)


244-244: Hard tabs
Column: 1

(MD010, no-hard-tabs)


245-245: Hard tabs
Column: 1

(MD010, no-hard-tabs)


246-246: Hard tabs
Column: 1

(MD010, no-hard-tabs)


247-247: Hard tabs
Column: 1

(MD010, no-hard-tabs)


248-248: Hard tabs
Column: 1

(MD010, no-hard-tabs)


249-249: Hard tabs
Column: 1

(MD010, no-hard-tabs)


250-250: Hard tabs
Column: 1

(MD010, no-hard-tabs)


252-252: Hard tabs
Column: 1

(MD010, no-hard-tabs)


253-253: Hard tabs
Column: 1

(MD010, no-hard-tabs)


254-254: Hard tabs
Column: 1

(MD010, no-hard-tabs)


255-255: Hard tabs
Column: 1

(MD010, no-hard-tabs)


256-256: Hard tabs
Column: 1

(MD010, no-hard-tabs)


257-257: Hard tabs
Column: 1

(MD010, no-hard-tabs)


258-258: Hard tabs
Column: 1

(MD010, no-hard-tabs)


259-259: Hard tabs
Column: 1

(MD010, no-hard-tabs)


260-260: Hard tabs
Column: 1

(MD010, no-hard-tabs)


261-261: Hard tabs
Column: 1

(MD010, no-hard-tabs)


262-262: Hard tabs
Column: 1

(MD010, no-hard-tabs)


263-263: Hard tabs
Column: 1

(MD010, no-hard-tabs)


264-264: Hard tabs
Column: 1

(MD010, no-hard-tabs)


265-265: Hard tabs
Column: 1

(MD010, no-hard-tabs)


266-266: Hard tabs
Column: 1

(MD010, no-hard-tabs)


268-268: Hard tabs
Column: 1

(MD010, no-hard-tabs)


269-269: Hard tabs
Column: 1

(MD010, no-hard-tabs)


270-270: Hard tabs
Column: 1

(MD010, no-hard-tabs)


271-271: Hard tabs
Column: 1

(MD010, no-hard-tabs)


272-272: Hard tabs
Column: 1

(MD010, no-hard-tabs)


273-273: Hard tabs
Column: 1

(MD010, no-hard-tabs)


274-274: Hard tabs
Column: 1

(MD010, no-hard-tabs)


275-275: Hard tabs
Column: 1

(MD010, no-hard-tabs)


276-276: Hard tabs
Column: 1

(MD010, no-hard-tabs)


278-278: Hard tabs
Column: 1

(MD010, no-hard-tabs)


279-279: Hard tabs
Column: 1

(MD010, no-hard-tabs)


303-303: Hard tabs
Column: 1

(MD010, no-hard-tabs)


306-306: Hard tabs
Column: 1

(MD010, no-hard-tabs)


309-309: Hard tabs
Column: 1

(MD010, no-hard-tabs)


312-312: Hard tabs
Column: 1

(MD010, no-hard-tabs)


315-315: Hard tabs
Column: 1

(MD010, no-hard-tabs)


318-318: Hard tabs
Column: 1

(MD010, no-hard-tabs)


321-321: Hard tabs
Column: 1

(MD010, no-hard-tabs)


324-324: Hard tabs
Column: 1

(MD010, no-hard-tabs)


327-327: Hard tabs
Column: 1

(MD010, no-hard-tabs)


330-330: Hard tabs
Column: 1

(MD010, no-hard-tabs)


333-333: Hard tabs
Column: 1

(MD010, no-hard-tabs)


336-336: Hard tabs
Column: 1

(MD010, no-hard-tabs)


339-339: Hard tabs
Column: 1

(MD010, no-hard-tabs)


342-342: Hard tabs
Column: 1

(MD010, no-hard-tabs)


345-345: Hard tabs
Column: 1

(MD010, no-hard-tabs)


348-348: Hard tabs
Column: 1

(MD010, no-hard-tabs)


351-351: Hard tabs
Column: 1

(MD010, no-hard-tabs)


354-354: Hard tabs
Column: 1

(MD010, no-hard-tabs)


357-357: Hard tabs
Column: 1

(MD010, no-hard-tabs)


360-360: Hard tabs
Column: 1

(MD010, no-hard-tabs)


363-363: Hard tabs
Column: 1

(MD010, no-hard-tabs)


366-366: Hard tabs
Column: 1

(MD010, no-hard-tabs)


369-369: Hard tabs
Column: 1

(MD010, no-hard-tabs)


372-372: Hard tabs
Column: 1

(MD010, no-hard-tabs)


375-375: Hard tabs
Column: 1

(MD010, no-hard-tabs)


378-378: Hard tabs
Column: 1

(MD010, no-hard-tabs)


381-381: Hard tabs
Column: 1

(MD010, no-hard-tabs)


384-384: Hard tabs
Column: 1

(MD010, no-hard-tabs)


387-387: Hard tabs
Column: 1

(MD010, no-hard-tabs)


390-390: Hard tabs
Column: 1

(MD010, no-hard-tabs)


393-393: Hard tabs
Column: 1

(MD010, no-hard-tabs)


396-396: Hard tabs
Column: 1

(MD010, no-hard-tabs)


399-399: Hard tabs
Column: 1

(MD010, no-hard-tabs)


402-402: Hard tabs
Column: 1

(MD010, no-hard-tabs)


405-405: Hard tabs
Column: 1

(MD010, no-hard-tabs)


408-408: Hard tabs
Column: 1

(MD010, no-hard-tabs)


411-411: Hard tabs
Column: 1

(MD010, no-hard-tabs)


414-414: Hard tabs
Column: 1

(MD010, no-hard-tabs)


417-417: Hard tabs
Column: 1

(MD010, no-hard-tabs)


420-420: Hard tabs
Column: 1

(MD010, no-hard-tabs)


423-423: Hard tabs
Column: 1

(MD010, no-hard-tabs)


426-426: Hard tabs
Column: 1

(MD010, no-hard-tabs)


429-429: Hard tabs
Column: 1

(MD010, no-hard-tabs)


432-432: Hard tabs
Column: 1

(MD010, no-hard-tabs)


435-435: Hard tabs
Column: 1

(MD010, no-hard-tabs)


438-438: Hard tabs
Column: 1

(MD010, no-hard-tabs)


441-441: Hard tabs
Column: 1

(MD010, no-hard-tabs)


444-444: Hard tabs
Column: 1

(MD010, no-hard-tabs)


447-447: Hard tabs
Column: 1

(MD010, no-hard-tabs)


450-450: Hard tabs
Column: 1

(MD010, no-hard-tabs)


453-453: Hard tabs
Column: 1

(MD010, no-hard-tabs)


456-456: Hard tabs
Column: 1

(MD010, no-hard-tabs)


459-459: Hard tabs
Column: 1

(MD010, no-hard-tabs)


462-462: Hard tabs
Column: 1

(MD010, no-hard-tabs)


465-465: Hard tabs
Column: 1

(MD010, no-hard-tabs)


468-468: Hard tabs
Column: 1

(MD010, no-hard-tabs)


471-471: Hard tabs
Column: 1

(MD010, no-hard-tabs)


474-474: Hard tabs
Column: 1

(MD010, no-hard-tabs)


477-477: Hard tabs
Column: 1

(MD010, no-hard-tabs)


480-480: Hard tabs
Column: 1

(MD010, no-hard-tabs)


483-483: Hard tabs
Column: 1

(MD010, no-hard-tabs)


486-486: Hard tabs
Column: 1

(MD010, no-hard-tabs)


489-489: Hard tabs
Column: 1

(MD010, no-hard-tabs)


492-492: Hard tabs
Column: 1

(MD010, no-hard-tabs)


495-495: Hard tabs
Column: 1

(MD010, no-hard-tabs)


498-498: Hard tabs
Column: 1

(MD010, no-hard-tabs)


501-501: Hard tabs
Column: 1

(MD010, no-hard-tabs)


504-504: Hard tabs
Column: 1

(MD010, no-hard-tabs)


507-507: Hard tabs
Column: 1

(MD010, no-hard-tabs)


510-510: Hard tabs
Column: 1

(MD010, no-hard-tabs)


513-513: Hard tabs
Column: 1

(MD010, no-hard-tabs)


516-516: Hard tabs
Column: 1

(MD010, no-hard-tabs)


519-519: Hard tabs
Column: 1

(MD010, no-hard-tabs)


522-522: Hard tabs
Column: 1

(MD010, no-hard-tabs)


525-525: Hard tabs
Column: 1

(MD010, no-hard-tabs)


528-528: Hard tabs
Column: 1

(MD010, no-hard-tabs)


531-531: Hard tabs
Column: 1

(MD010, no-hard-tabs)


534-534: Hard tabs
Column: 1

(MD010, no-hard-tabs)


537-537: Hard tabs
Column: 1

(MD010, no-hard-tabs)


540-540: Hard tabs
Column: 1

(MD010, no-hard-tabs)


543-543: Hard tabs
Column: 1

(MD010, no-hard-tabs)


546-546: Hard tabs
Column: 1

(MD010, no-hard-tabs)


549-549: Hard tabs
Column: 1

(MD010, no-hard-tabs)


552-552: Hard tabs
Column: 1

(MD010, no-hard-tabs)


555-555: Hard tabs
Column: 1

(MD010, no-hard-tabs)


558-558: Hard tabs
Column: 1

(MD010, no-hard-tabs)


561-561: Hard tabs
Column: 1

(MD010, no-hard-tabs)


564-564: Hard tabs
Column: 1

(MD010, no-hard-tabs)


567-567: Hard tabs
Column: 1

(MD010, no-hard-tabs)


570-570: Hard tabs
Column: 1

(MD010, no-hard-tabs)


573-573: Hard tabs
Column: 1

(MD010, no-hard-tabs)


576-576: Hard tabs
Column: 1

(MD010, no-hard-tabs)


579-579: Hard tabs
Column: 1

(MD010, no-hard-tabs)


582-582: Hard tabs
Column: 1

(MD010, no-hard-tabs)


585-585: Hard tabs
Column: 1

(MD010, no-hard-tabs)


588-588: Hard tabs
Column: 1

(MD010, no-hard-tabs)


591-591: Hard tabs
Column: 1

(MD010, no-hard-tabs)


594-594: Hard tabs
Column: 1

(MD010, no-hard-tabs)


597-597: Hard tabs
Column: 1

(MD010, no-hard-tabs)


600-600: Hard tabs
Column: 1

(MD010, no-hard-tabs)


603-603: Hard tabs
Column: 1

(MD010, no-hard-tabs)


606-606: Hard tabs
Column: 1

(MD010, no-hard-tabs)


609-609: Hard tabs
Column: 1

(MD010, no-hard-tabs)


612-612: Hard tabs
Column: 1

(MD010, no-hard-tabs)


615-615: Hard tabs
Column: 1

(MD010, no-hard-tabs)


618-618: Hard tabs
Column: 1

(MD010, no-hard-tabs)


621-621: Hard tabs
Column: 1

(MD010, no-hard-tabs)


624-624: Hard tabs
Column: 1

(MD010, no-hard-tabs)


627-627: Hard tabs
Column: 1

(MD010, no-hard-tabs)


630-630: Hard tabs
Column: 1

(MD010, no-hard-tabs)


633-633: Hard tabs
Column: 1

(MD010, no-hard-tabs)


636-636: Hard tabs
Column: 1

(MD010, no-hard-tabs)


639-639: Hard tabs
Column: 1

(MD010, no-hard-tabs)


642-642: Hard tabs
Column: 1

(MD010, no-hard-tabs)


645-645: Hard tabs
Column: 1

(MD010, no-hard-tabs)


648-648: Hard tabs
Column: 1

(MD010, no-hard-tabs)


651-651: Hard tabs
Column: 1

(MD010, no-hard-tabs)


654-654: Hard tabs
Column: 1

(MD010, no-hard-tabs)


657-657: Hard tabs
Column: 1

(MD010, no-hard-tabs)


660-660: Hard tabs
Column: 1

(MD010, no-hard-tabs)


663-663: Hard tabs
Column: 1

(MD010, no-hard-tabs)


666-666: Hard tabs
Column: 1

(MD010, no-hard-tabs)


669-669: Hard tabs
Column: 1

(MD010, no-hard-tabs)


672-672: Hard tabs
Column: 1

(MD010, no-hard-tabs)


675-675: Hard tabs
Column: 1

(MD010, no-hard-tabs)


678-678: Hard tabs
Column: 1

(MD010, no-hard-tabs)


681-681: Hard tabs
Column: 1

(MD010, no-hard-tabs)


684-684: Hard tabs
Column: 1

(MD010, no-hard-tabs)


687-687: Hard tabs
Column: 1

(MD010, no-hard-tabs)


690-690: Hard tabs
Column: 1

(MD010, no-hard-tabs)


693-693: Hard tabs
Column: 1

(MD010, no-hard-tabs)


696-696: Hard tabs
Column: 1

(MD010, no-hard-tabs)


699-699: Hard tabs
Column: 1

(MD010, no-hard-tabs)


702-702: Hard tabs
Column: 1

(MD010, no-hard-tabs)


705-705: Hard tabs
Column: 1

(MD010, no-hard-tabs)


708-708: Hard tabs
Column: 1

(MD010, no-hard-tabs)


711-711: Hard tabs
Column: 1

(MD010, no-hard-tabs)


714-714: Hard tabs
Column: 1

(MD010, no-hard-tabs)


717-717: Hard tabs
Column: 1

(MD010, no-hard-tabs)


720-720: Hard tabs
Column: 1

(MD010, no-hard-tabs)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: NetBox install (noble)
🔇 Additional comments (4)
tools/modules/docs/config.docs.sh (4)

10-10: Confirm intentional omission of example for generate_readme.
The example field is set to an empty string to indicate there are no sub-options beyond --api generate_readme. This aligns with the see_use logic and is correct.


21-24: Directory variables correctly reference project structure.
Using script_dir/../ to target the repo root and script_dir/../share/man1 for the man-pages is valid given that script_dir is defined in the main bin/armbian-config script.

🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 22-22: script_dir is referenced but not assigned.

(SC2154)


25-28: Ensure idempotent directory creation.
The mkdir -p calls will safely create or reuse the documentation and man directories. No additional error handling is needed.


29-29: Logging step confirmed.
The echo -e "Sorting data\nUpdating documentation" provides clear progress feedback.

@github-actions github-actions bot removed the Ready to merge Reviewed, tested and ready for merge label May 1, 2025
@coderabbitai coderabbitai bot added the Ready to merge Reviewed, tested and ready for merge label May 1, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

♻️ Duplicate comments (1)
tools/modules/docs/config.docs.sh (1)

105-105: Use a tab for indentation per EditorConfig.
Ensure this line uses a single leading tab (not spaces) to comply with the project’s EditorConfig.

🧹 Nitpick comments (4)
tools/modules/docs/config.docs.sh (4)

29-29: Consider structured logging over echo -e.
While echo -e works in Bash, introducing a logging helper or using printf (e.g., log_info "Sorting data and updating documentation") can improve clarity and portability.


31-38: Validate Markdown-to-man formatting for inline code.
The SYNOPSIS and other sections use inline backticks (e.g., `armbian-config[option] ...`). Pandoc’s man conversion often prefers explicit code blocks or man macros. Consider switching the synopsis to a fenced code block or Pandoc-specific macros to ensure consistent rendering:

```bash
armbian-config [options] [arguments]

---

`159-159`: **Use `basename "$0"` for the usage header.**  
Printing `${0}` may include the full path. Display only the script name for readability:
```diff
- mod_message="Usage: ${0} --api [module] [options]\n\n"
+ mod_message="Usage: $(basename "$0") --api [module] [options]\n\n"

166-173: Prefer printf over echo -e for multi-line output.
Using printf avoids escape-sequence pitfalls and improves shell compatibility. For example:

printf -- "--api %s - %s\n\t[options] - %s\n\n" \
  "${module_options["$function_name,feature"]}" \
  "${module_options["$function_name,desc"]}" \
  "${example:-None}"

This refactor simplifies the logic and removes the need for echo -e.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 8533dff and 4385963.

📒 Files selected for processing (1)
  • tools/modules/docs/config.docs.sh (3 hunks)
🧰 Additional context used
🧠 Learnings (1)
tools/modules/docs/config.docs.sh (1)
Learnt from: Tearran
PR: armbian/configng#572
File: tools/modules/docs/config.docs.sh:21-24
Timestamp: 2025-04-30T23:57:15.251Z
Learning: In the armbian/configng project, `script_dir` is defined in the main script `bin/armbian-config` and is available to all sourced module files like `tools/modules/docs/config.docs.sh`. The variable doesn't need to be redefined in each module file.
🪛 Shellcheck (0.10.0)
tools/modules/docs/config.docs.sh

[warning] 22-22: script_dir is referenced but not assigned.

(SC2154)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: NetBox install (noble)
🔇 Additional comments (3)
tools/modules/docs/config.docs.sh (3)

10-10: Verify intentional clearing of the example for generate_readme.
The example field was reset to an empty string, causing see_use to display "None" for this command. Confirm that omitting the example is desired and update or document it accordingly if needed.


21-23: Approve directory variables setup.
Deriving doc_dir and man_dir from the injected script_dir matches the project layout (root and share/man1 respectively). This is correct given how the main script defines and exports script_dir.

🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 22-22: script_dir is referenced but not assigned.

(SC2154)


25-27: Approve idempotent directory creation.
Using mkdir -p for both doc_dir and man_dir ensures the target directories exist without error if they already do.

Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
@github-actions github-actions bot removed the Ready to merge Reviewed, tested and ready for merge label May 1, 2025
@Tearran Tearran changed the title Update doc module Revise documentation structure and workflow with automated man page generation Revise documentation module structure and workflow with automated man page generation May 1, 2025
@Tearran Tearran closed this May 3, 2025
@Tearran
Copy link
Member Author

Tearran commented May 8, 2025

@coderabbitai

Context: We are addressing an issue in the armbian-config tool, specifically Issue #592. The issue revolves around the incorrect handling of the overlay_prefix when generating the overlays configuration in /boot/armbianEnv.txt. Currently, the tool appends the overlay_prefix redundantly to each overlay entry, resulting in paths like sun8i-h3-sun8i-h3-uart1.dtbo instead of the correct sun8i-h3-uart1.dtbo.

Objective: Your task is to:

Identify the exact function or script within the armbian-config codebase responsible for generating the overlays line.
Propose a solution to fix the issue, ensuring the overlay_prefix is applied correctly (once, not redundantly) to the overlay entries.
Suggest a commit message for implementing the fix.
Constraints:

The solution should respect the modular structure of armbian-config.
Prevent introducing regressions or breaking existing functionality.
Ensure compatibility with the current armbianEnv.txt format.
Example Fix Logic:

Use a loop (foreach) to iterate over the overlays and prepend the overlay_prefix only if it is not already included.
Ensure the resulting overlays line in /boot/armbianEnv.txt is correctly formatted.
Deliverables:

The name and location of the function or script responsible for the issue.
A clear explanation of the fix, including any code snippets if applicable.
A concise, meaningful commit message, such as:
Code
Fix: Handle overlay_prefix correctly when generating overlays in armbianEnv.txt

@Tearran Tearran reopened this May 8, 2025
Copy link
Contributor

coderabbitai bot commented May 8, 2025

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

@Tearran, I'm searching the codebase to find the exact function responsible for the overlay_prefix issue. Let me analyze the code first to understand how overlays are being generated in armbianEnv.txt.


🏁 Script executed:

#!/bin/bash
# Search for files that reference armbianEnv.txt
echo "=== Files mentioning armbianEnv.txt ==="
rg "armbianEnv\.txt" --type bash --context 2

echo -e "\n=== Files containing references to overlay_prefix ==="
rg "overlay_prefix" --type bash --context 2

echo -e "\n=== Files dealing with overlays configuration ==="
rg -i "overlays.*boot|dtbo|dtb.*overlay" --type bash --context 2

Length of output: 571


@Tearran, I need to try a different search approach since my previous command had issues with the file type specification. Let me search for shell scripts and relevant terms to find the code that handles the overlay_prefix in armbianEnv.txt.


🏁 Script executed:

#!/bin/bash
# Find shell scripts first
echo "=== Shell scripts in the repository ==="
find . -name "*.sh" | grep -v node_modules

echo -e "\n=== Files mentioning armbianEnv.txt ==="
rg "armbianEnv\.txt"

echo -e "\n=== Files containing references to overlay_prefix ==="
rg "overlay_prefix"

echo -e "\n=== Files dealing with overlays configuration ==="
rg -i "overlays.*boot|dtbo|dtb.*overlay"

Length of output: 9225


@Tearran, I've identified that the file responsible for handling overlays is tools/modules/system/manage_dtoverlays.sh. Let me examine its content to pinpoint the exact function that's causing the issue with overlay_prefix duplication.


🏁 Script executed:

#!/bin/bash
# Let's examine the manage_dtoverlays.sh file in detail
cat tools/modules/system/manage_dtoverlays.sh

Length of output: 4320


@Tearran, I've found the file responsible for the issue. Now I'm trying to confirm how the overlays are stored and processed to ensure my fix will be accurate.


🏁 Script executed:

#!/bin/bash
# Check for examples of armbianEnv.txt contents
echo "=== Examples of overlay_prefix in armbianEnv.txt ==="
grep -r "overlay_prefix=" --include="*.txt" .

echo -e "\n=== Examples of overlays= in armbianEnv.txt ==="
grep -r "overlays=" --include="*.txt" .

echo -e "\n=== Looking for example .dtbo files ==="
find /boot -name "*.dtbo" 2>/dev/null | head -5

Length of output: 444


@Tearran, I need to look at the details of Issue #592 to fully understand the problem before proposing a solution.


🏁 Script executed:

#!/bin/bash
# Check the issue details
curl -s "https://api.github.com/repos/armbian/configng/issues/592" | jq -r '.body'

Length of output: 1670


@Tearran, I've analyzed the issue and found the solution. Here's what's happening:

Issue Identification

The problem is in the manage_dtoverlays function in tools/modules/system/manage_dtoverlays.sh.

When users select overlays through the interface, the function saves the selected overlay names directly to /boot/armbianEnv.txt without checking if the names already include the overlay_prefix. Later, when the system loads these overlays, it adds the prefix again (from overlay_prefix=sun8i-h3 in armbianEnv.txt), resulting in double prefixing like sun8i-h3-sun8i-h3-uart1.dtbo.

Solution

Here's my proposed fix - modify the manage_dtoverlays function to strip the prefix from overlay names before saving them:

# After this line:
newoverlays=$(echo $selection | sed 's/"//g')

# Add this code:
# Strip overlay_prefix from each overlay name if it's already present
if [[ -n "$overlay_prefix" ]]; then
    # Convert space-separated list to array
    IFS=' ' read -r -a overlay_array <<< "$newoverlays"
    processed_overlays=()
    
    for overlay in "${overlay_array[@]}"; do
        # Check if overlay starts with the prefix
        if [[ "$overlay" == "$overlay_prefix"* ]]; then
            # Strip the prefix plus any separator (- or _)
            processed_overlay="${overlay#"$overlay_prefix"}"
            processed_overlay="${processed_overlay#[-_]}"
            processed_overlays+=("$processed_overlay")
        else
            # Keep as is if no prefix
            processed_overlays+=("$overlay")
        fi
    done
    
    # Convert back to space-separated list
    newoverlays=$(IFS=' '; echo "${processed_overlays[*]}")
fi

# Then continue with the existing code:
if [[ "${LINUXFAMILY}" == "bcm2711" ]]; then
    # Raspberry Pi specific code...

This solution will:

  1. Convert the space-separated list of overlays to an array
  2. For each overlay, check if it starts with the overlay_prefix
  3. If it does, remove the prefix and any separator (- or _) that might follow
  4. Rejoin the processed overlays back into a space-separated string
  5. Use this processed string in the existing code

Commit Message

Fix: Handle overlay_prefix correctly when generating overlays in armbianEnv.txt

When selecting overlays in the manage_dtoverlays function, the overlay names 
displayed in the UI already contain the overlay_prefix. However, when saving 
these selections to armbianEnv.txt, the prefix wasn't being stripped, causing 
the system to later apply the prefix again, resulting in paths like:
/boot/dtb/overlay/sun8i-h3-sun8i-h3-uart1.dtbo

This fix ensures the prefix is stripped from overlay names before saving to
armbianEnv.txt, preventing the double-prefixing issue.

Fixes #592

This solution respects the modular structure of armbian-config, prevents regressions, and ensures compatibility with the current armbianEnv.txt format.

@coderabbitai coderabbitai bot added the Ready to merge Reviewed, tested and ready for merge label May 8, 2025
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 0

♻️ Duplicate comments (1)
DOCUMENTATION.md (1)

4-4: Duplicate: Add descriptive alt text to the image for accessibility.
The <img> tag on line 4 still lacks an alt attribute. Please include a meaningful description, for example:

- <img src="https://raw.githubusercontent.com/armbian/configng/main/share/icons/hicolor/scalable/configng-tux.svg">
+ <img alt="Armbian Config Logo" src="https://raw.githubusercontent.com/armbian/configng/main/share/icons/hicolor/scalable/configng-tux.svg">
🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

4-4: Images should have alternate text (alt text)
null

(MD045, no-alt-text)

🧹 Nitpick comments (4)
DOCUMENTATION.md (2)

407-569: Nit: Wrap URLs to avoid markdown parsing issues.
Several commands now include addresses in parentheses, e.g.

--cmd HAB002 - openHAB remove (http://10.1.0.29:8080)

Nested parentheses can confuse markdown parsers. Please wrap such URLs in angle brackets <http://10.1.0.29:8080> or backticks `http://10.1.0.29:8080`.

Also applies to: 572-620

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

407-407: Hard tabs
Column: 1

(MD010, no-hard-tabs)


408-408: Hard tabs
Column: 1

(MD010, no-hard-tabs)


410-410: Hard tabs
Column: 1

(MD010, no-hard-tabs)


411-411: Hard tabs
Column: 1

(MD010, no-hard-tabs)


412-412: Hard tabs
Column: 1

(MD010, no-hard-tabs)


414-414: Hard tabs
Column: 1

(MD010, no-hard-tabs)


415-415: Hard tabs
Column: 1

(MD010, no-hard-tabs)


416-416: Hard tabs
Column: 1

(MD010, no-hard-tabs)


417-417: Hard tabs
Column: 1

(MD010, no-hard-tabs)


418-418: Hard tabs
Column: 1

(MD010, no-hard-tabs)


419-419: Hard tabs
Column: 1

(MD010, no-hard-tabs)


420-420: Hard tabs
Column: 1

(MD010, no-hard-tabs)


421-421: Hard tabs
Column: 1

(MD010, no-hard-tabs)


422-422: Hard tabs
Column: 1

(MD010, no-hard-tabs)


429-429: Hard tabs
Column: 1

(MD010, no-hard-tabs)


430-430: Hard tabs
Column: 1

(MD010, no-hard-tabs)


431-431: Hard tabs
Column: 1

(MD010, no-hard-tabs)


432-432: Hard tabs
Column: 1

(MD010, no-hard-tabs)


442-442: Hard tabs
Column: 1

(MD010, no-hard-tabs)


443-443: Hard tabs
Column: 1

(MD010, no-hard-tabs)


444-444: Hard tabs
Column: 1

(MD010, no-hard-tabs)


445-445: Hard tabs
Column: 1

(MD010, no-hard-tabs)


447-447: Hard tabs
Column: 1

(MD010, no-hard-tabs)


448-448: Hard tabs
Column: 1

(MD010, no-hard-tabs)


449-449: Hard tabs
Column: 1

(MD010, no-hard-tabs)


450-450: Hard tabs
Column: 1

(MD010, no-hard-tabs)


451-451: Hard tabs
Column: 1

(MD010, no-hard-tabs)


452-452: Hard tabs
Column: 1

(MD010, no-hard-tabs)


453-453: Hard tabs
Column: 1

(MD010, no-hard-tabs)


454-454: Hard tabs
Column: 1

(MD010, no-hard-tabs)


455-455: Hard tabs
Column: 1

(MD010, no-hard-tabs)


456-456: Hard tabs
Column: 1

(MD010, no-hard-tabs)


457-457: Hard tabs
Column: 1

(MD010, no-hard-tabs)


458-458: Hard tabs
Column: 1

(MD010, no-hard-tabs)


460-460: Hard tabs
Column: 1

(MD010, no-hard-tabs)


461-461: Hard tabs
Column: 1

(MD010, no-hard-tabs)


462-462: Hard tabs
Column: 1

(MD010, no-hard-tabs)


463-463: Hard tabs
Column: 1

(MD010, no-hard-tabs)


464-464: Hard tabs
Column: 1

(MD010, no-hard-tabs)


465-465: Hard tabs
Column: 1

(MD010, no-hard-tabs)


466-466: Hard tabs
Column: 1

(MD010, no-hard-tabs)


467-467: Hard tabs
Column: 1

(MD010, no-hard-tabs)


468-468: Hard tabs
Column: 1

(MD010, no-hard-tabs)


469-469: Hard tabs
Column: 1

(MD010, no-hard-tabs)


471-471: Hard tabs
Column: 1

(MD010, no-hard-tabs)


472-472: Hard tabs
Column: 1

(MD010, no-hard-tabs)


473-473: Hard tabs
Column: 1

(MD010, no-hard-tabs)


475-475: Hard tabs
Column: 1

(MD010, no-hard-tabs)


476-476: Hard tabs
Column: 1

(MD010, no-hard-tabs)


477-477: Hard tabs
Column: 1

(MD010, no-hard-tabs)


479-479: Hard tabs
Column: 1

(MD010, no-hard-tabs)


480-480: Hard tabs
Column: 1

(MD010, no-hard-tabs)


481-481: Hard tabs
Column: 1

(MD010, no-hard-tabs)


483-483: Hard tabs
Column: 1

(MD010, no-hard-tabs)


484-484: Hard tabs
Column: 1

(MD010, no-hard-tabs)


485-485: Hard tabs
Column: 1

(MD010, no-hard-tabs)


486-486: Hard tabs
Column: 1

(MD010, no-hard-tabs)


487-487: Hard tabs
Column: 1

(MD010, no-hard-tabs)


488-488: Hard tabs
Column: 1

(MD010, no-hard-tabs)


489-489: Hard tabs
Column: 1

(MD010, no-hard-tabs)


490-490: Hard tabs
Column: 1

(MD010, no-hard-tabs)


491-491: Hard tabs
Column: 1

(MD010, no-hard-tabs)


492-492: Hard tabs
Column: 1

(MD010, no-hard-tabs)


493-493: Hard tabs
Column: 1

(MD010, no-hard-tabs)


494-494: Hard tabs
Column: 1

(MD010, no-hard-tabs)


495-495: Hard tabs
Column: 1

(MD010, no-hard-tabs)


496-496: Hard tabs
Column: 1

(MD010, no-hard-tabs)


497-497: Hard tabs
Column: 1

(MD010, no-hard-tabs)


498-498: Hard tabs
Column: 1

(MD010, no-hard-tabs)


499-499: Hard tabs
Column: 1

(MD010, no-hard-tabs)


500-500: Hard tabs
Column: 1

(MD010, no-hard-tabs)


501-501: Hard tabs
Column: 1

(MD010, no-hard-tabs)


502-502: Hard tabs
Column: 1

(MD010, no-hard-tabs)


503-503: Hard tabs
Column: 1

(MD010, no-hard-tabs)


504-504: Hard tabs
Column: 1

(MD010, no-hard-tabs)


505-505: Hard tabs
Column: 1

(MD010, no-hard-tabs)


506-506: Hard tabs
Column: 1

(MD010, no-hard-tabs)


507-507: Hard tabs
Column: 1

(MD010, no-hard-tabs)


508-508: Hard tabs
Column: 1

(MD010, no-hard-tabs)


509-509: Hard tabs
Column: 1

(MD010, no-hard-tabs)


510-510: Hard tabs
Column: 1

(MD010, no-hard-tabs)


511-511: Hard tabs
Column: 1

(MD010, no-hard-tabs)


512-512: Hard tabs
Column: 1

(MD010, no-hard-tabs)


513-513: Hard tabs
Column: 1

(MD010, no-hard-tabs)


514-514: Hard tabs
Column: 1

(MD010, no-hard-tabs)


515-515: Hard tabs
Column: 1

(MD010, no-hard-tabs)


516-516: Hard tabs
Column: 1

(MD010, no-hard-tabs)


517-517: Hard tabs
Column: 1

(MD010, no-hard-tabs)


518-518: Hard tabs
Column: 1

(MD010, no-hard-tabs)


520-520: Hard tabs
Column: 1

(MD010, no-hard-tabs)


521-521: Hard tabs
Column: 1

(MD010, no-hard-tabs)


522-522: Hard tabs
Column: 1

(MD010, no-hard-tabs)


523-523: Hard tabs
Column: 1

(MD010, no-hard-tabs)


524-524: Hard tabs
Column: 1

(MD010, no-hard-tabs)


525-525: Hard tabs
Column: 1

(MD010, no-hard-tabs)


526-526: Hard tabs
Column: 1

(MD010, no-hard-tabs)


527-527: Hard tabs
Column: 1

(MD010, no-hard-tabs)


528-528: Hard tabs
Column: 1

(MD010, no-hard-tabs)


529-529: Hard tabs
Column: 1

(MD010, no-hard-tabs)


530-530: Hard tabs
Column: 1

(MD010, no-hard-tabs)


531-531: Hard tabs
Column: 1

(MD010, no-hard-tabs)


533-533: Hard tabs
Column: 1

(MD010, no-hard-tabs)


534-534: Hard tabs
Column: 1

(MD010, no-hard-tabs)


535-535: Hard tabs
Column: 1

(MD010, no-hard-tabs)


536-536: Hard tabs
Column: 1

(MD010, no-hard-tabs)


537-537: Hard tabs
Column: 1

(MD010, no-hard-tabs)


538-538: Hard tabs
Column: 1

(MD010, no-hard-tabs)


540-540: Hard tabs
Column: 1

(MD010, no-hard-tabs)


541-541: Hard tabs
Column: 1

(MD010, no-hard-tabs)


543-543: Hard tabs
Column: 1

(MD010, no-hard-tabs)


544-544: Hard tabs
Column: 1

(MD010, no-hard-tabs)


545-545: Hard tabs
Column: 1

(MD010, no-hard-tabs)


546-546: Hard tabs
Column: 1

(MD010, no-hard-tabs)


547-547: Hard tabs
Column: 1

(MD010, no-hard-tabs)


548-548: Hard tabs
Column: 1

(MD010, no-hard-tabs)


549-549: Hard tabs
Column: 1

(MD010, no-hard-tabs)


551-551: Hard tabs
Column: 1

(MD010, no-hard-tabs)


552-552: Hard tabs
Column: 1

(MD010, no-hard-tabs)


553-553: Hard tabs
Column: 1

(MD010, no-hard-tabs)


554-554: Hard tabs
Column: 1

(MD010, no-hard-tabs)


555-555: Hard tabs
Column: 1

(MD010, no-hard-tabs)


556-556: Hard tabs
Column: 1

(MD010, no-hard-tabs)


557-557: Hard tabs
Column: 1

(MD010, no-hard-tabs)


558-558: Hard tabs
Column: 1

(MD010, no-hard-tabs)


559-559: Hard tabs
Column: 1

(MD010, no-hard-tabs)


560-560: Hard tabs
Column: 1

(MD010, no-hard-tabs)


561-561: Hard tabs
Column: 1

(MD010, no-hard-tabs)


562-562: Hard tabs
Column: 1

(MD010, no-hard-tabs)


563-563: Hard tabs
Column: 1

(MD010, no-hard-tabs)


564-564: Hard tabs
Column: 1

(MD010, no-hard-tabs)


565-565: Hard tabs
Column: 1

(MD010, no-hard-tabs)


566-566: Hard tabs
Column: 1

(MD010, no-hard-tabs)


567-567: Hard tabs
Column: 1

(MD010, no-hard-tabs)


568-568: Hard tabs
Column: 1

(MD010, no-hard-tabs)


569-569: Hard tabs
Column: 1

(MD010, no-hard-tabs)


407-614: Nit: Replace hard tabs with spaces to satisfy MD010.
Multiple lines contain hard tab characters flagged by markdownlint (MD010). Convert tabs to spaces or adjust EditorConfig to avoid hard tabs in this .md file.

🧰 Tools
🪛 markdownlint-cli2 (0.17.2)

407-407: Hard tabs
Column: 1

(MD010, no-hard-tabs)


408-408: Hard tabs
Column: 1

(MD010, no-hard-tabs)


410-410: Hard tabs
Column: 1

(MD010, no-hard-tabs)


411-411: Hard tabs
Column: 1

(MD010, no-hard-tabs)


412-412: Hard tabs
Column: 1

(MD010, no-hard-tabs)


414-414: Hard tabs
Column: 1

(MD010, no-hard-tabs)


415-415: Hard tabs
Column: 1

(MD010, no-hard-tabs)


416-416: Hard tabs
Column: 1

(MD010, no-hard-tabs)


417-417: Hard tabs
Column: 1

(MD010, no-hard-tabs)


418-418: Hard tabs
Column: 1

(MD010, no-hard-tabs)


419-419: Hard tabs
Column: 1

(MD010, no-hard-tabs)


420-420: Hard tabs
Column: 1

(MD010, no-hard-tabs)


421-421: Hard tabs
Column: 1

(MD010, no-hard-tabs)


422-422: Hard tabs
Column: 1

(MD010, no-hard-tabs)


429-429: Hard tabs
Column: 1

(MD010, no-hard-tabs)


430-430: Hard tabs
Column: 1

(MD010, no-hard-tabs)


431-431: Hard tabs
Column: 1

(MD010, no-hard-tabs)


432-432: Hard tabs
Column: 1

(MD010, no-hard-tabs)


442-442: Hard tabs
Column: 1

(MD010, no-hard-tabs)


443-443: Hard tabs
Column: 1

(MD010, no-hard-tabs)


444-444: Hard tabs
Column: 1

(MD010, no-hard-tabs)


445-445: Hard tabs
Column: 1

(MD010, no-hard-tabs)


447-447: Hard tabs
Column: 1

(MD010, no-hard-tabs)


448-448: Hard tabs
Column: 1

(MD010, no-hard-tabs)


449-449: Hard tabs
Column: 1

(MD010, no-hard-tabs)


450-450: Hard tabs
Column: 1

(MD010, no-hard-tabs)


451-451: Hard tabs
Column: 1

(MD010, no-hard-tabs)


452-452: Hard tabs
Column: 1

(MD010, no-hard-tabs)


453-453: Hard tabs
Column: 1

(MD010, no-hard-tabs)


454-454: Hard tabs
Column: 1

(MD010, no-hard-tabs)


455-455: Hard tabs
Column: 1

(MD010, no-hard-tabs)


456-456: Hard tabs
Column: 1

(MD010, no-hard-tabs)


457-457: Hard tabs
Column: 1

(MD010, no-hard-tabs)


458-458: Hard tabs
Column: 1

(MD010, no-hard-tabs)


460-460: Hard tabs
Column: 1

(MD010, no-hard-tabs)


461-461: Hard tabs
Column: 1

(MD010, no-hard-tabs)


462-462: Hard tabs
Column: 1

(MD010, no-hard-tabs)


463-463: Hard tabs
Column: 1

(MD010, no-hard-tabs)


464-464: Hard tabs
Column: 1

(MD010, no-hard-tabs)


465-465: Hard tabs
Column: 1

(MD010, no-hard-tabs)


466-466: Hard tabs
Column: 1

(MD010, no-hard-tabs)


467-467: Hard tabs
Column: 1

(MD010, no-hard-tabs)


468-468: Hard tabs
Column: 1

(MD010, no-hard-tabs)


469-469: Hard tabs
Column: 1

(MD010, no-hard-tabs)


471-471: Hard tabs
Column: 1

(MD010, no-hard-tabs)


472-472: Hard tabs
Column: 1

(MD010, no-hard-tabs)


473-473: Hard tabs
Column: 1

(MD010, no-hard-tabs)


475-475: Hard tabs
Column: 1

(MD010, no-hard-tabs)


476-476: Hard tabs
Column: 1

(MD010, no-hard-tabs)


477-477: Hard tabs
Column: 1

(MD010, no-hard-tabs)


479-479: Hard tabs
Column: 1

(MD010, no-hard-tabs)


480-480: Hard tabs
Column: 1

(MD010, no-hard-tabs)


481-481: Hard tabs
Column: 1

(MD010, no-hard-tabs)


483-483: Hard tabs
Column: 1

(MD010, no-hard-tabs)


484-484: Hard tabs
Column: 1

(MD010, no-hard-tabs)


485-485: Hard tabs
Column: 1

(MD010, no-hard-tabs)


486-486: Hard tabs
Column: 1

(MD010, no-hard-tabs)


487-487: Hard tabs
Column: 1

(MD010, no-hard-tabs)


488-488: Hard tabs
Column: 1

(MD010, no-hard-tabs)


489-489: Hard tabs
Column: 1

(MD010, no-hard-tabs)


490-490: Hard tabs
Column: 1

(MD010, no-hard-tabs)


491-491: Hard tabs
Column: 1

(MD010, no-hard-tabs)


492-492: Hard tabs
Column: 1

(MD010, no-hard-tabs)


493-493: Hard tabs
Column: 1

(MD010, no-hard-tabs)


494-494: Hard tabs
Column: 1

(MD010, no-hard-tabs)


495-495: Hard tabs
Column: 1

(MD010, no-hard-tabs)


496-496: Hard tabs
Column: 1

(MD010, no-hard-tabs)


497-497: Hard tabs
Column: 1

(MD010, no-hard-tabs)


498-498: Hard tabs
Column: 1

(MD010, no-hard-tabs)


499-499: Hard tabs
Column: 1

(MD010, no-hard-tabs)


500-500: Hard tabs
Column: 1

(MD010, no-hard-tabs)


501-501: Hard tabs
Column: 1

(MD010, no-hard-tabs)


502-502: Hard tabs
Column: 1

(MD010, no-hard-tabs)


503-503: Hard tabs
Column: 1

(MD010, no-hard-tabs)


504-504: Hard tabs
Column: 1

(MD010, no-hard-tabs)


505-505: Hard tabs
Column: 1

(MD010, no-hard-tabs)


506-506: Hard tabs
Column: 1

(MD010, no-hard-tabs)


507-507: Hard tabs
Column: 1

(MD010, no-hard-tabs)


508-508: Hard tabs
Column: 1

(MD010, no-hard-tabs)


509-509: Hard tabs
Column: 1

(MD010, no-hard-tabs)


510-510: Hard tabs
Column: 1

(MD010, no-hard-tabs)


511-511: Hard tabs
Column: 1

(MD010, no-hard-tabs)


512-512: Hard tabs
Column: 1

(MD010, no-hard-tabs)


513-513: Hard tabs
Column: 1

(MD010, no-hard-tabs)


514-514: Hard tabs
Column: 1

(MD010, no-hard-tabs)


515-515: Hard tabs
Column: 1

(MD010, no-hard-tabs)


516-516: Hard tabs
Column: 1

(MD010, no-hard-tabs)


517-517: Hard tabs
Column: 1

(MD010, no-hard-tabs)


518-518: Hard tabs
Column: 1

(MD010, no-hard-tabs)


520-520: Hard tabs
Column: 1

(MD010, no-hard-tabs)


521-521: Hard tabs
Column: 1

(MD010, no-hard-tabs)


522-522: Hard tabs
Column: 1

(MD010, no-hard-tabs)


523-523: Hard tabs
Column: 1

(MD010, no-hard-tabs)


524-524: Hard tabs
Column: 1

(MD010, no-hard-tabs)


525-525: Hard tabs
Column: 1

(MD010, no-hard-tabs)


526-526: Hard tabs
Column: 1

(MD010, no-hard-tabs)


527-527: Hard tabs
Column: 1

(MD010, no-hard-tabs)


528-528: Hard tabs
Column: 1

(MD010, no-hard-tabs)


529-529: Hard tabs
Column: 1

(MD010, no-hard-tabs)


530-530: Hard tabs
Column: 1

(MD010, no-hard-tabs)


531-531: Hard tabs
Column: 1

(MD010, no-hard-tabs)


533-533: Hard tabs
Column: 1

(MD010, no-hard-tabs)


534-534: Hard tabs
Column: 1

(MD010, no-hard-tabs)


535-535: Hard tabs
Column: 1

(MD010, no-hard-tabs)


536-536: Hard tabs
Column: 1

(MD010, no-hard-tabs)


537-537: Hard tabs
Column: 1

(MD010, no-hard-tabs)


538-538: Hard tabs
Column: 1

(MD010, no-hard-tabs)


540-540: Hard tabs
Column: 1

(MD010, no-hard-tabs)


541-541: Hard tabs
Column: 1

(MD010, no-hard-tabs)


543-543: Hard tabs
Column: 1

(MD010, no-hard-tabs)


544-544: Hard tabs
Column: 1

(MD010, no-hard-tabs)


545-545: Hard tabs
Column: 1

(MD010, no-hard-tabs)


546-546: Hard tabs
Column: 1

(MD010, no-hard-tabs)


547-547: Hard tabs
Column: 1

(MD010, no-hard-tabs)


548-548: Hard tabs
Column: 1

(MD010, no-hard-tabs)


549-549: Hard tabs
Column: 1

(MD010, no-hard-tabs)


551-551: Hard tabs
Column: 1

(MD010, no-hard-tabs)


552-552: Hard tabs
Column: 1

(MD010, no-hard-tabs)


553-553: Hard tabs
Column: 1

(MD010, no-hard-tabs)


554-554: Hard tabs
Column: 1

(MD010, no-hard-tabs)


555-555: Hard tabs
Column: 1

(MD010, no-hard-tabs)


556-556: Hard tabs
Column: 1

(MD010, no-hard-tabs)


557-557: Hard tabs
Column: 1

(MD010, no-hard-tabs)


558-558: Hard tabs
Column: 1

(MD010, no-hard-tabs)


559-559: Hard tabs
Column: 1

(MD010, no-hard-tabs)


560-560: Hard tabs
Column: 1

(MD010, no-hard-tabs)


561-561: Hard tabs
Column: 1

(MD010, no-hard-tabs)


562-562: Hard tabs
Column: 1

(MD010, no-hard-tabs)


563-563: Hard tabs
Column: 1

(MD010, no-hard-tabs)


564-564: Hard tabs
Column: 1

(MD010, no-hard-tabs)


565-565: Hard tabs
Column: 1

(MD010, no-hard-tabs)


566-566: Hard tabs
Column: 1

(MD010, no-hard-tabs)


567-567: Hard tabs
Column: 1

(MD010, no-hard-tabs)


568-568: Hard tabs
Column: 1

(MD010, no-hard-tabs)


569-569: Hard tabs
Column: 1

(MD010, no-hard-tabs)


570-570: Hard tabs
Column: 1

(MD010, no-hard-tabs)


571-571: Hard tabs
Column: 1

(MD010, no-hard-tabs)


572-572: Hard tabs
Column: 1

(MD010, no-hard-tabs)


573-573: Hard tabs
Column: 1

(MD010, no-hard-tabs)


574-574: Hard tabs
Column: 1

(MD010, no-hard-tabs)


576-576: Hard tabs
Column: 1

(MD010, no-hard-tabs)


577-577: Hard tabs
Column: 1

(MD010, no-hard-tabs)


578-578: Hard tabs
Column: 1

(MD010, no-hard-tabs)


579-579: Hard tabs
Column: 1

(MD010, no-hard-tabs)


580-580: Hard tabs
Column: 1

(MD010, no-hard-tabs)


581-581: Hard tabs
Column: 1

(MD010, no-hard-tabs)


582-582: Hard tabs
Column: 1

(MD010, no-hard-tabs)


583-583: Hard tabs
Column: 1

(MD010, no-hard-tabs)


584-584: Hard tabs
Column: 1

(MD010, no-hard-tabs)


585-585: Hard tabs
Column: 1

(MD010, no-hard-tabs)


586-586: Hard tabs
Column: 1

(MD010, no-hard-tabs)


587-587: Hard tabs
Column: 1

(MD010, no-hard-tabs)


588-588: Hard tabs
Column: 1

(MD010, no-hard-tabs)


589-589: Hard tabs
Column: 1

(MD010, no-hard-tabs)


590-590: Hard tabs
Column: 1

(MD010, no-hard-tabs)


592-592: Hard tabs
Column: 1

(MD010, no-hard-tabs)


593-593: Hard tabs
Column: 1

(MD010, no-hard-tabs)


594-594: Hard tabs
Column: 1

(MD010, no-hard-tabs)


595-595: Hard tabs
Column: 1

(MD010, no-hard-tabs)


596-596: Hard tabs
Column: 1

(MD010, no-hard-tabs)


597-597: Hard tabs
Column: 1

(MD010, no-hard-tabs)


598-598: Hard tabs
Column: 1

(MD010, no-hard-tabs)


599-599: Hard tabs
Column: 1

(MD010, no-hard-tabs)


600-600: Hard tabs
Column: 1

(MD010, no-hard-tabs)


602-602: Hard tabs
Column: 1

(MD010, no-hard-tabs)


603-603: Hard tabs
Column: 1

(MD010, no-hard-tabs)


604-604: Hard tabs
Column: 1

(MD010, no-hard-tabs)


606-606: Hard tabs
Column: 1

(MD010, no-hard-tabs)


607-607: Hard tabs
Column: 1

(MD010, no-hard-tabs)


608-608: Hard tabs
Column: 1

(MD010, no-hard-tabs)


609-609: Hard tabs
Column: 1

(MD010, no-hard-tabs)


610-610: Hard tabs
Column: 1

(MD010, no-hard-tabs)


611-611: Hard tabs
Column: 1

(MD010, no-hard-tabs)


612-612: Hard tabs
Column: 1

(MD010, no-hard-tabs)


613-613: Hard tabs
Column: 1

(MD010, no-hard-tabs)

tools/modules/docs/config.docs.sh (2)

29-31: Use printf for portable logging.
echo -e may behave inconsistently across shells. For reliable output, consider:

- echo -e "Sorting data\nUpdating documentation"
+ printf "Sorting data\nUpdating documentation\n"

105-105: Nit: Use a tab for indentation.
The echo on line 105 is indented with spaces. Per EditorConfig, replace those spaces with a single tab.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between 4385963 and 5ac2b1e.

📒 Files selected for processing (2)
  • DOCUMENTATION.md (3 hunks)
  • tools/modules/docs/config.docs.sh (3 hunks)
🧰 Additional context used
🧠 Learnings (1)
tools/modules/docs/config.docs.sh (1)
Learnt from: Tearran
PR: armbian/configng#572
File: tools/modules/docs/config.docs.sh:21-24
Timestamp: 2025-04-30T23:57:15.280Z
Learning: In the armbian/configng project, `script_dir` is defined in the main script `bin/armbian-config` and is available to all sourced module files like `tools/modules/docs/config.docs.sh`. The variable doesn't need to be redefined in each module file.
🪛 Shellcheck (0.10.0)
tools/modules/docs/config.docs.sh

[warning] 22-22: script_dir is referenced but not assigned.

(SC2154)

🪛 markdownlint-cli2 (0.17.2)
DOCUMENTATION.md

407-407: Hard tabs
Column: 1

(MD010, no-hard-tabs)


448-448: Hard tabs
Column: 1

(MD010, no-hard-tabs)


449-449: Hard tabs
Column: 1

(MD010, no-hard-tabs)


450-450: Hard tabs
Column: 1

(MD010, no-hard-tabs)


451-451: Hard tabs
Column: 1

(MD010, no-hard-tabs)


452-452: Hard tabs
Column: 1

(MD010, no-hard-tabs)


453-453: Hard tabs
Column: 1

(MD010, no-hard-tabs)


454-454: Hard tabs
Column: 1

(MD010, no-hard-tabs)


455-455: Hard tabs
Column: 1

(MD010, no-hard-tabs)


456-456: Hard tabs
Column: 1

(MD010, no-hard-tabs)


457-457: Hard tabs
Column: 1

(MD010, no-hard-tabs)


458-458: Hard tabs
Column: 1

(MD010, no-hard-tabs)


460-460: Hard tabs
Column: 1

(MD010, no-hard-tabs)


461-461: Hard tabs
Column: 1

(MD010, no-hard-tabs)


462-462: Hard tabs
Column: 1

(MD010, no-hard-tabs)


463-463: Hard tabs
Column: 1

(MD010, no-hard-tabs)


464-464: Hard tabs
Column: 1

(MD010, no-hard-tabs)


465-465: Hard tabs
Column: 1

(MD010, no-hard-tabs)


466-466: Hard tabs
Column: 1

(MD010, no-hard-tabs)


467-467: Hard tabs
Column: 1

(MD010, no-hard-tabs)


468-468: Hard tabs
Column: 1

(MD010, no-hard-tabs)


469-469: Hard tabs
Column: 1

(MD010, no-hard-tabs)


471-471: Hard tabs
Column: 1

(MD010, no-hard-tabs)


472-472: Hard tabs
Column: 1

(MD010, no-hard-tabs)


473-473: Hard tabs
Column: 1

(MD010, no-hard-tabs)


475-475: Hard tabs
Column: 1

(MD010, no-hard-tabs)


476-476: Hard tabs
Column: 1

(MD010, no-hard-tabs)


477-477: Hard tabs
Column: 1

(MD010, no-hard-tabs)


479-479: Hard tabs
Column: 1

(MD010, no-hard-tabs)


480-480: Hard tabs
Column: 1

(MD010, no-hard-tabs)


481-481: Hard tabs
Column: 1

(MD010, no-hard-tabs)


483-483: Hard tabs
Column: 1

(MD010, no-hard-tabs)


484-484: Hard tabs
Column: 1

(MD010, no-hard-tabs)


485-485: Hard tabs
Column: 1

(MD010, no-hard-tabs)


486-486: Hard tabs
Column: 1

(MD010, no-hard-tabs)


487-487: Hard tabs
Column: 1

(MD010, no-hard-tabs)


488-488: Hard tabs
Column: 1

(MD010, no-hard-tabs)


489-489: Hard tabs
Column: 1

(MD010, no-hard-tabs)


490-490: Hard tabs
Column: 1

(MD010, no-hard-tabs)


491-491: Hard tabs
Column: 1

(MD010, no-hard-tabs)


492-492: Hard tabs
Column: 1

(MD010, no-hard-tabs)


493-493: Hard tabs
Column: 1

(MD010, no-hard-tabs)


494-494: Hard tabs
Column: 1

(MD010, no-hard-tabs)


495-495: Hard tabs
Column: 1

(MD010, no-hard-tabs)


496-496: Hard tabs
Column: 1

(MD010, no-hard-tabs)


497-497: Hard tabs
Column: 1

(MD010, no-hard-tabs)


498-498: Hard tabs
Column: 1

(MD010, no-hard-tabs)


499-499: Hard tabs
Column: 1

(MD010, no-hard-tabs)


500-500: Hard tabs
Column: 1

(MD010, no-hard-tabs)


501-501: Hard tabs
Column: 1

(MD010, no-hard-tabs)


502-502: Hard tabs
Column: 1

(MD010, no-hard-tabs)


503-503: Hard tabs
Column: 1

(MD010, no-hard-tabs)


504-504: Hard tabs
Column: 1

(MD010, no-hard-tabs)


505-505: Hard tabs
Column: 1

(MD010, no-hard-tabs)


506-506: Hard tabs
Column: 1

(MD010, no-hard-tabs)


507-507: Hard tabs
Column: 1

(MD010, no-hard-tabs)


508-508: Hard tabs
Column: 1

(MD010, no-hard-tabs)


509-509: Hard tabs
Column: 1

(MD010, no-hard-tabs)


510-510: Hard tabs
Column: 1

(MD010, no-hard-tabs)


511-511: Hard tabs
Column: 1

(MD010, no-hard-tabs)


512-512: Hard tabs
Column: 1

(MD010, no-hard-tabs)


513-513: Hard tabs
Column: 1

(MD010, no-hard-tabs)


514-514: Hard tabs
Column: 1

(MD010, no-hard-tabs)


515-515: Hard tabs
Column: 1

(MD010, no-hard-tabs)


516-516: Hard tabs
Column: 1

(MD010, no-hard-tabs)


517-517: Hard tabs
Column: 1

(MD010, no-hard-tabs)


518-518: Hard tabs
Column: 1

(MD010, no-hard-tabs)


520-520: Hard tabs
Column: 1

(MD010, no-hard-tabs)


521-521: Hard tabs
Column: 1

(MD010, no-hard-tabs)


522-522: Hard tabs
Column: 1

(MD010, no-hard-tabs)


523-523: Hard tabs
Column: 1

(MD010, no-hard-tabs)


524-524: Hard tabs
Column: 1

(MD010, no-hard-tabs)


525-525: Hard tabs
Column: 1

(MD010, no-hard-tabs)


526-526: Hard tabs
Column: 1

(MD010, no-hard-tabs)


527-527: Hard tabs
Column: 1

(MD010, no-hard-tabs)


528-528: Hard tabs
Column: 1

(MD010, no-hard-tabs)


529-529: Hard tabs
Column: 1

(MD010, no-hard-tabs)


530-530: Hard tabs
Column: 1

(MD010, no-hard-tabs)


548-548: Hard tabs
Column: 1

(MD010, no-hard-tabs)


549-549: Hard tabs
Column: 1

(MD010, no-hard-tabs)


551-551: Hard tabs
Column: 1

(MD010, no-hard-tabs)


552-552: Hard tabs
Column: 1

(MD010, no-hard-tabs)


553-553: Hard tabs
Column: 1

(MD010, no-hard-tabs)


554-554: Hard tabs
Column: 1

(MD010, no-hard-tabs)


555-555: Hard tabs
Column: 1

(MD010, no-hard-tabs)


556-556: Hard tabs
Column: 1

(MD010, no-hard-tabs)


557-557: Hard tabs
Column: 1

(MD010, no-hard-tabs)


558-558: Hard tabs
Column: 1

(MD010, no-hard-tabs)


559-559: Hard tabs
Column: 1

(MD010, no-hard-tabs)


560-560: Hard tabs
Column: 1

(MD010, no-hard-tabs)


561-561: Hard tabs
Column: 1

(MD010, no-hard-tabs)


562-562: Hard tabs
Column: 1

(MD010, no-hard-tabs)


563-563: Hard tabs
Column: 1

(MD010, no-hard-tabs)


564-564: Hard tabs
Column: 1

(MD010, no-hard-tabs)


565-565: Hard tabs
Column: 1

(MD010, no-hard-tabs)


566-566: Hard tabs
Column: 1

(MD010, no-hard-tabs)


567-567: Hard tabs
Column: 1

(MD010, no-hard-tabs)


568-568: Hard tabs
Column: 1

(MD010, no-hard-tabs)


569-569: Hard tabs
Column: 1

(MD010, no-hard-tabs)


570-570: Hard tabs
Column: 1

(MD010, no-hard-tabs)


571-571: Hard tabs
Column: 1

(MD010, no-hard-tabs)


572-572: Hard tabs
Column: 1

(MD010, no-hard-tabs)


573-573: Hard tabs
Column: 1

(MD010, no-hard-tabs)


574-574: Hard tabs
Column: 1

(MD010, no-hard-tabs)


576-576: Hard tabs
Column: 1

(MD010, no-hard-tabs)


577-577: Hard tabs
Column: 1

(MD010, no-hard-tabs)


578-578: Hard tabs
Column: 1

(MD010, no-hard-tabs)


579-579: Hard tabs
Column: 1

(MD010, no-hard-tabs)


580-580: Hard tabs
Column: 1

(MD010, no-hard-tabs)


581-581: Hard tabs
Column: 1

(MD010, no-hard-tabs)


582-582: Hard tabs
Column: 1

(MD010, no-hard-tabs)


583-583: Hard tabs
Column: 1

(MD010, no-hard-tabs)


584-584: Hard tabs
Column: 1

(MD010, no-hard-tabs)


585-585: Hard tabs
Column: 1

(MD010, no-hard-tabs)


586-586: Hard tabs
Column: 1

(MD010, no-hard-tabs)


587-587: Hard tabs
Column: 1

(MD010, no-hard-tabs)


588-588: Hard tabs
Column: 1

(MD010, no-hard-tabs)


589-589: Hard tabs
Column: 1

(MD010, no-hard-tabs)


590-590: Hard tabs
Column: 1

(MD010, no-hard-tabs)


592-592: Hard tabs
Column: 1

(MD010, no-hard-tabs)


593-593: Hard tabs
Column: 1

(MD010, no-hard-tabs)


594-594: Hard tabs
Column: 1

(MD010, no-hard-tabs)


595-595: Hard tabs
Column: 1

(MD010, no-hard-tabs)


596-596: Hard tabs
Column: 1

(MD010, no-hard-tabs)


597-597: Hard tabs
Column: 1

(MD010, no-hard-tabs)


598-598: Hard tabs
Column: 1

(MD010, no-hard-tabs)


599-599: Hard tabs
Column: 1

(MD010, no-hard-tabs)


600-600: Hard tabs
Column: 1

(MD010, no-hard-tabs)


602-602: Hard tabs
Column: 1

(MD010, no-hard-tabs)


603-603: Hard tabs
Column: 1

(MD010, no-hard-tabs)

⏰ Context from checks skipped due to timeout of 90000ms (1)
  • GitHub Check: OpenMediaVault install (bookworm)
🔇 Additional comments (7)
DOCUMENTATION.md (1)

243-259: Removal of OpenMediaVault and Filebrowser entries verified.
The “Media servers, organizers and editors” section has had OpenMediaVault and Filebrowser removed. Ensure any generated table of contents or indexes reflect these deletions.

tools/modules/docs/config.docs.sh (6)

10-10: Verify example removal for generate_readme.
The example field for generate_readme was cleared, causing see_use to display “None” under its options. Confirm this is intentional or restore a brief example for clarity.


22-24: Skip: script_dir initialization is handled upstream.
ShellCheck SC2154 would flag script_dir as undefined, but it’s set in the main armbian-config script and exported to modules. No changes needed here.

🧰 Tools
🪛 Shellcheck (0.10.0)

[warning] 22-22: script_dir is referenced but not assigned.

(SC2154)


39-39: LGTM: Alt text added to image.
Great addition of alt="Armbian Config Logo" for accessibility.


98-103: LGTM: Centralized man page path.
The pandoc and gzip commands now use the man_dir variable, improving path management and readability.


159-159: LGTM: Clarified usage header in see_use.
Updating the banner to Usage: ${0} --api [module] [options] makes the interface more intuitive.


165-174: LGTM: Improved example logic in see_use.
The new conditional correctly hides default/self-referential examples and surfaces only meaningful ones.

@Tearran Tearran closed this May 8, 2025
@igorpecovnik
Copy link
Member

@Tearran
Copy link
Member Author

Tearran commented May 8, 2025

@coderabbitai
Step 2:

Context:

We are working on improving the armbian-config tool in the Armbian ecosystem. Specifically, we aim to enhance how the tool handles boards that do or do not define overlay_prefix in /boot/armbianEnv.txt.

Currently, armbian-config shows menu options for managing overlays even for boards where overlay_prefix may be incompatible. This can lead to potential misconfiguration.

Objective:

Your task is to implement a solution in armbian-config to dynamically check /boot/armbianEnv.txt for the presence of overlay_prefix. Based on this check:

  1. If overlay_prefix is defined:
    • Allow the user to view and manage overlay options as usual.
  2. If overlay_prefix is NOT defined: (json) may not be applicable at step 2
    • Hide the menu item for managing overlays.
    • Provide a message explaining that overlays cannot be configured via armbian-config for this board.

Requirements:

  • The solution should be implemented within the modular structure of armbian-config.
  • Ensure compatibility with the current armbianEnv.txt format.
  • Prevent regressions or breaking existing functionality.

Deliverables:

  1. The name and location of the function or script within armbian-config where the change should be implemented.
  2. A clear explanation of the fix, including any code snippets if applicable.
  3. A concise and meaningful commit message for implementing the fix.

Example Fix Logic:

  • Read /boot/armbianEnv.txt to check if the overlay_prefix variable is defined.
  • Use this information to conditionally display or hide the overlay management menu in armbian-config.

Deliverables Example:

Commit Message:

Fix: Dynamically check overlay_prefix in armbianEnv.txt to control overlay menu visibility

This update enhances `armbian-config` by dynamically checking for the presence of 
`overlay_prefix` in `/boot/armbianEnv.txt`. If the variable is undefined, the overlay 
management menu is hidden, and a message is displayed to inform users that overlays 
cannot be configured for this board.

Code Snippet:

# Example pseudocode for the fix:
if grep -q '^overlay_prefix=' /boot/armbianEnv.txt; then
    # Show overlay menu
else
    # Hide overlay menu and display message
fi

We look forward to your proposed solution!

@Tearran Tearran reopened this May 8, 2025
@github-actions github-actions bot removed the Ready to merge Reviewed, tested and ready for merge label May 8, 2025
Copy link
Contributor

coderabbitai bot commented May 8, 2025

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

@Tearran, I'm looking for where and how the overlay management menu is integrated in the system. Let me search for this information first before proposing a solution.


🏁 Script executed:

#!/bin/bash
# First, let's find all menu-related files and how they're structured
echo "=== Files referencing menus in the system module ==="
rg -i "menu" --type=bash tools/modules/system/

echo -e "\n=== Files that might define the main system menu structure ==="
rg -i "system.*menu|menu.*system" --type=bash

echo -e "\n=== References to DTB overlays in menu contexts ==="
rg -i "overlay.*menu|menu.*overlay|dtb.*menu" --type=bash

Length of output: 616


🏁 Script executed:

#!/bin/bash
# Let's find all menu-related files throughout the codebase
echo "=== Searching for menu references in shell scripts ==="
find . -name "*.sh" | xargs grep -l "menu" 2>/dev/null | grep -v node_modules

echo -e "\n=== Searching for DTB overlay references ==="
find . -name "*.sh" | xargs grep -l "overlay\|dtb\|dtbo" 2>/dev/null | grep -v node_modules

echo -e "\n=== Searching for system menu structure ==="
find . -name "*.sh" | xargs grep -l "system.*menu\|menu.*system" 2>/dev/null | grep -v node_modules

Length of output: 1643


@Tearran, I'm examining the key files to understand how the overlay management system is currently implemented and where I need to make changes. This will help me propose a precise solution for the overlay_prefix check.


🏁 Script executed:

#!/bin/bash
# First, let's examine the config.runtime.sh file to see how the system menu is structured
echo "=== Contents of config.runtime.sh ==="
cat tools/modules/runtime/config.runtime.sh

echo -e "\n=== Contents of manage_dtoverlays.sh ==="
cat tools/modules/system/manage_dtoverlays.sh

echo -e "\n=== Looking for how the DTB overlay menu item is included in the system menu ==="
grep -A 10 -B 10 "overlay\|dtb\|dtbo" tools/modules/runtime/config.runtime.sh

Length of output: 14307


🏁 Script executed:

#!/bin/bash
# Let's look for JSON menu definitions
echo "=== Searching for JSON files that might define menus ==="
find . -name "*.json" | grep -v node_modules

echo -e "\n=== Looking for places where json_data is defined ==="
find . -name "*.sh" | xargs grep -l "json_data=" | grep -v node_modules

echo -e "\n=== Looking for module imports or references to manage_dtoverlays ==="
find . -name "*.sh" | xargs grep -l "manage_dtoverlays" | grep -v node_modules

echo -e "\n=== Examining interface_menu.sh which might define menu structure ==="
cat tools/modules/functions/interface_menu.sh | grep -i "menu" | head -30

Length of output: 1761


@Tearran, I'm now examining the system menu structure in the JSON files to understand exactly where and how to implement the overlay_prefix check.


🏁 Script executed:

#!/bin/bash
# Let's examine the system menu JSON structure
echo "=== Contents of config.system.json ==="
cat tools/json/config.system.json

echo -e "\n=== Examining how the JSON menu is loaded in config_interface.sh ==="
cat tools/modules/functions/config_interface.sh | grep -A 20 "json_data="

echo -e "\n=== Let's look at the structure of the module_system.sh file if it exists ==="
find . -name "module_system.sh" | xargs cat 2>/dev/null

Length of output: 34045


@Tearran, I've analyzed the codebase and identified where and how to implement the solution to check for overlay_prefix in /boot/armbianEnv.txt. Here's my recommendation:

Location for Change

The change should be made in the config.system.json file which defines the menu structure for the Armbian Config tool. Specifically, we need to modify the condition for the DTB overlay management menu item.

Current location: tools/json/config.system.json

The specific menu item we need to modify is the one with ID "DTO001" under the "Kernel" submenu, which is used for managing device tree overlays.

Solution

The current condition for displaying the DTB overlay management menu item is:

"condition": "[ -d /boot/dtb/ ] && [ -f /boot/armbianEnv.txt ]"

This only checks if the /boot/dtb/ directory and /boot/armbianEnv.txt file exist, but doesn't verify that overlay_prefix is defined.

I recommend changing the condition to:

"condition": "[ -d /boot/dtb/ ] && [ -f /boot/armbianEnv.txt ] && grep -q '^overlay_prefix=' /boot/armbianEnv.txt"

This change adds an additional check that verifies whether overlay_prefix is defined in /boot/armbianEnv.txt. If overlay_prefix is not defined, the menu item won't be displayed.

Commit Message

Fix: Dynamically check overlay_prefix in armbianEnv.txt to control overlay menu visibility

This update enhances armbian-config by dynamically checking for the presence of 
`overlay_prefix` in `/boot/armbianEnv.txt`. The DTB overlay management menu item 
is now only displayed when `overlay_prefix` is defined, preventing potential 
misconfiguration on boards where overlays are incompatible.

This change modifies the condition in config.system.json to verify that 
`overlay_prefix` exists in armbianEnv.txt before showing the overlay 
management option.

This solution:

  1. Respects the modular structure of armbian-config
  2. Ensures compatibility with the current armbianEnv.txt format
  3. Prevents regressions or breaking existing functionality
  4. Hides the menu item completely when overlay_prefix is not defined, as requested

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
05 Milestone: Second quarter release Documentation Documentation changes or additions GitHub Actions GitHub Actions code GitHub GitHub-related changes like labels, templates, ... size/large PR with 250 lines or more
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants