Comments (21)
It should work. If not, try passing a switch: "no-doc-type" => :boolean. A patch is welcome!
from thor.
This "version-control" => :boolean, :version_control => :boolean and "version_control" => :boolean worked. However, you must call on the command line as --version-control not --version_control, it appears (have not looked yet) that the option parser is are looking for underscores. I can change my API to use hyphens.
Is this worth noting in the documentation? Let me know if you want to task me with this.
Thank you for the help, much appreciated.
from thor.
It should actually be fixed. But I think that --version-control is way better than --version_control. More consistent with all others command lines apps. :)
from thor.
Agreed. Thanks again.
from thor.
Patch please?
from thor.
Forking now...
from thor.
Here is my first crack, tests included.
Patch:
http://gist.github.com/584931
from thor.
Also:
Branch:
http://github.com/ccbcreg/thor/tree/enable_underscores
Commit:
http://github.com/ccbcreg/thor/commit/838428e51c5def3e025787af6cad6b7e47234c1a
from thor.
Any word on this?
from thor.
Sorry, but now that I see the patch, I don't agree with it. Typing --version-control is more convenient than --version_control and it more inline with most binaries out there. If you want to use --version_control, I believe you need to explicitly give it as the option name (instead of just :version_control).
from thor.
Understood, the patch was merely to make the older apps written with thor 0.9.9 work with the current version. I'll give your suggestion a try. Thank you.
from thor.
Just tried your suggestion:
method_options :name => :required, :repos => :optional, "--version_control" => :boolean, :no_doc_type => :boolean, :no_pdf => :boolean, :unabridged => :boolean
It appears to not work. I will update my older thor applications args to use hypens going forward. Thanks again for the consideration.
from thor.
The string version is supposed to work. If you want to provide a patch for this case, I will gladly accept it!
from thor.
You know I thought about it more this morning and I think I need to mention this one more time.
The patch above is a bug fix to make the current version of thor backwards compatible with older code--it is not specific to my needs or my conventions. Since all command line arguments now must be explicitly dasherized, any older code that uses underscores anywhere will now break. The above patch fixes this problem.
My instance is that I have command line tools that are called via Capistrano and would have to change how they are called. eg
namespace :pancake do
desc "Pancake the product"
task :default do
system("pancake download_product --name=#{application} --version_control")
end
end
The above code works with thor 0.9.9, when I upgrade to the current version it does not and was the source of serious problems and wasted time debugging. This patch fixes this bug without removing or changing any functionality and passes all the existing test. Please reconsider this patch.
from thor.
Sorry, but this should have been caught earlier. Because if we apply your patch now, we are going to break all new command lines that relies on this current behavior. Break the old ones or preserve the new ones? I choose the second as we are on 0.14.x.
from thor.
This will not break the current behavior. It still passes all the tests. The patch only convert args like --version_control to --version-control. This only effects args with underscores, which currently do not work, this will convert underscored args to dasherize to adhere to the current behavior.
from thor.
Let me get this straight:
method_option :foo_bar
Should be given as:
thor something --foo-bar=baz
And this works today. What your patch does is to allow:
thor something --foo_bar=baz
To also work?
from thor.
Yes, exactly.
from thor.
Ok, sorry for the confusion. I am applying it.
from thor.
Excellent! Thank you.
from thor.
Applied, thanks for your patience!
from thor.
Related Issues (20)
- method_option does not correctly parsed HOT 3
- Calling `invoke` directly in RSpec breaks with required class_options, even when they are provided.
- Are there any plans to drop support for older versions of Ruby? HOT 2
- 'parse raises an error for unknown switches' test failure HOT 2
- Please Sign This Gem To Allow Verified Installations HOT 4
- Consider new release for Ruby 3.2 fixes? HOT 2
- Incorrect help for file_collision method without block HOT 2
- Default value not printed in help if option type boolean and default value is false HOT 2
- String Enums concatenate values when repeatable HOT 7
- Documentation Not Helpful HOT 5
- Wiki page for Actions has broken links to docs HOT 1
- HTTPS Issues HOT 1
- New release to fix "File unchanged!" warning? HOT 1
- directory action does not copy dotfiles HOT 1
- Commands that contain hyphens cannot be executed HOT 3
- Thor 1.3.0 No Longer calling a system exit HOT 1
- Ability to have `gsub_file` error if it didn't gsub anything
- String option is incorrectly passed HOT 1
- Positional arguments with colons are incompatible with hash method options HOT 1
- Wrong cli argument should display more detailed command help HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from thor.