diff --git a/config/functions b/config/functions
index 65ef7658bd..956c8f790d 100644
--- a/config/functions
+++ b/config/functions
@@ -194,6 +194,91 @@ install_binary_addon() {
fi
}
+install_addon_source() {
+ if [ -d $PKG_DIR/source ]; then
+ cp -R $PKG_DIR/source/* "$1"
+ fi
+}
+
+install_addon_images() {
+ local dest_dir="$1"
+
+ if [ -f "$PKG_DIR/icon/icon.png" ]; then
+ mkdir -p "$dest_dir/resources"
+ cp "$PKG_DIR/icon/icon.png" "$dest_dir/resources"
+ fi
+
+ if [ -f "$DISTRO_DIR/$DISTRO/addons/fanart.png" ]; then
+ mkdir -p "$dest_dir/resources"
+ cp "$DISTRO_DIR/$DISTRO/addons/fanart.png" "$dest_dir/resources"
+ fi
+}
+
+create_addon_xml() {
+ local addon_xml addon_version addon_name provider_name requires requires_addonname requires_addonversion screenshots
+
+ addon_xml="$1/addon.xml"
+
+ IFS=" "
+for i in $PKG_ADDON_REQUIRES; do
+ requires_addonname=`echo $i | cut -f1 -d ":"`
+ requires_addonversion=`echo $i | cut -f2 -d ":"`
+ requires="$requires\n "
+done
+ unset IFS
+
+ if [ ! -f "$addon_xml" ] ; then
+ cp $ROOT/config/addon/${PKG_ADDON_TYPE}.xml "$addon_xml"
+ addon_version=${PKG_ADDON_VERSION:-${ADDON_VERSION}.${PKG_REV}}
+ else
+ if [ ! $(which xmlstarlet) ]; then
+ echo "*** ERROR: $ADDON has addon.xml shipped, you need 'xmlstarlet' ***"
+ exit 255
+ fi
+ addon_version="${PKG_ADDON_VERSION:-$(xmlstarlet sel -t -v "/addon/@version" "$addon_xml").$PKG_REV}"
+ xmlstarlet ed --inplace -u "/addon[@version]/@version" -v "$addon_version" "$addon_xml"
+ fi
+
+ if [ -f $PKG_DIR/changelog.txt ]; then
+ sed -e "/@PKG_ADDON_NEWS@/ \
+ {
+ r $PKG_DIR/changelog.txt
+ d
+ }" -i "$addon_xml"
+ else
+ sed -e "s|@PKG_ADDON_NEWS@||g" -i "$addon_xml"
+ fi
+
+ provider_name=${PKG_MAINTAINER:-"Team LibreELEC"}
+ addon_name=${PKG_ADDON_NAME:-"$PKG_NAME"}
+
+ for f in $PKG_DIR/source/resources/screenshot-*.{jpg,png}; do
+ if [ -f "$f" ]; then
+ screenshots+="resources/$(basename $f)\n"
+ fi
+ done
+
+ $SED -e "s|@PKG_ADDON_ID@|$PKG_ADDON_ID|g" \
+ -e "s|@ADDON_NAME@|$addon_name|g" \
+ -e "s|@ADDON_VERSION@|$addon_version|g" \
+ -e "s|@REQUIRES@|$requires|g" \
+ -e "s|@PKG_SHORTDESC@|$PKG_SHORTDESC|g" \
+ -e "s|@OS_VERSION@|$OS_VERSION|g" \
+ -e "s|@PKG_LONGDESC@|$PKG_LONGDESC|g" \
+ -e "s|@PKG_DISCLAIMER@|$PKG_DISCLAIMER|g" \
+ -e "s|@PROVIDER_NAME@|$provider_name|g" \
+ -e "s|@PKG_ADDON_PROVIDES@|$PKG_ADDON_PROVIDES|g" \
+ -e "s|@PKG_ADDON_SCREENSHOT@|$screenshots|g" \
+ -e "s|@PKG_ADDON_BROKEN@|$PKG_ADDON_BROKEN|g" \
+ -i "$addon_xml"
+}
+
+install_addon_files() {
+ install_addon_source "$1"
+ install_addon_images "$1"
+ create_addon_xml "$1"
+}
+
tolower() {
echo "$@" | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz
}
diff --git a/scripts/install_addon b/scripts/install_addon
index a7ec4b9d81..6f23bad429 100755
--- a/scripts/install_addon
+++ b/scripts/install_addon
@@ -22,81 +22,10 @@
[ -n "$2" ] && PKG_ADDON_ID=$2
-IFS=" "
-for i in $PKG_ADDON_REQUIRES; do
- REQUIRES_ADDONNAME=`echo $i | cut -f1 -d ":"`
- REQUIRES_ADDONVERSION=`echo $i | cut -f2 -d ":"`
- REQUIRES="$REQUIRES\n "
-done
+ADDON_DIRECTORY="$ADDON_BUILD/$PKG_ADDON_ID"
-unset IFS
+mkdir -p "$ADDON_DIRECTORY"
-mkdir -p $ADDON_BUILD/$PKG_ADDON_ID
+install_addon_files "$ADDON_DIRECTORY"
-if [ ! -f $ADDON_BUILD/$PKG_ADDON_ID/addon.xml ]; then
- cp config/addon/${PKG_ADDON_TYPE}.xml $ADDON_BUILD/$PKG_ADDON_ID/addon.xml
- ADDONVER=${PKG_ADDON_VERSION:-${ADDON_VERSION}.${PKG_REV}}
-else
- if [ ! $(which xmlstarlet) ]; then
- echo "*** ERROR: $ADDON has addon.xml shipped, you need 'xmlstarlet' ***"
- exit 255
- fi
- ADDONVER="${PKG_ADDON_VERSION:-$(xmlstarlet sel -t -v "/addon/@version" $ADDON_BUILD/$PKG_ADDON_ID/addon.xml).$PKG_REV}"
- xmlstarlet ed --inplace -u "/addon[@version]/@version" -v "$ADDONVER" $ADDON_BUILD/$PKG_ADDON_ID/addon.xml
-fi
-
-if [ -d $PKG_DIR/source ]; then
- cp -R $PKG_DIR/source/* $ADDON_BUILD/$PKG_ADDON_ID
-fi
-
-if [ -f $PKG_DIR/icon/icon.png ]; then
- mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/resources
- cp $PKG_DIR/icon/icon.png $ADDON_BUILD/$PKG_ADDON_ID/resources
-fi
-
-if [ -f $DISTRO_DIR/$DISTRO/addons/fanart.png ]; then
- mkdir -p $ADDON_BUILD/$PKG_ADDON_ID/resources
- cp $DISTRO_DIR/$DISTRO/addons/fanart.png $ADDON_BUILD/$PKG_ADDON_ID/resources
-fi
-
-for f in $PKG_DIR/source/resources/screenshot-*.{jpg,png}; do
- if [ -f "$f" ]; then
- PKG_ADDON_SCREENSHOT+="resources/$(basename $f)\n"
- fi
-done
-
-if [ -f $PKG_DIR/changelog.txt ]; then
- sed -e "/@PKG_ADDON_NEWS@/ \
- {
- r $PKG_DIR/changelog.txt
- d
- }" -i $ADDON_BUILD/$PKG_ADDON_ID/addon.xml
-else
- sed -e "s|@PKG_ADDON_NEWS@||g" -i $ADDON_BUILD/$PKG_ADDON_ID/addon.xml
-fi
-
-PROVIDER_NAME="Team LibreELEC"
-if [ ! -z "$PKG_MAINTAINER" ] ; then
- PROVIDER_NAME="$PKG_MAINTAINER"
-fi
-
-ADDON_NAME="$PKG_NAME"
-if [ ! -z "$PKG_ADDON_NAME" ] ; then
- ADDON_NAME="$PKG_ADDON_NAME"
-fi
-
-$SED -e "s|@PKG_ADDON_ID@|$PKG_ADDON_ID|g" \
- -e "s|@ADDON_NAME@|$ADDON_NAME|g" \
- -e "s|@ADDON_VERSION@|$ADDONVER|g" \
- -e "s|@REQUIRES@|$REQUIRES|g" \
- -e "s|@PKG_SHORTDESC@|$PKG_SHORTDESC|g" \
- -e "s|@OS_VERSION@|$OS_VERSION|g" \
- -e "s|@PKG_LONGDESC@|$PKG_LONGDESC|g" \
- -e "s|@PKG_DISCLAIMER@|$PKG_DISCLAIMER|g" \
- -e "s|@PROVIDER_NAME@|$PROVIDER_NAME|g" \
- -e "s|@PKG_ADDON_PROVIDES@|$PKG_ADDON_PROVIDES|g" \
- -e "s|@PKG_ADDON_SCREENSHOT@|$PKG_ADDON_SCREENSHOT|g" \
- -e "s|@PKG_ADDON_BROKEN@|$PKG_ADDON_BROKEN|g" \
- -i $ADDON_BUILD/$PKG_ADDON_ID/addon.xml
-
-debug_strip $ADDON_BUILD/$PKG_ADDON_ID
+debug_strip "$ADDON_DIRECTORY"