Skip to content
Snippets Groups Projects
build_documentation 3.37 KiB
Newer Older
#!/bin/bash

#included files
detector_file="./athena.xml"

#filelist=$(xmllint --format --xpath '//include/@ref' ${detector_file}   | sed 's/ref=\"//g' | sed 's/\"/\n/g' )
#echo $filelist

# Searches for included files two levels down
get_includes() {
  local input_file="${1}"
  #echo ${1}
  local filelist=$(xmllint --format --xpath '//include/@ref' ${input_file}   | sed 's/ref=\"//g' | sed 's/\"//g' )
  for afile in $filelist ; do
    xmllint --format --xpath '//include/@ref' ${input_file}  &> /dev/null
    local res="$?"
    if [ "${res}" == "0" ]  ; then
      local subincluded=$(xmllint --format --xpath '//include/@ref' ${input_file}  2> /dev/null | sed 's/ref=\"//g' | sed 's/\"//g' )
      filelist="${filelist} ${subincluded}"
      #echo "sub include $afile"
    fi
  done
  # <includes > <gdmlFile > <file>
  local otherfiles=$(xmllint --format --xpath '//includes/file/@ref | //includes/gdmlFile/@ref' ${input_file}   | sed 's/ref=\"//g' | sed 's/\"/\n/g' )
  #echo $otherfiles
  filelist=$(echo "${filelist} ${otherfiles}" | sed 's/ /\n/g' | sort | uniq )
  echo "$input_file $filelist"
}


xml_files=$(get_includes ${detector_file})
#echo $xml_files

get_doc_levels() {
  # levels
  local levels=0
  for afile in $xml_files ; do
    xmllint --format --xpath '//documentation/@level' $afile  &> /dev/null
    local res="$?"
    if [ "${res}" == "0" ]  ; then
      local new_levels=$(xmllint --format --xpath '//documentation/@level' $afile  2> /dev/null  | sed 's/level=\"/ /g' | sed 's/\"//g' )
      levels="${levels} ${new_levels}"
    fi
    # see if there are tags without level attribute
    xmllint --format --xpath '//documentation[not(@level)]' $afile  &> /dev/null 
    if [ "${?}" == "0" ] ; then 
      #echo "DERP"
      levels="${levels} 100"
    fi
  done
  echo "$levels" | sed 's/ /\n/g' | sort  | uniq
}

all_levels=$(get_doc_levels ${xml_file_array})
#echo " levels: "
#echo $all_levels

for alevel in $(echo ${all_levels} | sed 's/ /\n/g' | sort -n  | uniq ) ; do
  #echo " doing level $alevel ..."
  for afile in $(echo $xml_files | sed 's/ / \n/g') ; do
    #echo $afile
    #xmllint --format --xpath '//documentation[@level="'"$alevel"'"]/text()' $afile
    level_doc=$(xmllint --format --xpath '//documentation[@level="'$alevel'"]' ${afile} 2> /dev/null )
    if [ "$?" -eq "0" ] ;  then
      xmllint --format --xpath '//documentation[@level="'$alevel'"]/text()' ${afile} | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/g' 
    fi
    # sets the tags without attribute level to 100
    xmllint --format --xpath '//documentation[not(@level)]/text()' ${afile} &> /dev/null 
    if [ "$?" -eq "0" ] ;  then
      if [ "$alevel" -eq "100" ] ; then
        xmllint --format --xpath '//documentation[not(@level)]/text()' ${afile} | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/g' 
      fi
    fi
  done
done



#${DETECTOR_PATH}=.
#
#
#xmllint --format --xpath '//
#
#xmllint --format --xpath '//documentation/text()' ${DETECTOR_PATH}/athena.xml | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/' | tee  doc/detector.md
#xmllint --format --xpath '//documentation/text()' ${DETECTOR_PATH}/ip6/ip6_defs.xml | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/' | tee -a doc/detector.md || true
#for afile in ${DETECTOR_PATH}/compact/*.xml ; do
#  xmllint --format --xpath '//documentation/text()' ${afile} | sed -re 's/<\/?\w+>//g' | sed 's/^[[:space:]]*#/#/' | tee -a doc/detector.md || true
#done
#