nx2site001
This commit is contained in:
100
home-modules/nx2site.nix
Normal file
100
home-modules/nx2site.nix
Normal file
@@ -0,0 +1,100 @@
|
||||
{ pkgs, lib, host, user, ... }:
|
||||
lib.mkIf (host == "NxACE" && user != "tv")
|
||||
{
|
||||
home.packages = with pkgs; [
|
||||
(writeShellApplication {
|
||||
name = "nxmd";
|
||||
text = let
|
||||
ascii_size = (pkgs.writers.writePython3Bin "ascii_size" {
|
||||
# libraries = with pkgs.python311Packages; [ ];
|
||||
flakeIgnore = [];
|
||||
} /* python */ ''
|
||||
from sys import argv
|
||||
|
||||
with open(argv[1], "r", encoding='utf-8') as f:
|
||||
raw = f.read()
|
||||
|
||||
sraw = raw.split("\n")
|
||||
|
||||
linestart = 0
|
||||
lineend = 0
|
||||
started = False
|
||||
for linenum in range(len(sraw)):
|
||||
if sraw[linenum].strip() == "```ascii":
|
||||
linestart = linenum
|
||||
started = True
|
||||
|
||||
if started and sraw[linenum].strip() == "```":
|
||||
lineend = linenum
|
||||
break
|
||||
|
||||
maxwidth = 0
|
||||
for linenum in range(linestart, lineend):
|
||||
linewidth = len(sraw[linenum])
|
||||
if linewidth > maxwidth:
|
||||
maxwidth = linewidth
|
||||
|
||||
print(f"Maximum length of the `ascii` code clock is {maxwidth} characters.")
|
||||
|
||||
px = (1 / maxwidth) * 1500
|
||||
vw = (1 / maxwidth) * 150
|
||||
|
||||
snew = sraw
|
||||
snew[3] = "aaw: " + str(round(vw, 2))
|
||||
snew[4] = "aawm: " + str(round(px, 2))
|
||||
|
||||
new = "\n".join(snew)
|
||||
|
||||
with open(argv[1], "w", encoding='utf-8') as f:
|
||||
f.write(new)
|
||||
print(f"The resulting font sizes are {px}px (aawm) and {vw}vw (aam).")
|
||||
print(f"You can now use the push operation on {argv[1]}.")
|
||||
''
|
||||
);
|
||||
in /* bash */ ''
|
||||
ord=$(date +"%e" | awk '{printf("%d%s\n", $1, ($1==11||$1==12||$1==13)?"th":((($1%10)==1)?"st":((($1%10)==2)?"nd":((($1%10)==3)?"rd":"th"))))}')
|
||||
nxdate="$(date +'%A the ')"
|
||||
nxdate="$nxdate""$ord"
|
||||
nxdate="$nxdate""$(date +' of %B %Y')"
|
||||
|
||||
if [[ $# -eq 0 ]]; then
|
||||
echo "Error: No arguments provided."
|
||||
echo "Usage: $0 push <markdown-file>"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [[ "$1" == "push" ]]; then
|
||||
if [[ ! "$2" =~ \.md$ ]]; then
|
||||
echo "Error: Second argument must be a markdown (.md) file"
|
||||
echo "Usage: $0 push <markdown-file>"
|
||||
exit 1
|
||||
fi
|
||||
pandoc \
|
||||
"$2" \
|
||||
--highlight-style=breezeDark \
|
||||
--standalone \
|
||||
--mathjax \
|
||||
--ascii \
|
||||
--template /var/nginx/assets/template.html \
|
||||
--metadata pdate="$nxdate" \
|
||||
--verbose --from markdown-markdown_in_html_blocks+raw_html \
|
||||
-o /var/nginx/webroot/"$(basename "$2" .md )".html
|
||||
|
||||
echo pushed "$2"
|
||||
elif [[ "$1" == "ascii-size" ]]; then
|
||||
if [[ ! "$2" =~ \.md$ ]]; then
|
||||
echo "Error: Second argument must be a markdown (.md) file"
|
||||
echo "Usage: $0 ascii-size <markdown-file>"
|
||||
exit 1
|
||||
fi
|
||||
${ascii_size}/bin/ascii_size "$2"
|
||||
|
||||
else
|
||||
echo "Error: First argument must be 'push'"
|
||||
echo "Usage: $0 push <markdown-file>"
|
||||
exit 1
|
||||
fi
|
||||
'';
|
||||
})
|
||||
];
|
||||
}
|
||||
Reference in New Issue
Block a user