diff options
-rwxr-xr-x | build-repo.sh | 95 | ||||
-rwxr-xr-x | xibuild | 19 |
2 files changed, 112 insertions, 2 deletions
diff --git a/build-repo.sh b/build-repo.sh new file mode 100755 index 0000000..038e4f6 --- /dev/null +++ b/build-repo.sh @@ -0,0 +1,95 @@ +#!/bin/bash + +XIBUILD=./xibuild + +fetch-pkg-builds () { + git clone https://git.davidovski.xyz/xilinux/xipkgs + + mkdir dist + + for REPO in $(du -h xipkgs/repo/* | awk '{print $2}'); do + REPO_NAME=$(echo $REPO | cut -d"/" -f2-) + + REPO_INDEX=dist/$REPO_NAME/index.html + REPO_LIST=dist/$REPO_NAME/packages.txt + + echo "<html> + <head> + <title>packages for $REPO_NAME</title> + <link rel='stylesheet' type='text/css' href='/style.css'> + </head> + <body> + <h1>Packages in <a href='../'>$REPO_NAME</a></h1> + <table>" > $REPO_INDEX + + printf "" > xibuild.report.log + for BUILD_FILE in $REPO/*; do + DEST=dist/$REPO_NAME + + $XIBUILD -o $DEST $BUILD_FILE + + PKG_NAME=$(basename $BUILD_FILE .xibuild) + DESC=$(grep $PKG_NAME xibuild.report.log | cut -d" " -f3-) + + COLOR="none" + if grep $PKG_NAME xibuild.report.log | grep -q new; then + COLOR="lime" + fi + if grep $PKG_NAME xibuild.report.log | grep -q fail; then + if [ ! -f $DEST ]; then + COLOR="orange" + else + COLOR="red" + fi + fi + echo " + <tr style='background-color: $COLOR'> + <td>$PKG_NAME</td> + <td><a href='src/$PKG_NAME.xibuild'>src</a></td> + <td><a href='logs/$PKG_NAME.log'>log</a></td> + <td>$DESC</td> + <td><a href='$PKG_NAME.xipkg'>$PKG_NAME.xipkg</a></td> + <td><a href='$PKG_NAME.xipkg.info'>.info</a></td> +</tr> +" >> $REPO_INDEX + done; + + rm xibuild.report.log + + echo "</table> + + <p>Latest builds: <b>$(date)</b></p> + + <h3>Legend:</h3> + <ul> + <li style='background-color: none'>build skipped; no updates</li> + <li style='background-color: red'>build failed; no previous version</li> + <li style='background-color: orange'>build failed; previous version exists</li> + <li style='background-color: lime'>build passed: new update</li> + </ul> + </body> + </html> + " >> $REPO_INDEX + + cd dist/$REPO_NAME + ls -1 *.xipkg.info > packages.txt + cd - + + # move logs and sources + mv logs/* dist/$REPO_NAME/logs + + mkdir -p dist/$REPO_NAME/src + mv $REPO/* dist/$REPO_NAME/src/ + + # add key for whole repo + cp keychain/xi.pub dist/repo/ + done; + + + rm -rf xipkgs + rm -rf logs + rm -rf tmp + rm -rf xibuild.log +} + +fetch-pkg-builds @@ -32,6 +32,10 @@ extract () { esac } +pkgname () { + echo $(basename $1 .xibuild) +} + xibuild () { BUILD_FILE=${@: -1} @@ -56,7 +60,7 @@ xibuild () { source $BUILD_FILE - PKG_NAME=$(basename $BUILD_FILE .xibuild) + PKG_NAME=$(pkgname $BUILD_FILE) LOGFILE=$XI_ROOT/logs/$PKG_NAME.log PKG_FILE=$PKGS_OUTPUT/$PKG_NAME.xipkg @@ -100,6 +104,7 @@ xibuild () { printf "$INFO\tvalidating commit hash..."; if echo "$EXISTING_HASH" | grep -q "$VER_HASH"; then printf "$NEUTRAL package exists$RESET\n" + echo "exists $PKG_NAME $DESC" >> $REPORT_LOG return; else printf "$NEUTRAL package outdated\n" @@ -161,6 +166,7 @@ xibuild () { printf "$PASS successfully built $PKG_NAME to $(basename $PKG_FILE)$RESET\n" clean + echo "new $PKG_NAME $DESC" >> $REPORT_LOG return 0 } @@ -195,7 +201,14 @@ build-all () { usage ;; * ) - xibuild $1 && printf "$RESET" || printf "$ERROR error! See log$RESET\n" + REPORT_LOG=$XI_ROOT/xibuild.report.log + BUILD_FILE=$1 + if xibuild $BUILD_FILE; then + printf "$RESET" + else + printf "$ERROR error! See log$RESET\n" + echo "fail $PKG_NAME $DESC" >> $REPORT_LOG + fi cd $XI_ROOT ;; esac @@ -205,5 +218,7 @@ build-all () { } if [ $# -gt 0 ]; then build-all $@ | tee -a xibuild.log +else + usage; return 1 fi |