#!/bin/bash -e

. $(dirname $0)/mbd-common.sh
mbd_opt_init "Mini-buildd: Repository html update script."
mbd_opt_parse "$@"
mbdCheckUser mini-buildd

cd "${MBD_HOME}"
. "${MBD_REPCONFIGFILE}"

# Make some items accessible via http
${MBD_LOG} -s "I: $(ln -s -f -v ../.mini-buildd.conf public_html/config 2>&1)"
${MBD_LOG} -s "I: $(rm -f public_html/config-local && ln -s -f -v ../.mini-buildd public_html/config-local 2>&1)"
${MBD_LOG} -s "I: $(ln -s -f -v ../.dput.cf public_html/dput.cf 2>&1)"
${MBD_LOG} -s "I: $(ln -s -f -v ../rep public_html/ 2>&1)"
${MBD_LOG} -s "I: $(ln -s -f -v ../log public_html/ 2>&1)"

# Rudimentary HTML index
mbdBldHtml()
{
	mbdParseArch "${1}"

	local urlbase="http://${mbdParseArch_host}:${mbd_httpport}/~mini-buildd"
cat <<EOF
<a href="${urlbase}/bld">Buildhost ${mbdParseArch_host}</a>:
<a href="${urlbase}/pgp_key.asc">PGP Key</a>,
<a href="${urlbase}/ssh_key.asc">SSH Key</a>
EOF
}

MBD_TMP_DISTS=$(mbdD2SList "${mbd_dists}")
MBD_TMP_ARCHS=$(mbdD2SList "${mbd_archs}")
MBD_TMP_TITLE="Mini-Buildd network for \"${mbd_id}\""
cat <<EOF >"${MBD_HTML_INDEXFILE}"
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>
<head>
<meta http-equiv="Content-Style-Type" content="text/css">
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" >

<title>${MBD_TMP_TITLE}</title>

<style type="text/css">
  h1 {border-width: 1; border: solid; text-align: center}
  h2 {border-width: 1; text-align: center}
  h3 {border-width: 0; text-align: left}
  pre {background-color:lightgrey;}
</style>

<body>

<div>
<input type="checkbox" id="details" onclick="show_details()">
Show details
<small>(mini-buildd $(dpkg -s mini-buildd-rep | grep ^Version | cut -d: -f2-))
</small>
</div>

<script type="text/javascript">

<!--
function show_details()
{
  var details = (document.getElementById('details').checked == true);

  var divTags = document.getElementsByTagName('div');
  for (var i=0; i < divTags.length; i++)
  {
    if (divTags[i].getAttribute("class") == "details")
    {
      if (details)
      {
        divTags[i].style.display = '';
      }
      else
      {
        divTags[i].style.display = 'none';
      }
    }
  }
}
//-->
show_details();
</script>

<h1>${MBD_TMP_TITLE}</h1>

<div>

<h2>General information</h2>

<ul>
<li><a href="pgp_key.asc">PGP Signing Key</a>: Users of APT add this to their apt-secure keyring like so:
<pre style="display:inline;">
wget -O - http://${mbd_rephost}:${mbd_httpport}/~mini-buildd/pgp_key.asc | apt-key add -
</pre></li>

<li><a href="dput.cf">Configuration for dput</a>: Uploaders add this to their ~/.dput.cf.</li>

<li><a href="ssh_key.asc">SSH Key</a>.</li>

<li>Status:
    <a href="config">View raw config</a>,
    <a href="config-local/">Browse local config</a>,
    <a href="log/">Browse build logs</a>,
    <a href="rep/mini-dinstall/incoming/">Browse incoming</a>,
    <a href="rep/mini-dinstall/mini-dinstall.log">Mini-dinstall logs</a>.
</li>

<li>Documentation:
    <a href="http://${mbd_rephost}:${mbd_httpport}/cgi-bin/dwww/usr/share/doc/mini-buildd-common/">Mini-Buildd</a>
    $([ -z "${mbd_extdocurl}" ] || echo ", <a href=\"${mbd_extdocurl}\">External for \"${mbd_id}\"</a>").
</li>
</ul>

</div>

$(for d in ${MBD_TMP_DISTS}; do
   echo "<div style='background-color: lightblue; '>"

   echo "<h2>Base distribution ${d}</h2>"
   for e in "" "experimental"; do
     if [ -n "${e}" ]; then
       DIST="${DIST}-${e}"
       KIND="mbd_experimental"
     else
       DIST="${d}-${mbd_id}"
       KIND="mbd"
     fi
     echo "<h3><a href=\"rep/${DIST}\">${DIST}</a>: ${d} ${e} packages for ${mbd_id}</h3>"

     echo "<small><em>Mandatory version part: </em></small><pre style='display:inline'>"
     mbdGetMandatoryVersionPart "${DIST}"
     echo "</pre>"
     echo "<small><em>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Apt source line: </em></small><pre style='display:inline'>"
     AUTH_VERBOSITY='quiet' mbdGenSources ${d} "${KIND}" "" "noheader"
     echo "</pre>"
     echo "<div class='details' style='display:none;'>"
     for a in ${MBD_TMP_ARCHS}; do
       MBD_TMP_BO="mbd_deb_build_options_${a}"

       echo -n "<h4>${a} builder ("
       mbdBldHtml "${a}"
       echo ", BUILD_OPTIONS=\"${!MBD_TMP_BO}\"):</h4>"

       echo "Sources:<pre>"
       AUTH_VERBOSITY='quiet' mbdGenSources "${d}" "base extra" "${a}"
       echo "</pre>"
       echo "Preferences:<pre>"
       AUTH_VERBOSITY='quiet' mbdGenPreferences "${d}" "base extra" "${a}"
       echo "</pre>"
     done
     echo "<hr/>"
     echo "</div>"
   done
   echo "</div>"
 done)

<script  type="text/javascript">
show_details();
</script>

</html>
EOF
${MBD_LOG} -s "I: ${MBD_HTML_INDEXFILE} updated."

exit 0
