| 1 | #!/usr/bin/env bash
 | 
| 2 | #
 | 
| 3 | # Usage:
 | 
| 4 | #   soil/sourcehut.sh <function name>
 | 
| 5 | 
 | 
| 6 | set -o nounset
 | 
| 7 | set -o pipefail
 | 
| 8 | set -o errexit
 | 
| 9 | 
 | 
| 10 | # Relevant docs:
 | 
| 11 | #
 | 
| 12 | # https://man.sr.ht/tutorials/getting-started-with-builds.md
 | 
| 13 | # https://man.sr.ht/builds.sr.ht/#secrets
 | 
| 14 | # https://man.sr.ht/builds.sr.ht/compatibility.md
 | 
| 15 | #
 | 
| 16 | # Basically, it supports up to 4 files called .builds/*.yml.
 | 
| 17 | # And we need to upload an SSH key as secret via the web UI.
 | 
| 18 | 
 | 
| 19 | keygen() {
 | 
| 20 |   ssh-keygen -t rsa -b 4096 -C "andyc sr.ht" -f rsa_srht
 | 
| 21 | }
 | 
| 22 | 
 | 
| 23 | #
 | 
| 24 | # Run remotely
 | 
| 25 | #
 | 
| 26 | 
 | 
| 27 | publish-html-assuming-ssh-key() {
 | 
| 28 |   local job_name=$1
 | 
| 29 | 
 | 
| 30 |   if true; then
 | 
| 31 |     soil/web-worker.sh deploy-job-results 'srht-' $JOB_ID $job_name JOB_ID JOB_URL
 | 
| 32 |   else
 | 
| 33 |     soil/web-worker.sh deploy-test-wwz  # dummy data that doesn't depend on the build
 | 
| 34 |   fi
 | 
| 35 | 
 | 
| 36 |   local commit_hash
 | 
| 37 |   # written by save-metadata in soil/worker.sh
 | 
| 38 |   commit_hash=$(cat _tmp/soil/commit-hash.txt)
 | 
| 39 | 
 | 
| 40 |   # Note: the directory structure will be overlapping, unlike Github which has
 | 
| 41 |   # GITHUB_RUN_NUMBER
 | 
| 42 |   #
 | 
| 43 |   # srht-jobs/
 | 
| 44 |   #   1234/foo.wwz  # individual jobs
 | 
| 45 |   #   1235/bar.wwz
 | 
| 46 |   #   git-0101abab/index.html  # commit hash
 | 
| 47 | 
 | 
| 48 |   time soil/web-worker.sh remote-event-job-done 'srht-' "git-$commit_hash"
 | 
| 49 | }
 | 
| 50 | 
 | 
| 51 | #
 | 
| 52 | # For create-cache.yml
 | 
| 53 | #
 | 
| 54 | 
 | 
| 55 | compress-dir() {
 | 
| 56 |   local dir=$1
 | 
| 57 | 
 | 
| 58 |   local out_dir=_tmp/deps-cache
 | 
| 59 |   mkdir -p $out_dir
 | 
| 60 | 
 | 
| 61 |   local name=$(basename $dir)
 | 
| 62 | 
 | 
| 63 |   local out=$out_dir/$name.tar.xz 
 | 
| 64 | 
 | 
| 65 |   log "Compressing $dir -> $out"
 | 
| 66 | 
 | 
| 67 |   tar --create --xz --file $out $dir
 | 
| 68 |   ls -l $out
 | 
| 69 | }
 | 
| 70 | 
 | 
| 71 | compress-deps() {
 | 
| 72 |   ### Compress output of tarball-deps and spec-deps
 | 
| 73 | 
 | 
| 74 |   compress-dir _deps/cpython-full
 | 
| 75 |   compress-dir _deps/re2c-1.0.3
 | 
| 76 |   compress-dir _deps/cmark-0.29.0
 | 
| 77 | 
 | 
| 78 |   compress-dir _deps/spec-bin
 | 
| 79 | }
 | 
| 80 | 
 | 
| 81 | "$@"
 |