Special processing for dotfiles

Joris Vankerschaver <[email protected]> Sat, 23 Apr 2016 09:34:16 +0100
Newsgroups gmane.comp.gnu.stow.devel
Message-ID <CAFytq+=1Ev0Z5+-THbiq+0BzOmUGq51Dw_pNrgwWuSKPMGQJyw@mail.gmail.com>
--001a113dae6e126fbc053122cffe
Content-Type: multipart/alternative; boundary=001a113dae6e126fb7053122cffc

--001a113dae6e126fb7053122cffc
Content-Type: text/plain; charset=UTF-8

Hi all,

I use Stow to manage my dotfiles, but I found it somewhat confusing to
maintain stow directories full of hidden files.

To work around this, I added an option "--dotfiles" to my stow
installation. When this is enabled, file or directory names that start with
"dot-" will be linked to a hidden file with "dot-" replaced by "." (e.g.
bash/dot-bashrc => .bashrc, emacs/dot-emacs/init.el => .emacs/init.el, etc).

Is this something that would be of interest for the main branch? I added my
(very rough) implementation as a patch to this email, but I can make a PR.
There are some structural limitations that I'd need to figure out (e.g.
this kind of path rewriting doesn't work well with unfolding).

Last, thanks for writing and maintaining Stow. The package perfectly fits
my use case, and the code is super clean. I've never written any Perl
before but I found the code base to be very understandable and
self-explanatory.

With best wishes,
Joris.

--001a113dae6e126fb7053122cffc
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr">Hi all,<div><br></div><div>I use Stow to manage my dotfile=
s, but I found it somewhat confusing to maintain stow directories full of h=
idden files.=C2=A0</div><div><br></div><div>To work around this, I added an=
 option &quot;--dotfiles&quot; to my stow installation. When this is enable=
d, file or directory names that start with &quot;dot-&quot; will be linked =
to a hidden file with &quot;dot-&quot; replaced by &quot;.&quot; (e.g. bash=
/dot-bashrc =3D&gt; .bashrc, emacs/dot-emacs/init.el =3D&gt; .emacs/init.el=
, etc).</div><div><br></div><div>Is this something that would be of interes=
t for the main branch? I added my (very rough) implementation as a patch to=
 this email, but I can make a PR. There are some structural limitations tha=
t I&#39;d need to figure out (e.g. this kind of path rewriting doesn&#39;t =
work well with unfolding).</div><div><br></div><div>Last, thanks for writin=
g and maintaining Stow. The package perfectly fits my use case, and the cod=
e is super clean. I&#39;ve never written any Perl before but I found the co=
de base to be very understandable and self-explanatory.</div><div><br></div=
><div>With best wishes,</div><div>Joris.</div></div>

--001a113dae6e126fb7053122cffc--
--001a113dae6e126fbc053122cffe
Content-Type: application/octet-stream; 
	name="0001-ENH-Special-processing-for-dotfiles.patch"
Content-Disposition: attachment; 
	filename="0001-ENH-Special-processing-for-dotfiles.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_incvzf9i0

