[KeepAnno] Archive keepanno doc to a fixed location on main builds

Bug: b/248408342
Change-Id: I08b6fd37e50f7abb689e17e0f8c5eb497a2eed05
diff --git a/tools/archive.py b/tools/archive.py
index 8de974f..a906a82 100755
--- a/tools/archive.py
+++ b/tools/archive.py
@@ -122,6 +122,21 @@
     print('INFO: Open files hard limit: %s' % hard)
 
 
+def UploadDir(src_dir, version_or_path, dst_dir, is_main, options):
+    destination = GetUploadDestination(version_or_path, dst_dir, is_main)
+    print(f'Uploading {src_dir} to {destination}')
+    if options.dry_run:
+        if options.dry_run_output:
+            dry_run_destination = os.path.join(options.dry_run_output, version_or_path, dst_dir)
+            print(f'Dry run, not actually uploading. Copying to {dry_run_destination}')
+            shutil.copytree(src_dir, dry_run_destination)
+        else:
+            print('Dry run, not actually uploading')
+    else:
+        utils.upload_directory_to_cloud_storage(src_dir, destination)
+        print(f'Directory available at: {GetUrl(version_or_path, dst_dir, is_main)}')
+
+
 def Main():
     (options, args) = ParseOptions()
     Run(options)
@@ -231,23 +246,18 @@
             '-PspdxRevision=' + GetGitHash()
         ])
 
+        # Upload keep-anno javadoc to a fixed "docs" location.
+        if is_main:
+            version_or_path = 'docs'
+            dst_dir = 'keepanno/javadoc'
+            UploadDir(utils.KEEPANNO_ANNOTATIONS_DOC, version_or_path, dst_dir, is_main, options)
+
         # Upload directories.
         dirs_for_archiving = [
-            (utils.KEEPANNO_ANNOTATIONS_DOC, "keepanno/javadoc"),
+            (utils.KEEPANNO_ANNOTATIONS_DOC, 'keepanno/javadoc'),
         ]
         for (src_dir, dst_dir) in dirs_for_archiving:
-            destination = GetUploadDestination(version, dst_dir, is_main)
-            print(f'Uploading {src_dir} to {destination}')
-            if options.dry_run:
-                if options.dry_run_output:
-                    dry_run_destination = os.path.join(options.dry_run_output, dst_dir)
-                    print(f'Dry run, not actually uploading. Copying to {dry_run_destination}')
-                    shutil.copytree(src_dir, dry_run_destination)
-                else:
-                    print('Dry run, not actually uploading')
-            else:
-                utils.upload_directory_to_cloud_storage(src_dir, destination)
-                print(f'Directory available at: {GetUrl(version, dst_dir, is_main)}')
+            UploadDir(src_dir, version, dst_dir, is_main, options)
 
         # Upload files.
         for_archiving = [
@@ -279,8 +289,8 @@
             print('Uploading %s to %s' % (tagged_jar, destination))
             if options.dry_run:
                 if options.dry_run_output:
-                    dry_run_destination = os.path.join(options.dry_run_output,
-                                                       file_name)
+                    dry_run_destination = os.path.join(
+                        options.dry_run_output, version, file_name)
                     print('Dry run, not actually uploading. Copying to ' +
                           dry_run_destination)
                     shutil.copyfile(tagged_jar, dry_run_destination)