summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbuild-repo.sh95
-rwxr-xr-xxibuild19
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
diff --git a/xibuild b/xibuild
index 3c202c9..1ef7264 100755
--- a/xibuild
+++ b/xibuild
@@ -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