rcm
rcm copied to clipboard
rcup ignoring empty folders even if not empty in first entry of DOTFILES_DIRS
I'm using Thoughtbot's dotfiles and my own dotfiles-local.
How can I force rcup
to overwrite a config file with a symlink pointing to dotfiles-local
?
In my specific example I want to replace the installer generated gnupg configuration with my own one.
I've a .gnupg
folder in my home directory looking like this:
ls ~/.gnupg
gpg-agent.conf pubring.gpg random_seed trustdb.gpg
gpg.conf pubring.gpg~ secring.gpg
and I've a gnupg
folder in my dotfiles-local
looking like this:
ls ~/dotfiles-local/gnupg
gpg-agent.conf gpg.conf
When it comes to lsrc
everthing seems like expected:
lsrc
...
/Users/josua/.gnupg/gpg-agent.conf:/Users/josua/dotfiles-local/gnupg/gpg-agent.conf
/Users/josua/.gnupg/gpg.conf:/Users/josua/dotfiles-local/gnupg/gpg.conf
...
But if I execute rcup
, it doesn't ask to overwrite the file .gnupg/gpg-agent.conf
with a symlink to dotfiles-local/gnupg/gpg-agent.conf
like I would expect. All other symlinks are created. For some which are present in dotfiles
and where I have a .local
in dotfiles-local
I'm asked if they should be overwritten. But nothing happens for files which are already somewhere in the filesystem (not being symlinks) outside of dotfiles
and dotfiles-local
.
Is that intended behaviour?
Update:
I found out, that it works if I put the gnupg config files under dotfiles/gnupg/
and under dotfiles-local/gnupg/
.
Could this be an issue of https://github.com/thoughtbot/dotfiles instead of rcm?
Update 2:
It seems there was some confusion about that already: https://github.com/thoughtbot/dotfiles/commit/8c77a89bc3797ace04fcaab807ce5f6bbccda914
Update 3:
It seems to be an issue of rcm.
Apparently rcm ignores empty folders. So it's not enough to specify DOTFILES_DIRS="$HOME/dotfiles-local $HOME/dotfiles"
in dotfiles/rcrc
. In my case dotfiles
was authoritative for deciding if a folder was empty even if dotfiles-local
should have had precedence.
As a workaround or maybe even better practise I just copied the dotfiles/rcrc
to dotfiles-local/rcrc
and also rcup dotfiles-local
instead of dotfiles
.
I wouldn't have noticed the problem if I had a dotfiles-local/rcrc
in the first place.
Interesting. So, a minimal test case is:
dotfiles-A/directory
dotfiles-B/directory/file
rcup -d dotfiles-A -d dotfiles-B
This will cause .directory/file
not to be symlinked?
I cannot confirm with 1.3.3. All looks fine :
rcm imperator:~ [147]% mkdir dotfiles-global/emptyone
rcm imperator:~ [148]% mkdir .dotfiles/emptyone
rcm imperator:~ [149]% echo 'Content' > .dotfiles/emptyone/notsoempty
rcm imperator:~ [150]% lsrc -d dotfiles-global -d .dotfiles
/home/rcm/.date:/home/rcm/.dotfiles/date
/home/rcm/.emptyone/notsoempty:/home/rcm/.dotfiles/emptyone/notsoempty
/home/rcm/.realdotdir1/dotdate:/home/rcm/.dotfiles/realdotdir1/dotdate
/home/rcm/.tmp/rcmoutfile:/home/rcm/.dotfiles/tmp/rcmoutfile
rcm imperator:~ [151]% rcup -d dotfiles-global -d .dotfiles
rcm imperator:~ [152]% lsrc -d dotfiles-global -d .dotfiles
/home/rcm/.date:/home/rcm/.dotfiles/date
/home/rcm/.emptyone/notsoempty:/home/rcm/.dotfiles/emptyone/notsoempty
/home/rcm/.realdotdir1/dotdate:/home/rcm/.dotfiles/realdotdir1/dotdate
/home/rcm/.tmp/rcmoutfile:/home/rcm/.dotfiles/tmp/rcmoutfile
rcm imperator:~ [153]% ll /home/rcm/.dotfiles/emptyone/notsoempty
-rw-rw-r-- 1 rcm rcm 8 Dec 8 01:39 /home/rcm/.dotfiles/emptyone/notsoempty