mirror of
https://gitlab.com/octtspacc/staticoso
synced 2025-06-05 22:09:23 +02:00
Update WIP
This commit is contained in:
@ -11,6 +11,7 @@
|
|||||||
import argparse
|
import argparse
|
||||||
import os
|
import os
|
||||||
import shutil
|
import shutil
|
||||||
|
import time
|
||||||
from ast import literal_eval
|
from ast import literal_eval
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
@ -19,7 +20,7 @@ try:
|
|||||||
from Modules.ActivityPub import *
|
from Modules.ActivityPub import *
|
||||||
ActivityPub = True
|
ActivityPub = True
|
||||||
except:
|
except:
|
||||||
print("[W] ⚠️ Can't load the ActivityPub module. Its use is disabled. Make sure the 'requests' library is installed.")
|
print("[W] ⚠ Can't load the ActivityPub module. Its use is disabled. Make sure the 'requests' library is installed.")
|
||||||
ActivityPub = False
|
ActivityPub = False
|
||||||
|
|
||||||
from Modules.Config import *
|
from Modules.Config import *
|
||||||
@ -99,11 +100,6 @@ def GetModifiedFiles(OutDir):
|
|||||||
for File in All:
|
for File in All:
|
||||||
if File['SrcTime'] > File['ObjTime']:
|
if File['SrcTime'] > File['ObjTime']:
|
||||||
Mod += [File['Tmp']]
|
Mod += [File['Tmp']]
|
||||||
#Latest = 0
|
|
||||||
#for File in Sources:
|
|
||||||
# if File['t'] > Latest:
|
|
||||||
# Latest = File['t']
|
|
||||||
#Meta = ReadFile('staticoso.meta')
|
|
||||||
return Mod
|
return Mod
|
||||||
|
|
||||||
def Main(Args, FeedEntries):
|
def Main(Args, FeedEntries):
|
||||||
@ -155,6 +151,7 @@ def Main(Args, FeedEntries):
|
|||||||
if CleanBuild:
|
if CleanBuild:
|
||||||
print("[I] Building Clean")
|
print("[I] Building Clean")
|
||||||
ResetOutputDir(OutputDir)
|
ResetOutputDir(OutputDir)
|
||||||
|
LimitFiles = False
|
||||||
else:
|
else:
|
||||||
print("[I] Building Differentially")
|
print("[I] Building Differentially")
|
||||||
LimitFiles = GetModifiedFiles(OutputDir)
|
LimitFiles = GetModifiedFiles(OutputDir)
|
||||||
@ -258,14 +255,11 @@ def Main(Args, FeedEntries):
|
|||||||
print("[I] Copying Assets")
|
print("[I] Copying Assets")
|
||||||
os.system(f"cp -R Assets/* {OutputDir}/")
|
os.system(f"cp -R Assets/* {OutputDir}/")
|
||||||
|
|
||||||
print("[I] ✅ Done!")
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
Parser = argparse.ArgumentParser()
|
Parser = argparse.ArgumentParser()
|
||||||
Parser.add_argument('--CleanBuild', action='store_true')
|
Parser.add_argument('--CleanBuild', action='store_true')
|
||||||
Parser.add_argument('--OutputDir', type=str)
|
Parser.add_argument('--OutputDir', type=str)
|
||||||
#Parser.add_argument('--InputDir', type=str)
|
#Parser.add_argument('--InputDir', type=str)
|
||||||
#Parser.add_argument('--InputFiles', type=str, nargs='+')
|
|
||||||
Parser.add_argument('--Sorting', type=str)
|
Parser.add_argument('--Sorting', type=str)
|
||||||
Parser.add_argument('--SiteLang', type=str)
|
Parser.add_argument('--SiteLang', type=str)
|
||||||
Parser.add_argument('--SiteRoot', type=str)
|
Parser.add_argument('--SiteRoot', type=str)
|
||||||
@ -298,9 +292,10 @@ if __name__ == '__main__':
|
|||||||
from Modules.Feed import *
|
from Modules.Feed import *
|
||||||
FeedEntries = Args.FeedEntries if Args.FeedEntries else 'Default'
|
FeedEntries = Args.FeedEntries if Args.FeedEntries else 'Default'
|
||||||
except:
|
except:
|
||||||
print("[W] ⚠️ Can't load the XML libraries. XML Feeds Generation is Disabled. Make sure the 'lxml' library is installed.")
|
print("[W] ⚠ Can't load the XML libraries. XML Feeds Generation is Disabled. Make sure the 'lxml' library is installed.")
|
||||||
FeedEntries = 0
|
FeedEntries = 0
|
||||||
|
|
||||||
Main(
|
Main(
|
||||||
Args=Args,
|
Args=Args,
|
||||||
FeedEntries=FeedEntries)
|
FeedEntries=FeedEntries)
|
||||||
|
print(f"[I] ✅ Done! ({round(time.process_time(),3)}s)")
|
||||||
|
@ -16,7 +16,7 @@ def PugCompileList(OutputDir, Pages, LimitFiles):
|
|||||||
# 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
|
||||||
Paths = ''
|
Paths = ''
|
||||||
for File, Content, Titles, Meta in Pages:
|
for File, Content, Titles, Meta in Pages:
|
||||||
if File.lower().endswith('.pug') and File in LimitFiles:
|
if File.lower().endswith('.pug') and (LimitFiles == False or File in LimitFiles):
|
||||||
Path = f'{OutputDir}/{File}'
|
Path = f'{OutputDir}/{File}'
|
||||||
WriteFile(Path, Content)
|
WriteFile(Path, Content)
|
||||||
Paths += f'"{Path}" '
|
Paths += f'"{Path}" '
|
||||||
|
@ -135,7 +135,7 @@ def TemplatePreprocessor(Text):
|
|||||||
Meta.update({i:MetaDefault[i]})
|
Meta.update({i:MetaDefault[i]})
|
||||||
return Meta
|
return Meta
|
||||||
|
|
||||||
def PagePreprocessor(Path, Type, SiteTemplate, SiteRoot, GlobalMacros):
|
def PagePreprocessor(Path, Type, SiteTemplate, SiteRoot, GlobalMacros, LightRun=False):
|
||||||
File = ReadFile(Path)
|
File = ReadFile(Path)
|
||||||
Path = Path.lower()
|
Path = Path.lower()
|
||||||
Content, Titles, DashyTitles, HTMLTitlesFound, Macros, Meta, MetaDefault = '', [], [], False, '', '', {
|
Content, Titles, DashyTitles, HTMLTitlesFound, Macros, Meta, MetaDefault = '', [], [], False, '', '', {
|
||||||
@ -187,7 +187,6 @@ def PagePreprocessor(Path, Type, SiteTemplate, SiteRoot, GlobalMacros):
|
|||||||
DashyTitles += [DashTitle]
|
DashyTitles += [DashTitle]
|
||||||
Titles += [Title]
|
Titles += [Title]
|
||||||
Title = MakeLinkableTitle(None, Title, DashTitle, 'md')
|
Title = MakeLinkableTitle(None, Title, DashTitle, 'md')
|
||||||
#Title = Title.replace(' </h{Index}>', '</h{Index}>')
|
|
||||||
Title = Title.replace('> </', '> </')
|
Title = Title.replace('> </', '> </')
|
||||||
Title = Title.replace(' </', '</')
|
Title = Title.replace(' </', '</')
|
||||||
Content += Title + '\n'
|
Content += Title + '\n'
|
||||||
@ -392,13 +391,15 @@ def MakeSite(OutputDir, LimitFiles, TemplatesText, StaticPartsText, DynamicParts
|
|||||||
for Type in ['Page', 'Post']:
|
for Type in ['Page', 'Post']:
|
||||||
if Type == 'Page':
|
if Type == 'Page':
|
||||||
Files = PagesPaths
|
Files = PagesPaths
|
||||||
|
PathPrefix = ''
|
||||||
elif Type == 'Post':
|
elif Type == 'Post':
|
||||||
Files = PostsPaths
|
Files = PostsPaths
|
||||||
|
PathPrefix = 'Posts/'
|
||||||
for File in Files:
|
for File in Files:
|
||||||
Content, Titles, Meta = PagePreprocessor(f"{Type}s/{File}", Type, SiteTemplate, SiteRoot, GlobalMacros)
|
TempPath = f"{PathPrefix}{File}"
|
||||||
if Type != 'Page':
|
LightRun = False if LimitFiles == False or TempPath in LimitFiles else True
|
||||||
File = f"{Type}s/{File}"
|
Content, Titles, Meta = PagePreprocessor(f"{Type}s/{File}", Type, SiteTemplate, SiteRoot, GlobalMacros, LightRun=LightRun)
|
||||||
Pages += [[File, Content, Titles, Meta]]
|
Pages += [[TempPath, Content, Titles, Meta]]
|
||||||
for Cat in Meta['Categories']:
|
for Cat in Meta['Categories']:
|
||||||
Categories.update({Cat:''})
|
Categories.update({Cat:''})
|
||||||
PugCompileList(OutputDir, Pages, LimitFiles)
|
PugCompileList(OutputDir, Pages, LimitFiles)
|
||||||
|
1
TODO
1
TODO
@ -1,5 +1,6 @@
|
|||||||
- Check if external tools are installed
|
- Check if external tools are installed
|
||||||
- Specify input folder(s) and files (idea is Makefile compatibility too)
|
- Specify input folder(s) and files (idea is Makefile compatibility too)
|
||||||
|
- Customize meta line source
|
||||||
- Show page size/words/time in meta line
|
- Show page size/words/time in meta line
|
||||||
- Add feed support for diary-like pages
|
- Add feed support for diary-like pages
|
||||||
- Fix excess whitespace in some section/menu titles
|
- Fix excess whitespace in some section/menu titles
|
||||||
|
Reference in New Issue
Block a user