#!/bin/bash
[% c("var/set_default_env") -%]
# reset HOME which was changed by var/set_default_env, for gpg
[% IF ENV.HOME %]export HOME="[% ENV.HOME %]"[% END %]
destdir="[% dest_dir _ '/' _ c("var/publish_dir") %]"
mkdir -p "$destdir"

function merge_directory {
  pushd $1
  find -type d -exec mkdir -p $destdir/{} \;
  # tor-browser-build#40338: Try to remove any existing destination, as it might
  # be the same inode when re-running this script, which makes mv fail.
  find -type f -exec rm -f $destdir/{} \;
  find -type f -exec mv {} $destdir/{} \;
  popd
}

[% IF c("var/browser_platforms/android-armv7") -%]
  merge_directory "[% c('input_files_by_name/android-armv7') %]"
[% END -%]
[% IF c("var/browser_platforms/android-x86_64") -%]
  merge_directory "[% c('input_files_by_name/android-x86_64') %]"
[% END -%]
[% IF c("var/browser_platforms/android-aarch64") -%]
  merge_directory "[% c('input_files_by_name/android-aarch64') %]"
[% END -%]
[% IF c("var/browser_platforms/windows-i686") -%]
  merge_directory "[% c('input_files_by_name/windows-i686') %]"
[% END -%]
[% IF c("var/browser_platforms/windows-x86_64") -%]
  merge_directory "[% c('input_files_by_name/windows-x86_64') %]"
[% END -%]
[% IF c("var/browser_platforms/macos") -%]
  merge_directory "[% c('input_files_by_name/macos') %]"
[% END -%]
[% IF c("var/browser_platforms/macos-x86_64") -%]
  merge_directory "[% c('input_files_by_name/macos-x86_64') %]"
[% END -%]
[% IF c("var/browser_platforms/macos-aarch64") -%]
  merge_directory "[% c('input_files_by_name/macos-aarch64') %]"
[% END -%]
[% IF c("var/browser_platforms/linux-x86_64") -%]
  merge_directory "[% c('input_files_by_name/linux-x86_64') %]"
[% END -%]
[% IF c("var/browser_platforms/linux-aarch64") -%]
  merge_directory "[% c('input_files_by_name/linux-aarch64') %]"
[% END -%]
[% IF c("var/linux-packages") || c("var/linux-packages-aarch64") -%]
  [% IF c("var/linux-packages") -%]
    merge_directory "[% c('input_files_by_name/deb-packages') %]"
  [% END -%]
  [% IF c("var/linux-packages-aarch64") -%]
    merge_directory "[% c('input_files_by_name/deb-packages-aarch64') %]"
  [% END -%]
  merge_directory "[% c('input_files_by_name/rpm-packages') %]"
[% END -%]
[% IF c("var/browser-src") -%]
  rm -f "$destdir/[% c('input_files_by_name/src-firefox') %]"
  mv [% c('input_files_by_name/src-firefox') %] "$destdir"/
[% END -%]
cd "$destdir"
cat > .htaccess <<'EOF'
RewriteEngine On
RewriteRule ^sha256sums.txt$ sha256sums-unsigned-build.txt
RewriteRule ^sha256sums.txt.asc$ sha256sums-unsigned-build.txt.asc
RewriteRule ^sha256sums.incrementals.txt$ sha256sums-unsigned-build.incrementals.txt
RewriteRule ^sha256sums.incrementals.txt.asc$ sha256sums-unsigned-build.incrementals.txt.asc
[% IF c("var/tor-browser") -%]
RewriteRule ^tor-browser-linux64-(.*)_ALL.tar.xz.asc$ tor-browser-linux-x86_64-$1.tar.xz.asc
RewriteRule ^tor-browser-linux64-(.*)_ALL.tar.xz$ tor-browser-linux-x86_64-$1.tar.xz
[% END -%]
EOF

for dir in . [% IF c("var/dev_artifacts") %]artifacts/*[% END %]
do
  [ -d "$dir" ] || continue
  pushd "$dir" > /dev/null
  # empty any existing sh256sums file
  echo -n > sha256sums-unsigned-build.txt
  # concat sha256sum entry for each file in set
  for i in $(ls -1 *.exe *.tar.xz *.tar.zst *.dmg *.mar *.zip *.tar.bz2 *.tar.gz *.apk *.bspatch *.json *.deb *.rpm *.xpi | grep -v '\.incremental\.mar$' | sort)
  do
    sha256sum $i >> sha256sums-unsigned-build.txt
  done

  [% IF c("var/sign_build") -%]
    gpg -abs [% c("var/sign_build_gpg_opts") %] sha256sums-unsigned-build.txt
  [% END -%]
  popd > /dev/null
done

cat sha256sums-unsigned-build.txt
