mirror of
https://gitlab.com/octtspacc/staticoso
synced 2025-03-13 01:30:10 +01:00
Change cli argument, add more site root patching
This commit is contained in:
parent
afb1289e1e
commit
32e2d75a96
@ -15,7 +15,7 @@ Feel free to experiment with all of this stuff!
|
|||||||
- [pug-cli >= 1.0.0-alpha6](https://npmjs.com/package/pug-cli)
|
- [pug-cli >= 1.0.0-alpha6](https://npmjs.com/package/pug-cli)
|
||||||
|
|
||||||
## Features roadmap
|
## Features roadmap
|
||||||
- [ ] Custom page ordering
|
- [x] Custom page ordering
|
||||||
- [ ] SCSS compilation support for CSS templates
|
- [ ] SCSS compilation support for CSS templates
|
||||||
- [ ] Pug support for base templates and page side parts
|
- [ ] Pug support for base templates and page side parts
|
||||||
- [ ] Differential recompile (to optimize resource waste on non-ephemeral servers)
|
- [ ] Differential recompile (to optimize resource waste on non-ephemeral servers)
|
||||||
|
@ -69,7 +69,7 @@ def LoadFromDir(Dir, Rglob):
|
|||||||
Contents.update({File: ReadFile('{}/{}'.format(Dir, File))})
|
Contents.update({File: ReadFile('{}/{}'.format(Dir, File))})
|
||||||
return Contents
|
return Contents
|
||||||
|
|
||||||
def PreProcessor(p):
|
def PreProcessor(p, SiteRoot):
|
||||||
File = ReadFile(p)
|
File = ReadFile(p)
|
||||||
Content, Titles, Meta = '', [], {
|
Content, Titles, Meta = '', [], {
|
||||||
'Template': 'Standard.html',
|
'Template': 'Standard.html',
|
||||||
@ -116,7 +116,7 @@ def PugCompileList(Pages):
|
|||||||
# Pug-cli seems to shit itself with folder paths as input, so we pass ALL the files as arguments
|
# Pug-cli seems to shit itself with folder paths as input, so we pass ALL the files as arguments
|
||||||
os.system('pug {} > /dev/null'.format(Paths))
|
os.system('pug {} > /dev/null'.format(Paths))
|
||||||
|
|
||||||
def PatchHTML(Template, Parts, HTMLPagesList, Content, Titles, Meta):
|
def PatchHTML(Template, Parts, HTMLPagesList, Content, Titles, Meta, SiteRoot):
|
||||||
HTMLTitles = FormatTitles(Titles)
|
HTMLTitles = FormatTitles(Titles)
|
||||||
|
|
||||||
Template = Template.replace('[HTML:Page:Title]', 'Untitled' if not Titles else Titles[0].lstrip('#'))
|
Template = Template.replace('[HTML:Page:Title]', 'Untitled' if not Titles else Titles[0].lstrip('#'))
|
||||||
@ -126,6 +126,7 @@ def PatchHTML(Template, Parts, HTMLPagesList, Content, Titles, Meta):
|
|||||||
Template = Template.replace('[HTML:Page:MainBox]', Content)
|
Template = Template.replace('[HTML:Page:MainBox]', Content)
|
||||||
|
|
||||||
for p in Parts:
|
for p in Parts:
|
||||||
|
Template = Template.replace('[HTML:Site:AbsoluteRoot]', SiteRoot)
|
||||||
Template = Template.replace('[HTML:Part:{}]'.format(p), Parts[p])
|
Template = Template.replace('[HTML:Part:{}]'.format(p), Parts[p])
|
||||||
return Template
|
return Template
|
||||||
|
|
||||||
@ -147,7 +148,7 @@ def OrderPages(Old):
|
|||||||
New.remove([])
|
New.remove([])
|
||||||
return New
|
return New
|
||||||
|
|
||||||
def GetHTMLPagesList(Pages, Root):
|
def GetHTMLPagesList(Pages, SiteRoot):
|
||||||
List = ''
|
List = ''
|
||||||
LastParent = []
|
LastParent = []
|
||||||
Pages = OrderPages(Pages)
|
Pages = OrderPages(Pages)
|
||||||
@ -166,7 +167,7 @@ def GetHTMLPagesList(Pages, Root):
|
|||||||
Title = Meta['Title'] if Meta['Title'] else 'Untitled' if not Titles else Titles[0].lstrip('#')
|
Title = Meta['Title'] if Meta['Title'] else 'Untitled' if not Titles else Titles[0].lstrip('#')
|
||||||
Title = '[{}]({})'.format(
|
Title = '[{}]({})'.format(
|
||||||
Title,
|
Title,
|
||||||
'{}{}html'.format(Root, File[:-3]))
|
'{}{}html'.format(SiteRoot, File[:-3]))
|
||||||
List += Levels + Title + '\n'
|
List += Levels + Title + '\n'
|
||||||
return Markdown().convert(List)
|
return Markdown().convert(List)
|
||||||
|
|
||||||
@ -176,53 +177,59 @@ def DelTmp():
|
|||||||
for File in Path('public').rglob('*.md'):
|
for File in Path('public').rglob('*.md'):
|
||||||
os.remove(File)
|
os.remove(File)
|
||||||
|
|
||||||
def MakeSite(Templates, Parts, Root):
|
def MakeSite(Templates, Parts, SiteRoot):
|
||||||
Pages = []
|
Pages = []
|
||||||
for File in Path('Pages').rglob('*.pug'):
|
for File in Path('Pages').rglob('*.pug'):
|
||||||
File = FileToStr(File, 'Pages/')
|
File = FileToStr(File, 'Pages/')
|
||||||
Content, Titles, Meta = PreProcessor('Pages/{}'.format(File))
|
Content, Titles, Meta = PreProcessor('Pages/{}'.format(File), SiteRoot)
|
||||||
Pages += [[File, Content, Titles, Meta]]
|
Pages += [[File, Content, Titles, Meta]]
|
||||||
PugCompileList(Pages)
|
PugCompileList(Pages)
|
||||||
HTMLPagesList = GetHTMLPagesList(Pages, Root)
|
HTMLPagesList = GetHTMLPagesList(Pages, SiteRoot)
|
||||||
for File, Content, Titles, Meta in Pages:
|
for File, Content, Titles, Meta in Pages:
|
||||||
Template = Templates[Meta['Template']]
|
Template = Templates[Meta['Template']]
|
||||||
Template = Template.replace(
|
Template = Template.replace(
|
||||||
'[HTML:Page:CSS]',
|
'[HTML:Site:AbsoluteRoot]',
|
||||||
'{}{}.css'.format('../'*File.count('/'), Meta['Template'][:-5]))
|
SiteRoot)
|
||||||
|
Template = Template.replace(
|
||||||
|
'[HTML:Site:RelativeRoot]',
|
||||||
|
'../'*File.count('/'))
|
||||||
WriteFile(
|
WriteFile(
|
||||||
'public/{}html'.format(File[:-3]),
|
'public/{}html'.format(File[:-3]),
|
||||||
PatchHTML(
|
PatchHTML(
|
||||||
Template, Parts, HTMLPagesList,
|
Template, Parts, HTMLPagesList,
|
||||||
ReadFile('public/{}html'.format(File[:-3])),
|
ReadFile('public/{}html'.format(File[:-3])),
|
||||||
Titles, Meta))
|
Titles, Meta, SiteRoot))
|
||||||
for File in Path('Pages').rglob('*.md'):
|
for File in Path('Pages').rglob('*.md'):
|
||||||
File = FileToStr(File, 'Pages/')
|
File = FileToStr(File, 'Pages/')
|
||||||
Content, Titles, Meta = PreProcessor('Pages/{}'.format(File))
|
Content, Titles, Meta = PreProcessor('Pages/{}'.format(File), SiteRoot)
|
||||||
Template = Templates[Meta['Template']]
|
Template = Templates[Meta['Template']]
|
||||||
Template = Template.replace(
|
Template = Template.replace(
|
||||||
'[HTML:Page:CSS]',
|
'[HTML:Site:AbsoluteRoot]',
|
||||||
'{}{}.css'.format('../'*File.count('/'), Meta['Template'][:-5]))
|
SiteRoot)
|
||||||
|
Template = Template.replace(
|
||||||
|
'[HTML:Site:RelativeRoot]',
|
||||||
|
'../'*File.count('/'))
|
||||||
WriteFile(
|
WriteFile(
|
||||||
'public/{}html'.format(File[:-2]),
|
'public/{}html'.format(File[:-2]),
|
||||||
PatchHTML(
|
PatchHTML(
|
||||||
Template, Parts, HTMLPagesList,
|
Template, Parts, HTMLPagesList,
|
||||||
Markdown().convert(Content),
|
Markdown().convert(Content),
|
||||||
Titles, Meta))
|
Titles, Meta, SiteRoot))
|
||||||
DelTmp()
|
DelTmp()
|
||||||
|
|
||||||
def Main(Args):
|
def Main(Args):
|
||||||
ResetPublic()
|
ResetPublic()
|
||||||
Root = Args.Root if Args.Root else '/'
|
SiteRoot = Args.SiteRoot if Args.SiteRoot else '/'
|
||||||
|
|
||||||
Templates = LoadFromDir('Templates', '*.html')
|
Templates = LoadFromDir('Templates', '*.html')
|
||||||
Parts = LoadFromDir('Parts', '*.html')
|
Parts = LoadFromDir('Parts', '*.html')
|
||||||
shutil.copytree('Pages', 'public')
|
shutil.copytree('Pages', 'public')
|
||||||
MakeSite(Templates, Parts, Root)
|
MakeSite(Templates, Parts, SiteRoot)
|
||||||
os.system("cp -R Assets/* public/")
|
os.system("cp -R Assets/* public/")
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
Parser = argparse.ArgumentParser()
|
Parser = argparse.ArgumentParser()
|
||||||
Parser.add_argument('--Root', type=str)
|
Parser.add_argument('--SiteRoot', type=str)
|
||||||
Args = Parser.parse_args()
|
Args = Parser.parse_args()
|
||||||
|
|
||||||
Main(Args)
|
Main(Args)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user