def handle(self, **options):
        self.verbosity = options['verbosity']
        self.dry_run = options['dry_run']
        self.wrap_fragments = options['wrap_fragments']
        self.output_dir = options['output_dir']

        templates = get_pattern_templates()

        factory = RequestFactory()
        request = factory.get('/')

        if self.verbosity >= 2:
            if self.dry_run:
                self.stderr.write(
                    f'Target directory: {self.output_dir}. Dry run, not writing files to disk'
                )
            else:
                self.stderr.write(f'Target directory: {self.output_dir}')

            if self.wrap_fragments:
                self.stderr.write(
                    'Writing fragment patterns wrapped in base template')

        # Resolve the output dir according to the directory the command is run from.
        parent_dir = Path.cwd().joinpath(self.output_dir)

        if not self.dry_run:
            parent_dir.mkdir(exist_ok=True)

        self.render_group(request, parent_dir, templates)
Esempio n. 2
0
    def get(self, request, pattern_template_name=None):
        # Get all pattern templates
        templates = get_pattern_templates()

        if pattern_template_name is None:
            # Just display the first pattern if a specific one isn't requested
            pattern_template_name = self.get_first_template(templates)

        if not is_pattern(pattern_template_name):
            raise Http404

        template = get_template(pattern_template_name)
        pattern_config = get_pattern_config(pattern_template_name)

        context = self.get_context_data()
        context['pattern_templates'] = templates
        context['pattern_template_name'] = pattern_template_name
        context['pattern_source'] = escape(template.template.source)
        context['pattern_config'] = escape(
            get_pattern_config_str(pattern_template_name))
        context['pattern_name'] = pattern_config.get('name',
                                                     pattern_template_name)
        context['pattern_markdown'] = get_pattern_markdown(
            pattern_template_name)

        return self.render_to_response(context)