summaryrefslogtreecommitdiff
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/feeds.sh59
1 files changed, 59 insertions, 0 deletions
diff --git a/scripts/feeds.sh b/scripts/feeds.sh
new file mode 100755
index 0000000..341259b
--- /dev/null
+++ b/scripts/feeds.sh
@@ -0,0 +1,59 @@
+#!/bin/sh
+# Copyright (C) 2006 OpenWrt.org
+#
+# This is free software, licensed under the GNU General Public License v2.
+# See /LICENSE for more information.
+#
+# Usage : $1 -> source feeds
+# $2 -> other options
+#
+# Note : we do not yet resolve package name conflicts
+#
+#
+FEEDS_DIR=$TOPDIR/feeds
+PACKAGE_DIR=$TOPDIR/package
+
+cd $TOPDIR
+# This directory will be structured this way : feeds/feed-name
+[ -d $FEEDS_DIR ] || mkdir -p $FEEDS_DIR
+
+
+# Some functions we might call several times a run
+delete_symlinks() {
+ find $PACKAGE_DIR -type l | xargs rm -f
+}
+
+setup_symlinks() {
+ # We assume that feeds do reproduce the hierarchy : section/package
+ for dir in $(ls $FEEDS_DIR/)
+ do
+ ln -s $FEEDS_DIR/$dir/*/* $PACKAGE_DIR/
+ done
+}
+
+checkout_feed() {
+ # We ensure the feed has not already been checkout, if so, just update the source feed
+ if [ -d $FEEDS_DIR/$2 ]; then
+ svn update $FEEDS_DIR/$2
+ echo "Updated to revision $(LANG=C svn info $FEEDS_DIR/$2 | awk '/^Revision:/ { print $2 }' )";
+ # Otherwise, we have to checkout in the
+ else
+ svn co $1 $FEEDS_DIR/$2
+ echo "Checked out revision $(LANG=C svn info $FEEDS_DIR/$2 | awk '/^Revision:/ { print $2 }' )";
+ fi
+}
+
+extract_feed_name() {
+ echo "$(echo $1 | awk -F/ '{ print $NF}')"
+}
+
+# We can delete symlinks every time we start this script, since modifications have been made anyway
+delete_symlinks ""
+# Now let's checkout feeds
+for feed in $1
+do
+ name=$(extract_feed_name "$feed")
+ checkout_feed "$feed" "$name"
+done
+# Finally setup symlinks
+setup_symlinks ""