Example #1
0
def ls(args):
    " Show list of installed sites. "

    print_header("Installed sites:")
    for site in gen_sites(args.path):
        print site.get_info()
    return True
Example #2
0
def autocomplete(force=False):
    " Shell autocompletion support. "

    if 'MAKESITE_AUTO_COMPLETE' not in environ and not force:
        return

    commands = filter(lambda cmd: cmd != 'main', ACTIONS.keys())

    cwords = environ['COMP_WORDS'].split()[1:]
    cword = int(environ['COMP_CWORD'])

    try:
        current = cwords[cword - 1]
    except IndexError:
        current = ''

    try:
        sub_action = [cmd for cmd in commands if cmd in cwords][0]
        if sub_action in ['info', 'uninstall', 'update', 'template']:
            if settings.MAKESITE_HOME:
                if not current or current.startswith('/'):
                    sites = list(gen_sites(settings.MAKESITE_HOME))
                    print ' '.join(site.deploy_dir for site in sites if site.
                                   deploy_dir.startswith(current))
                else:
                    names = map(lambda s: s.get_name(
                    ), gen_sites(settings.MAKESITE_HOME))
                    print ' '.join(
                        name for name in names if name.startswith(current))
        elif sub_action == 'install' and (cwords[-1] == '-m' or (current and cwords[-2] == '-m')):
            print ' '.join(
                mod for mod in get_base_modules() if mod.startswith(current))
        elif sub_action == 'install' and (cwords[-1] == '-t' or (current and cwords[-2] == '-t')):
            print ' '.join(tpl for tpl in get_base_templates(
            ) if tpl.startswith(current))
        elif sub_action == 'module':
            print ' '.join(
                tpl for tpl in get_base_modules() if tpl.startswith(current))
    except IndexError:
        print (' '.join(a for a in commands if a.startswith(current)))
    sys.exit(1)
Example #3
0
    def test_site(self):
        args = FakeArgs(
            template='django',
            branch='feature/red-alert',
            src=op.join(settings.MOD_DIR, 'django'),
        )

        # Init engine
        engine = Installer(args)
        self.assertTrue(op.isdir(engine.deploy_dir))
        self.assertEqual(engine.templates, ['base'])

        # Clone source
        engine.clone_source()
        self.assertTrue(op.isdir(op.join(engine.deploy_dir, 'source')))
        self.assertTrue(op.isfile(op.join(engine.deploy_dir, 'source', 'Makefile')))
        self.assertEqual(engine.template, 'base,src-dir,virtualenv,django')
        self.assertEqual(engine.target_dir, op.join(args.home, args.PROJECT, args.branch.replace('/', '-')))
        self.assertEqual(engine.django_settings, 'settings.dev')
        self.assertEqual(engine.templates, [
            ('base', op.join(settings.TPL_DIR, 'base')),
            ('src-dir', op.join(settings.TPL_DIR, 'src-dir')),
            ('virtualenv', op.join(settings.TPL_DIR, 'virtualenv')),
            ('django', op.join(settings.TPL_DIR, 'django')),
        ])
        self.assertTrue(op.isfile(op.join(engine.deploy_dir, settings.TPLNAME)))
        self.assertTrue(op.isfile(op.join(engine.deploy_dir, 'service', 'django_install.sh')))
        self.assertTrue(op.isfile(op.join(engine.deploy_dir, settings.CFGNAME)))

        # Build site
        engine.build()

        # Init site
        site = Site(engine.target_dir)
        self.assertEqual(site.get_name(), u'main.feature-red-alert')
        self.assertEqual(site.get_info(), u'main.feature-red-alert [base,src-dir,virtualenv,django]')
        self.assertTrue('www-data' in site.get_info(full=True))

        with self.assertRaises(AssertionError):
            site.add_template('django')
        self.assertEqual(site._get_template_path('zeta'), op.join(settings.TPL_DIR, 'zeta'))
        site.add_template('zeta')
        site.run_install('zeta')
        zeta_scripts = list(site._gen_scripts('install', template_name='zeta'))
        self.assertEqual(zeta_scripts, [u'/tmp/main/feature-red-alert/service/zeta_install_update.sh'])
        self.assertEqual(site.get_info(), u'main.feature-red-alert [base,src-dir,virtualenv,django,zeta]')

        self.assertEqual(site['safe_branch'], 'feature-red-alert')

        site.remove_template('zeta')
        site.run_remove('zeta')
        self.assertEqual(site.get_info(), u'main.feature-red-alert [base,src-dir,virtualenv,django]')

        # Find site
        self.assertTrue(find_site(site.deploy_dir))
        self.assertTrue(find_site(site.get_name()))

        # Gen scripts
        self.assertTrue(op.join(site.service_dir, 'django_install.sh') in site._gen_scripts('install'))

        sites = list(gen_sites(op.dirname(engine.deploy_dir)))
        self.assertTrue(sites)
        for s in sites:
            s.clean()
