pass the -p/-path correctly to the import engine
[bse.git] / site / util / bsexlsprod.pl
1 #!perl -w
2 use strict;
3 use Getopt::Long;
4 use FindBin;
5 use lib "$FindBin::Bin/../cgi-bin/modules";
6 use BSE::Cfg;
7 use BSE::API qw(bse_init bse_cfg bse_make_product bse_encoding);
8 use BSE::Importer;
9 use Carp qw(confess);
10 use Config;
11
12 bse_init("../cgi-bin");
13
14 my $verbose;
15 my $delete;
16 my @file_path;
17 GetOptions("v", \$verbose,
18            "d", \$delete,
19            "path|p=s", \@file_path);
20 $verbose = defined $verbose;
21
22 my $cfg = bse_cfg();
23
24 my $profile = shift;
25 my $filename = shift
26   or die "Usage: $0 profile filename\n";
27
28 my $callback;
29 $verbose
30   and $callback = sub { print "@_\n" };
31
32 my $importer = BSE::Importer->new
33   (
34    cfg => $cfg,
35    profile => $profile,
36    file_path => join($Config{pathsep}, @file_path),
37    callback => $callback,
38   );
39
40 $importer->process($filename);
41
42 if ($delete) {
43   my @products = $importer->leaves;
44   my @catalogs = $importer->parents;
45   for my $product (@products) {
46     print "Removing product $product->{id}: $product->{title}\n";
47     $product->remove($cfg);
48   }
49   require BSE::Permissions;
50   my $perms = BSE::Permissions->new($cfg);
51   for my $catalog (reverse @catalogs) {
52     my $msg;
53     if ($perms->check_edit_delete_article({}, $catalog, '', \$msg)) {
54       print "Removing catalog $catalog->{id}: $catalog->{title}\n";
55       $catalog->remove($cfg);
56     }
57     else {
58       print "Cannot remove $catalog->{id}: $msg\n";
59     }
60   }
61 }
62
63 my @errors = $importer->errors;
64 unless ($verbose) { # unless we already reported them
65   print STDERR $_, "\n" for @errors;
66 }
67 @errors
68   and exit 1;
69
70 exit;