diff options
author | Raphaël Hertzog <hertzog@debian.org> | 2010-01-22 16:09:04 +0100 |
---|---|---|
committer | Raphaël Hertzog <hertzog@debian.org> | 2010-01-22 17:50:33 +0100 |
commit | 57063245562d895f14fc2da47a6cb03be9677d06 (patch) | |
tree | 874bbd373da27705846748429386dc467cb0a893 | |
parent | efd281e8723f9e80e65cbdcefb304483c35ad963 (diff) | |
download | dpkg-57063245562d895f14fc2da47a6cb03be9677d06.tar.gz |
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.
-rw-r--r-- | scripts/Dpkg/Compression.pm | 71 | ||||
-rw-r--r-- | scripts/Dpkg/Compression/Compressor.pm | 24 | ||||
-rwxr-xr-x | scripts/dpkg-source.pl | 17 |
3 files changed, 81 insertions, 31 deletions
diff --git a/scripts/Dpkg/Compression.pm b/scripts/Dpkg/Compression.pm index 7c9d16149..d8ab0cde1 100644 --- a/scripts/Dpkg/Compression.pm +++ b/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 diff --git a/scripts/Dpkg/Compression/Compressor.pm b/scripts/Dpkg/Compression/Compressor.pm index 4da35a129..cec3577cf 100644 --- a/scripts/Dpkg/Compression/Compressor.pm +++ b/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; } diff --git a/scripts/dpkg-source.pl b/scripts/dpkg-source.pl index 043238f96..7a7517abc 100755 --- a/scripts/dpkg-source.pl +++ b/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(); } |