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

add -r for removing older dir #656

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/main/bash/sdkman-path-helpers.sh
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ function __sdkman_link_candidate_version {

# Change the 'current' symlink for the candidate, hence affecting all shells.
if [[ -h "${SDKMAN_CANDIDATES_DIR}/${candidate}/current" || -d "${SDKMAN_CANDIDATES_DIR}/${candidate}/current" ]]; then
rm -f "${SDKMAN_CANDIDATES_DIR}/${candidate}/current"
rm -rf "${SDKMAN_CANDIDATES_DIR}/${candidate}/current"
Copy link

Choose a reason for hiding this comment

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

-r does not change anything here, because current is a symlink.

Copy link
Author

Choose a reason for hiding this comment

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

My terminal is MSYS2 on the windows 7, and creating a directory instead of symlink, so '-r' is needed.

Copy link
Member

Choose a reason for hiding this comment

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

Sure, but that's a bug very specific to Windows, and forcefully removing a directory that msys has created doesn't solve anything. In fact, it would thus also delete a previously installed candidate! That is an unwanted side effect.

What we really want is msys to handle symlinks in the same way that all other Unix platforms do. Is there perhaps some kind of flag or setting we could use here for cygwin/msys?

Copy link
Author

Choose a reason for hiding this comment

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

MSYS2 will creating really directory after executing 'ln -s xx xx', you can see this issue, so as your saying, it might specific deal with thing for MSYS2 on windows

fi
ln -s "${SDKMAN_CANDIDATES_DIR}/${candidate}/${version}" "${SDKMAN_CANDIDATES_DIR}/${candidate}/current"
}