From 7941599782526e03c0fbc176c1e679557885a0ed Mon Sep 17 00:00:00 2001 From: Ben Clark Date: Tue, 29 Jan 2019 17:18:10 +0000 Subject: [PATCH] Add command to update repo sources in openhab-cli - Adds template rpm and apt source files as well so that users can easily switch repos. - Adds the repos current public key so that it can be easily updated in the future. Signed-off-by: Ben Clark --- build.gradle | 9 ++++ resources/templates/openhab.public.key.asc | 52 ++++++++++++++++++++ resources/templates/openhab2.list | 13 +++++ resources/templates/openhab2.repo | 26 ++++++++++ resources/usr/bin/openhab-cli | 56 ++++++++++++++++++++++ 5 files changed, 156 insertions(+) create mode 100644 resources/templates/openhab.public.key.asc create mode 100644 resources/templates/openhab2.list create mode 100644 resources/templates/openhab2.repo diff --git a/build.gradle b/build.gradle index 91f836b..c666b39 100644 --- a/build.gradle +++ b/build.gradle @@ -198,6 +198,15 @@ def generate_distro_tasks = { dist, gDescription, gPackageName, gInputFile, gVer fileMode mode } } + + from("resources/templates") { + into '/usr/share/openhab2/package-templates' + if (pType == 'Rpm') { + exclude '**/*.list' + } else { + exclude '**/*.repo' + } + } if (dist.contains('addons')){ requires('openhab2') diff --git a/resources/templates/openhab.public.key.asc b/resources/templates/openhab.public.key.asc new file mode 100644 index 0000000..1e82f00 --- /dev/null +++ b/resources/templates/openhab.public.key.asc @@ -0,0 +1,52 @@ +-----BEGIN PGP PUBLIC KEY BLOCK----- +Comment: GPGTools - https://gpgtools.org + +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 +ebdXE76HYEfqIn9dVKV4Ko1SXZG85ogEd0g= +=Ysxm +-----END PGP PUBLIC KEY BLOCK----- \ No newline at end of file diff --git a/resources/templates/openhab2.list b/resources/templates/openhab2.list new file mode 100644 index 0000000..a73843c --- /dev/null +++ b/resources/templates/openhab2.list @@ -0,0 +1,13 @@ +### openHAB 2.X Repositories ### + +# This file contains the repos for the different versions of openHAB. +# Remove the hash comment on the deb line to enable a particular repo + +## openHAB Stable Repository +#deb https://dl.bintray.com/openhab/apt-repo2 stable main + +## openHAB Testing Repository +#deb https://openhab.jfrog.io/openhab/openhab-linuxpkg testing main + +## openHAB Snapshot Repository +#deb https://openhab.jfrog.io/openhab/openhab-linuxpkg unstable main diff --git a/resources/templates/openhab2.repo b/resources/templates/openhab2.repo new file mode 100644 index 0000000..84528ae --- /dev/null +++ b/resources/templates/openhab2.repo @@ -0,0 +1,26 @@ +### openHAB 2.X Repositories ### + +# This file contains the repos for the different versions of openHAB. +# Set enabled to 1/0 to enable/disable a repo respectively. +# Multiple repos can be enabled at once, so it is recommended to have at least stable enabled. + +[openHAB-Stable] +name=openHAB 2.x.x Snapshots +baseurl=https://dl.bintray.com/openhab/rpm-repo2/stable +gpgcheck=1 +gpgkey=https://bintray.com/user/downloadSubjectPublicKey?username=openhab +enabled=1 + +[openHAB-Testing] +name=openHAB 2.x.x Snapshots +baseurl=https://openhab.jfrog.io/openhab/openhab-linuxpkg-rpm/testing +gpgcheck=1 +gpgkey=https://bintray.com/user/downloadSubjectPublicKey?username=openhab +enabled=0 + +[openHAB-Snapshots] +name=openHAB 2.x.x Snapshots +baseurl=https://openhab.jfrog.io/openhab/openhab-linuxpkg-rpm/unstable +gpgcheck=1 +gpgkey=https://bintray.com/user/downloadSubjectPublicKey?username=openhab +enabled=0 diff --git a/resources/usr/bin/openhab-cli b/resources/usr/bin/openhab-cli index 2d00d56..effd62c 100755 --- a/resources/usr/bin/openhab-cli +++ b/resources/usr/bin/openhab-cli @@ -18,6 +18,7 @@ usage() { echo " start [--debug] -- Starts openHAB in the terminal." echo " status -- Checks to see if openHAB is running." echo " stop -- Stops any running instance of openHAB." + echo " update-repo [repo] -- Updates the package repository and signature." echo "" exit 2 } @@ -234,9 +235,64 @@ case "$option" in fi ;; + "update-repo") + checkRoot "$option" + if [ -z "$1" ]; then + repo="stable" + echo "No repo specified, selecting '$stable' by default..." + else + repo="$1" + fi + case "$repo" in + "stable") + debLineNumber=7 + rpmLineNumber=12 + ;; + "testing") + debLineNumber=10 + rpmLineNumber=19 + ;; + "unstable") + debLineNumber=13 + rpmLineNumber=26 + ;; + *) + echo "Error: Invalid repo name '$repo', valid options are 'stable', 'testing and 'unstable'" + exit 2 + ;; + esac + echo "This command will tell the package manger to use openHAB's $repo repository." + confirmAction + debSource="$OPENHAB_HOME/package-templates/openhab2.list" + rpmSource="$OPENHAB_HOME/package-templates/openhab2.repo" + pubKey="$OPENHAB_HOME/package-templates/openhab.public.key.asc" + if [ -f "$debSource" ]; then + destination="/etc/apt/sources.list.d/openhab2.list" + echo "Creating ${destination}..." + sed "$debLineNumber"' s/^ *#//' "$debSource" > $destination + echo "Adding Public key..." + gpg --homedir /dev/null --dearmor "$pubKey" || { + echo "Error: Could not add public key, see the openHAB documentation to add it manually." + exit 1 + } + mv "$pubKey.gpg" /etc/apt/trusted.gpg.d/openhab2.gpg + elif [ -f "$rpmSource" ]; then + destination="/etc/yum.repos.d/openhab2.repo" + echo "Creating ${destination}..." + sed "$rpmLineNumber"' s/0$/1/' "$rpmSource" > $destination || { + echo "Error: Could not update $destination..." + exit 1 + } + else + echo "Error: Could not find source file for package manager." + fi + echo "Success! Please use your package manager's update command get the latest updates." + ;; *) # Default to showing available commands echo "Unrecognised command: $option" usage ;; esac + +exit 0