apt-check: Update the code style
[users/nthykier/lintian-utils.git] / checks / lintnil / apt-check
1 # lintint check script -*- perl -*-
2
3 # Copyright (C) 2013 Niels Thykier <niels@thykier.net>
4 #
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; either version 2 of the License, or
8 # (at your option) any later version.
9 #
10 # This program is distributed in the hope that it will be useful,
11 # but WITHOUT ANY WARRANTY; without even the implied warranty of
12 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13 # GNU General Public License for more details.
14 #
15 # You should have received a copy of the GNU General Public License
16 # along with this program.  If not, you can find it on the World Wide
17 # Web at http://www.gnu.org/copyleft/gpl.html, or write to the Free
18 # Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
19 # MA 02110-1301, USA.
20
21 package Lintian::lintnil::apt_check;
22
23 use strict;
24 use AptPkg::Config '$_config';
25 use AptPkg::System '$_system';
26 use AptPkg::Cache;
27
28 use Lintian::Relation qw(:constants);
29 use Lintian::Tags qw(tag);
30
31 my $APT_CACHE;
32
33 sub run {
34     my (undef, undef, $info, undef, $group) = @_;
35     foreach my $field (qw(pre-depends depends recommends suggests enhances)) {
36         my $relation = $info->relation($field);
37         $relation->visit (sub { check_dependency($field, @_); }, VISIT_PRED_NAME);
38     }
39 }
40
41 sub check_dependency {
42     my ($field, $dependency) = @_;
43     tag 'lintnil-unknown-package-listed-in-relation', $field, $dependency
44         unless defined($APT_CACHE->get($dependency));
45 }
46
47
48 sub _init {
49     $_config->init;
50     $_system = $_config->system;
51     $_config->{quiet} = 2;
52     $APT_CACHE = AptPkg::Cache->new;
53 }
54
55 _init();
56
57 1;