The DOWNLOAD file is there for unique situations where acquiring the source cannot be done by the supported methods provided by Sorcery.
The following is an example of a spell that offers either a stable version or an svn version of the source. The file also handles updating the source tarball if the source cache already exists. However, you can pass the -d
flag to cast and the source will be deleted and a new check out will be performed. Finally, it is always a good idea to return whether the download succeeded or not.
Example DOWNLOAD file:
local success local source_url=${SOURCE_URL/smgl_svn:\/\//} message "${MESSAGE_COLOR}My *really* cool download handler${DEFAULT_COLOR}" if [[ "$SVN_CO" == "y" ]] ; then if [[ $FORCE_DOWNLOAD ]] ; then message "${MESSAGE_COLOR}removing old source force download${DEFAULT_COLOR}" && rm -f $SOURCE_CACHE/$SOURCE fi if [[ -f $SOURCE_CACHE/$SOURCE ]] ; then message "${MESSAGE_COLOR}extracting old tarball in $TMP_DIR${DEFAULT_COLOR}" && cd $TMP_DIR && tar -xjf $SOURCE_CACHE/$SOURCE && cd ${SOURCE_DIRECTORY/$BUILD_DIRECTORY\//} && message "${MESSAGE_COLOR}running svn update${DEFAULT_COLOR}" && svn up && message "${MESSAGE_COLOR}creating source tarball${DEFAULT_COLOR}" && cd ../ && tar -cjf $SOURCE ${SOURCE_DIRECTORY/$BUILD_DIRECTORY\//} && mv $SOURCE $SOURCE_CACHE && success="Yeah!" else message "${MESSAGE_COLOR}creating new tarball${DEFAULT_COLOR}" && cd $TMP_DIR && mkdir ${SOURCE_DIRECTORY/$BUILD_DIRECTORY\//} && cd ${SOURCE_DIRECTORY/$BUILD_DIRECTORY\//} && message "${MESSAGE_COLOR}running svn checkout${DEFAULT_COLOR}" && svn co $source_url ./ && message "${MESSAGE_COLOR}creating source tarball${DEFAULT_COLOR}" && cd ../ && tar -cjf $SOURCE ${SOURCE_DIRECTORY/$BUILD_DIRECTORY\//} && mv $SOURCE $SOURCE_CACHE && success="Yeah!" fi else if [[ $FORCE_DOWNLOAD ]] ; then message "${MESSAGE_COLOR}removing old sources${DEFAULT_COLOR}" && rm -f $SOURCE_CACHE/$SOURCE rm -f $SOURCE_CACHE/$SOURCE2 fi [ ! -f $SOURCE_CACHE/$SOURCE ] && wget -O $SOURCE_CACHE/$SOURCE $SOURCE_URL [ ! -f $SOURCE_CACHE/$SOURCE2 ] && wget -O $SOURCE_CACHE/$SOURCE2 $SOURCE2_URL success="Yup!" fi if [[ -z $success ]] ; then return 1 else return 0 fi