File: fix.pm

package info (click to toggle)
cme 1.044-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 392 kB
  • sloc: perl: 1,301; makefile: 19; sh: 9
file content (111 lines) | stat: -rw-r--r-- 2,403 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
# ABSTRACT: Fix the configuration of an application

package App::Cme::Command::fix ;

use strict;
use warnings;
use 5.10.1;

use App::Cme -command ;

use base qw/App::Cme::Common/;

sub validate_args {
    my ($self, $opt, $args) = @_;
    $self->check_unknown_args($args);
    $self->process_args($opt,$args);
    return;
}

sub opt_spec {
    my ( $class, $app ) = @_;
    return ( 
        [ "from=s@"  => "fix only a subset of a configuration tree" ],
        [ "filter=s" => "pattern to select the element name to be fixed"],
        $class->cme_global_options,
    );
}

sub usage_desc {
  my ($self) = @_;
  my $desc = $self->SUPER::usage_desc; # "%c COMMAND %o"
  return "$desc [application] [ file ]";
}

sub description {
    my ($self) = @_;
    return $self->get_documentation;
}

sub execute {
    my ($self, $opt, $args) = @_;

    my ($model, $inst, $root) = $self->init_cme($opt,$args);

    my @fix_from = $opt->{from} ? @{$opt->{from}} : ('') ;

    foreach my $path (@fix_from) {
        my $node_to_fix = $inst->config_root->grab($path);
        my $msg = "cme: running fix on ".$inst->name." configuration";
        $msg .= "from node ". $node_to_fix->name if $path;
        say $msg. "..." if $opt->{verbose};
        $node_to_fix->apply_fixes($opt->{fix_filter});
    }

    $self->save($inst,$opt) ;
    return;
}

1;

__END__

=head1 SYNOPSIS

  # fix dpkg (this example requires Config::Model::Dpkg)
  cme fix dpkg

=head1 DESCRIPTION

Checks the content of the configuration file of an application (and
show warnings if needed), update deprecated parameters (old value are
saved to new parameters) and fix warnings are fixed. The configuration
is saved if anything was changed. If no changes are done, the file is
not saved.

=head1 Common options

See L<cme/"Global Options">.

=head1 options

=over 

=item from

Use option C<-from> to fix only a subset of a configuration tree. Example:

 cme fix dpkg -from 'control binary:foo Depends'

This option can be repeated:

 cme fix dpkg -from 'control binary:foo Depends' -from 'control source Build-Depends'

=item filter

Filter the leaf according to a pattern. The pattern is applied to the element name to be fixed
Example:

 cme fix dpkg -from control -filter Build # will fix all Build-Depends and Build-Depend-Indep

or 

 cme fix dpkg -filter Depend

=back

=head1 SEE ALSO

L<cme>, L<App::Cme::Command::migrate>

=cut