Example #1
0
    def xmlize(self):
        '''
        @rtype: XMLNode
        @return: xml document
        '''
        package = XMLNode('package')
        package.attrs = {'title': self.title,
                         'version': self.version}
        package.description = self.description

        gens = package.generators
        for generator in self.generators:
            generator.xmlize(gens, self.id_map)

        return package
def main(options):

    repo_xml = os.path.join(options.repo_dir, 'repository.xml')

    if os.path.exists(repo_xml):
        print 'repository already exists at "%s"' % options.repo_dir
        sys.exit(1)

    # create repo dir
    if not os.path.exists(options.repo_dir):
        os.makedirs(options.repo_dir)

    # create repo data dir
    repo_data_dir = os.path.join(options.repo_dir, 'data')
    if not os.path.exists(repo_data_dir):
        os.makedirs(repo_data_dir)

    # create symlink to cgi scripts
    actions_dir = os.path.join(options.repo_dir, 'actions')
    cgi_scripts_dir = os.path.join(options.installation_dir, \
                            'repository/server/cgi/')
    os.symlink(cgi_scripts_dir, actions_dir)

    # create 'repository.xml'
    ostream = open(repo_xml, 'w')

    repo = XMLNode('repository')
    repo.attrs = {'title': options.title}

    if options.description:
        repo.description = options.description

    ostream.write('<?xml version="1.0" encoding="UTF-8"?>\n')
    repo.serialize(ostream)

    ostream.close()

    # inform user of installation dir being used
    print 'using: installation_dir = "%s"' % (options.installation_dir)

    # write .htaccess for apache config
    htaccess_fpath = os.path.join(options.repo_dir, '.htaccess')
    f = open(htaccess_fpath, 'w')
    conf = APACHE_CONFIG % {'pythonpath': options.installation_dir}
    f.write(conf)
    f.close()