annotate talosnames/require.py @ 43:4e8c839dcdec

filter by disabled
author Jeff Hammel <jhammel@mozilla.com>
date Sun, 12 Aug 2012 23:27:28 -0700
parents cc0edf61ab21
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14
1b18b2746e69 minor fixes
Jeff Hammel <jhammel@mozilla.com>
parents: 10
diff changeset
1 import imp
1b18b2746e69 minor fixes
Jeff Hammel <jhammel@mozilla.com>
parents: 10
diff changeset
2 import os
42
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
3 import sys
14
1b18b2746e69 minor fixes
Jeff Hammel <jhammel@mozilla.com>
parents: 10
diff changeset
4 import tempfile
1b18b2746e69 minor fixes
Jeff Hammel <jhammel@mozilla.com>
parents: 10
diff changeset
5 import urllib2
1b18b2746e69 minor fixes
Jeff Hammel <jhammel@mozilla.com>
parents: 10
diff changeset
6
42
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
7 def require(*urls, **filenames):
10
1029ddf7b806 get the buildbot config
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
8 """
1029ddf7b806 get the buildbot config
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
9 import a module from the web
1029ddf7b806 get the buildbot config
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
10 url should be like scheme://host.name/path/to/module.py
1029ddf7b806 get the buildbot config
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
11 """
42
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
12
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
13 tempdir = tempfile.mkdtemp()
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
14 sys.path.insert(0, tempdir)
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
15 retval = []
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
16
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
17 for url in urls:
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
18 contents = urllib2.urlopen(url).read()
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
19 filename = filenames.get(url, None)
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
20 if not filename:
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
21 filename = url.rsplit('/', 1)[-1]
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
22 module = filename.rsplit('.', 1)[0]
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
23 dest = os.path.join(tempdir, filename)
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
24 f = file(dest, 'w')
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
25 f.write(contents)
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
26 f.close()
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
27 try:
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
28 _module = imp.load_source(module, dest)
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
29 except Exception, e:
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
30 raise
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
31 # import pdb; pdb.set_trace()
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
32 retval.append(_module)
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
33
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
34 sys.path.pop(0)
cc0edf61ab21 require all the things!
Jeff Hammel <jhammel@mozilla.com>
parents: 14
diff changeset
35 return retval
10
1029ddf7b806 get the buildbot config
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
36
1029ddf7b806 get the buildbot config
Jeff Hammel <jhammel@mozilla.com>
parents:
diff changeset
37 # TODO: make an equivalent method for a tarball