Example #4
0
    def test_site(self):
        from makesite import settings

        args = FakeArgs(
            template='django',
            branch='feature/red-alert',
            home=settings.MAKESITE_HOME,
            src=op.join(settings.MOD_DIR, 'django'),
        )

        # Init engine
        engine = Installer(args)
        self.assertTrue(op.isdir(engine.deploy_dir))
        self.assertEqual(engine.templates, ['base'])

        # Clone source
        engine.clone_source()
        self.assertTrue(op.isdir(op.join(engine.deploy_dir, 'source')))
        self.assertTrue(
            op.isfile(op.join(engine.deploy_dir, 'source', 'Makefile')))
        self.assertEqual(engine.template, 'base,src-dir,virtualenv,django')
        self.assertEqual(
            engine.target_dir,
            op.join(args.home, args.PROJECT, args.branch.replace('/', '-')))
        self.assertEqual(engine.django_settings, 'settings.dev')
        self.assertEqual(engine.templates, [
            ('base', op.join(settings.TPL_DIR, 'base')),
            ('src-dir', op.join(settings.TPL_DIR, 'src-dir')),
            ('virtualenv', op.join(settings.TPL_DIR, 'virtualenv')),
            ('django', op.join(settings.TPL_DIR, 'django')),
        ])
        self.assertTrue(op.isfile(op.join(engine.deploy_dir,
                                          settings.TPLNAME)))
        self.assertTrue(
            op.isfile(
                op.join(engine.deploy_dir, 'service', 'django_install.sh')))
        self.assertTrue(op.isfile(op.join(engine.deploy_dir,
                                          settings.CFGNAME)))

        # Build site
        engine.build()

        # Init site
        site = Site(engine.target_dir)
        self.assertEqual(site.get_name(), u'main.feature-red-alert')
        self.assertEqual(
            site.get_info(),
            u'main.feature-red-alert [base,src-dir,virtualenv,django]')
        self.assertTrue('www-data' in site.get_info(full=True))

        if version_info >= (2, 7):
            with self.assertRaises(AssertionError):
                site.add_template('django')

        self.assertEqual(site._get_template_path('zeta'),
                         op.join(settings.TPL_DIR, 'zeta'))
        site.add_template('zeta')
        site.run_install('zeta')
        zeta_scripts = list(site._gen_scripts('install', template_name='zeta'))
        self.assertEqual(
            zeta_scripts,
            [u'/tmp/main/feature-red-alert/service/zeta_install_update.sh'])
        self.assertEqual(
            site.get_info(),
            u'main.feature-red-alert [base,src-dir,virtualenv,django,zeta]')

        self.assertEqual(site['safe_branch'], 'feature-red-alert')

        site.remove_template('zeta')
        site.run_remove('zeta')
        self.assertEqual(
            site.get_info(),
            u'main.feature-red-alert [base,src-dir,virtualenv,django]')

        # Find site
        self.assertTrue(find_site(site.deploy_dir))
        self.assertTrue(find_site(site.get_name()))

        # Gen scripts
        self.assertTrue(
            op.join(site.service_dir, 'django_install.sh') in
            site._gen_scripts('install'))

        sites = list(gen_sites(op.dirname(engine.deploy_dir)))
        self.assertTrue(sites)
        for s in sites:
            s.clean()