Announcing Guile-Stash: A New Guile Scheme Utility for Symlink Management with Conflict Resolution
I’m excited to announce the release of Guile-Stash, a utility I’ve developed using Guile Scheme, designed to simplify the management of symbolic links (symlinks) with an added focus on conflict resolution. Guile-Stash allows users to create symlinks for files and directories, offering options to handle existing path conflicts interactively.
What is Guile-Stash?
Guile-Stash is a command-line tool that provides a straightforward way to create symlinks, especially when the potential for conflicts exists. It takes two primary arguments: --target
, the directory where you wish to create the symlink, and --package-dir
, the file or directory you’re linking to. Upon encountering a path conflict, Guile-Stash prompts the user to choose between overwriting the existing file or skipping the symlink creation, ensuring intentional and informed actions are taken.
Key Features:
- Easy command-line argument parsing for specifying source and target paths.
- Interactive conflict resolution: users can choose to overwrite or skip on a case-by-case basis.
- Support for both file and directory symlinks.
- Built with the robustness and flexibility of Guile Scheme.
Why Guile-Stash?
In my workflow, I often encountered the need to manage symlinks, sometimes leading to conflicts with existing files or directories. I wanted a tool that not only automated the creation of symlinks but also provided an intuitive way to handle conflicts. Thus, Guile-Stash was born, combining the power of Scheme with practical file management capabilities.
Developed as an alternative to GNU stow, and as a project to develop my own guile scheme knowledge. My first project of any kind in the programming space.
Getting Started
To get started with Guile-Stash, clone the repository from here, and ensure you have Guile installed on your system. Use the command below for a basic operation:
bash
guile -L . guile-stash.scm --target=<target-dir> --package-dir=<package-dir>
Contributing
Guile-Stash is open for contributions! Whether it’s adding new features, improving existing ones, or fixing bugs, all contributions are welcome. Please feel free to fork the repository, make your changes, and submit a pull request.
ToDo List
While Guile-Stash is fully functional, there’s always room for improvement. Here are a few items on my ToDo list:
- Implement verbose and quiet output modes for better user control over command feedback.
- Add support for logging actions taken during symlink creation and conflict resolution.
- Enhance error handling to provide more descriptive messages and recovery suggestions.
- Explore the possibility of undo functionality for reverted actions taken by the tool.
- Use colors to differentiate parts of the output, such as errors (red), warnings (yellow), and success messages (green).
Feedback and Suggestions
Your feedback is invaluable to making Guile-Stash even better. Please don’t hesitate to share your thoughts, suggestions, or report issues you encounter. Together, we can make Guile-Stash a robust tool for everyone in the community.
Thank you for checking out Guile-Stash. I’m looking forward to your feedback and contributions!