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

Do not execute anything if command line is invalid, and make it the default behavior #264

Open
rayluo opened this issue May 30, 2020 · 0 comments

Comments

@rayluo
Copy link

@rayluo rayluo commented May 30, 2020

I know a similar issue has been mentioned in #222 (which should have been labelled as Duplicated rather than a misleadingly Closed) , #226, and its root cause was well-explained in #168.

It is still worth to point out that, this issue can be much more easier to hit, thus much more severe than those somewhat contrived scenarios described in #222 and #168 (which was triggered by mismatching default parameters and/or typo).

# This is part of an CRUD app
def add(name):
    print("Record %s has been added into database" % name)

if __name__ == "__main__":
    fire.Fire()

My end user (or me) could easily run it with $python my_app.py add John Doe (forgot to add quotation marks) and then a record "John" would have been added into database while the end user saw a command-line error. At that point, it is not just about issuing the right command, the end user need to clean up the messed-up database.

Although a decorator workaround was mentioned in #168, do you think it is better to do it the other way around, i.e. make such "strict mode" (#226) the default behavior, and let developer to chain commands if they really want to? I bet not many developer know and anticipate the command chaining behavior.

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

Successfully merging a pull request may close this issue.

None yet
1 participant
You can’t perform that action at this time.