summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRaphaël Hertzog <hertzog@debian.org>2010-01-22 16:09:04 +0100
committerRaphaël Hertzog <hertzog@debian.org>2010-01-22 17:50:33 +0100
commit57063245562d895f14fc2da47a6cb03be9677d06 (patch)
tree874bbd373da27705846748429386dc467cb0a893
parentefd281e8723f9e80e65cbdcefb304483c35ad963 (diff)
downloaddpkg-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.pm71
-rw-r--r--scripts/Dpkg/Compression/Compressor.pm24
-rwxr-xr-xscripts/dpkg-source.pl17
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();
}