1
# -*- test-case-name: epsilon.test.test_setuphelper -*-
3
# For great justice, take off every zig.
4
import sys, os, pprint, traceback
6
from distutils.core import setup
8
def pluginModules(moduleNames):
9
from twisted.python.reflect import namedAny
10
for moduleName in moduleNames:
12
yield namedAny(moduleName)
15
except ValueError, ve:
16
if ve.args[0] != 'Empty module name':
21
def _regeneratePluginCache(pluginPackages):
22
print 'Regenerating cache with path: ',
23
pprint.pprint(sys.path)
24
from twisted import plugin
25
for pluginModule in pluginModules([
26
p + ".plugins" for p in pluginPackages]):
27
# Not just *some* zigs, mind you - *every* zig:
28
print 'Full plugin list for %r: ' % (pluginModule.__name__)
29
pprint.pprint(list(plugin.getPlugins(plugin.IPlugin, pluginModule)))
31
def regeneratePluginCache(dist, pluginPackages):
32
if 'install' in dist.commands:
33
sys.path.insert(0, os.path.abspath(dist.command_obj['install'].install_lib))
34
_regeneratePluginCache(pluginPackages)
41
for (dirpath, dirnames, filenames) in os.walk(os.curdir):
42
dirnames[:] = [p for p in dirnames if not p.startswith('.')]
43
pkgName = dirpath[2:].replace('/', '.')
44
if '__init__.py' in filenames:
45
# The current directory is a Python package
46
packages.append(pkgName)
47
elif 'plugins' in dirnames:
48
# The current directory is for the Twisted plugin system
49
pluginPackages.append(pkgName)
50
packages.append(pkgName)
52
for package in packages:
55
D = datafiles[package] = []
56
print 'Files in package %r:' % (package,)
57
pprint.pprint(os.listdir(package))
58
for (dirpath, dirnames, filenames) in os.walk(package):
59
dirnames[:] = [p for p in dirnames if not p.startswith('.')]
60
for filename in filenames:
61
if filename == 'dropin.cache':
63
if (os.path.splitext(filename)[1] not in ('.py', '.pyc', '.pyo')
64
or '__init__.py' not in filenames):
65
D.append(os.path.join(dirpath[len(package)+1:], filename))
68
'package_data': datafiles,
70
print 'Automatically determined setup() args:'
71
pprint.pprint(autoresult, indent=4)
72
assert 'packages' not in kw
73
assert 'package_data' not in kw
76
regeneratePluginCache(distobj, pluginPackages)