1+ #! /usr/bin/env bash
2+
3+ # -------------------------------------------------------#
4+ # # <DO NOT RUN STANDALONE, meant for CI Only>
5+ # # Meant to Build & Upload All our Packages
6+ # # Self: https://raw.githubusercontent.com/pkgforge/soarpkgs/refs/heads/main/scripts/runner/builder.sh
7+ # bash <(curl -qfsSL "https://raw.githubusercontent.com/pkgforge/soarpkgs/refs/heads/main/scripts/runner/builder.sh")
8+ # #Env vars
9+ # (Remote) FORCE_REBUILD_ALL=YES --> Rebuilds everything regardless if prebuilt already exists
10+ # (Local) SBUILD_REBUILD=true --> Rebuilds Local SBUILD regardless if remote prebuilt already exists
11+ # KEEP_LOGS="YES" --> Keep Dirs/Files
12+ # -------------------------------------------------------#
13+
14+ # -------------------------------------------------------#
15+ sbuild_builder ()
16+ {
17+ # #Version
18+ SBB_VERSION=" 0.0.1" && echo -e " [+] SBUILD Builder Version: ${SBB_VERSION} " ; unset SBB_VERSION
19+ # #Repo
20+ if [[ -z " ${GITHUB_REPOSITORY// [[:space:]]/ } " ]]; then
21+ echo -e " \n[✗] FATAL: Failed to Get \$ GITHUB_REPOSITORY\n"
22+ [[ " ${GHA_MODE} " == " MATRIX" ]] && echo " GHA_BUILD_FAILED=YES" >> " ${GITHUB_ENV} "
23+ return 1 || exit 1
24+ elif echo " ${GITHUB_REPOSITORY} " | grep -qiE ' github.com' ; then
25+ GITHUB_REPOSITORY=" $( echo " ${GITHUB_REPOSITORY} " | sed -E ' s|^(https://github.com/)?([^/]+/[^/]+).*|\2|' | tr -d ' [:space:]' ) "
26+ export GITHUB_REPOSITORY
27+ fi
28+ PKG_REPO=" $( echo " ${GITHUB_REPOSITORY} " | awk -F' /' ' {gsub(/^[ \t]+|[ \t]+$/, "", $0); sub(/\.git$/, "", $NF); print $NF}' | tr -d ' [:space:]' ) "
29+ [[ " ${GHA_MODE} " == " MATRIX" ]] && echo " PKG_REPO=${PKG_REPO} " >> " ${GITHUB_ENV} "
30+ PKG_REPO_OWNER=" $( echo " ${GITHUB_REPOSITORY} " | awk -F' /' ' {gsub(/^[ \t]+|[ \t]+$/, "", $0); print $1}' | tr -d ' [:space:]' ) "
31+ [[ " ${GHA_MODE} " == " MATRIX" ]] && echo " PKG_REPO_OWNER=${PKG_REPO_OWNER} " >> " ${GITHUB_ENV} "
32+ export PKG_REPO PKG_REPO_OWNER
33+ # #Enable Debug
34+ if [ " ${DEBUG} " = " 1" ] || [ " ${DEBUG} " = " ON" ]; then
35+ set -x
36+ fi
37+ # #Get/Set ENVS (from Host)
38+ # User
39+ if [ -z " ${USER+x} " ] || [ -z " ${USER##* [[:space:]]} " ]; then
40+ case " ${USER} " in
41+ " " )
42+ echo " WARNING: \$ USER is Unknown"
43+ USER=" $( whoami) "
44+ export USER
45+ if [ -z " ${USER} " ]; then
46+ echo -e " [-] INFO: Setting USER --> ${USER} "
47+ else
48+ echo -e " [-] WARNING: FAILED to find \$ USER"
49+ fi
50+ ;;
51+ esac
52+ fi
53+ # #ENV:$PATH
54+ HOME=" $( getent passwd ${USER} | cut -d: -f6) " && export HOME=" ${HOME} "
55+ export PATH=" ${HOME} /.local/share/soar/bin:${HOME} /bin:${HOME} /.cargo/bin:${HOME} /.cargo/env:${HOME} /.config/guix/current/bin/guix:${HOME} /.go/bin:${HOME} /go/bin:${HOME} /.local/bin:${HOME} /miniconda3/bin:${HOME} /miniconda3/condabin:/root/.config/guix/current/bin/guix:/usr/local/zig:/usr/local/zig/lib:/usr/local/zig/lib/include:/usr/local/musl/bin:/usr/local/musl/lib:/usr/local/musl/include:${PATH} "
56+ if command -v awk > /dev/null 2>&1 && command -v sed > /dev/null 2>&1 ; then
57+ PATH=" $( echo " ${PATH} " | awk ' BEGIN{RS=":";ORS=":"}{gsub(/\n/,"");if(!a[$0]++)print}' | sed ' s/:*$//' ) " ; export PATH
58+ fi
59+ HOST_TRIPLET=" $( uname -m) -$( uname -s) "
60+ if [ -z " ${SYSTMP+x} " ] || [ -z " ${SYSTMP##* [[:space:]]} " ]; then
61+ SYSTMP=" $( dirname $( realpath $( mktemp -u) ) ) " && export SYSTMP=" ${SYSTMP} "
62+ mkdir -p " ${SYSTMP} " 2> /dev/null
63+ fi
64+ OWD_TMPDIR=" $( realpath .) " ; export OWD_TMPDIR
65+ TMPDIRS=" mktemp -d --tmpdir=${SYSTMP} /pkgforge XXXXXXXXX_SBUILD"
66+ USER_AGENT=" $( curl -qfsSL ' https://pub.ajam.dev/repos/Azathothas/Wordlists/Misc/User-Agents/ua_chrome_macos_latest.txt' ) "
67+ export HOST_TRIPLET PKG_REPO SYSTMP TMPDIRS USER_AGENT
68+ if [[ " ${KEEP_PREVIOUS} " != " YES" ]]; then
69+ rm -rf " ${SYSTMP} /pkgforge"
70+ find " ${SYSTMP} " -mindepth 1 \( -type f -o -type d \) -empty -not -path " $( pwd) " -not -path " $( pwd) /*" -delete 2> /dev/null
71+ fi
72+ mkdir -p " ${SYSTMP} /pkgforge"
73+ # #Get Initial Inputs
74+ for attempt in {1..4}; do
75+ BUILDSCRIPT=" $( mktemp --tmpdir=" ${SYSTMP} /pkgforge" XXXXXXXXX_build.yaml) " && export BUILDSCRIPT=" ${BUILDSCRIPT} " && break
76+ echo -e " [-] TMPFILE Creation Failed ($attempt /4) Retrying..."
77+ sleep 1
78+ done
79+ if [[ ! -f " ${BUILDSCRIPT} " ]]; then
80+ echo -e " \n[✗] FATAL: Failed to create \$ BUILDSCRIPT after 4 Retries\n"
81+ [[ " ${GHA_MODE} " == " MATRIX" ]] && echo " GHA_BUILD_FAILED=YES" >> " ${GITHUB_ENV} "
82+ return 1 || exit 1
83+ fi
84+ INPUT_FILE=" ${1:- $(echo " $@ " | tr -d ' [:space:]' )} " ; unset INPUT_FILE_REMOTE
85+ if [ -n " ${INPUT_FILE+x} " ] && [ -n " ${INPUT_FILE##* [[:space:]]} " ]; then
86+ if echo " ${INPUT_FILE} " | grep -qE ' ^https?://' ; then
87+ touch " $( realpath .) /SBUILD_INPUT"
88+ curl -w " (SBUILD) <== %{url}\n" -fL " ${INPUT_FILE} " -o " $( realpath ' ./SBUILD_INPUT' | tr -d ' [:space:]' ) "
89+ if [[ ! -s " $( realpath ' ./SBUILD_INPUT' ) " || $( stat -c%s " $( realpath ' ./SBUILD_INPUT' ) " ) -le 10 ]]; then
90+ echo -e " \n[✗] FATAL: Failed to Fetch ${INPUT_FILE} \n"
91+ [[ " ${GHA_MODE} " == " MATRIX" ]] && echo " GHA_BUILD_FAILED=YES" >> " ${GITHUB_ENV} "
92+ ( rm " $( realpath ' ./SBUILD_INPUT' ) " ) 2> /dev/null
93+ export CONTINUE_SBUILD=" NO"
94+ return 1 || exit 1
95+ else
96+ INPUT_FILE_REMOTE=" $( echo " ${INPUT_FILE} " | tr -d ' [:space:]' ) " ; export INPUT_FILE_REMOTE
97+ INPUT_FILE=" $( realpath ' ./SBUILD_INPUT' | tr -d ' [:space:]' ) " ; export INPUT_FILE
98+ SELF_NAME=" ${ARGV0:- ${0##*/ } } " ; export SELF_NAME
99+ fi
100+ elif [ ! -f " $( realpath ${INPUT_FILE} ) " ] || [ ! -s " $( realpath ${INPUT_FILE} ) " ]; then
101+ echo -e " \n[✗] FATAL: ${INPUT_FILE} is NOT a Valid file\n"
102+ [[ " ${GHA_MODE} " == " MATRIX" ]] && echo " GHA_BUILD_FAILED=YES" >> " ${GITHUB_ENV} "
103+ export CONTINUE_SBUILD=" NO"
104+ return 1 || exit 1
105+ else
106+ INPUT_FILE=" $( realpath ${INPUT_FILE} ) " ; export INPUT_FILE
107+ SELF_NAME=" ${ARGV0:- ${0##*/ } } " ; export SELF_NAME
108+ fi
109+ else
110+ SELF_NAME=" sbuild-builder" ; export SELF_NAME
111+ fi
112+ if [[ -z " ${INPUT_FILE} " ]]; then
113+ echo -e " \n[+] Building Everything (Rerun: ${SELF_NAME} /path/to/SBUILD_FILE , if you are building a Single Prog)\n"
114+ else
115+ if [ -f " ${INPUT_FILE} " ] && [ -s " ${INPUT_FILE} " ]; then
116+ echo -e " \n[+] Building [${INPUT_FILE} ] Locally\n"
117+ cp -fv " ${INPUT_FILE} " " ${BUILDSCRIPT} "
118+ if [[ -s " ${BUILDSCRIPT} " && $( stat -c%s " ${BUILDSCRIPT} " ) -gt 10 ]]; then
119+ export LOCAL_SBUILD=" YES"
120+ else
121+ echo -e " \n[✗] FATAL: ${INPUT_FILE} is NOT a Valid file\n"
122+ [[ " ${GHA_MODE} " == " MATRIX" ]] && echo " GHA_BUILD_FAILED=YES" >> " ${GITHUB_ENV} "
123+ fi
124+ else
125+ echo -e " \n[✗] FATAL: ${INPUT_FILE} is NOT a file\n"
126+ [[ " ${GHA_MODE} " == " MATRIX" ]] && echo " GHA_BUILD_FAILED=YES" >> " ${GITHUB_ENV} "
127+ export CONTINUE_SBUILD=" NO"
128+ return 1 || exit 1
129+ fi
130+ fi
131+ # Clean
132+ unset INPUT_FILE SELF_NAME
133+ # -------------------------------------------------------#
134+
135+ # -------------------------------------------------------#
136+ # #Init
137+ INITSCRIPT=" $( mktemp --tmpdir=${SYSTMP} XXXXXXXXX_init.sh) " && export INITSCRIPT=" ${INITSCRIPT} "
138+ curl -qfsSL " https://raw.githubusercontent.com/pkgforge/soarpkgs/refs/heads/main/scripts/runner/setup_$( uname -m) .sh" -o " ${INITSCRIPT} "
139+ chmod +xwr " ${INITSCRIPT} " && source " ${INITSCRIPT} "
140+ # Check
141+ if [ " ${CONTINUE} " != " YES" ]; then
142+ echo -e " \n[✗] Failed To Initialize\n"
143+ exit 1
144+ fi
145+ # #Ulimits
146+ # (-n) Open File Descriptors
147+ echo -e " [+] ulimit -n (open file descriptors) :: [Soft --> $( ulimit -n -S) ] [Hard --> $( ulimit -n -H) ] [Total --> $( cat ' /proc/sys/fs/file-max' ) ]"
148+ ulimit -n " $( ulimit -n -H) "
149+ # Stack Size
150+ ulimit -s unlimited
151+ # -------------------------------------------------------#
152+
153+ # -------------------------------------------------------#
154+ # #Helpers
155+ source <( curl -qfsSL " https://raw.githubusercontent.com/pkgforge/soarpkgs/refs/heads/main/scripts/runner/helpers.sh" )
156+ sanitize_logs ()
157+ {
158+ if [[ -s " ${TEMP_LOG} " && $( stat -c%s " ${TEMP_LOG} " ) -gt 10 && -n " ${LOGPATH} " ]]; then
159+ echo -e " \n[+] Sanitizing $( realpath " ${TEMP_LOG} " ) ==> ${LOGPATH} "
160+ if command -v trufflehog & > /dev/null; then
161+ trufflehog filesystem " ${TEMP_LOG} " --no-fail --no-verification --no-update --json 2> /dev/null | jq -r ' .Raw' | sed ' /{/d' | xargs -I " {}" sh -c ' echo "{}" | tr -d " \t\r\f\v"' | xargs -I " {}" sed " s/{}/ /g" -i " ${TEMP_LOG} "
162+ fi
163+ sed -e ' /.*github_pat.*/Id' \
164+ -e ' /.*ghp_.*/Id' \
165+ -e ' /.*glpat.*/Id' \
166+ -e ' /.*hf_.*/Id' \
167+ -e ' /.*token.*/Id' \
168+ -e ' /.*AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.*/Id' \
169+ -e ' /.*access_key_id.*/Id' \
170+ -e ' /.*secret_access_key.*/Id' \
171+ -e ' /.*cloudflarestorage.*/Id' -i " ${TEMP_LOG} "
172+ # sed '/.*\[+\] Total Size.*/I,$ { /.*\[+\] Total Size.*/I p; d }' -i "${TEMP_LOG}"
173+ sed ' /\(LOGPATH\|ENVPATH\)=/d' -i " ${TEMP_LOG} "
174+ # grep -viE 'github_pat|ghp_|glpat|hf_|token|access_key_id|secret_access_key|cloudflarestorage' "${TEMP_LOG}" | tee "${LOGPATH}" && rm "${TEMP_LOG}" 2>/dev/null
175+ # mv -fv "${TEMP_LOG}" "${LOGPATH}" && rm "${TEMP_LOG}" 2>/dev/null
176+ echo ' \\\\====================== Package Forge ======================////' > " ${LOGPATH} "
177+ echo ' |--- Repository: https://github.com/pkgforge/soar ---|' >> " ${LOGPATH} "
178+ echo ' |--- Contact: https://docs.pkgforge.dev/contact/chat ---|' >> " ${LOGPATH} "
179+ echo ' |--- Discord: https://discord.gg/djJUs48Zbu ---|' >> " ${LOGPATH} "
180+ echo ' |--- Docs: https://docs.pkgforge.dev/sbuild/nests ---|' >> " ${LOGPATH} "
181+ echo ' |-----------------------------------------------------------------|' >> " ${LOGPATH} "
182+ grep -viE ' AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA|github_pat|ghp_|glpat|hf_|token|access_key_id|secret_access_key|cloudflarestorage' " ${TEMP_LOG} " >> " ${LOGPATH} " && rm " ${TEMP_LOG} " 2> /dev/null
183+ fi
184+ }
185+ export -f sanitize_logs
186+ # Check
187+ if ! (declare -F setup_env & > /dev/null && \
188+ declare -F check_sane_env & > /dev/null && \
189+ declare -F gen_json_from_sbuild & > /dev/null && \
190+ declare -F build_progs & > /dev/null && \
191+ declare -F generate_json & > /dev/null && \
192+ declare -F upload_to_ghcr & > /dev/null && \
193+ declare -F sanitize_logs & > /dev/null && \
194+ declare -F cleanup_env & > /dev/null); then
195+ echo -e " \n[✗] FATAL: Required Functions could NOT BE Found\n"
196+ [[ " ${GHA_MODE} " == " MATRIX" ]] && echo " GHA_BUILD_FAILED=YES" >> " ${GITHUB_ENV} "
197+ exit 1
198+ fi
199+ # -------------------------------------------------------#
200+
201+ # -------------------------------------------------------#
202+ # #Build
203+ rm -rvf " ${SYSTMP} /pkgforge/SBUILD_URLS" 2> /dev/null
204+ unset RECIPES
205+ # If local
206+ if [[ " ${LOCAL_SBUILD} " == " YES" ]]; then
207+ if echo " ${INPUT_FILE_REMOTE} " | grep -qE ' ^https?://' ; then
208+ echo " ${INPUT_FILE_REMOTE} " > " ${SYSTMP} /pkgforge/SBUILD_URLS"
209+ else
210+ echo " $( realpath ${BUILDSCRIPT} ) " > " ${SYSTMP} /pkgforge/SBUILD_URLS"
211+ fi
212+ fi
213+ # Build
214+ i=0; until pushd " $( ${TMPDIRS} ) " > /dev/null 2>&1 || [ $(( i+= 1 )) -gt 3 ]; do : ; done
215+ echo -e " \n==> [+] Started Building at :: $( TZ=' UTC' date +' %A, %Y-%m-%d (%I:%M:%S %p)' ) UTC\n"
216+ sort -u " ${SYSTMP} /pkgforge/SBUILD_URLS" -o" ${SYSTMP} /pkgforge/SBUILD_URLS"
217+ readarray -t RECIPES < " ${SYSTMP} /pkgforge/SBUILD_URLS"
218+ TOTAL_RECIPES=" ${# RECIPES[@]} " && export TOTAL_RECIPES=" ${TOTAL_RECIPES} "
219+ echo -e " \n[+] Total RECIPES :: ${TOTAL_RECIPES} \n"
220+ for (( i= 0 ; i< ${# RECIPES[@]} ; i++ )) ; do
221+ pushd " $( ${TMPDIRS} ) " > /dev/null 2>&1 || sleep 2 && pushd " $( ${TMPDIRS} ) " > /dev/null 2>&1
222+ OCWD=" $( realpath .) " ; export OCWD
223+ rm " ${OCWD} /ENVPATH" 2> /dev/null
224+ if [[ " ${LOCAL_SBUILD} " == " YES" ]] && [[ " ${SBUILD_REBUILD} " != " false" ]]; then
225+ export SBUILD_REBUILD=" true"
226+ elif [[ " ${LOCAL_SBUILD} " == " YES" ]] && [[ " ${SBUILD_REBUILD} " == " false" ]]; then
227+ export SBUILD_REBUILD=" false"
228+ else
229+ unset SBUILD_REBUILD
230+ fi
231+ unset CONTINUE_SBUILD GHCRPKG LOGPATH PKG_FAMILY PUSH_SUCCESSFUL RECIPE SBUILD_PKG SBUILD_SCRIPT SBUILD_SCRIPT_BLOB SBUILD_SKIPPED SBUILD_SUCCESSFUL
232+ if [[ " ${KEEP_LOGS} " != " YES" ]]; then
233+ unset KEEP_LOGS
234+ fi
235+ TEMP_LOG=" ./BUILD.log"
236+ # Init
237+ START_TIME=" $( date +%s) " && export START_TIME=" ${START_TIME} "
238+ RECIPE=" ${RECIPES[i]} " ; export RECIPE
239+ CURRENT_RECIPE=$(( i+ 1 ))
240+ echo -e " \n[+] Fetching : ${RECIPE} (${CURRENT_RECIPE} /${TOTAL_RECIPES} )\n"
241+ # Fetch
242+ if echo " ${RECIPE} " | grep -E -q ' ^https?://' ; then
243+ if curl -qfsSL " ${RECIPE} " -o " ${BUILDSCRIPT} " ; then
244+ echo -e " ==> ${RECIPE} "
245+ chmod -v +xwr " ${BUILDSCRIPT} "
246+ else
247+ echo -e " \n[✗] FATAL: Failed to fetch Remote SBUILD [${RECIPE} ]\n"
248+ [[ " ${GHA_MODE} " == " MATRIX" ]] && echo " GHA_BUILD_FAILED=YES" >> " ${GITHUB_ENV} "
249+ export CONTINUE_SBUILD=" NO"
250+ return 1 || exit 1
251+ fi
252+ elif [ -s " ${BUILDSCRIPT} " ]; then
253+ realpath " ${BUILDSCRIPT} "
254+ fi
255+ # Run
256+ if [[ -s " ${BUILDSCRIPT} " && $( stat -c%s " ${BUILDSCRIPT} " ) -gt 10 ]]; then
257+ SBUILD_SCRIPT=" ${RECIPE} " && export SBUILD_SCRIPT
258+ SBUILD_SCRIPT_BLOB=" $( echo " ${SBUILD_SCRIPT} " | sed -E ' s/raw.githubusercontent.com/github.com/; s/refs\/heads/blob/' | tr -d ' [:space:]' ) " ; export SBUILD_SCRIPT_BLOB
259+ if [[ " ${LOCAL_SBUILD} " == " YES" ]]; then
260+ if [ -n " ${GHCRPKG_LOCAL+x} " ] && [ -n " ${GHCRPKG_LOCAL##* [[:space:]]} " ]; then
261+ GHCRPKG=" ${GHCRPKG_LOCAL} " ; unset GHCRPKG_LOCAL ; export GHCRPKG
262+ echo " [+] Setting '.ghcr_pkg' --> ${GHCRPKG} [Provided]"
263+ fi
264+ if [ -n " ${PKG_FAMILY_LOCAL+x} " ] && [ -n " ${PKG_FAMILY_LOCAL##* [[:space:]]} " ]; then
265+ PKG_FAMILY=" ${PKG_FAMILY_LOCAL} " ; unset PKG_FAMILY_LOCAL ; export PKG_FAMILY
266+ echo " [+] Setting '.pkg_family' --> ${PKG_FAMILY} [Provided]"
267+ else
268+ PKG_FAMILY=" $( yq eval ' .pkg' " ${BUILDSCRIPT} " | tr -d ' [:space:]' ) " ; export PKG_FAMILY
269+ echo " [+] Setting '.pkg_family' --> ${PKG_FAMILY} [Guessed]"
270+ fi
271+ unset LOCAL_SBUILD
272+ elif [[ -s " ${SYSTMP} /pkgforge/SBUILD_LIST.json" && $( stat -c%s " ${SYSTMP} /pkgforge/SBUILD_LIST.json" ) -gt 10 ]]; then
273+ GHCRPKG=" $( jq -r ' .[] | select(.build_script == env.SBUILD_SCRIPT) | .ghcr_pkg' " ${SYSTMP} /pkgforge/SBUILD_LIST.json" | tr -d ' [:space:]' ) " && export GHCRPKG
274+ PKG_FAMILY=" $( jq -r ' .[] | select(.build_script == env.SBUILD_SCRIPT) | .pkg_family' " ${SYSTMP} /pkgforge/SBUILD_LIST.json" | tr -d ' [:space:]' ) " && export PKG_FAMILY
275+ SBUILD_REBUILD=" $( jq -r ' .[] | select(.build_script == env.SBUILD_SCRIPT) | .rebuild' " ${SYSTMP} /pkgforge/SBUILD_LIST.json" | tr -d ' [:space:]' ) " && export SBUILD_REBUILD
276+ else
277+ echo -e " \n[✗] FATAL: No Local SBUILD was Supplied & Remote ${SYSTMP} /pkgforge/SBUILD_LIST.json Does Not Exist\n"
278+ [[ " ${GHA_MODE} " == " MATRIX" ]] && echo " GHA_BUILD_FAILED=YES" >> " ${GITHUB_ENV} "
279+ export CONTINUE_SBUILD=" NO"
280+ return 1 || exit 1
281+ fi
282+ # Main
283+ {
284+ setup_env " ${BUILDSCRIPT} "
285+ check_sane_env
286+ gen_json_from_sbuild
287+ build_progs
288+ if [ -d " ${SBUILD_OUTDIR} " ] && [ " $( du -s " ${SBUILD_OUTDIR} " | cut -f1) " -gt 10 ]; then
289+ generate_json
290+ elif [[ " ${SBUILD_SKIPPED} " != " YES" ]]; then
291+ echo -e " \n[✗] FATAL: Build Dir [${BUILD_DIR} /SBUILD_OUTDIR] seems Broken\n"
292+ [[ " ${GHA_MODE} " == " MATRIX" ]] && echo " GHA_BUILD_FAILED=YES" >> " ${GITHUB_ENV} "
293+ if [[ " ${KEEP_LOGS} " != " YES" ]]; then
294+ echo ' KEEP_LOGS="YES"' >> " ${OCWD} /ENVPATH"
295+ fi
296+ fi
297+ # } 2>&1 | ts '[%Y-%m-%dT%Hh%Mm%Ss]➜ ' | tee "${TEMP_LOG}"
298+ } 2>&1 | ts -s ' [%H:%M:%S]➜ ' | tee " ${TEMP_LOG} "
299+ if [ -d " ${OCWD} " ]; then
300+ source " ${OCWD} /ENVPATH" ; SBUILD_PKGS=($SBUILD_PKGS )
301+ if [[ " ${SBUILD_SUCCESSFUL} " == " YES" ]]; then
302+ sanitize_logs
303+ # 2000req/min
304+ printf ' %s\n' " ${SBUILD_PKGS[@]} " | xargs -P " $(( $(nproc)+ 1 )) " -I " {}" bash -c ' upload_to_ghcr "$@" ; sleep "1.$(((RANDOM % 900) + 100))"' _ " {}"
305+ source " ${OCWD} /ENVPATH"
306+ if [[ " ${PUSH_SUCCESSFUL} " != " YES" ]]; then
307+ echo -e " \n[✗] FATAL: Failed to Push Artifacts ==> [${GHCRPKG} ]"
308+ [[ " ${GHA_MODE} " == " MATRIX" ]] && echo " PUSH_SUCCESSFUL=NO" >> " ${GITHUB_ENV} "
309+ echo -e " [+] LOGS (Build Dir): ${BUILD_DIR} /SBUILD_OUTDIR\n"
310+ if [[ " ${KEEP_LOGS} " != " YES" ]]; then
311+ export KEEP_LOGS=" YES"
312+ fi
313+ fi
314+ fi
315+ fi
316+ fi
317+ if [[ " ${KEEP_LOGS} " != " YES" ]]; then
318+ rm -rf " ${BUILDSCRIPT} " " $( realpath .) " && popd > /dev/null 2>&1 ; cleanup_env
319+ else
320+ popd > /dev/null 2>&1 ; cleanup_env
321+ fi
322+ END_TIME=" $( date +%s) " && export END_TIME=" ${END_TIME} "
323+ ELAPSED_TIME=" $( date -u -d@" $(( END_TIME - START_TIME)) " " +%H(Hr):%M(Min):%S(Sec)" ) "
324+ echo -e " \n[+] Completed (Building|Fetching) ${RECIPE} :: ${ELAPSED_TIME} \n"
325+ done
326+ echo -e " \n==> [+] Finished Building at :: $( TZ=' UTC' date +' %A, %Y-%m-%d (%I:%M:%S %p)' ) UTC\n"
327+ popd > /dev/null 2>&1
328+ unset CONTINUE_SBUILD GHCRPKG LOGPATH PKG_FAMILY PUSH_SUCCESSFUL RECIPE SBUILD_PKG SBUILD_SCRIPT SBUILD_SCRIPT_BLOB SBUILD_SKIPPED SBUILD_SUCCESSFUL
329+ cd " ${OWD_TMPDIR} " ; unset OWD_TMPDIR
330+ # #Finish
331+ # Disable Debug
332+ if [ " ${DEBUG} " = " 1" ] || [ " ${DEBUG} " = " ON" ]; then
333+ set +x
334+ fi
335+ }
336+ export -f sbuild_builder
337+ alias sbuild-builder=" sbuild_builder"
338+ # Call func directly if not being sourced
339+ if [[ " ${BASH_SOURCE[0]} " == " ${0} " ]]; then
340+ sbuild_builder " $@ " < & 0
341+ fi
342+ # -------------------------------------------------------#
0 commit comments