70 lines
2.0 KiB
Python
70 lines
2.0 KiB
Python
|
'''
|
||
|
Created on Oct 24, 2021
|
||
|
|
||
|
@author: terry
|
||
|
'''
|
||
|
|
||
|
import os
|
||
|
from distutils.dir_util import remove_tree, copy_tree
|
||
|
|
||
|
class LunaGenAddOn(object):
|
||
|
"""
|
||
|
Abstract base class for LunaGen Addons.
|
||
|
"""
|
||
|
|
||
|
name = 'my_addon' # Replace with string name of add-on (should match directory name).
|
||
|
desc = """\
|
||
|
An add-on to demonstrate add-on design.
|
||
|
Replace this text with a brief description of your add-on's purpose.
|
||
|
"""
|
||
|
|
||
|
@staticmethod
|
||
|
def load(site):
|
||
|
"""
|
||
|
Load the site data that the add-on needs to function.
|
||
|
|
||
|
Note that this is site data that the site designer has to provide,
|
||
|
which the addon will then interpret.
|
||
|
Client is the LunaGen instance, which subclasses jinja2.Environment.
|
||
|
Mandatory -- you must implement a loader.
|
||
|
"""
|
||
|
raise NotImplementedError
|
||
|
|
||
|
@classmethod
|
||
|
def copy_skeleton(cls, site):
|
||
|
skeleton = os.path.join(os.path.dirname(cls.file), 'skeleton')
|
||
|
#
|
||
|
print("Copying skeleton for %s from %s." % (cls.name, skeleton))
|
||
|
#
|
||
|
copy_tree(skeleton, site.tgtdir, verbose=site.verbose)
|
||
|
|
||
|
@staticmethod
|
||
|
def render(site):
|
||
|
"""
|
||
|
Render templates to images or do other tasks to prepare target site.
|
||
|
Optional.
|
||
|
|
||
|
- Focused on images or other binary data
|
||
|
- Should not be dependent on site data that might change
|
||
|
- may have additional dependencies (e.g. Inkscape or ImageMagick) on
|
||
|
software not installed on the server
|
||
|
- not run when RE-generating the site.
|
||
|
"""
|
||
|
pass
|
||
|
|
||
|
@staticmethod
|
||
|
def generate(site):
|
||
|
"""
|
||
|
Generate a page or pages in the target site.
|
||
|
Optional.
|
||
|
|
||
|
- Produces PAGES of HTML, SVG, etc.
|
||
|
- Uses templates provide by the chain of sources
|
||
|
- Should provide a default template, unless its using a standard site template
|
||
|
(i.e. don't leave it up to the theme)
|
||
|
- Dynamic. Regenerated in every site update.
|
||
|
"""
|
||
|
pass
|
||
|
|
||
|
|
||
|
|