diff -r 000000000000 -r 2e8eeb919028 configurationengine/source/testautomation/testautomation/unzip_file.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/configurationengine/source/testautomation/testautomation/unzip_file.py Thu Mar 11 17:04:37 2010 +0200 @@ -0,0 +1,53 @@ +# +# Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). +# All rights reserved. +# This component and the accompanying materials are made available +# under the terms of "Eclipse Public License v1.0" +# which accompanies this distribution, and is available +# at the URL "http://www.eclipse.org/legal/epl-v10.html". +# +# Initial Contributors: +# Nokia Corporation - initial contribution. +# +# Contributors: +# +# Description: +# + +import os, zipfile, shutil + +def unzip_file(file, dir, delete_if_exists=False): + if os.path.exists(dir): + if delete_if_exists == True: + shutil.rmtree(dir) + else: + raise RuntimeError("Directory '%s' already exists" % dir) + if not os.path.exists(file): + raise RuntimeError("File '%s' does not exist" % file) + + os.makedirs(dir) + zf = zipfile.ZipFile(file) + + try: + for name in zf.namelist(): + if name.endswith('/'): + path = os.path.join(dir, name) + if not os.path.exists(path): + os.makedirs(path) + else: + path = os.path.join(dir, name) + dirname = os.path.dirname(path) + if dirname != '' and not os.path.exists(dirname): + os.makedirs(dirname) + f = open(path, 'wb') + try: f.write(zf.read(name)) + finally: f.close() + finally: + zf.close() + +def unzip_file_if_newer(file, dir): + if not os.path.exists(file): + raise RuntimeError("File '%s' does not exist" % file) + + if not os.path.exists(dir) or os.stat(file)[8] > os.stat(dir)[8]: + unzip_file(file, dir, True)