import distutils.command.install_lib
+import distutils.command.install_data
import distutils.command.install
-import os
+import os, string
from distutils.core import setup
+from user import home # this gives us the user's home dir on all platforms
class wxaddon_install_lib(distutils.command.install_lib.install_lib):
"""need to change self.install_dir to the actual library dir"""
self.install_dir = os.path.join(getattr(install_cmd, 'install_purelib'), "wxaddons")
return distutils.command.install_lib.install_lib.run(self)
+class wxaddon_install_data(distutils.command.install_data.install_data):
+ def run(self):
+ self.install_dir = os.path.join(home, ".wxaddons_data", self.distribution.get_name())
+ if not os.path.exists(self.install_dir):
+ os.makedirs(self.install_dir)
+ return distutils.command.install_data.install_data.run(self)
+
class wxaddon_install(distutils.command.install.install):
def run(self):
result = distutils.command.install.install.run(self)
- metadata_file = 'addon.info'
- if os.path.exists(metadata_file):
- import wx
- import email
- fields = email.message_from_string(open(metadata_file).read())
- config = wx.Config("wxaddons-receipts")
- config.SetPath(fields['name'])
- for field in fields._headers:
- config.Write(field[0], field[1])
+ import wx
+ config = wx.Config("wxaddons-receipts")
+ config.SetPath(self.distribution.get_name())
+ config.Write("Version", str(self.distribution.get_version()))
+ config.Write("Summary", self.distribution.get_description())
+ config.Write("Home-page", self.distribution.get_url())
+
+ # NB: Although self.distribution has get_author() and get_author_email()
+ # methods, get_contact* returns either author or maintainer, and I think
+ # either is suitable for our purposes.
+ config.Write("Author", self.distribution.get_contact())
+ config.Write("Author-email", self.distribution.get_contact_email())
+ config.Write("License", self.distribution.get_license())
+
+ keywords = string.join( self.distribution.get_keywords(), ';')
+ if keywords:
+ config.Write('Keywords', keywords)
+
+ platforms = string.join( self.distribution.get_platforms(), ';')
+ if platforms:
+ config.Write('Platforms', platforms )
+
+ classifiers = string.join( self.distribution.get_classifiers(), ';')
+ if classifiers:
+ config.Write('Classifiers', classifiers )
+
return result
def wxaddon(**kwargs):
kwargs['cmdclass'] = {'install_lib' : wxaddon_install_lib,
- 'install' : wxaddon_install }
+ 'install' : wxaddon_install,
+ 'install_data' : wxaddon_install_data }
setup(**kwargs)
\ No newline at end of file