NAME
WWW::AUR::PKGBUILD - Parse PKGBUILD files created for makepkg
SYNOPSIS
use
WWW::AUR::PKGBUILD;
# Read a PKGBUILD from a file handle...
open
my
$fh
,
'<'
,
'PKGBUILD'
or
die
"open: $!"
;
my
$pb
= WWW::AUR::PKGBUILD->new(
$fh
);
close
$fh
;
# Or read from text
my
$pbtext
=
do
{
local
(
@ARGV
, $/) =
'PKGBUILD'
; <> };
my
$pbobj
= WWW::AUR::PKGBUILD->new(
$pbtext
);
my
%pb
=
$pbobj
->fields();
# Array fields are converted into arrayrefs...
my
$deps
=
join
q{, }
, @{
$pb
{depends} };
my
%pb
=
$pb
->fields();
<<"END_PKGBUILD";
pkgname = $pb{pkgname}
pkgver = $pb{pkgver}
pkgdesc = $pb{pkgdesc}
depends = $deps
END_PKGBUILD
# There are also method accessors for all fields
DESCRIPTION
This class reads the text contents of a PKGBUILD file and does some primitive parsing. PKGBUILD fields (ie pkgname, pkgver, pkgdesc) are extracted into a hash. Bash arrays are extracted into an arrayref (ie depends, makedepends, source).
Remember, bash is more lenient about using arrays than perl is. Bash treats one-element arrays the same as non-array parameters and vice-versa. Perl doesn't. I might use a module to copy bash's behavior later on.
CONSTRUCTOR
$OBJ
= WWW::AUR::PKGBUILD->new(
$PBTEXT
|
$PBFILE
);
All this does is create a new WWW::AUR::PKGBUILD object and then call the "read" method with the provided arguments.
$PBTEXT
-
A scalar containing the text of a PKGBUILD file.
$PBFILE
-
A filehandle of an open PKGBUILD file.
METHODS
fields
%PBFIELDS
=
$OBJ
->fields();
%PBFIELDS
-
The fields and values of the PKGBUILD. Bash arrays (those values defined with parenthesis around them) are converted to array references.
read
%PBFIELDS
=
$OBJ
->
read
(
$PBTEXT
|
$PBFILE
);
$PBTEXT
-
A scalar containing the text of a PKGBUILD file.
$PBFILE
-
A filehandle of an open PKGBUILD file.
%PBFIELDS
-
The fields and values of the PKGBUILD. Bash arrays (those values defined with parenthesis around them) are converted to array references.
PKGBUILD Field Accessors
undef
|
$TEXT
|
$AREF
= (
$OBJ
->pkgname |
$OBJ
->pkgver |
$OBJ
->pkgdesc |
$OBJ
->url |
$OBJ
->license |
$OBJ
->install |
$OBJ
->changelog |
$OBJ
->source |
$OBJ
->noextract |
$OBJ
->md5sums |
$OBJ
->sha1sums |
$OBJ
->sha256sums |
$OBJ
->sha384sums |
$OBJ
->sha512sums |
$OBJ
->groups |
$OBJ
->arch |
$OBJ
->backup |
$OBJ
->depends |
$OBJ
->makedepends |
$OBJ
->optdepends |
$OBJ
->conflicts |
$OBJ
->provides |
$OBJ
->replaces |
$OBJ
->options )
Each standard field of a PKGBUILD can be accessed by using one of these accessors. The "fields" method returns a hashref containing ALL bash variables defined globally.
undef
-
If the field was not defined in the PKGBUILD undef is returned.
$TEXT
-
If a field is defined but is not a bash array it is returned as a scalar text value.
$AREF
-
If a field is defined as a bash array (with parenthesis) it is returned as an array reference.
SEE ALSO
AUTHOR
Justin Davis, <juster at cpan dot org>
BUGS
Please email me any bugs you find. I will try to fix them as quick as I can.
SUPPORT
Send me an email if you have any questions or need help.
LICENSE AND COPYRIGHT
Copyright 2014 Justin Davis.
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.