Skip to content
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

feat : add support for generating manpages for crc cli commands (#4181) #4586

Open
wants to merge 1 commit into
base: main
Choose a base branch
from

Conversation

rohanKanojia
Copy link
Contributor

@rohanKanojia rohanKanojia commented Jan 27, 2025

Description

Fixes: #4181

Add support for generating man pages for CRC CLI commands

Type of change

  • Bug fix (non-breaking change which fixes an issue)
  • Feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change
  • Chore (non-breaking change which doesn't affect codebase;
    test, version modification, documentation, etc.)

Proposed changes

  • CRC should generate manpages for all sub commands and place them in ~/.local/share/man/man1 directory
  • CRC edits MANPATH environment variable so that abovementioned directory gets picked up by man command for man pages lookup
  • These man pages would only be generated once, crc would skip generation if it detects man pages already present in target directory
  • These generated man pages and MANPATH environment variable would be cleaned up during crc cleanup

Testing

  • Run crc setup on Linux or MacOS
  • Check ~/.local/share/man/man1 directory to see generate manpages
  • In a new terminal session
    • Check manpath to see abovementioned folder included in man pages
    • Try running any man command for CRC man crc / man crc-console

Contribution Checklist

  • I Keep It Small and Simple: The smaller the PR is, the easier it is to review and have it merged
  • I have performed a self-review of my code
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes
  • Which platform have you tested the code changes on?
    • Linux
    • Windows
    • MacOS

Copy link

openshift-ci bot commented Jan 27, 2025

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

Copy link

openshift-ci bot commented Jan 27, 2025

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by:
Once this PR has been reviewed and has the lgtm label, please assign praveenkumar for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@rohanKanojia rohanKanojia changed the title feat : generate manpages for cli during crc setup (#4181) feat : add support for generating manpages for crc cli commands (#4181) Jan 27, 2025
@rohanKanojia rohanKanojia force-pushed the pr/issue4181 branch 5 times, most recently from 41b5fc9 to 04bcf3c Compare January 28, 2025 14:48
@rohanKanojia rohanKanojia marked this pull request as ready for review January 28, 2025 16:44
@@ -0,0 +1,162 @@
package adminhelper
Copy link
Member

Choose a reason for hiding this comment

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

why the manpages are part of adminhelper package? adminhelper have different usecase so may be create a separate manpages package and keep those in that package?

@@ -0,0 +1,173 @@
package manpages
Copy link
Member

Choose a reason for hiding this comment

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

Since man pages is only useful for linux and mac so better to have the build target and because it is used for root.go so may be for windows just have a function which return nil?


func crcManPageGenerator(targetDir string) error {
return doc.GenManTree(rootCmd, manpages.CrcManPageHeader, targetDir)
}
Copy link
Member

Choose a reason for hiding this comment

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

how much extra time does it take when we generate it first time?

Copy link
Contributor Author

@rohanKanojia rohanKanojia Jan 30, 2025

Choose a reason for hiding this comment

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

I'm trying to measure execution time using the time command however I'm not seeing any significant difference in execution times. Execution time comes out different on every execution:

In both cases I ran crc cleanup before to make sure no man pages were generated.

Time for crc setup on v2.46.0:

real    0m4.171s
user    0m0.127s
sys     0m0.140s

Time for crc setup based on this PR:

real    0m3.906s
user    0m0.097s
sys     0m0.108s

+ crc should generate manpages for all sub commands and place them
  in `~/.local/share/man/man1` directory
+ These man pages would only be generated once, crc would skip generation
  if it detects man pages already present in target directory
+ These generated man pages would be cleaned up during `crc cleanup`

Signed-off-by: Rohan Kumar <rohaan@redhat.com>
Copy link

openshift-ci bot commented Jan 30, 2025

@rohanKanojia: The following tests failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name Commit Details Required Rerun command
ci/prow/security 7e11f12 link false /test security
ci/prow/e2e-crc 7e11f12 link true /test e2e-crc

Full PR test history. Your PR dashboard.

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add manpage/doc for crc commands
2 participants