about summary refs log blame commit diff stats
path: root/tools/update_html
blob: 78a790aa939cc3ddf72f690b65ceeb50abb3959b (plain) (tree)
1
2
3
4
5
6
7
8
9
           
                        
                                                                                         
 

      
                                           

                                       
           
                             
                    
                 


                                 

 
                                                   
 
                
                                                   
 
                                                
                                             


                                                                    

                                                                   
 
                                                  

 

                                                     




                                                
                                

                                                
                                   
                                                         


            







                                                                   
          
                                                                    

                   
  
                                                


            




                                                                    
                                                


            















                                                              
                                          






                                                                   
                                                              
  

                                                                         
   
















                                                             









                                                                                                         
            
#!/bin/bash
# Regenerate html files.
# If given a single argument, try to regenerate just that file. Not supported everywhere.

set -e

( cd tools; c++ -g linkify.cc -o linkify; )

# generate html/$1.html using /tmp/tags
process() {
  mkdir -p html/$(dirname $1)
  rm -f html/$1.html
  convert_html $1
  tools/linkify /tmp/tags $1.html
  mv $1.html.out html/$1.html
  rm $1.html
}

URL_BASE='https://github.com/akkartik/mu/blob/main'

convert_html() {
  vim -c "set number" -c TOhtml -c write -c qall $1

  sed -i 's,<title>.*/mu/,<title>Mu - ,' $1.html
  sed -i 's,\.html</title>,</title>,' $1.html

  sed -i "/^<body/a <a href='$URL_BASE/$1'>$URL_BASE/$1</a>" $1.html

  sed -i 's/^\* { \(.*\) }/* { font-size:12pt; \1 }/g' $1.html
  sed -i 's/^body { \(.*\) }/body { font-size:12pt; \1 }/g' $1.html

  sed -i '/^body {/a a { color:inherit; }' $1.html
}

ctags -x boot.subx [0-9]*.subx [0-9]*.mu  > /tmp/tags
for f in boot.subx [0-9]*.subx [0-9]*.mu
do
  test $# -gt 0  &&  test $1 != $f  &&  continue
  process $f
done

for f in [^0-9]*.subx [^0-9]*.mu
do
  test $# -gt 0  &&  test $1 != $f  &&  continue
  test $f = "boot.subx" && continue
  ctags -x boot.subx [0-9]*.subx [0-9]*.mu $f > /tmp/tags
  process $f
done

for f in apps/*.mu
do
  ( cd $(dirname $f)
    ctags -x ../[0-9]*.subx ../[0-9]*.mu $(basename $f) > /tmp/tags
  )
  process $f
done

( cd shell
  ctags -x ../boot.subx ../[0-9]*.subx ../[0-9]*.mu *.mu > /tmp/tags
)
for f in shell/*.mu
do
  test $# -gt 0  &&  test $1 != $f  &&  continue
  process $f
done

( cd browse-slack
  ctags -x ../boot.subx ../[0-9]*.subx ../[0-9]*.mu *.mu > /tmp/tags
)
for f in browse-slack/*.mu
do
  test $# -gt 0  &&  test $1 != $f  &&  continue
  process $f
done

( cd linux
  ctags -x [0-9]*.subx [0-9]*.mu  > /tmp/tags
)
for f in linux/[0-9]*.subx linux/[0-9]*.mu
do
  process $f
done

for f in linux/[^0-9]*.subx linux/[^0-9]*.mu
do
  ( cd $(dirname $f)
    ctags -x [0-9]*.subx [0-9]*.mu $(basename $f)  > /tmp/tags
  )
  process $f
done

for f in linux/apps/*.subx linux/apps/*.mu
do
  ( cd $(dirname $f)
    ctags -x ../[0-9]*.subx ../[0-9]*.mu $(basename $f) > /tmp/tags
  )
  process $f
done

for f in linux/apps/advent2020/*.mu linux/apps/advent2017/*.mu
do
  ( cd $(dirname $f)
    ctags -x ../../[0-9]*.subx ../../[0-9]*.mu $(basename $f) > /tmp/tags
  )
  process $f
done

( cd linux/tile
  ctags -x ../[0-9]*.subx ../[0-9]*.mu *.mu > /tmp/tags
)
for f in linux/tile/*.mu
do
  process $f
done

( cd linux/apps/raytracing
  ctags -x ../../[0-9]*.subx ../../[0-9]*.mu *.mu > /tmp/tags
)
for f in linux/apps/raytracing/*.mu
do
  process $f
done

( cd linux/bootstrap
  ctags -x *.cc  |grep -v '^. '  > /tmp/tags  # don't hyperlink every 'i' to the integer register variant
)
for f in linux/bootstrap/*.cc
do
  process $f
done

rm /tmp/tags