From 81d9dca2642c8b0a7f29347ec1ddfab9b8a0b90a Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Thu, 6 Nov 2014 19:47:04 +0100 Subject: [PATCH] bam cli: Keep track of files to remove --- client/cli/bam.py | 36 ++++++++++++++++++++++++------------ 1 file changed, 24 insertions(+), 12 deletions(-) diff --git a/client/cli/bam.py b/client/cli/bam.py index 4e55b44..d898dc7 100755 --- a/client/cli/bam.py +++ b/client/cli/bam.py @@ -169,7 +169,7 @@ class bam_utils: # TODO(cam) we may want to checkout a single file? how to handle this? # we may want to checkout a dir too - dst_dir = os.path.basename(path) + dst_dir = os.path.splitext(os.path.basename(path))[0] payload = { "filepath": path, @@ -256,10 +256,13 @@ class bam_utils: basedir_temp = os.path.join(basedir, "tmp") if os.path.isdir(basedir_temp): - print("Path found, " - "another commit in progress, or remove with path, aborting! (%r)" % + fatal("Path found, " + "another commit in progress, or remove with path! (%r)" % basedir_temp) - sys.exit(1) + + if not os.path.exists(os.path.join(path, ".bam_paths_uuid.json")): + fatal("Path not a project session, (%r)" % + path) # make a zipfile from session import json @@ -271,6 +274,7 @@ class bam_utils: deps_remap = json.load(f) paths_modified = {} + paths_remove = set() paths_remap_subset_add = {} # don't commit metadata @@ -282,10 +286,10 @@ class bam_utils: for fn_rel, sha1 in paths_uuid.items(): fn_abs = os.path.join(path, fn_rel) - if sha1_from_file(fn_abs) != sha1: + if os.path.exists(fn_abs): + if sha1_from_file(fn_abs) != sha1: - # we may want to be more clever here - if fn_rel.endswith(".blend"): + # we may want to be more clever here deps = deps_remap.get(fn_rel) if deps: # ---- @@ -304,9 +308,13 @@ class bam_utils: fn_abs = fn_abs_remap # ---- - paths_modified[fn_rel] = fn_abs + paths_modified[fn_rel] = fn_abs - paths_used.add(fn_abs) + paths_used.add(fn_abs) + else: + # TODO(cam) remove these from svn + print(" removing: %r" % fn_abs) + paths_remove.add(fn_abs) # ---- # find new files @@ -325,7 +333,6 @@ class bam_utils: print(path) for fn_abs in iter_files(path): - print(fn_abs) if fn_abs not in paths_used: # we should be clever - add the file to a useful location based on some rules # (category, filetype & tags?) @@ -334,7 +341,7 @@ class bam_utils: # TODO(cam) # remap paths of added files - print(" adding new file:", fn_abs) + print(" adding new file: %r" % fn_abs) paths_modified[fn_rel] = fn_abs # TESTING ONLY @@ -397,11 +404,16 @@ class bam_utils: params=payload, auth=(cfg['user'], cfg['password']), files=files) - print("Return is:", r.text) files['file'].close() os.remove(temp_zip) + r_json = r.json() + print(r_json.get("message", "")) + + # TODO(cam) + # if all goes well, rewrite sha1's + @staticmethod def list_dir(paths): import requests