@@ -7,6 +7,7 @@ use metadata;
use warnings;
use strict;
use Cwd 'abs_path';
+use File::Copy
chdir "$FindBin::Bin/..";
$ENV{TOPDIR} //= getcwd();
@@ -819,6 +820,37 @@ sub update {
return $failed;
}
+sub setup {
+ my %opts;
+
+ getopts('bh', \%opts);
+
+ if ($opts{h}) {
+ usage();
+ return 0;
+ }
+
+ if ($opts{b}) {
+ copy("feeds.conf.default", "feeds.conf") or die "Copy failed: $!"
+ } else {
+ unlink "feeds.conf"
+ }
+
+ open(my $fd, ">>feeds.conf");
+ while (my $entry = shift @ARGV) {
+ my ($type, $name, $src) = split /,/, $entry;
+
+ $update_method{$type} or do {
+ warn "Unknown type '$type' in parameter $entry\n";
+ unlink "feeds.conf";
+ return 1;
+ };
+ printf $fd "%s %s %s\n", $type, $name, $src;
+ }
+
+ return 0;
+}
+
sub feed_config() {
foreach my $feed (@feeds) {
my $installed = (-f "feeds/$feed->[1].index");
@@ -870,6 +902,10 @@ Commands:
-i : Recreate the index only. No feed update from repository is performed.
-f : Force updating feeds even if there are changed, uncommitted files.
+ setup [options] <type,name,link> <type,name,link> ...: generate feeds.conf
+ Options:
+ -b : Use feeds.conf.default as base for new feeds.conf.
+
clean: Remove downloaded/generated files.
EOF
@@ -883,6 +919,7 @@ my %commands = (
'search' => \&search,
'uninstall' => \&uninstall,
'feed_config' => \&feed_config,
+ 'setup' => \&setup,
'clean' => sub {
system("rm -rf ./feeds ./package/feeds");
}
This can be used inside build setups for easy feeds.conf generation. Signed-off-by: John Crispin <john@phrozen.org> --- scripts/feeds | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+)