Chromium Code Reviews| Index: visual_studio/NativeClientVSAddIn/create_package.py |
| diff --git a/visual_studio/NativeClientVSAddIn/create_package.py b/visual_studio/NativeClientVSAddIn/create_package.py |
| index e5bc0f80afb43db667463bc7c2dfc4c20a09ca92..d0fdcc5378bba65a8824db1106fe6bc6b8d1353a 100644 |
| --- a/visual_studio/NativeClientVSAddIn/create_package.py |
| +++ b/visual_studio/NativeClientVSAddIn/create_package.py |
| @@ -13,30 +13,60 @@ result in out/NativeClientVSAddin.zip |
| import os |
| import zipfile |
| -# Root output directory |
| -BUILD_OUTPUT_DIRECTORY = "../../out/NativeClientVSAddIn/" |
| +SCRIPT_DIR = os.path.dirname(os.path.abspath(__file__)) |
| -# Directory containing static installer resources |
| -RESOURCE_DIRECTORY = "./InstallerResources" |
| +# Root output directory. |
| +BUILD_OUTPUT_DIRECTORY = os.path.join( |
| + SCRIPT_DIR, |
| + "../../out/NativeClientVSAddIn/") |
| -# Directory that contains the build assemblies |
| +# Directory containing static installer resources. |
| +RESOURCE_DIRECTORY = os.path.join(SCRIPT_DIR, "InstallerResources/") |
| + |
| +# Directory that contains the build assemblies. |
| ASSEMBLY_DIRECTORY = os.path.join(BUILD_OUTPUT_DIRECTORY, "Debug") |
| -# Base name of the final zip file |
| +# Base name of the final zip file. |
| OUTPUT_NAME = os.path.join(BUILD_OUTPUT_DIRECTORY, "NativeClientVSAddIn.zip") |
| -# List of paths to files to include in the zip file |
| +# List of source/destination pairs to include in zip file. |
| FILE_LIST = [ |
| - os.path.join(RESOURCE_DIRECTORY, 'NativeClientVSAddIn.AddIn'), |
| - os.path.join(RESOURCE_DIRECTORY, 'install.py'), |
| - os.path.join(ASSEMBLY_DIRECTORY, 'NativeClientVSAddIn.dll')] |
| + (os.path.join(ASSEMBLY_DIRECTORY, 'NativeClientVSAddIn.dll'), |
| + 'NativeClientVSAddIn.dll'), |
|
binji
2012/07/26 23:32:17
Maybe change to (path, zip_dir) to remove duplicat
tysand
2012/07/28 01:13:11
I assume you mean have the source be the path to t
|
| + (os.path.join(ASSEMBLY_DIRECTORY, 'NaCl.Build.CPPTasks.dll'), |
| + 'NaCl\\NaCl.Build.CPPTasks.dll')] |
| + |
| + |
| +def AddFolderToZip(path, zip_file): |
| + """Adds an entire folder and sub folders to an open zipfile object. |
| + |
| + The zip_file must already be open and it is not closed by this function. |
| + |
| + Args: |
| + path: Folder to add. |
| + zipfile: Already open zip file. |
| + |
| + Returns: |
| + Nothing. |
| + """ |
| + # Ensure the path ends in trailing slash. |
| + path = path.rstrip("/\\") + "\\" |
| + for dir_path, dir_names, files in os.walk(path): |
| + for file in files: |
| + read_path = os.path.join(dir_path, file) |
| + zip_based_dir = dir_path[len(path):] |
| + write_path = os.path.join(zip_based_dir, file) |
| + zip_file.write(read_path, write_path, zipfile.ZIP_DEFLATED) |
| + |
| def main(): |
| - # Zip the package |
| + # Zip the package. |
| out_file = zipfile.ZipFile(OUTPUT_NAME, 'w') |
| - for file_path in FILE_LIST: |
| - out_file.write(file_path, os.path.basename(file_path), zipfile.ZIP_DEFLATED) |
| + for source_dest in FILE_LIST: |
| + out_file.write(source_dest[0], source_dest[1], zipfile.ZIP_DEFLATED) |
| + AddFolderToZip(RESOURCE_DIRECTORY, out_file) |
| out_file.close() |
| + |
| if __name__ == '__main__': |
| main() |