From 10afa7f61593c6ee82f7256c5dfa29104ba19e52 Mon Sep 17 00:00:00 2001 From: Romain d'Alverny Date: Fri, 17 Feb 2012 17:53:21 +0000 Subject: New Isocheck module to replace Tools + working tests Code improved thx to misc, boklm, tv and guillomovitch. --- Isocheck.pm | 90 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 90 insertions(+) create mode 100644 Isocheck.pm (limited to 'Isocheck.pm') diff --git a/Isocheck.pm b/Isocheck.pm new file mode 100644 index 0000000..fe0b85b --- /dev/null +++ b/Isocheck.pm @@ -0,0 +1,90 @@ +# This file is part of the Mageia project +# +# Copyright (C) 2011 Damien Lallement +# (C) 2011 Romain d'Alverny +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Library General Public +# License as published by the Free Software Foundation; either +# version 2 of the License, or (at your option) any later version. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Library General Public License for more details. +# +# You should have received a copy of the GNU Library General Public License +# along with this library; see the file COPYING.LIB. If not, write to +# the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +# Boston, MA 02110-1301, USA. +# + +=head1 NAME + + Isocheck - miscellaneous functions + +=head1 SYNOPSIS + + use Isocheck; + +=head1 EXPORTS + +=over + +=item parse_image_file_name(STRING) + +return a populated hash if param is a valid image file name +(see https://wiki.mageia.org/en/Product_naming ). + +return empty hash if invalid. + +=back + +=cut + +package Isocheck; + +use strict; +use warnings; + +our $VERSION = '0.2.0'; + +use base 'Exporter'; + +our @EXPORT = qw(parse_image_file_name); + +sub parse_image_file_name { + my ($name) = @_; + + return unless $name =~ m/^ + ( + (\w+) # name + - + (\d+) # version + (?:-((?:nightly|alpha|beta|RC)\d*))? # release + (?:-(.+))? # variant + - + (i586|x86_64|dual) # arch + (?:-(CD|DVD|BR))? # medium + (?:-(build_\w+))? # build + ) + \. + (\w+) # extension + $/x; + + my %info = ( + full => $1, + name => $2, + version => $3, + defined $4 ? (release => $4) : (), + defined $5 ? (variant => $5) : (), + arch => $6, + defined $7 ? (medium => $7) : (), + defined $8 ? (build => $8) : (), + ext => $9 + ); + + return %info; +} + +1; \ No newline at end of file -- cgit v1.2.1