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 "--dotfiles" to my stow installation. When this is enable= d, file or directory names that start with "dot-" will be linked = to a hidden file with "dot-" replaced by "." (e.g. bash= /dot-bashrc =3D> .bashrc, emacs/dot-emacs/init.el =3D> .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'd need to figure out (e.g. this kind of path rewriting doesn'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'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--