File: GenericExecutable.pm

package info (click to toggle)
libcode-tidyall-perl 0.83~ds-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,036 kB
  • sloc: perl: 5,240; lisp: 47; makefile: 2; sh: 1
file content (118 lines) | stat: -rw-r--r-- 2,305 bytes parent folder | download
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
112
113
114
115
116
117
118
package Code::TidyAll::Role::GenericExecutable;

use strict;
use warnings;

use IPC::Run3 qw(run3);
use Specio::Library::Builtins;
use Specio::Library::String;
use Text::ParseWords qw(shellwords);
use Try::Tiny;

use Moo::Role;

with 'Code::TidyAll::Role::RunsCommand';

our $VERSION = '0.83';

has 'cmd' => (
    is       => 'ro',
    required => 1,
);

has file_flag => (
    is        => 'ro',
    isa       => t('NonEmptyStr'),
    predicate => '_has_file_flag',
);

sub _run_generic_executable_or_die {
    my $self = shift;
    my $file = shift;

    my @argv;
    push @argv, $self->file_flag if $self->_has_file_flag;
    push @argv, $file;

    return $self->_run_or_die(@argv);
}

1;

# ABSTRACT: A role for plugins which allow you to use any executable as a transformer or validator

__END__

=pod

=encoding UTF-8

=head1 NAME

Code::TidyAll::Role::GenericExecutable - A role for plugins which allow you to use any executable as a transformer or validator

=head1 VERSION

version 0.83

=head1 SYNOPSIS

    package Whatever;
    use Moo;
    with 'Code::TidyAll::Role::GenericExecutable';

=head1 DESCRIPTION

This role exists for the benefit of the
L<Code::TidyAll::Plugin::GenericTransformer> and
L<Code::TidyAll::Plugin::GenericValidator> plugin classes.

=head1 ATTRIBUTES

=over

=item cmd

This attribute is require for any class which consumes this role.

=item file_flag

If this is set then this flag is used to indicate the file passed to the
command, for example something like C<-f>, C<--file>, or C<--input>. By
default, the file is simply passed as the last argument to the command.

=back

=head1 SUPPORT

Bugs may be submitted at L<https://github.com/houseabsolute/perl-code-tidyall/issues>.

=head1 SOURCE

The source code repository for Code-TidyAll can be found at L<https://github.com/houseabsolute/perl-code-tidyall>.

=head1 AUTHORS

=over 4

=item *

Jonathan Swartz <swartz@pobox.com>

=item *

Dave Rolsky <autarch@urth.org>

=back

=head1 COPYRIGHT AND LICENSE

This software is copyright (c) 2011 - 2022 by Jonathan Swartz.

This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.

The full text of the license can be found in the
F<LICENSE> file included with this distribution.

=cut