Просмотр исходного кода

Move handling of default compression method/level to Dpkg::Compression

Dpkg::Compression now provides new functions to get/set the default
compression method and the default compression level. There was no
good reason to have it in Dpkg::Compression::Compressor in the first
place.

Factorize some code to verify validity of what should be a compression
level in new function compression_is_valid_level($level).

dpkg-source has been updated to cope with the changes.
Raphaël Hertzog лет назад: 16
Родитель
Сommit
5706324556
3 измененных файлов с 81 добавлено и 31 удалено
  1. 70 1
      scripts/Dpkg/Compression.pm
  2. 3 21
      scripts/Dpkg/Compression/Compressor.pm
  3. 8 9
      scripts/dpkg-source.pl

+ 70 - 1
scripts/Dpkg/Compression.pm

@@ -17,11 +17,17 @@ package Dpkg::Compression;
 
 use strict;
 use warnings;
+use Dpkg::ErrorHandling;
+use Dpkg::Gettext;
 
 use base qw(Exporter);
 our @EXPORT = qw($compression_re_file_ext compression_get_list
 		 compression_is_supported compression_get_property
-		 compression_guess_from_filename);
+		 compression_guess_from_filename
+		 compression_get_default compression_set_default
+		 compression_get_default_level
+		 compression_set_default_level
+		 compression_is_valid_level);
 
 =head1 NAME
 
@@ -61,6 +67,9 @@ my $COMP = {
     },
 };
 
+our $default_compression = "gzip";
+our $default_compression_level = 9;
+
 =item $compression_re_file_ext
 
 A regex that matches a file extension of a file compressed with one of the
@@ -133,6 +142,66 @@ sub compression_guess_from_filename {
     return undef;
 }
 
+=item my $comp = compression_get_default()
+
+Return the default compression method. It's "gzip" unless
+C<compression_set_default> has been used to change it.
+
+=item compression_set_default($comp)
+
+Change the default compression methode. Errors out if the
+given compression method is not supported.
+
+=cut
+
+sub compression_get_default {
+    return $default_compression;
+}
+
+sub compression_set_default {
+    my ($method) = @_;
+    error(_g("%s is not a supported compression"), $method)
+            unless compression_is_supported($method);
+    $default_compression = $method;
+}
+
+=item my $level = compression_get_default_level()
+
+Return the default compression level used when compressing data. It's "9"
+unless C<compression_set_default_level> has been used to change it.
+
+=item compression_set_default_level($level)
+
+Change the default compression level. Errors out if the
+level is not valid (see C<compression_is_valid_level>).
+either a number between 1 and 9 or "fast"
+or "best".
+
+=cut
+
+sub compression_get_default_level {
+    return $default_compression_level;
+}
+
+sub compression_set_default_level {
+    my ($level) = @_;
+    error(_g("%s is not a compression level"), $level)
+            unless compression_is_valid_level($level);
+    $default_compression_level = $level;
+}
+
+=item compression_is_valid_level($level)
+
+Returns a boolean indicating whether $level is a valid compression level
+(it must be either a number between 1 and 9 or "fast" or "best")
+
+=cut
+
+sub compression_is_valid_level {
+    my ($level) = @_;
+    return $level =~ /^([1-9]|fast|best)$/;
+}
+
 =back
 
 =head1 AUTHOR

+ 3 - 21
scripts/Dpkg/Compression/Compressor.pm

@@ -25,33 +25,15 @@ use Dpkg::ErrorHandling;
 
 use POSIX;
 
-our $default_compression = "gzip";
-our $default_compression_level = 9;
-
-# Class methods
-sub set_default_compression {
-    my ($self, $method) = @_;
-    error(_g("%s is not a supported compression"), $method)
-	    unless compression_is_supported($method);
-    $default_compression = $method;
-}
-
-sub set_default_compression_level {
-    my ($self, $level) = @_;
-    error(_g("%s is not a compression level"), $level)
-	    unless $level =~ /^([1-9]|fast|best)$/;
-    $default_compression_level = $level;
-}
-
 # Object methods
 sub new {
     my ($this, %args) = @_;
     my $class = ref($this) || $this;
     my $self = {};
     bless $self, $class;
-    $self->set_compression($args{"compression"} || $default_compression);
+    $self->set_compression($args{"compression"} || compression_get_default());
     $self->set_compression_level($args{"compression_level"} ||
-	    $default_compression_level);
+	    compression_get_default_level());
     return $self;
 }
 
@@ -65,7 +47,7 @@ sub set_compression {
 sub set_compression_level {
     my ($self, $level) = @_;
     error(_g("%s is not a compression level"), $level)
-	    unless $level =~ /^([1-9]|fast|best)$/;
+	    unless compression_is_valid_level($level);
     $self->{"compression_level"} = $level;
 }
 

+ 8 - 9
scripts/dpkg-source.pl

@@ -42,7 +42,6 @@ use Dpkg::Substvars;
 use Dpkg::Version;
 use Dpkg::Vars;
 use Dpkg::Changelog::Parse;
-use Dpkg::Compression::Compressor;
 use Dpkg::Source::Package;
 use Dpkg::Vendor qw(run_vendor_hook);
 
@@ -58,9 +57,9 @@ my $changelogformat;
 my @build_formats = ("1.0", "3.0 (quilt)", "3.0 (native)");
 my %options = (
     # Compression related
-    compression => $Dpkg::Compression::Compressor::default_compression,
-    comp_level => $Dpkg::Compression::Compressor::default_compression_level,
-    comp_ext => compression_get_property($Dpkg::Compression::Compressor::default_compression, "file_ext"),
+    compression => compression_get_default(),
+    comp_level => compression_get_default_level(),
+    comp_ext => compression_get_property(compression_get_default(), "file_ext"),
     # Ignore files
     tar_ignore => [],
     diff_ignore_regexp => '',
@@ -129,13 +128,13 @@ while (@options) {
 	$options{'comp_ext'} = compression_get_property($compression, "file_ext");
 	usageerr(_g("%s is not a supported compression"), $compression)
 	    unless compression_is_supported($compression);
-	Dpkg::Compression::Compressor->set_default_compression($compression);
+	compression_set_default($compression);
     } elsif (m/^-(?:z|-compression-level=)(.*)$/) {
 	my $comp_level = $1;
 	$options{'comp_level'} = $comp_level;
 	usageerr(_g("%s is not a compression level"), $comp_level)
-	    unless $comp_level =~ /^([1-9]|fast|best)$/;
-	Dpkg::Compression::Compressor->set_default_compression_level($comp_level);
+	    unless compression_is_valid_level($comp_level);
+	compression_set_default_level($comp_level);
     } elsif (m/^-c(.*)$/) {
         $controlfile = $1;
     } elsif (m/^-l(.*)$/) {
@@ -449,8 +448,8 @@ See dpkg-source(1) for more info.") . "\n",
     $progname,
     $Dpkg::Source::Package::diff_ignore_default_regexp,
     join(' ', map { "-I$_" } @Dpkg::Source::Package::tar_ignore_default_pattern),
-    $Dpkg::Compression::Compressor::default_compression,
+    compression_get_default(),
     join(" ", compression_get_list()),
-    $Dpkg::Compression::Compressor::default_compression_level;
+    compression_get_default_level();
 }