1 # Copyright (C) 2006, Thomas Leonard
2 # See http://0install.net/0compile.html
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 ] ]"
14 assert get_dir_callback
is None
16 interface
= buildenv
.interface
19 buildenv
.get_selections(prompt
= True)
21 buildenv
= BuildEnv(need_config
= False)
26 create_dir
= os
.path
.basename(interface
)
27 if create_dir
.endswith('.xml'):
28 create_dir
= create_dir
[:-4]
29 assert '/' not in create_dir
30 assert create_dir
is not '.'
32 create_dir
= get_dir_callback(create_dir
)
38 raise __main__
.UsageError()
40 iface_uri
= model
.canonical_iface_uri(args
[0])
41 if iface_uri
.startswith('/'):
42 root
= qdom
.parse(file(iface_uri
))
43 if root
.uri
== namespaces
.XMLNS_IFACE
and root
.name
== 'selections':
44 # Looks like this is a selections file, not an interface.
45 buildenv
.config
.set('compile', 'selections', iface_uri
)
46 iface_uri
= root
.getAttribute('interface')
47 buildenv
.config
.set('compile', 'interface', iface_uri
)
49 if create_dir
and os
.path
.exists(create_dir
):
50 raise SafeException("Directory '%s' already exists." % create_dir
)
51 buildenv
.get_selections()
56 print "Created directory %s" % create_dir
60 __main__
.commands
.append(do_setup
)