Improve output for path remapper

When a file is missing to begin with, don't complain its missing after remapping.
This commit is contained in:
2014-12-11 22:32:11 +01:00
parent 5622c410b6
commit 4e3a9ca9b7

View File

@@ -33,7 +33,7 @@ def _is_blend(f):
def _warn(msg): def _warn(msg):
print("Warning: %s" % msg) print(" warning: %s" % msg)
def _uuid_from_file(fn, block_size=1 << 20): def _uuid_from_file(fn, block_size=1 << 20):
@@ -73,11 +73,17 @@ def _iter_files(paths, check_ext=None):
def start( def start(
paths, paths,
is_quiet=False,
dry_run=False, dry_run=False,
): ):
# {(sha1, length): "filepath"} # {(sha1, length): "filepath"}
remap_uuid = {} remap_uuid = {}
# relative paths which don't exist,
# don't complain when they're missing on remap.
# {f_src: [relative path deps, ...]}
remap_lost = {}
# all files we need to map # all files we need to map
# absolute paths # absolute paths
files_to_map = set() files_to_map = set()
@@ -89,9 +95,14 @@ def start(
# First walk over all blends # First walk over all blends
import blendfile_path_walker import blendfile_path_walker
for blendfile in _iter_files(paths, check_ext=_is_blend): for blendfile_src in _iter_files(paths, check_ext=_is_blend):
if not is_quiet:
print("blend read: %r" % blendfile_src)
remap_lost[blendfile_src] = remap_lost_blendfile_src = set()
for fp, (rootdir, fp_blend_basename) in blendfile_path_walker.FilePath.visit_from_blend( for fp, (rootdir, fp_blend_basename) in blendfile_path_walker.FilePath.visit_from_blend(
blendfile, blendfile_src,
readonly=True, readonly=True,
recursive=False, recursive=False,
): ):
@@ -103,10 +114,14 @@ def start(
if os.path.exists(f_abs): if os.path.exists(f_abs):
files_to_map.add(f_abs) files_to_map.add(f_abs)
else: else:
_warn("file %r from %r not found!" % (f_abs, blendfile)) if not is_quiet:
_warn("file %r not found!" % f_abs)
# don't complain about this file being missing on remap
remap_lost_blendfile_src.add(fp.filepath)
# so we can know where its moved to # so we can know where its moved to
files_to_map.add(blendfile) files_to_map.add(blendfile_src)
del blendfile_path_walker del blendfile_path_walker
# ------------------------------------------------------------------------ # ------------------------------------------------------------------------
@@ -118,13 +133,15 @@ def start(
f_match = remap_uuid.get(f_uuid) f_match = remap_uuid.get(f_uuid)
if f_match is not None: if f_match is not None:
_warn("duplicate file found! (%r, %r)" % (f_match, f)) if not is_quiet:
_warn("duplicate file found! (%r, %r)" % (f_match, f))
remap_uuid[f_uuid] = f remap_uuid[f_uuid] = f
# now find all deps # now find all deps
remap_data_args = ( remap_data_args = (
remap_uuid, remap_uuid,
remap_lost,
) )
return remap_data_args return remap_data_args
@@ -132,11 +149,13 @@ def start(
def finish( def finish(
paths, remap_data_args, paths, remap_data_args,
is_quiet=False,
force_relative=False, force_relative=False,
dry_run=False, dry_run=False,
): ):
(remap_uuid, (remap_uuid,
remap_lost,
) = remap_data_args ) = remap_data_args
remap_src_to_dst = {} remap_src_to_dst = {}
@@ -156,9 +175,16 @@ def finish(
for blendfile_dst in _iter_files(paths, check_ext=_is_blend): for blendfile_dst in _iter_files(paths, check_ext=_is_blend):
blendfile_src = remap_dst_to_src.get(blendfile_dst) blendfile_src = remap_dst_to_src.get(blendfile_dst)
if blendfile_src is None: if blendfile_src is None:
_warn("new blendfile added since beginning 'remap': %r" % blendfile_dst) if not is_quiet:
_warn("new blendfile added since beginning 'remap': %r" % blendfile_dst)
continue continue
# not essential, just so we can give more meaningful errors
remap_lost_blendfile_src = remap_lost[blendfile_src]
if not is_quiet:
print("blend write: %r" % blendfile_src)
blendfile_src_basedir = os.path.dirname(blendfile_src) blendfile_src_basedir = os.path.dirname(blendfile_src)
blendfile_dst_basedir = os.path.dirname(blendfile_dst) blendfile_dst_basedir = os.path.dirname(blendfile_dst)
for fp, (rootdir, fp_blend_basename) in blendfile_path_walker.FilePath.visit_from_blend( for fp, (rootdir, fp_blend_basename) in blendfile_path_walker.FilePath.visit_from_blend(
@@ -170,6 +196,11 @@ def finish(
# so we can update the reference # so we can update the reference
f_src_rel = fp.filepath f_src_rel = fp.filepath
if f_src_rel in remap_lost_blendfile_src:
# this file never existed, so we can't remap it
continue
is_relative = f_src_rel.startswith(b'//') is_relative = f_src_rel.startswith(b'//')
if is_relative: if is_relative:
f_src_abs = fp.filepath_absolute_resolve(basedir=blendfile_src_basedir) f_src_abs = fp.filepath_absolute_resolve(basedir=blendfile_src_basedir)
@@ -180,7 +211,8 @@ def finish(
f_dst_abs = remap_src_to_dst.get(f_src_abs) f_dst_abs = remap_src_to_dst.get(f_src_abs)
if f_dst_abs is None: if f_dst_abs is None:
_warn("file %r from %r not found in map!" % (f_src_abs, blendfile_dst)) if not is_quiet:
_warn("file %r not found in map!" % f_src_abs)
continue continue
# now remap! # now remap!