Removed code to handle old versions of 0install
[0compile.git] / setup.py
blob866a7d2eb5e247b90e446c1737871fc9a6491860
1 # Copyright (C) 2006, Thomas Leonard
2 # See http://0install.net/0compile.html
4 import os, sys, __main__
6 from zeroinstall.injector import model, namespaces, qdom
7 from zeroinstall import SafeException
9 from support import BuildEnv
11 def do_setup(args, get_dir_callback = None):
12 "setup [ SOURCE-URI [ DIR ] ]"
13 if len(args) == 0:
14 assert get_dir_callback is None
15 buildenv = BuildEnv()
16 interface = buildenv.interface
17 assert interface
18 create_dir = None
19 buildenv.get_selections(prompt = True)
20 else:
21 buildenv = BuildEnv(need_config = False)
22 interface = args[0]
23 if get_dir_callback:
24 assert len(args) == 1
25 if len(args) == 1:
26 create_dir = os.path.basename(interface)
27 if create_dir.endswith('.xml'):
28 create_dir = create_dir[:-4]
29 if create_dir.startswith('alias:'):
30 create_dir = create_dir.split(':', 1)[1]
31 assert os.path.dirname(create_dir) == ''
32 assert create_dir != os.path.curdir
33 if get_dir_callback:
34 create_dir = get_dir_callback(create_dir)
35 elif len(args) == 2:
36 create_dir = args[1]
37 if create_dir == '.':
38 create_dir = None
39 else:
40 raise __main__.UsageError()
42 iface_uri = model.canonical_iface_uri(args[0])
43 if os.path.isabs(iface_uri):
44 root = qdom.parse(file(iface_uri))
45 if root.uri == namespaces.XMLNS_IFACE and root.name == 'selections':
46 # Looks like this is a selections file, not an interface.
47 buildenv.config.set('compile', 'selections', iface_uri)
48 iface_uri = root.getAttribute('interface')
49 buildenv.config.set('compile', 'interface', iface_uri)
51 if create_dir and os.path.exists(create_dir):
52 raise SafeException("Directory '%s' already exists." % create_dir)
53 buildenv.get_selections()
55 if create_dir:
56 try:
57 os.mkdir(create_dir)
58 except:
59 print >>sys.stderr, "Failed to create new directory '%s'" % os.path.abspath(create_dir)
60 raise
61 os.chdir(create_dir)
62 print "Created directory %s" % create_dir
64 buildenv.save()
66 __main__.commands.append(do_setup)