RnJvbSBlYzBiMjg1NTliMWZlMWZlZmVkNDJiZjFkOTQ2ZWJjZjQ3MTRmOThkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKb3JpcyBWYW5rZXJzY2hhdmVyIDxqb3Jpcy52YW5rZXJzY2hh
dmVyQGdtYWlsLmNvbT4KRGF0ZTogU2F0LCAyMyBBcHIgMjAxNiAwOToxOToyNSArMDEwMApTdWJq
ZWN0OiBbUEFUQ0hdIEVOSDogU3BlY2lhbCBwcm9jZXNzaW5nIGZvciBkb3RmaWxlcy4KCi0tLQog
YmluL3N0b3cuaW4gICAgICAgICB8ICAyICstCiBsaWIvU3Rvdy5wbS5pbiAgICAgIHwgMjQgKysr
KysrKysrKysrKysrKysrKysrKystCiBsaWIvU3Rvdy9VdGlsLnBtLmluIHwgMTYgKysrKysrKysr
KysrKysrLQogMyBmaWxlcyBjaGFuZ2VkLCAzOSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygt
KQogbW9kZSBjaGFuZ2UgMTAwNzU1ID0+IDEwMDY0NCBsaWIvU3Rvdy5wbS5pbgoKZGlmZiAtLWdp
dCBhL2Jpbi9zdG93LmluIGIvYmluL3N0b3cuaW4KaW5kZXggZWM4M2Y1OS4uMTE1MjA1YSAxMDA3
NTUKLS0tIGEvYmluL3N0b3cuaW4KKysrIGIvYmluL3N0b3cuaW4KQEAgLTQ4MSw3ICs0ODEsNyBA
QCBzdWIgcHJvY2Vzc19vcHRpb25zIHsKICAgICAgICAgXCVvcHRpb25zLAogICAgICAgICAndmVy
Ym9zZXx2OisnLCAnaGVscHxoJywgJ3NpbXVsYXRlfG58bm8nLAogICAgICAgICAndmVyc2lvbnxW
JywgJ2NvbXBhdHxwJywgJ2RpcnxkPXMnLCAndGFyZ2V0fHQ9cycsCi0gICAgICAgICdhZG9wdCcs
ICduby1mb2xkaW5nJywKKyAgICAgICAgJ2Fkb3B0JywgJ25vLWZvbGRpbmcnLCAnZG90ZmlsZXMn
LAogCiAgICAgICAgICMgY2xlYW4gYW5kIHByZS1jb21waWxlIGFueSByZWdleCdzIGF0IHBhcnNl
IHRpbWUKICAgICAgICAgJ2lnbm9yZT1zJyA9PgpkaWZmIC0tZ2l0IGEvbGliL1N0b3cucG0uaW4g
Yi9saWIvU3Rvdy5wbS5pbgpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IDg1
MWJiODYuLjI4MzUwMTQKLS0tIGEvbGliL1N0b3cucG0uaW4KKysrIGIvbGliL1N0b3cucG0uaW4K
QEAgLTQxLDcgKzQxLDcgQEAgdXNlIEZpbGU6OlNwZWM7CiB1c2UgUE9TSVggcXcoZ2V0Y3dkKTsK
IAogdXNlIFN0b3c6OlV0aWwgcXcoc2V0X2RlYnVnX2xldmVsIGRlYnVnIGVycm9yIHNldF90ZXN0
X21vZGUKLSAgICAgICAgICAgICAgICAgIGpvaW5fcGF0aHMgcmVzdG9yZV9jd2QgY2Fub25fcGF0
aCBwYXJlbnQpOworICAgICAgICAgICAgICAgICAgam9pbl9wYXRocyByZXN0b3JlX2N3ZCBjYW5v
bl9wYXRoIHBhcmVudCBhZGp1c3RfZG90ZmlsZSk7CiAKIG91ciAkUHJvZ3JhbU5hbWUgPSAnc3Rv
dyc7CiBvdXIgJFZFUlNJT04gPSAnQFZFUlNJT05AJzsKQEAgLTYwLDYgKzYwLDcgQEAgb3VyICVE
RUZBVUxUX09QVElPTlMgPSAoCiAgICAgcGFyYW5vaWQgICAgID0+IDAsCiAgICAgY29tcGF0ICAg
ICAgID0+IDAsCiAgICAgdGVzdF9tb2RlICAgID0+IDAsCisgICAgZG90ZmlsZXMgICAgID0+IDAs
CiAgICAgYWRvcHQgICAgICAgID0+IDAsCiAgICAgJ25vLWZvbGRpbmcnID0+IDAsCiAgICAgaWdu
b3JlICAgICAgID0+IFtdLApAQCAtMzc3LDYgKzM3OCwxMyBAQCBzdWIgc3Rvd19jb250ZW50cyB7
CiAgICAgICAgIG5leHQgTk9ERSBpZiAkbm9kZSBlcSAnLi4nOwogICAgICAgICBteSAkbm9kZV90
YXJnZXQgPSBqb2luX3BhdGhzKCR0YXJnZXQsICRub2RlKTsKICAgICAgICAgbmV4dCBOT0RFIGlm
ICRzZWxmLT5pZ25vcmUoJHN0b3dfcGF0aCwgJHBhY2thZ2UsICRub2RlX3RhcmdldCk7CisKKwlp
ZiAoJHNlbGYtPntkb3RmaWxlc30pIHsKKwkgICAgbXkgJGFkal9ub2RlX3RhcmdldCA9IGFkanVz
dF9kb3RmaWxlKCRub2RlX3RhcmdldCk7CisJICAgIGRlYnVnKDQsICIgIEFkanVzdGluZzogJG5v
ZGVfdGFyZ2V0ID0+ICRhZGpfbm9kZV90YXJnZXQiKTsKKwkgICAgJG5vZGVfdGFyZ2V0ID0gJGFk
al9ub2RlX3RhcmdldDsKKwl9CisKICAgICAgICAgJHNlbGYtPnN0b3dfbm9kZSgKICAgICAgICAg
ICAgICRzdG93X3BhdGgsCiAgICAgICAgICAgICAkcGFja2FnZSwKQEAgLTYxNyw2ICs2MjUsNyBA
QCBzdWIgdW5zdG93X2NvbnRlbnRzX29yaWcgewogICAgICAgICBuZXh0IE5PREUgaWYgJG5vZGUg
ZXEgJy4uJzsKICAgICAgICAgbXkgJG5vZGVfdGFyZ2V0ID0gam9pbl9wYXRocygkdGFyZ2V0LCAk
bm9kZSk7CiAgICAgICAgIG5leHQgTk9ERSBpZiAkc2VsZi0+aWdub3JlKCRzdG93X3BhdGgsICRw
YWNrYWdlLCAkbm9kZV90YXJnZXQpOworICAgICAgICAjICRub2RlX3RhcmdldCA9IGFkanVzdF9k
b3RmaWxlKCRub2RlX3RhcmdldCk7CiAgICAgICAgICRzZWxmLT51bnN0b3dfbm9kZV9vcmlnKCRz
dG93X3BhdGgsICRwYWNrYWdlLCAkbm9kZV90YXJnZXQpOwogICAgIH0KIH0KQEAgLTc0NCw2ICs3
NTMsMTMgQEAgc3ViIHVuc3Rvd19jb250ZW50cyB7CiAgICAgICAgIG5leHQgTk9ERSBpZiAkbm9k
ZSBlcSAnLi4nOwogICAgICAgICBteSAkbm9kZV90YXJnZXQgPSBqb2luX3BhdGhzKCR0YXJnZXQs
ICRub2RlKTsKICAgICAgICAgbmV4dCBOT0RFIGlmICRzZWxmLT5pZ25vcmUoJHN0b3dfcGF0aCwg
JHBhY2thZ2UsICRub2RlX3RhcmdldCk7CisKKwlpZiAoJHNlbGYtPntkb3RmaWxlc30pIHsKKwkg
ICAgbXkgJGFkal9ub2RlX3RhcmdldCA9IGFkanVzdF9kb3RmaWxlKCRub2RlX3RhcmdldCk7CisJ
ICAgIGRlYnVnKDQsICIgIEFkanVzdGluZzogJG5vZGVfdGFyZ2V0ID0+ICRhZGpfbm9kZV90YXJn
ZXQiKTsKKwkgICAgJG5vZGVfdGFyZ2V0ID0gJGFkal9ub2RlX3RhcmdldDsKKwl9CisKICAgICAg
ICAgJHNlbGYtPnVuc3Rvd19ub2RlKCRzdG93X3BhdGgsICRwYWNrYWdlLCAkbm9kZV90YXJnZXQp
OwogICAgIH0KICAgICBpZiAoLWQgJHRhcmdldCkgewpAQCAtODAxLDYgKzgxNywxMiBAQCBzdWIg
dW5zdG93X25vZGUgewogICAgICAgICAjIERvZXMgdGhlIGV4aXN0aW5nICR0YXJnZXQgYWN0dWFs
bHkgcG9pbnQgdG8gYW55dGhpbmc/CiAgICAgICAgIGlmICgtZSAkZXhpc3RpbmdfcGF0aCkgewog
ICAgICAgICAgICAgIyBEb2VzIGxpbmsgcG9pbnRzIHRvIHRoZSByaWdodCBwbGFjZT8KKworCSAg
ICAjIEFkanVzdCBmb3IgZG90ZmlsZSBpZiBuZWNlc3NhcnkuCisJICAgIGlmICgkc2VsZi0+e2Rv
dGZpbGVzfSkgeworCQkkZXhpc3RpbmdfcGF0aCA9IGFkanVzdF9kb3RmaWxlKCRleGlzdGluZ19w
YXRoKTsKKwkgICAgfQorCiAgICAgICAgICAgICBpZiAoJGV4aXN0aW5nX3BhdGggZXEgJHBhdGgp
IHsKICAgICAgICAgICAgICAgICAkc2VsZi0+ZG9fdW5saW5rKCR0YXJnZXQpOwogICAgICAgICAg
ICAgfQpkaWZmIC0tZ2l0IGEvbGliL1N0b3cvVXRpbC5wbS5pbiBiL2xpYi9TdG93L1V0aWwucG0u
aW4KaW5kZXggYjcwOWU3ZS4uNzNiMTdhNiAxMDA2NDQKLS0tIGEvbGliL1N0b3cvVXRpbC5wbS5p
bgorKysgYi9saWIvU3Rvdy9VdGlsLnBtLmluCkBAIC0yMiw3ICsyMiw3IEBAIHVzZSBQT1NJWCBx
dyhnZXRjd2QpOwogdXNlIGJhc2UgcXcoRXhwb3J0ZXIpOwogb3VyIEBFWFBPUlRfT0sgPSBxdygK
ICAgICBlcnJvciBkZWJ1ZyBzZXRfZGVidWdfbGV2ZWwgc2V0X3Rlc3RfbW9kZQotICAgIGpvaW5f
cGF0aHMgcGFyZW50IGNhbm9uX3BhdGggcmVzdG9yZV9jd2QKKyAgICBqb2luX3BhdGhzIHBhcmVu
dCBjYW5vbl9wYXRoIHJlc3RvcmVfY3dkIGFkanVzdF9kb3RmaWxlCiApOwogCiBvdXIgJFByb2dy
YW1OYW1lID0gJ3N0b3cnOwpAQCAtMTkzLDYgKzE5MywyMCBAQCBzdWIgcmVzdG9yZV9jd2Qgewog
ICAgIGNoZGlyKCRwcmV2KSBvciBlcnJvcigiWW91ciBjdXJyZW50IGRpcmVjdG9yeSAkcHJldiBz
ZWVtcyB0byBoYXZlIHZhbmlzaGVkIik7CiB9CiAKK3N1YiBhZGp1c3RfZG90ZmlsZSB7CisgICAg
bXkgJHRhcmdldCA9ICRfWzBdOworCisgICAgbXkgQHJlc3VsdCA9ICgpOworICAgIGZvciBteSAk
cGFydCAoc3BsaXQgbXsvK30sICR0YXJnZXQpIHsKKyAgICAgICAgaWYgKCRwYXJ0IG5lICJkb3Qt
IikgeworICAgICAgICAgICAgJHBhcnQgPX4gcy9eZG90LS8uLzsKKyAgICAgICAgfQorICAgICAg
ICBwdXNoIEByZXN1bHQsICRwYXJ0OworICAgIH0KKworICAgIHJldHVybiBqb2luICcvJywgQHJl
c3VsdDsKK30KKwogPWhlYWQxIEJVR1MKIAogPWhlYWQxIFNFRSBBTFNPCi0tIAoyLjguMAoK
--001a113dae6e126fbc053122cffe--