#!/usr/bin/python3 # coding=utf-8 #noNiCL1g3r bootstrap plus generator # The person who associated a work with this deed has dedicated # the work to the public domain by waiving all of his or her rights # to the work worldwide under copyright law, including all related # and neighboring rights, to the extent allowed by law. # You can copy, modify, distribute and perform the work, even for # commercial purposes, all without asking permission. # In no way are the patent or trademark rights of any person affected by # CC0, nor are the rights that other persons may have in the work or in # how the work is used, such as publicity or privacy rights. # Unless expressly stated otherwise, the person who associated a work with # this deed makes no warranties about the work, and disclaims liability # for all uses of the work, to the fullest extent permitted by applicable law. # When using or citing the work, you should not imply endorsement by the # author or the affirmer. # https://creativecommons.org/publicdomain/zero/1.0/ # # Weirdness: no ~ or whitespace in name of component title for build. no : in source filename for build # # Technical debt: using os.system is nasty, particularly with spaces in the path. I should # re-write using python tools. This is getting way too specific. I originally went this route # because cat was such an easy way to add to the bottom of the file. Bad design decision. # Just consider this a hacked up structure to support the water dispenser at base camp, and consider # tomorrow's ascent, ignoring just how very ugly the water dispenser support is. import os import sys import re from scandir import scandir, walk from os.path import expanduser try: sitename=sys.argv[1].rstrip() except: print('Provide "l1g" or "nic" as sitename.') sys.exit(1) home = expanduser("~")+'/sync' rootdoc=home+'/websites/source/'+sitename+'/0/' sitehome=home+'/websites/site/'+sitename+'/' #os.system("rm -rf '"+rootdoc+"1'") steps=home+'/websites/'+sitename+'steps/' bits=re.compile('^(\d+)$') scans=scandir(steps) buildonly='457' #buildone=True trbld=False buildone=False if buildone: print('Only number: '+buildonly) #^ this can be used to view individual pages immediately; however, the nav will break. The entire site really # needs to be regenerated for nav (last page is always changing, as is next page on the second to the last page). # The tags are auto-generated from the title, so as long as the journal and other sites have the corresponding tag, # there will be cross-referencing. for s in scans: try: m = bits.match(s.name) label=m.group(1) tranny=False if (s.name==buildonly or not buildone): if int(s.name) < 73 and sitename=='l1g': tranny=True elif int(s.name) < 32 and sitename=='nic': tranny=True drt=rootdoc+'1/'+s.name+'/' sdrt=sitehome+'1/'+s.name+'/' os.system("mkdir -p '"+drt+"'") srt=steps+s.name+'/' if os.path.isfile(srt+'outputfull.txt'): os.system("cat '"+srt+"outputfull.txt' > '"+sdrt+"outputfull.txt'") if os.path.isfile(srt+'date.txt'): with open(srt+'/date.txt','r') as fd: dtt=fd.read() dt=dtt[:4]+'-'+dtt[4:6]+'-'+dtt[6:8] with open(srt+'notes.md','r') as fn: fullnote=fn.read() srccount=fullnote.count('') with open(drt+'/narrative.md','w+') as fn: fn.write(fullnote) if os.path.isfile(srt+'files.txt'): with open(srt+'files.txt','r') as fl: os.system("echo '\n\n' >> '"+drt+"narrative.md'") for line in fl.readlines(): parts=line.split(' : ') if trbld and tranny: trnfile=parts[1].rstrip() trnmd5=parts[0].rstrip() os.system("mkdir -p '"+sitehome+"/source/"+trnmd5+"/'") os.system("cp -f '"+home+"/websites/l1g3rsources/"+trnfile+"' '"+sitehome+"source/"+trnmd5+"/'") os.system("echo '' >> '"+drt+"narrative.md'") os.system("echo '\n' >> '"+drt+"narrative.md'") os.system("echo '
SourceMD5
"+parts[1].rstrip()+""+parts[0]+"
\n' >> '"+drt+"narrative.md'") os.system("mkdir -p '"+drt+"has_source';cat '"+srt+"command.txt' > '"+drt+"has_source/"+str(1+srccount)+".txt';cat '"+srt+"output.txt' > '"+drt+"has_source/"+str(2+srccount)+".txt'") os.system("echo 'sh' > '"+drt+"has_source/"+str(1+srccount)+".type.txt'") os.system("echo 'txt' > '"+drt+"has_source/"+str(2+srccount)+".type.txt'") os.system("echo 'Run these commands to compile and install: \n\n
\n\nYou should see something like this as output:\n\n
\n\n[full raw output](outputfull.txt)\n\n' >> '"+drt+"narrative.md'") with open(srt+'/title.txt','r') as ft: nn=ft.read().rstrip().replace('-','_')+'.md' with open(drt[:-1]+'.title.txt','w+') as f: f.write(nn[:-3]) os.system("touch '"+rootdoc+"tags/"+nn+"'") os.system("mkdir -p '"+drt+"has_tag';cd '"+drt+"has_tag/';ln -s ../../../tags/"+nn+" ./"+nn) except: six=9