forked from ibex-team/ibex-lib
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ibexutils.py
53 lines (36 loc) · 1.47 KB
/
ibexutils.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import os, tarfile
from waflib import Logs
# Parameters:
# - src_dir_node : source directory: where the archive is located
# - name : name of the directory where the file will be extracted
# - filename : filename of the archive (in src_dir)
# - dest_dir_node : destination directory. If None, the file is extracted in src_dir
#
# Return : the node of the directory where the file has been extracted
#
def unpack_archive (src_dir_node, name, filename = None, dest_dir_node = None):
if not dest_dir_node:
dest_dir_node = src_dir_node
src_dir = src_dir_node.abspath()
dest_dir = dest_dir_node.abspath()
# path is the destination folder where the file is extracted
path = os.path.join (dest_dir, name)
if not os.path.isdir (path): # if not already extracted
# extract the sources
os.makedirs (path)
if not filename:
filename = "%s.tar.gz" % name
Logs.pprint ("NORMAL", "Unpacking %s" % filename)
t = tarfile.open (os.path.join (src_dir, filename))
t.extractall (dest_dir)
node = dest_dir_node.find_dir (name)
assert node
return node
######################################################################################################
class subdir:
def __init__ (self, name_or_node):
self.name = name_or_node.abspath() if hasattr (name_or_node, "abspath") else str (name_or_node)
def __enter__ (self):
Logs.pprint ("BLUE", "Entering %r" % self.name)
def __exit__ (self, a, b, c):
Logs.pprint ("BLUE", "Leaving %r" % self.name)