diff options
-rw-r--r-- | __init__.py | 36 | ||||
-rw-r--r-- | git_describe.py | 22 |
2 files changed, 24 insertions, 34 deletions
diff --git a/__init__.py b/__init__.py index 80b09f4..8f28cef 100644 --- a/__init__.py +++ b/__init__.py @@ -1,35 +1,3 @@ -import subprocess +from .git_describe import register -from pelican import signals - - -class GitDescribe: - def __init__(self, gen): - self.settings = gen.settings - self.process() - - def process(self): - """Initialization process.""" - pass - - def defer_process(self): - """Check and return git describe value.""" - result = subprocess.run(["git", "describe", "--tags"], - stdout=subprocess.PIPE, check=True) - return result.stdout.decode('utf-8').strip() - - -def initialize(gen): - """Function called upon article generator initialization.""" - gen.plugin_instance = GitDescribe(gen) - - -def fetch(gen, metadata): - """Function called upon article generation context fetching.""" - gen.context['git_describe'] = gen.plugin_instance.defer_process() - - -def register(): - """Register Pelican signals to dedicated functions.""" - signals.article_generator_init.connect(initialize) - signals.article_generator_context.connect(fetch) +__all__ = ['register'] diff --git a/git_describe.py b/git_describe.py new file mode 100644 index 0000000..d33cc0b --- /dev/null +++ b/git_describe.py @@ -0,0 +1,22 @@ +import subprocess + +from pelican import signals + + +def git_describe(): + """Check and return git describe --tags value.""" + return subprocess \ + .run(["git", "describe", "--tags"], + stdout=subprocess.PIPE, check=True) \ + .stdout.decode('utf-8').strip() + + +def expand_context(generators): + desc = git_describe() + for gen in generators: + gen.context['git_describe'] = desc + + +def register(): + """Register Pelican signals to dedicated functions.""" + signals.all_generators_finalized.connect(expand_context) |