Releases: RaphGL/Tuckr
Tuckr 0.12.0
Additions
- Added ability to use
%suffix to make dotfile target a path stored in an environment variable and^to target the root of the file system - Added
_wslsuffix for conditional groups, WSL has a higher priority than linux and unix so it can be used for WSL specific configuration - Added custom targets. Custom targets can now be used through
TUCKR_CUSTOM_TARGETSor the-tflag to programmatically change what dotfiles tuckr chooses to deploy via your own scripts - Added
-a/--addtotuckr pushas a QOL. This allows you to instantly add (aka symlink) a file when you push it to a group, if a conflict occurs it won't override things, you're still prompted to fix it - Added
--jsonflag totuckr statusso that it's easier for scripts to examine the current status (#86) - Made hooks always run with the current process set to its group directory. This makes scripting more convenient.
- Made user saying "no" to a prompt, return a failure code (also good for scripting)
- Changed how
tuckr popworks. it now pops files out of dotfiles by default and only deletes them if the-dflag is provided. This makes using push and pop less annoying.
Fixed
- Fixed
groupiswrongly returning a group forConfigs,HooksandSecretsdirectories - Fixed conditional groups not being displayed when looking at a base group's status
- Fixed wildcard
*ignoring related conditional groups with the add command - Made
tuckr rmalways work on symlinked groups even if the group is not valid in the current platform - Fixed groups being falsely flagged as "not symlinked" when a group is not valid in the current platform
- Fixed init command ignoring
TUCKR_HOME - Fixed groups with a shared directory causing dotfiles to be symlinked inside of other symlinks
Tuckr 0.11.2
This is a very minor patch version, mostly only serves to updates some dependencies, a minor panic in tuckr ls hooks and to add an improved from-stow command back to provide convenience to users.
This is also the first release being published to crates.io
Tuckr 0.11.1
Additions
- Added
-nand--dry-runto allow previewing what tuckr will do without actually changing the file system - Added the
--only-filesflag to the add command. This lets you override the default behavior and symlink every single file in a group, this is useful when you don't want new files to get inside your repo - Made help messages colorful again with a similar style to cargo
Fixed
- Fixed decrypt command decrypting files in the current directory instead of the appropriate target path
- When a group had a conflicting file and said file was not a symlink, tuckr was attempting to read the symlink to ascertain it's status when doing
tuckr status <group>. This caused a crash and it also resulted in duplicate error messages. This has been fixed. - Fixed set and unset commands not symlinking groups when those groups have no hooks set up
Tuckr 0.11.0
Additions
- System specific cache files such as
.DS_Storeon MacOS,Thumbs.dband.Trash-*are ignored, thus avoiding false flags when detecting conflicting files and avoiding littering your repos when doing commands such astuckr push - Group names are now validated to prevent crashes and erroneous behavior. All group names that would be rejected by the file system on Windows, MacOS and Unix-like systems are now considered erroneous and rejected by tuckr. This might be "limiting" but it guarantees the program always works correctly
- Hooks are now aware of conditional groups as well for convenience and consistency's sake
- Added missing
-yflag onaddandrmcommands - Added
unsetcommand, this command runs a hook prefixed withrmbefore removing the group - Added
TUCKR_HOMEandTUCKR_TARGETto override the default tuckr assumptions for where dotfiles are and where they are going to be linked into.TUCKR_HOMEis the parent directory of yourdotfilesdirectory andTUCKR_TARGETis the directory base directory from which all dotfiles are symlinked, by default it's$HOME(%USERPROFILE%on windows) - Dotfile groups now fallback when a conditional group has the same file. This allows for overriding dotfiles for a specific platform
Fixes
tuckr groupisno longer stops if a single check fails:
Previously if a command liketuckr groupis file1 file2 file3was run andfile2was not in any group the command would stop the checks altogether. Now it will continue checking until the end.- The symlinking step of running a hook is skipped for hooks that don't have a corresponding Configs group, this prevents the hook from being interrupted needlessly
Removal
- Removed the
from-stowcommand, as it assumed that you were using stow in the same way I did (grouping dotfiles by program at the top level of a dotfiles repo), so if your stow repo was setup differently,tuckr from-stowwould just result in a tuckr repo that cannot fully take advantage of the group tracking/validation. So I've decided to remove the command and force users to manually convert their repos to tuckr as documented on the readme and the wiki.
Tuckr 0.10.1
Additions
- Conditional groups are now automatically included when the base group name is used
- internationalization has been added. Currently English, Spanish and Portuguese are available. Make a PR with your languages!
- The
encryptcommand now works with directories
Fixes
- Fixed
groupiscrashing when a relative path is supplied - Fixed panic when attempting to use secrets with invalid paths
- Fixed panic when attempting to
pushan invalid file path - Fixed hooks setup stopping when only one hooks group fails. Now if one group fails it will continue setting up the other groups and then at the end report back which groups failed.
Tuckr 0.10.0
New addition
With this release, profiles have been added. Making Tuckr support more use cases.
To learn more about why profiles might be needed, check the profiles page on the wiki.
Breaking change
In this release the commands that were previously ls-hooks, ls-secrets have been all merged into a single command.
Now there's only an ls command that takes hooks, secrets or profiles as its argument.
Their output has also been improved, ls hooks in specific, now prints a nice informative table.
Fixes
- Fixed faulty symlinking on windows
- Fixed how the program detects conditional groups
- Fixed secrets refusing to work on valid targets (courtesy of @raphaelahrens)
- Fixed dotfiles lookup path not prioritizing config_dir
- Fixed wildcard adding invalid conditional groups (courtesy of @SirZenith)
- Fixed pushing directories not working
I would also like to thank @Jasha10 / @jasha-hrp for noticing a bunch of issues and reporting them so I could keep making the tool even better :)
Tuckr 0.9.1
What's changed
- previous release broke
popandpush, but are now working as intended - improved error messages, reducing the amount of panics encountered and instead having some more understandable errors
New command
With this release a new command has been added called groupis. With the previous strategy for symlinking simply running ls -l one would see where the origin of the symlink was, but that is no longer the case. A non symlinked file doesn't necessarily mean it's not from one's dotfiles (though you could keep going to the parent path until you found a symlink, that's tedious).
So with tuckr groupis you can easily know what group a file belongs to, it also can be "chained" with the rm, set, etc commands.
Here's some examples:
Check what group a file belongs to
$ tuckr groupis my_config.py
groupname
Remove the group a file belongs to
$ tuckr rm $(tuckr groupis my_config.py)
Remove everything besides the group the file belongs to
$ tuckr rm \* -e $(tuckr groupis my_config.py)
You can use it to feed to any command that takes a group as input.
Full Changelog: 0.9.0...0.9.1
Tuckr 0.9.0
This release is potentiallly a breaking change for some. Hooks and Secrets remain unchanged but symlinking has changed strategy from a simple symlink from dotfiles path to $HOME to shallow symlinking, thus getting more in line with what stow itself does and providing a better user experience.
I recommend doing the following:
before upgrading run
$ tuckr rm \*and after upgrading run
$ tuckr add \*This ensures that all your dotfiles are converted to the new symlinking strategy.
What's changed
- Fixed conflict resolution command not working
- Fixed globbing causing error when provided alongside group names
- Files can now be symlinked into any directory due to shallow symlinking, instead of just doing nothing silently
- Improved status reporting for specific groups and you're now able to know whether a dotfile is symlinking elsewhere or if it's in conflict
- Invalid groups now give an error instead of failing silently
Full Changelog: 0.8.1...0.9.0
Tuckr 0.8.1
What's changed
- Improved error messages
- Added
pushandpopcommands for Configs ls-hooksandls-secretsnow use the system's default file listing utility
Full Changelog: 0.8.0...0.8.1
Tuckr 0.8.0
What's changed
- Added
ls-hooksandls-secretscommands, making it easier to know what are the available hooks and secrets - Added conditional groups
- Improved symlink status reports
- Fixed symlinking not working on non unix systems
- FIxed validation not working on windows
Conditional groups
Tuckr now supports conditional groups. Conditional groups allows files to only be deployed on specific systems. They're just regular group directories suffixed with the preferred platform (e.g. vscode_windows, vscode_unix, vscode_macos). Tuckr will treat them as if they were a part of the original unsuffixed group.
You can learn more about the state of all associated groups by running tuckr status nvim.
Full Changelog: 0.7.1...0.8.0