-
Notifications
You must be signed in to change notification settings - Fork 61
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: Include Confirmation dialogue if a file is about to be overwritten #86
base: main
Are you sure you want to change the base?
Conversation
I was going to look into adding this 👍 thanks ! |
confirmOverwriteForm := | ||
huh.NewConfirm(). | ||
Title(fmt.Sprintf("'%s' already exists. Would you like to overwrite this file?", config.Output)). | ||
Value(&confirm) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
should check for if is a directory or not first. If directory, might be better to fail immediately. to save people from themselves.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fair, I shall get to this in like the next 6 hours or something
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hey @debdutdeb
So I tried the following:
freeze.png
already exist- Ran the following command below
- Entered the new file name as
non-exist/file.png
indicating an example of the directory not existing, and adding a file within a non existent directory
And it failed which is good
go run ./... --execute "cat SECURITY.md"
ERROR Unable to convert SVG to PNG
open non-exist/file.png: no such file or directory
exit status 1
Obviously when I added it as a parameter for the output, it fails as expected since the file is being added within a non existent directory, which I think is intended
go run ./... --execute "cat SECURITY.md" --output "non-exist/file.png"
ERROR Unable to convert SVG to PNG
open non-exist/file.png: no such file or directory
exit status 1
And finally, when the form pops up and add the filename as non-exist-dir/non-exist-dir2
to also indicate 2 non existent directory, it fails as expected (yeah even though the non-exist-dir2
would end up becoming a file atleast with me being on Pop OS)
go run ./... --execute "cat SECURITY.md"
ERROR Unable to write output
open non-exist-dir/non-exist-dir2: no such file or directory
exit status 1
but yeah should I still go ahead and check if the given path is a directory? To me it seems like it ends up handling it, open to whatever!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It does but ig that depends on how file is being written and expection for actions after the confirmation. Like code that writes to the files consider them simply files, and might someday want to remove before writing, which would remove the directory not knowing it is a directory.
So I'd suggest still adding that check.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sure thing, will look into it within like 24 hours or something!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Gone ahead and resolved it here, lemme know if there's anything else!
Nice! I like this idea! |
Changes:
but yeah, Lemme know if there's anything else missing |
Just been having discussions on Discord Channel for Let's see what that looks like, shall keep the PR updated |
- Added in a `huh.NewConfirm` and `huh.NewInput` fields, that checks if the output file already exists within the given directory - If the user selects to `overwrite` the file, execution continues as is - If the user selects to `not overwrite` the file, an `input` field is provided to select a new output filename - The `huh` forms will be rendered only if the `stdout` is a terminal
Changes
huh.NewConfirm
andhuh.NewInput
fields, that checks if the output file already exists within the given directoryoverwrite
the file, execution continues as isnot overwrite
the file, aninput
field is provided to select a new output filenamehuh
forms will be rendered only if thestdout
is a terminalTesting Notes
go run ./... --execute "cat SECURITY.md"
Yes
will overwrite to the default output filenameRan the following command
go run ./... --execute "cat SECURITY.md"
againChoosing
No
will prompt an Input field to enter the new output filenameOther Notes
go test -v ./...
, the tests would hang, since it's probably expecting an input for thehuh
forms introduced. Would like to get some advice, shall ask on Discord too!CONTRIBUTING.md
and the issue I wanted to help out on feat: include confirmation dialogue if a file is about to get overwritten #35