]> git.vpit.fr Git - perl/modules/CPANPLUS-Dist-Gentoo.git/blobdiff - lib/CPANPLUS/Dist/Gentoo.pm
--force should regenerate ebuilds when possible
[perl/modules/CPANPLUS-Dist-Gentoo.git] / lib / CPANPLUS / Dist / Gentoo.pm
index 3b37451d4bff10f5a1ab3eb40ed22cfa6453ef45..54ccae0767ba1f67c110d4f3d669f38f2ccf15b0 100644 (file)
@@ -70,8 +70,9 @@ sub init {
  $stat->mk_accessors(qw/name version dist desc uri src license deps
                         eb_name eb_version eb_dir eb_file fetched_arch
                         overlay distdir keywords do_manifest
-                        verbose/);
+                        force verbose/);
 
+ $stat->force($conf->get_conf('force'));
  $stat->verbose($conf->get_conf('verbose'));
 
  return 1;
@@ -130,13 +131,28 @@ sub prepare {
 
  $stat->eb_name($gentooism{$stat->name} || $stat->name);
  $stat->eb_dir(catdir($overlay, $stat->eb_name));
- $stat->eb_file(catfile($stat->eb_dir,
-                        $stat->eb_name . '-' . $stat->eb_version . '.ebuild'));
- if (-r $stat->eb_file) {
-  msg 'Ebuild already generated for ' . $stat->dist . ' -- skipping';
-  $stat->prepared(1);
-  $stat->created(1);
-  return 1;
+
+ my $file = catfile($stat->eb_dir,
+                    $stat->eb_name . '-' . $stat->eb_version . '.ebuild');
+ $stat->eb_file($file);
+
+ if (-e $file) {
+  my $skip = 1;
+  if ($stat->force) {
+   if (-w $file) {
+    1 while unlink $file;
+    $skip = 0;
+   } else {
+    error "Can't force rewriting of $file -- skipping";
+   }
+  } else {
+   msg 'Ebuild already generated for ' . $stat->dist . ' -- skipping';
+  }
+  if ($skip) {
+   $stat->prepared(1);
+   $stat->created(1);
+   return 1;
+  }
  }
 
  $self->SUPER::prepare(%opts);