Updating upload-bits scripts for nightly pushes

Change-Id: I84669b5a13c4f033cd564050254e0c6a44eb1431
diff --git a/tools/build/onos-upload-bits b/tools/build/onos-upload-bits
index ae5b9c2..19eaada 100755
--- a/tools/build/onos-upload-bits
+++ b/tools/build/onos-upload-bits
@@ -6,7 +6,6 @@
 . $ONOS_ROOT/tools/build/envDefaults
 
 #FIXME need to export s3Creds
-#FIXME verify that ONOS_VERSION is set
+#TODO we could verify that ONOS_VERSION is set, and only upload that version
 
-# upload to EC2
-upload-to-s3 -d release/ /tmp/onos-$ONOS_VERSION.*
+python onosUploadBits.py
diff --git a/tools/build/onosUploadBits.py b/tools/build/onosUploadBits.py
new file mode 100755
index 0000000..284a509
--- /dev/null
+++ b/tools/build/onosUploadBits.py
@@ -0,0 +1,40 @@
+#!/usr/bin/env python
+# -----------------------------------------------------------------------------
+# Uploads ONOS distributable bits.
+# -----------------------------------------------------------------------------
+
+#FIXME need to export s3Creds
+
+import re
+from os import listdir
+from os.path import isfile, join
+
+from uploadToS3 import uploadFile
+
+nightlyTag = 'NIGHTLY'
+bitsPath = '/tmp'
+
+prefix = 'onos-(\d+\.\d+\.\d+)'
+buildNum = '\.?([\w-]*)'
+ext = '\.(?:tar\.gz|zip)'
+
+def findBits( path ):
+    for file in listdir( path ):
+        filePath = join( path, file )
+        if not isfile( filePath ):
+            continue
+
+        regex = prefix + buildNum + ext
+        match = re.match( regex, file )
+        if match:
+            version = match.group(1)
+            build = match.group(2)
+            if build:
+                if 'NIGHTLY' in build:
+                    uploadFile(filePath, dest='nightly/')
+            else:
+                #no build; this is a release
+                uploadFile(filePath, dest='release/')
+
+if __name__ == '__main__':
+    findBits( '/tmp' )
\ No newline at end of file
diff --git a/tools/build/upload-to-s3 b/tools/build/uploadToS3.py
similarity index 74%
rename from tools/build/upload-to-s3
rename to tools/build/uploadToS3.py
index 8b02d3b..a16235c 100755
--- a/tools/build/upload-to-s3
+++ b/tools/build/uploadToS3.py
@@ -1,5 +1,4 @@
-#!/usr/bin/python
-
+#!/usr/bin/env python
 """
 Upload a file to S3
 """
@@ -13,7 +12,7 @@
 from boto.s3.connection import S3Connection
 
 
-def uploadFile( bucket, filename, dest=None ):
+def uploadFile( filename, dest=None, bucket=None, overwrite=False ):
     "Upload a file to a bucket"
     if not bucket:
         bucket = 'onos'
@@ -37,10 +36,13 @@
     bucket = conn.get_bucket( bucket )
     k = Key( bucket )
     k.key = key
-    k.set_contents_from_filename( filename, cb=callback, num_cb=100 )
-    print
-    elapsed = time() - start
-    print "* elapsed time: %.2f seconds" % elapsed
+    if overwrite or not k.exists():
+        k.set_contents_from_filename( filename, cb=callback, num_cb=100 )
+        print
+        elapsed = time() - start
+        print "* elapsed time: %.2f seconds" % elapsed
+    else:
+        print 'file', basename( filename ), 'already exists in', bucket.name
 
 if __name__ == '__main__':
     usage = "Usage: %prog [options] <file to upload>"
@@ -53,11 +55,13 @@
                       help="Bucket on S3")
     parser.add_option("-s", "--secret", dest="awsSecret",
                       help="Bucket on S3")
+    parser.add_option("-f", "--force", dest="overwrite",
+                      help="Overwrite existing file")
     (options, args) = parser.parse_args()
     
     if len( args ) == 0:
         parser.error("missing filenames")
     for file in args:
-        uploadFile( options.bucket, file, options.dest )
+        uploadFile( file, options.dest, options.bucket, options.overwrite )
 
     #FIXME key and secret are unused