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

Support root commands that doesn't implement call #135

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

Conversation

gustavothecoder
Copy link

@gustavothecoder gustavothecoder commented Jul 24, 2024

Resolve #96

I would like to add descriptions to my root commands without implementing a proper command, like a namespace.

Example

Command

class Namespace < Dry::CLI::Namespace
  desc "This is a namespace"

  class MyCommand < Dry::CLI::Command
    desc "I'm a concrete command"

    def call(**params)
      puts "I'm a concrete command"
    end
  end
end

Result

image

@@ -438,6 +438,18 @@ def call(**params)
end
end

class Namespace < Dry::CLI::Command
Copy link
Contributor

Choose a reason for hiding this comment

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

Isn't bizarre to have a "command" that the uniq usage is to print top level usage? I am wondering if it should be a better idea to move the usage of top class as specific dsl. Like suggested here #96 ?

Copy link
Author

Choose a reason for hiding this comment

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

It is. I tried to implement the suggestion from #96, but I couldn't figure out how to do it. Maybe we can create the Dry::CLI::Namespace class, so It will look less strange.

Copy link
Contributor

Choose a reason for hiding this comment

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

That's a good idea.

Copy link
Member

Choose a reason for hiding this comment

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

@gustavothecoder I like the idea of this being a specialised Namespace class. That way, when the class is used, it will be clearer that its purpose is to provide information about a grouping of subcommands only, and not its own distinct command behaviour.

I prefer this help text residing in a concrete class instead of being part of the top-level command registration API, since that feels more consistent with how the rest of the CLI construction is done: a class for each thing.

If you're still interested in working on this PR, I'd love it if you could make this adjustment! Let me know what you think.

Copy link
Author

Choose a reason for hiding this comment

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

@timriley Done! I think it looks better using the Namespace class.

@benoittgt
Copy link
Contributor

This is a great proposal. I would love to be able to use this in our CLI.

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.

Allow adding subcommand toplevel documentation (usage)
3 participants