Commit | Line | Data |
a6c29f38 |
1 | package # hide from PAUSE |
2 | DBIx::Class::Admin::Usage; |
3 | |
4 | |
5 | use base 'Getopt::Long::Descriptive::Usage'; |
6 | |
7 | use base 'Class::Accessor::Grouped'; |
8 | |
9 | use Class::C3; |
10 | |
11 | __PACKAGE__->mk_group_accessors('simple', 'synopsis', 'short_description'); |
12 | |
13 | sub prog_name { |
14 | Getopt::Long::Descriptive::prog_name(); |
15 | } |
16 | |
17 | sub set_simple { |
18 | my ($self,$field, $value) = @_; |
19 | my $prog_name = prog_name(); |
20 | $value =~ s/%c/$prog_name/g; |
21 | $self->next::method($field, $value); |
22 | } |
23 | |
24 | |
25 | =head2 pod |
26 | |
27 | This returns the usage formated as a pod document |
28 | |
29 | =cut |
30 | |
31 | |
32 | sub pod { |
33 | my ($self) = @_; |
34 | return join qq{\n}, $self->pod_leader_text, $self->pod_option_text; |
35 | } |
36 | |
37 | sub pod_leader_text { |
38 | my ($self) = @_; |
39 | |
40 | return qq{=head1 NAME\n\n}.prog_name()." - ".$self->short_description().qq{\n\n}. |
41 | qq{=head1 SYNOPSIS\n\n}.$self->leader_text().qq{\n}.$self->synopsis().qq{\n\n}; |
42 | |
43 | } |
44 | |
45 | |
46 | sub pod_option_text { |
47 | my ($self) = @_; |
48 | my @options = @{ $self->{options} || [] }; |
49 | my $string = q{}; |
50 | return $string unless @options; |
51 | |
52 | $string .= "=head1 OPTIONS\n\n=over\n\n"; |
53 | |
54 | foreach my $opt (@options) { |
55 | my $spec = $opt->{spec}; |
56 | my $desc = $opt->{desc}; |
57 | if ($desc eq 'spacer') { |
58 | $string .= "=back\n\n=head2 $spec\n\n=cut\n\n=over\n\n"; |
59 | next; |
60 | } |
61 | |
62 | $spec = Getopt::Long::Descriptive->_strip_assignment($spec); |
63 | $string .= "=item " . join " or ", map { length > 1 ? "B<--$_>" : "B<-$_>" } |
64 | split /\|/, $spec; |
65 | $string .= "\n\n$desc\n\n=cut\n\n"; |
66 | |
67 | } |
68 | $string .= "=back\n\n"; |
69 | return $string; |
70 | } |
71 | |
72 | 1; |