On 10/02/2013 04:00 AM, Mathieu Bridon wrote:
---
This will become necessary if we want to upload the results of a mash
task, as I am currently working on.
Should I have created a new uploadDirRecursively() method, instead of
changing uploadDir()?
It should probably be an optional flag rather than a change to default
behavior.
It might be simpler if you used os.walk instead of os.path.walk.
I don't think you need to do anything in the os.path.isdir case, unless
you intend to prune the walk.
builder/kojid | 33 ++++++++++++++++++++++++++-------
1 file changed, 26 insertions(+), 7 deletions(-)
diff --git a/builder/kojid b/builder/kojid
index ca73cad..fbd4e73 100755
--- a/builder/kojid
+++ b/builder/kojid
@@ -371,15 +371,34 @@ class BuildRoot(object):
append '.' + suffix to the filenames, so that successive uploads
of the same directory won't overwrite each other, if the files have
the same name but different contents."""
+ def walker(arg, dirname, filenames):
+ # `arg` is completely ignored here
+ if dirname == dirpath:
+ uploadpath = rootuploadpath
+
+ else:
+ dirrelpath = os.path.relpath(dirname, start=dirpath)
+ uploadpath = os.path.join(rootuploadpath, dirrelpath)
+
+ for filename in filenames:
+ filepath = os.path.join(dirname, filename)
+
+ if os.path.isdir(filepath):
+ # TODO: Should we do something about this?
+ continue
+
+ if os.stat(filepath).st_size > 0:
+ if suffix:
+ filename = '%s.%s' % (filename, suffix)
+
+ self.session.uploadWrapper(filepath, uploadpath, filename)
+
if not os.path.isdir(dirpath):
return
- uploadpath = self.getUploadPath()
- for filename in os.listdir(dirpath):
- filepath = os.path.join(dirpath, filename)
- if os.stat(filepath).st_size > 0:
- if suffix:
- filename = '%s.%s' % (filename, suffix)
- self.session.uploadWrapper(filepath, uploadpath, filename)
+
+ rootuploadpath = self.getUploadPath()
+
+ os.path.walk(dirpath, walker, None)
def init(self):
rv = self.mock(['--init'])