sub lei_add_external {
my ($self, $location) = @_;
$self->_lei_store(1)->write_prepare($self);
- my $new_boost = $self->{opt}->{boost} // 0;
+ my $opt = $self->{opt};
+ my $mirror = $opt->{mirror} // do {
+ my @fail;
+ for my $sw ($self->index_opt, $self->curl_opt,
+ qw(c no-torsocks torsocks inbox-version)) {
+ my ($f) = (split(/|/, $sw, 2))[0];
+ next unless defined $opt->{$f};
+ $f = length($f) == 1 ? "-$f" : "--$f";
+ push @fail, $f;
+ }
+ if (scalar(@fail) == 1) {
+ return $self->("@fail requires --mirror");
+ } elsif (@fail) {
+ my $last = pop @fail;
+ my $fail = join(', ', @fail);
+ return $self->("@fail and $last require --mirror");
+ }
+ undef;
+ };
+ my $new_boost = $opt->{boost} // 0;
$location = ext_canonicalize($location);
- my $mirror = $self->{opt}->{mirror};
if (defined($mirror) && -d $location) {
$self->fail(<<""); # TODO: did you mean "update-external?"
--mirror destination `$location' already exists
my $t2 = "$home/t2-mirror";
ok($lei->('add-external', $t2, '--mirror', "$http/t2/"), '--mirror v2');
ok(-f "$t2/msgmap.sqlite3", 't2-mirror indexed');
+
+ ok(!$lei->('add-external', $t2, '--mirror', "$http/t2/"),
+ '--mirror fails if reused');
+
+ ok(!$lei->('add-external', "$t2-fail", '-Lmedium'), '--mirror v2');
+ ok(!-d "$t2-fail", 'destination not created on failure');
});
ok($td->kill, 'killed -httpd');