Пример #1
0
def init(name, runtime):
    """Create a new Django app."""
    runtime = click.unstyle(runtime)

    stdout.write(
        style.format_command(
            'Initializing',
            '%s %s %s' % (name, style.gray('@'), style.green(runtime))
        )
    )

    config = Config(os.getcwd())
    config.set('runtime', runtime)
    config.save()

    generate.main(['init', name], standalone_mode=False)
    run.main(['python', 'manage.py', 'migrate'])
Пример #2
0
    def add(self, value, warn=True):
        new = Dependency(value)
        new_label = new.to_stdout()
        old = self.dependencies.get(new.name)
        self.dependencies[new.name] = new
        if old is None or str(old) != str(new):
            old_label = old.to_stdout() if old else ''

            self._save()
            if old_label:
                stdout.write(red('- ') + old_label)
            stdout.write(green('+ ') + new_label)
            return True
        else:
            if warn:
                stdout.write('%s %s' %
                             (new_label, yellow('already installed.')))
            return False
Пример #3
0
    def merge(self):
        """Merges the rendered blueprint into the application."""
        temp_dir = self.temp_dir
        app_dir = self.application.directory
        for root, dirs, files in os.walk(temp_dir):
            for directory in dirs:
                directory = os.path.join(root, directory)
                directory = directory.replace(temp_dir, app_dir, 1)
                try:
                    os.mkdir(directory)
                except OSError:
                    pass
            for file in files:
                source = os.path.join(root, file)
                target = source.replace(temp_dir, app_dir, 1)
                relative_target = target.replace(app_dir, '.')
                action = 'r'
                if (os.path.exists(target)
                        and not filecmp.cmp(source, target, shallow=False)
                        and os.stat(target).st_size > 0):
                    # target exists, is not empty, and does not
                    # match source
                    if target.endswith('__init__.py'):
                        # default merge __init__.py files
                        # if non-empty, these should only
                        # contain imports from submoduiles
                        action = 'm'
                    elif target.endswith('base.py'):
                        # default skip base.py files
                        # these should be extended by the developer
                        action = 's'
                    else:
                        default = 'm'
                        action = click.prompt(
                            style.prompt(
                                '%s already exists, '
                                '[r]eplace, [s]kip, or [m]erge?' %
                                (relative_target), ),
                            default=style.default(
                                default)) if self.interactive else default
                        action = click.unstyle(action).lower()
                        if action not in {'r', 'm', 's'}:
                            action = default

                if action == 's':
                    self.stdout.write('? %s' % style.white(relative_target),
                                      fg='yellow')
                    continue
                if action == 'r':
                    with open(source, 'r') as source_file:
                        with open(target, 'w') as target_file:
                            target_file.write(source_file.read())
                    self.stdout.write(
                        style.green('+ %s' % style.white(relative_target)))
                if action == 'm':
                    with open(target, 'r') as target_file:
                        with open(source, 'r') as source_file:
                            merged = merge(target_file.read(),
                                           source_file.read())
                    with open(target, 'w') as target_file:
                        target_file.write(merged)

                    self.stdout.write(
                        style.yellow('> %s' % style.white(relative_target)))
Пример #4
0
Файл: patch.py Проект: zerkz/dj
def _write_dl(self, rows, **kwargs):
    return self._write_dl([(style.green(r[0]), r[1]) for r in rows], **kwargs)
Пример #5
0
Файл: patch.py Проект: zerkz/dj
def _write_usage(self, prog, args, prefix='Usage: '):
    prog = style.white(prog)
    args = style.green(args)
    prefix = style.blue(prefix)
    return self._write_usage(prog, args, prefix=prefix)
Пример #6
0
 def to_stdout(self):
     return '%s %s %s' % (white(self.name), gray(self.operator),
                          green(self.version)) if self.operator else white(
                              self.name)