1
0
mirror of https://github.com/deadc0de6/dotdrop.git synced 2026-02-10 13:54:17 +00:00
This commit is contained in:
user
2025-05-20 21:56:27 +02:00
parent f007fd8fb2
commit 0cd10441ce
3 changed files with 8 additions and 22 deletions

View File

@@ -236,8 +236,7 @@ dotfiles:
- "*otherdir*" - "*otherdir*"
``` ```
When this option is enabled: Note:
- During **install** operations, any directory matching a pattern in `dir_as_block` will be replaced as a whole, rather than updating individual files - During **install** operations, any directory matching a pattern in `dir_as_block` will be replaced as a whole
- This option has **no effect** on **compare** operations, which will always show file-by-file differences - This option has no effect on **compare** operations, which will always show file-by-file differences
- This option has no effect on dotfiles that are regular files
This option defaults to an empty list and can be set on any dotfile that represents a directory. It has no effect on dotfiles that are regular files.

View File

@@ -232,9 +232,6 @@ def _dotfile_install(opts, dotfile, tmpdir=None):
LinkTypes.RELATIVE, LinkTypes.ABSOLUTE LinkTypes.RELATIVE, LinkTypes.ABSOLUTE
): ):
# nolink|relative|absolute|link_children # nolink|relative|absolute|link_children
asblock = False
if hasattr(dotfile, 'dir_as_block'):
asblock = True
ret, err = inst.install( ret, err = inst.install(
templ, templ,
dotfile.src, dotfile.src,
@@ -244,7 +241,7 @@ def _dotfile_install(opts, dotfile, tmpdir=None):
is_template=is_template, is_template=is_template,
ignore=ignores, ignore=ignores,
chmod=dotfile.chmod, chmod=dotfile.chmod,
dir_as_block=asblock, dir_as_block=dotfile.dir_as_block,
) )
else: else:
# nolink # nolink
@@ -258,9 +255,6 @@ def _dotfile_install(opts, dotfile, tmpdir=None):
src = tmp src = tmp
# make sure to re-evaluate if is template # make sure to re-evaluate if is template
is_template = dotfile.template and Templategen.path_is_template(src) is_template = dotfile.template and Templategen.path_is_template(src)
asblock = False
if hasattr(dotfile, "dir_as_block"):
asblock = True
ret, err = inst.install( ret, err = inst.install(
templ, templ,
src, src,
@@ -271,7 +265,7 @@ def _dotfile_install(opts, dotfile, tmpdir=None):
ignore=ignores, ignore=ignores,
is_template=is_template, is_template=is_template,
chmod=dotfile.chmod, chmod=dotfile.chmod,
dir_as_block=asblock, dir_as_block=dotfile.dir_as_block,
) )
if tmp: if tmp:
tmp = os.path.join(opts.dotpath, tmp) tmp = os.path.join(opts.dotpath, tmp)

View File

@@ -7,7 +7,6 @@ filesystem tree for directories
import os import os
import fnmatch
# local imports # local imports
from dotdrop.utils import must_ignore, dir_empty from dotdrop.utils import must_ignore, dir_empty
@@ -19,11 +18,11 @@ class FTreeDir:
directory tree for comparison directory tree for comparison
""" """
def __init__(self, path, ignores=None, debug=False, dir_as_block=None): def __init__(self, path, ignores=None,
debug=False):
self.path = path self.path = path
self.ignores = ignores self.ignores = ignores
self.debug = debug self.debug = debug
self.dir_as_block = dir_as_block or []
self.entries = [] self.entries = []
self.log = Logger(debug=self.debug) self.log = Logger(debug=self.debug)
if os.path.exists(path) and os.path.isdir(path): if os.path.exists(path) and os.path.isdir(path):
@@ -35,12 +34,6 @@ class FTreeDir:
ignore empty directory ignore empty directory
test for ignore pattern test for ignore pattern
""" """
for pattern in self.dir_as_block:
if fnmatch.fnmatch(self.path, pattern):
self.log.dbg(f'dir_as_block match: {pattern} for {self.path}')
self.entries.append(self.path)
return
for root, dirs, files in os.walk(self.path, followlinks=True): for root, dirs, files in os.walk(self.path, followlinks=True):
for file in files: for file in files:
fpath = os.path.join(root, file) fpath = os.path.join(root, file)