From b4cc50ab352e391508a63f0779cbcc2e705fd5fb Mon Sep 17 00:00:00 2001
From: Houtan Bastani <houtan@dynare.org>
Date: Fri, 13 Sep 2019 11:11:29 +0200
Subject: [PATCH] rework download page

---
 .gitignore                       |  4 +--
 _includes/download-snapshot.html | 48 ++++++--------------------------
 _includes/download-stable.html   | 24 +++-------------
 setup-download-links.sh          | 47 ++++++++++++++++++++++++-------
 4 files changed, 51 insertions(+), 72 deletions(-)

diff --git a/.gitignore b/.gitignore
index 2674e7b..32ccbea 100644
--- a/.gitignore
+++ b/.gitignore
@@ -3,10 +3,10 @@ _site
 .jekyll-metadata
 
 # Snapshots
-assets/snapshot/*
+_includes/snapshot/*
 
 # Releases
-assets/release/*
+_includes/release/*
 
 # Logo
 assets/images/logo/*.aux
diff --git a/_includes/download-snapshot.html b/_includes/download-snapshot.html
index 32aadfd..20784ee 100644
--- a/_includes/download-snapshot.html
+++ b/_includes/download-snapshot.html
@@ -21,30 +21,14 @@
     </p>
 
     <p>Executable installer:</p>
-      <div class="download_table">
-        {% assign snapshot_files = (site.static_files | where: "snapshot", "windows-exe" | sort: 'modified_time') | reverse %}
-        {% for snapshot in snapshot_files %}
-        {% if snapshot.extname == ".exe" %}
-        <div class="download_row" onclick="document.location = 'https://www.dynare.org/snapshot/windows/{{ snapshot.name }}'" onkeypress="document.location = 'https://www.dynare.org/snapshot/windows/{{ snapshot.name }}'">
-          <div class="download_cell_left"><i class="fas fa-file-download"></i>&nbsp;{{ snapshot.modified_time  | date: "%Y %b %d %R" }}</div>
-          <div class="download_cell_right"><a href="#">{{ snapshot.name }}</a></div>
-        </div>
-        {% endif %}
-        {% endfor %}
-      </div>
+    <div class="download_table">
+      {% include snapshot/download-snapshot-windows.html %}
+    </div>
     <br />
     <p>Zip archive:</p>
-      <div class="download_table">
-        {% assign snapshot_files = (site.static_files | where: "snapshot", "windows-zip" | sort: 'modified_time') | reverse %}
-        {% for snapshot in snapshot_files %}
-        {% if snapshot.extname == ".zip" %}
-        <div class="download_row" onclick="document.location = 'https://www.dynare.org/snapshot/windows-zip/{{ snapshot.name }}'" onkeypress="document.location = 'https://www.dynare.org/snapshot-zip/windows/{{ snapshot.name }}'">
-          <div class="download_cell_left"><i class="fas fa-file-download"></i>&nbsp;{{ snapshot.modified_time  | date: "%Y %b %d %R" }}</div>
-          <div class="download_cell_right"><a href="#">{{ snapshot.name }}</a></div>
-        </div>
-        {% endif %}
-        {% endfor %}
-      </div>
+    <div class="download_table">
+      {% include snapshot/download-snapshot-windows-zip.html %}
+    </div>
   </section>
 
   <section class="dynare_section" id="snapshot_content2">
@@ -58,15 +42,7 @@
       "Open" from the menu that pops up.
     </p>
     <div class="download_table">
-      {% assign snapshot_files = (site.static_files | where: "snapshot", "macosx" | sort: 'modified_time') | reverse %}
-      {% for snapshot in snapshot_files %}
-      {% if snapshot.extname == ".zip" %}
-      <div class="download_row" onclick="document.location = 'https://www.dynare.org/snapshot/macosx/{{ snapshot.name }}'" onkeypress="document.location = 'https://www.dynare.org/snapshot/macosx/{{ snapshot.name }}'">
-        <div class="download_cell_left"><i class="fas fa-file-download"></i>&nbsp;{{ snapshot.modified_time  | date: "%Y %b %d %R" }}</div>
-        <div class="download_cell_right"><a href="#">{{ snapshot.name }}</a></div>
-      </div>
-      {% endif %}
-      {% endfor %}
+      {% include snapshot/download-snapshot-macosx.html %}
     </div>
   </section>
 
@@ -84,15 +60,7 @@
   <section class="dynare_section" id="snapshot_content4">
     <p>Source code, not needed by most users.</p>
     <div class="download_table">
-      {% assign snapshot_files = (site.static_files | where: "snapshot", "source" | sort: 'modified_time') | reverse %}
-      {% for snapshot in snapshot_files %}
-      {% if snapshot.extname == ".xz" %}
-      <div class="download_row" onclick="document.location = 'https://www.dynare.org/snapshot/source/{{ snapshot.name }}'" onkeypress="document.location = 'https://www.dynare.org/snapshot/source/{{ snapshot.name }}'">
-        <div class="download_cell_left"><i class="fas fa-file-download"></i>&nbsp;{{ snapshot.modified_time  | date: "%Y %b %d %R" }}</div>
-        <div class="download_cell_right"><a href="#">{{ snapshot.name }}</a></div>
-      </div>
-      {% endif %}
-      {% endfor %}
+      {% include snapshot/download-snapshot-source.html %}
     </div>
   </section>
 </div>
diff --git a/_includes/download-stable.html b/_includes/download-stable.html
index 22600c9..9151277 100644
--- a/_includes/download-stable.html
+++ b/_includes/download-stable.html
@@ -22,19 +22,11 @@
     <p>Both an executable installer and a zip archive are available.</p>
     <p class="stable">
       <i class="fas fa-file-download"></i>
-      {% assign release = site.static_files | where: "release", "windows-exe" | first %}
-      {% assign version = release.name | split: '-' %}
-      {% assign version = version[1] %}
-      <a href="https://www.dynare.org/release/windows/{{ release.name }}">Dynare {{ version }} ({{ release.extname }})</a>
-      <a href="https://www.dynare.org/release/windows/{{ release.name }}.sig">[signature]</a>
+      {% include release/download-release-windows.html %}
     </p>
     <p class="stable">
       <i class="fas fa-file-download"></i>
-      {% assign release = site.static_files | where: "release", "windows-zip" | first %}
-      {% assign version = release.name | split: '-' %}
-      {% assign version = version[1] %}
-      <a href="https://www.dynare.org/release/windows-zip/{{ release.name }}">Dynare {{ version }} ({{ release.extname }})</a>
-      <a href="https://www.dynare.org/release/windows-zip/{{ release.name }}.sig">[signature]</a>
+      {% include release/download-release-windows-zip.html %}
     </p>
   </section>
 
@@ -50,11 +42,7 @@
     </p>
     <p class="stable">
       <i class="fas fa-file-download"></i>
-      {% assign release = site.static_files | where: "release", "macosx" | first %}
-      {% assign version = release.name | split: '-' %}
-      {% assign version = version[1] | split: release.extname | first %}
-      <a href="https://www.dynare.org/release/macosx/{{ release.name }}">Dynare {{ version }} ({{ release.extname }})</a>
-      <a href="https://www.dynare.org/release/macosx/{{ release.name }}.sig">[signature]</a>
+      {% include release/download-release-macosx.html %}
     </p>
   </section>
 
@@ -86,11 +74,7 @@
     </p>
     <p class="stable">
       <i class="fas fa-file-download"></i>
-      {% assign release = site.static_files | where: "release", "source" | first %}
-      {% assign version = release.name | split: '-' %}
-      {% assign version = version[1] | split: '.tar.' | first %}
-      <a href="https://www.dynare.org/release/source/{{ release.name }}">Dynare {{ version }} (.tar{{ release.extname }})</a>
-      <a href="https://www.dynare.org/release/source/{{ release.name }}.sig">[signature]</a>
+      {% include release/download-release-source.html %}
     </p>
   </section>
 </div>
diff --git a/setup-download-links.sh b/setup-download-links.sh
index 0ae2128..f178bde 100755
--- a/setup-download-links.sh
+++ b/setup-download-links.sh
@@ -2,7 +2,7 @@
 
 set -e
 
-cd assets
+cd _includes
 
 for branch in release snapshot
 do
@@ -18,21 +18,48 @@ do
 
     for dir in "${arr[@]}"
     do
-        mkdir -p "$dir"
-        readarray -t filenames < <(jq .[].filename "$dir.json")
-        readarray -t timestamps < <(jq .[].date "$dir.json")
+        if [[ "$OSTYPE" == "darwin"* ]]; then
+            filenames=(`jq .[].filename $dir.json`)
+            timestamps=(`jq .[].date $dir.json`)
+        else
+            readarray -t filenames < <(jq .[].filename "$dir.json")
+            readarray -t timestamps < <(jq .[].date "$dir.json")
+        fi
         n=$(jq length "$dir.json")
-        cd "$dir"
+        includeFilename="download-$branch-$dir.html"
+        echo "" > $includeFilename
         for ((i = 0; i < n; i++))
         do
             filename="${filenames[i]%\"}"
             filename="${filename#\"}"
-            timestamp="${timestamps[i]%\"}"
-            timestamp="${timestamp#\"}"
-            echo "$filename $timestamp"
-            touch -amt "$timestamp" "$filename"
+            if [ "$branch" = "release" ]; then
+                IFS='-' read -ra split <<< "$filename"
+                if [ "$dir" = "windows" ] || [ "$dir" = "windows-zip" ]; then
+                    version="${split[1]}"
+                    ext=${filename##*.}
+                elif [ "$dir" = "macosx" ]; then
+                    version=${split[1]%.*}
+                    ext=${filename##*.}
+                else
+                    ext=`echo ${split[1]} | rev | cut -d. -f2 -f1 | rev`
+                    version=`echo ${split[1]} | cut -d. -f1 -f2 -f3`
+                fi
+                echo "<a href=\"https://www.dynare.org/$branch/$dir/$filename\">Dynare $version ($ext)</a>" >> $includeFilename
+                echo "<a href=\"https://www.dynare.org/$branch/$dir/$filename.sig\">[signature]</a>" >> $includeFilename
+            else
+                timestamp="${timestamps[i]%\"}"
+                timestamp="${timestamp#\"}"
+                if [[ "$OSTYPE" == "darwin"* ]]; then
+                    datestr=`date -r $timestamp`
+                else
+                    datestr=`date -d @$timestamp`
+                fi
+                echo "<div class=\"download_row\" onclick=\"document.location = 'https://www.dynare.org/$branch/$dir/$filename'\" onkeypress=\"document.location = 'https://www.dynare.org/$branch/$dir/$filename'\">" >> $includeFilename
+                echo "  <div class=\"download_cell_left\"><i class=\"fas fa-file-download\"></i>&nbsp;$datestr</div>" >> $includeFilename
+                echo "  <div class=\"download_cell_right\"><a href=\"#\">$filename</a></div>" >> $includeFilename
+                echo "</div>" >> $includeFilename
+            fi
         done
-        cd ..
     done
     rm -- *.json
     cd ..
-- 
GitLab