.KEY DEST,ARCH,BRANCH,SILENT/S ; $VER: uhcinstall 1.44 (25.10.2023) UHCTools Install-script ; This script will setup the needed ENV-variables and download ; and extract the UHC amigabin_xxx.lha file. Failat 21 Set UHCMIRROR0 "http://uhc.megaburken.net/" Set UHCMIRROR1 "http://uhc.driar.se/" Set UHCMIRROR2 "http://uhc.a1k.org/" If "" NOT EQ "" Set OSTAG "" If "$OSTAG" EQ os3 Skip OSDETECTDONE EndIf If "$OSTAG" EQ mos Skip OSDETECTDONE EndIf If "$OSTAG" EQ os4 Skip OSDETECTDONE EndIf If "$OSTAG" EQ aros-i386 Skip OSDETECTDONE EndIf If "$OSTAG" EQ aros-m68k Skip OSDETECTDONE EndIf Echo "$OSTAG is not supported" Skip CLEANUP EndIf Set SHOWCONFIGFILE "T:showconfig_out" Version >NIL: exec.library 50 If WARN ; We are running some version of classic AmigaOS since all AmigaNG ; OS:es has exec v50 or higher, for now we just report back 3.x. Set OSTAG "os3" Skip OSDETECTDONE EndIf If EXISTS SYS:MorphOS Set OSTAG "mos" Skip OSDETECTDONE EndIf Version >NIL: newlib.library If NOT WARN Set OSTAG "os4" Skip OSDETECTDONE EndIf Version >NIL: aros.library If NOT WARN ; Default to aros-i386 if ShowConfig cannot be executed, should we? Set OSTAG "aros-i386" ShowConfig >"$SHOWCONFIGFILE" If NOT WARN Search >NIL: "$SHOWCONFIGFILE" "X86/LE" If NOT WARN Set OSTAG "aros-i386" Skip OSDETECTDONE EndIf Search >NIL: "$SHOWCONFIGFILE" "M68K/BE" If NOT WARN Set OSTAG "aros-m68k" Skip OSDETECTDONE EndIf Skip OSDETECTDONE EndIf Echo "*nArch not detected, aborting!" Skip CLEANUP Lab OSDETECTDONE Set AGET="aget" Which >NIL: aget If WARN Which >NIL: wget If WARN Echo "*nCouldn't find aget or wget on your system so the installation can't continue." Skip CLEANUP Else Set UHCCOUNTER 0 Lab WGETMIRRORLOOP Set UHCROOTURL "`Get "UHCMIRROR$UHCCOUNTER"`" If NOT "" EQ "" Set UHCROOTURL "${UHCROOTURL}branches//" EndIf If "" EQ "" Echo "Fetching ${UHCROOTURL}aget.$OSTAG" EndIf Set PREVDIR="`Cd`" Cd T: Stack 65536 wget --quiet "${UHCROOTURL}aget.$OSTAG" Cd "$PREVDIR" Unset PREVDIR If NOT EXISTS "T:aget.$OSTAG" Set UHCCOUNTER "`Eval "$UHCCOUNTER + 1"`" Get >NIL: "UHCMIRROR$UHCCOUNTER" If WARN Echo "Couldn't download the needed file, all mirrors appears to be down!*n*nTry again later!*n" Skip CLEANUP EndIf Echo "Using next mirror" Skip WGETMIRRORLOOP BACK EndIf Rename "T:aget.$OSTAG" T:aget >NIL: Set AGET="T:aget" ; Because some version of wget removes the executable flag Protect T:aget +e EndIf EndIf Set UHCARCHIVE "uhctools_${OSTAG}.lha" Set DEST="SYS:UHC" If "" NOT EQ "" Set DEST="" EndIf If "`Echo "$DEST" LEN=1`" EQ "/" Echo "$DEST must be entered without ending slash" Skip CLEANUP EndIf If "" EQ "" Echo "This script will download and extract the file ${UHCARCHIVE} to" Echo "the directory $DEST" Echo "It will also setup the required ENV-variables that allows you to update" Ask "the tools in the future. Proceed (y/n)?" If NOT WARN Echo "*nAborting...*n" Skip CLEANUP EndIf Echo "" EndIf If "`Echo "$DEST" LEN=1`" NOT EQ ":" If EXISTS "$DEST" If "" EQ "" Ask "$DEST already exists, do you want to continue anyway (y/n)?" If NOT WARN Echo "*nAborting...*n" Skip CLEANUP EndIf EndIf Else MakeDir "$DEST" If WARN Skip CLEANUP EndIf EndIf Set DEST="$DEST/" EndIf Set UHCCOUNTER 0 Lab MIRRORLOOP Set UHCROOTURL "`Get "UHCMIRROR$UHCCOUNTER"`" If NOT "" EQ "" Set UHCROOTURL "${UHCROOTURL}branches//" EndIf If "" EQ "" Echo "Fetching ${UHCROOTURL}${UHCARCHIVE}" EndIf "$AGET" TIMEOUTSECONDS=10 QUIET "${UHCROOTURL}${UHCARCHIVE}" T: Set AGETRC=$RC If VAL $AGETRC GE 20 ; FAIL means that there is a local error, like missing library - no point ; in trying another mirror, aget will print whatever issue it has. Skip CLEANUP EndIf If VAL $AGETRC GE 10 Set UHCCOUNTER "`Eval "$UHCCOUNTER + 1"`" Get >NIL: "UHCMIRROR$UHCCOUNTER" If WARN Echo "Couldn't download the needed file, all mirrors appears to be down!*n*nTry again later!*n" Skip CLEANUP EndIf Echo "Using next mirror" Skip MIRRORLOOP BACK EndIf Set LHA "`Which LhA`" If "$LHA" EQ "" Echo "*nLhA not found, downloading ${UHCROOTURL}lha.run" "$AGET" QUIET ${UHCROOTURL}lha.run T: T:lha.run lha_68k T: >NIL: Delete T:lha.run >NIL: Ask "Do you want to install the 68k version of LhA 2.15 to C: (y/n)?" If WARN Copy T:lha_68k C:LhA >NIL: Delete T:lha_68k >NIL: Set LHA C:LhA Else Set LHA T:lha_68k EndIf EndIf If "" EQ "" Echo "Extracting ${UHCARCHIVE} to $DEST" EndIf Version >NIL: "$LHA" If WARN ; UNIX lha does not have a version string, common in AROS "$LHA" "xfw=$DEST" "T:${UHCARCHIVE}" >NIL: If WARN Echo "*nFailed to extract ${UHCARCHIVE} to $DEST" Echo "Make sure your destination volume is not full and that you have a" Echo "proper version of Lha in your path." Skip CLEANUP EndIf Else ; Amiga LhA Stack 8192 "$LHA" x -mq "T:${UHCARCHIVE}" "$DEST" If WARN Echo "*nFailed to extract ${UHCARCHIVE} to $DEST" Echo "Make sure your destination volume is not full and that you have a" Echo "proper version of Lha in your path." Skip CLEANUP EndIf EndIf SetENV UHCBIN "$DEST" Copy ENV:UHCBIN ENVARC: If "" EQ "" Echo "*nWill now add a few lines to your S:User-Startup to set up assigns and" Ask "paths to UHC Tools. Proceed (y/n)?" If NOT WARN Execute ${UHCBIN}UHC-Startup Echo "*nRemember to add paths manually!" Skip UHCENV EndIf EndIf Echo ";BEGIN UHC" >T:User-Startup.UHCPart Echo " If EXISTS *"*${UHCBIN}UHC-Startup*"" >>T:User-Startup.UHCPart Echo " Execute *"*${UHCBIN}UHC-Startup*"" >>T:User-Startup.UHCPart Echo " EndIf" >>T:User-Startup.UHCPart Echo ";END UHC*n" >>T:User-Startup.UHCPart Execute T:User-Startup.UHCPart Echo NOLINE >>S:User-Startup Copy S:User-Startup "${UHCBIN}User-Startup.org" Copy T:User-Startup.UHCPart S:User-Startup Type "${UHCBIN}User-Startup.org" >>S:User-Startup Lab UHCENV If NOT EXISTS ENV:UHC MakeDir ENV:UHC EndIf SetENV UHC/TEMPDIR "T:" SetENV UHC/SHOWARCHIVER "0" SetENV UHC/SHOWPROGRESS "1" SetENV UHC/SEARCHURL "uhc.megaburken.net/uhcsearch" SetENV UHC/ARCH "$OSTAG" If NOT "" EQ "" SetENV UHC/BRANCH "" EndIf If NOT EXISTS ENVARC:UHC MakeDir ENVARC:UHC EndIf Copy ENV:UHC/#? ENVARC:UHC/ ALL QUIET >NIL: Protect UHC:S/#? +s >NIL: If "${OSTAG}" NOT EQ "os4" Copy UHC:S/uhcupdate S: >NIL: Else Copy UHC:S/uhcupdate S:Shell/ >NIL: EndIf Delete T:${UHCARCHIVE} >NIL: If "" EQ "" Echo "*nWe're all done! Run *"uhcupdate*" to update all utilities in the future!*n" EndIf Lab CLEANUP If EXISTS "T:$UHCARCHIVE" Delete "T:$UHCARCHIVE" >NIL: EndIf If EXISTS "T:aget" Delete "T:aget" >NIL: EndIf If EXISTS "$SHOWCONFIGFILE" Delete "$SHOWCONFIGFILE" >NIL: EndIf UnSet DEST UnSet LHA UnSet AGETRC UnSet AGET UnSet SHOWCONFIGFILE UnSet OSTAG UnSet UHCROOTURL UnSet UHCARCHIVE UnSet UHCCOUNTER UnSet UHCMIRROR0 Unset UHCMIRROR1 UnSet UHCMIRROR2