Skip to content
Provides the functionality of GNU Stow in a cross platform CLI tool and python module
Python
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
dploy Fix undefined variable issues with utils.readlink() Feb 20, 2018
tests Fix minor misspelling Feb 28, 2018
.appveyor.yml fix quoting Mar 29, 2017
.flake8 Fix lint issues Oct 27, 2017
.gitignore
.pylintrc pylint: disable len-as-condition May 29, 2017
.travis.yml travis: remove pypy3 from allow failures list Feb 28, 2018
CHANGELOG.md Increment version number to 0.1.2 Oct 27, 2017
LICENSE.txt relicense under MIT Jun 28, 2016
MANIFEST.in
README.md Add more information to README Jan 22, 2017
conftest.py test: allow tests to be run from project root Mar 28, 2016
invoke.yaml invoke: configure to always echo the command run Nov 17, 2016
requirements.txt requirements.txt: remove pyinstaller Oct 19, 2017
setup.cfg Make the README markdown and reword it slightly Dec 29, 2016
setup.py setup.py fix long line in DESCRIPTION Oct 27, 2017
tasks.py invoke: remove lint from the default task and add an all task Feb 28, 2018

README.md

Dploy

Dploy is a tool for creating symbolic links similarly to GNU Stow. It is provided as a CLI tool and Python 3.3+ module and supports Windows, Linux, and OSX.

Dploy's command stow creates symbolic links to the contents of source directories or packages in a specified destination directory. Repeating the stow command with the same arguments will confirm that the contents of the package have been symbolically linked.

Dploy's command unstow removes symbolic links that resulted from stow commands. Repeating the unstow command with the same arguments will confirm that the links to stowed packages have been removed.

Installation

  • Latest Release: pip install dploy
  • Development Version: pip install git+https://github.com/arecarn/dploy.git

Basic CLI Usage

  • dploy stow <source-directory>... <destination-directory>
  • dploy unstow <source-directory>... <destination-directory>
  • dploy --help

Rational

Dploy started out as simple Python script to create symbolic links to my dotfiles for Windows, Mac, and Linux. Over time I keep improving and tweaking my script to suit my needs, but I was running into a problem. Keeping all the files I wanted to link in a config file was becoming a real pain in the neck.

I started looking for another solution to solve my problem, and found many alternatives but none of them seemed to be a good fit. The solution that seemed the most promising was using GNU Stow. It seemed like the most simple elegant solution to the problem. The only issue was that it didn't support Windows.

Then I thought to myself, why can't I just create my own version of Stow that work on Windows, Linux and OSX. So after that my I started morphing simple python script into what would become Dploy and learned a lot more about python in the process.

How does it compare with GNU Stow?

Below are just a few few major points of comparison between GNU stow and Dploy.

  • Like GNU Stow Dploy runs in two passes. First by collecting the actions required to complete the command and verifying that the command can completed without any issues. If no issues are detected then the second pass executes these actions are execute to complete the command. Otherwise Dploy will exit and indicate why the command can not be completed. This way a stow or unstow operation is atomic and never partially done.

  • Like Stow, Dploy supports tree folding and tree unfolding.

  • Unlike Stow, Dploy requires an explicit source(s) and a destination directory.

  • Unlike Stow, Dploy does not have any concept of ownership, but will only operate on symbolic links and the creation or removal of directories for these symbolic links.

You can’t perform that action at this time.