aboutsummaryrefslogtreecommitdiffstats
path: root/Isocheck.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Isocheck.pm')
-rw-r--r--Isocheck.pm90
1 files changed, 90 insertions, 0 deletions
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 <dams@mageia.org>
+# (C) 2011 Romain d'Alverny <rda@mageia.org>
+#
+# 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