From 6b03824781b7fe4d44e1243897386aa35a77aea2 Mon Sep 17 00:00:00 2001 From: Patrick McDermott Date: Tue, 23 Jun 2020 20:42:29 -0400 Subject: cmd/add-feed: New command --- diff --git a/NEWS b/NEWS index 3886eda..264a5d9 100644 --- a/NEWS +++ b/NEWS @@ -6,6 +6,7 @@ Released: ????-??-?? Changes in this release: * Feed indices are no longer removed when feeds become empty. + * A new "add-feed" command has been added to create package feeds. ProteanOS Archive Manager version 2.0.1 --------------------------------------- diff --git a/locale/en_US.sh b/locale/en_US.sh index bd5e03f..f173cd8 100644 --- a/locale/en_US.sh +++ b/locale/en_US.sh @@ -85,6 +85,11 @@ msg_pro_archman_cmd_remove_suite_usage='' msg_pro_archman_cmd_sign_summary='re-sign all package feed index files' msg_pro_archman_cmd_sign_usage='' +# src/cmd/add-feed.sh +msg_pro_archman_cmd_add_feed_summary='create package feeds' +msg_pro_archman_cmd_add_feed_usage='//// ...' +msg_pro_archman_cmd_add_feed_invalid='Invalid feed %s' + # src/suite.sh msg_pro_archman_suite_copying='Copying suite %s/%s to suite %s/%s...' msg_pro_archman_suite_removing='Removing suite %s/%s...' diff --git a/man/pro-archman.1in b/man/pro-archman.1in index 1e14e0a..9dc6942 100644 --- a/man/pro-archman.1in +++ b/man/pro-archman.1in @@ -51,6 +51,9 @@ Remove a suite. .TP .B sign Re-sign all package feed index files. +.TP +.B add-feed +Create package feeds. .SH COPYRIGHT Copyright (C) 2013 Patrick McDermott diff --git a/src/cmd/add-feed.sh b/src/cmd/add-feed.sh new file mode 100644 index 0000000..bb9c80f --- /dev/null +++ b/src/cmd/add-feed.sh @@ -0,0 +1,65 @@ +# pro-archman +# src/cmd/add-feed.sh +# "add-feed" command +# +# Copyright (C) 2020 Patrick McDermott +# +# This file is part of the ProteanOS Archive Manager. +# +# The ProteanOS Archive Manager is free software: you can redistribute +# it and/or modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# The ProteanOS Archive Manager is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with the ProteanOS Archive Manager. If not, see +# . + +cmd_add_feed_main() +{ + local feed= + local chan= + local dist= + local arch= + local plat= + local sect= + + init + + for feed in "${@}"; do + case "${feed}" in + */*/*/*/*/*) + error 2 "$(get_msg 'cmd_add_feed_invalid')" \ + "${feed}" + ;; + */*/*/*/*) + ;; + *) + error 2 "$(get_msg 'cmd_add_feed_invalid')" \ + "${feed}" + ;; + esac + done + + for feed in "${@}"; do + IFS='/' read chan dist arch plat sect <<-EOF + ${feed} + EOF + feed_create "${chan}" "${dist}" "${arch}" "${plat}" "${sect}" + done + + fini + + return 0 +} + +cmd_add_feed_register() +{ + register_cmd 'add-feed' +} +__init cmd_add_feed_register diff --git a/src/cmd/local.mk b/src/cmd/local.mk index 860c117..d7263f5 100644 --- a/src/cmd/local.mk +++ b/src/cmd/local.mk @@ -6,4 +6,5 @@ pro_archman_SOURCES += \ %reldir%/remove.sh \ %reldir%/copy-suite.sh \ %reldir%/remove-suite.sh \ - %reldir%/sign.sh + %reldir%/sign.sh \ + %reldir%/add-feed.sh diff --git a/tests/add-feed.sh b/tests/add-feed.sh new file mode 100755 index 0000000..843ede1 --- /dev/null +++ b/tests/add-feed.sh @@ -0,0 +1,82 @@ +#!/bin/sh +# +# Copyright (C) 2020 Patrick McDermott +# +# This file is part of the ProteanOS Archive Manager. +# +# The ProteanOS Archive Manager is free software: you can redistribute +# it and/or modify it under the terms of the GNU General Public License +# as published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# The ProteanOS Archive Manager is distributed in the hope that it +# will be useful, but WITHOUT ANY WARRANTY; without even the implied +# warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +# See the GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with the ProteanOS Archive Manager. If not, see +# . + +. ${0%/*}/aux/init.sh +. tap-functions.sh +. opk.sh + +plan_ 14 + +command_ok_ 'pro-archman add-feed' -- \ + "${PRO_ARCHMAN}" -v -b 'archive/' add-feed \ + 'dev/trunk/arch1/plat1/sect1' + +command_ok_ 'feed index exists' -- \ + [ -f 'archive/feeds/dev/trunk/arch1/plat1/sect1/Packages' ] + +command_ok_ 'feed index is empty' -- \ + [ $(wc -l 'archive/feeds/dev/trunk/arch1/plat1/sect1/Packages' | \ + cut -d ' ' -f 1) -eq 0 ] + +changes="$(make_opks_and_changes 'foo' 'foo bar' '1.0-1' 'arch1' 'plat1' \ + 'trunk' 'sect1')" + +command_ok_ 'pro-archman include' -- \ + "${PRO_ARCHMAN}" -v -b 'archive/' include "${changes}" + +command_ok_ 'feed index is non-empty' -- \ + [ $(wc -l 'archive/feeds/dev/trunk/arch1/plat1/sect1/Packages' | \ + cut -d ' ' -f 1) -ne 0 ] + +command_ok_ 'pro-archman add-feed' -- \ + "${PRO_ARCHMAN}" -v -b 'archive/' add-feed \ + 'dev/trunk/arch1/plat1/sect2' + +command_ok_ 'feed index exists' -- \ + [ -f 'archive/feeds/dev/trunk/arch1/plat1/sect2/Packages' ] + +command_ok_ 'feed index is empty' -- \ + [ $(wc -l 'archive/feeds/dev/trunk/arch1/plat1/sect2/Packages' | \ + cut -d ' ' -f 1) -eq 0 ] + +command_ok_ 'pro-archman add-feed' -- \ + "${PRO_ARCHMAN}" -v -b 'archive/' add-feed \ + 'dev/trunk/arch2/plat2/sect1' \ + 'dev/trunk/arch2/plat2/sect2' + +command_ok_ 'feed index exists' -- \ + [ -f 'archive/feeds/dev/trunk/arch2/plat2/sect1/Packages' ] + +command_ok_ 'feed index is empty' -- \ + [ $(wc -l 'archive/feeds/dev/trunk/arch2/plat2/sect1/Packages' | \ + cut -d ' ' -f 1) -eq 0 ] + +command_ok_ 'feed index exists' -- \ + [ -f 'archive/feeds/dev/trunk/arch2/plat2/sect2/Packages' ] + +command_ok_ 'feed index is empty' -- \ + [ $(wc -l 'archive/feeds/dev/trunk/arch2/plat2/sect2/Packages' | \ + cut -d ' ' -f 1) -eq 0 ] + +command_ok_ 'pro-archman add-feed' -- not \ + "${PRO_ARCHMAN}" -v -b 'archive/' add-feed \ + 'dev/trunk/arch1/plat1' + +: diff --git a/tests/local.mk b/tests/local.mk index c2f062c..4511549 100644 --- a/tests/local.mk +++ b/tests/local.mk @@ -14,7 +14,8 @@ TESTS = \ %reldir%/copy-suite-existing.sh \ %reldir%/remove-suite.sh \ %reldir%/manifest.sh \ - %reldir%/sign.sh + %reldir%/sign.sh \ + %reldir%/add-feed.sh EXTRA_DIST += \ tests/aux/init.sh \ -- cgit v0.9.1