Skip to content

Improvement suggestions #5

@RaphGL

Description

@RaphGL

Hey, I'm the author of Tuckr. I just stumbled upon your project and decided to give it a shot with my own Tuckr dotfiles for fun.

Here's some feedback:

  • the stau uninstall has a confusing description:

Uninstall a package by removing symlinks and copying files back

I'm not really sure what "copying files back" mean here, back to where? There doesn't seem to be much documentation either.

  • You're mandating that dotfiles be in ~/dotfiles, that's against the XDG user dirs convention, so I think a nice compromise would be to also add and prefer putting things in .config/dotfiles but also allow putting them in $HOME. But I know many people don't care about littering home, and you already provide a way to override it at least.

  • You're reading $HOME to determine the home directory but this is not portable to windows and non unix like OSes, I'm not sure if you care about those OSes

  • The way you're detecting symlinks will only work if you're symlinking per file, if I have perfectly valid symlinks but the symlinks are directory, you can detect it. I used to do what you're doing but eventually moved to something like this:

let mut path = Path::from(dotfile);

while let Some(path) = path.pop() {
    if path.is_symlink() && dotfiles::contains_file(path) {
       return true;
    }
}
false

This is more flexible if someone is coming from another tool to yours, migrating becomes easier too.

  • Along with the previous point, if a user tries to remove dotfiles from a previous symlink manager to yours (say stow to stau or tuckr to stau) your tool doesn't seem capable of removing the directory symlinks with stau uninstall so that I can install them back with yours

  • Consider adding aliases for the most common commands like s for status, i for install, u for uninstall`, etc

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions