summaryrefslogtreecommitdiff
path: root/src/hatch_django_collectstatic/plugin.py
blob: 5f3ba68675d9fb5b6133f855c3aaa7d3e687a686 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import importlib
import sys
from pathlib import Path

from django import setup
from django.contrib.staticfiles.management.commands.collectstatic import Command
from hatchling.builders.hooks.plugin.interface import BuildHookInterface


class DjangoCollectstaticBuildHook(BuildHookInterface):
    PLUGIN_NAME = "django-collectstatic"

    def initialize(self, version, build_data):
        from django.conf import settings

        sys.path.insert(0, str(Path(self.root) / "src"))
        project_settings = importlib.import_module(self.config["settings"])

        settings.configure(
            INSTALLED_APPS=project_settings.INSTALLED_APPS,
            STATIC_ROOT="static",
            STATIC_URL=project_settings.STATIC_URL,
        )
        setup()
        collectstatic_command = Command()
        collectstatic_command.handle(
            interactive=False,
            verbosity=1,
            link=False,
            clear=False,
            dry_run=False,
            ignore_patterns=[],
            use_default_ignore_patterns=True,
            post_process=True,
        )