#!/usr/bin/perl use warnings; use strict; #################################################### # makemodule.pl, (C) 2017. GNU GPL 3. # # After the process, there should # be a .tar.gz in this directory. # # Use "makemodule.pl clean" to clean up. #################################################### use Cwd; my $version="1.00"; my $modulename = "Your::Module::Name"; my $authorname = "Max Mustermann"; my $authoremail = "Max Mustermann@...de"; my %required = ("Name.pm" => "libdir", "README" => "exampledir", "examples" => "exampledir"); sub getDestination { my $deststr = shift; my $libdir = shift; my $exampledir = shift; if ($deststr eq "libdir") { return $libdir; } if ($deststr eq "exampledir") { return $exampledir; } } sub cleanUp { my $exampledir = shift; my $versiondir = shift; my $tarfile = shift; if (-d $exampledir ) { # system("rm -r $exampledir"); } if (-d $versiondir ) { # system("rm -r $versiondir"); } if (-e $tarfile) { # system("rm $tarfile"); } } sub checkForExistence { my $fname = shift; if (! -e $fname) { print "\nFile or directory '$fname' not found in this directory. Aborting.\n\n"; exit; } } my $basedir = getcwd(); my $i; my @modulenameparts = split(/\:\:/, $modulename); my $temp = join("-", @modulenameparts); my $exampledir = "$basedir/$temp"; my $tarname .= "$temp-$version.tar.gz"; my $versiondirname="$temp-$version"; my $libdir="$exampledir/lib/"; for $i (0 .. $#modulenameparts - 1) { $libdir .= $modulenameparts[$i]; $libdir .= "/"; } my $versiondir="$basedir/$versiondirname"; my $tarfile="$basedir/$tarname"; my $execstr; for $i (keys(%required)) { $required{$i} = getDestination($required{$i}, $libdir, $exampledir); } if ($#ARGV >= 0 && $ARGV[0] eq "clean") { cleanUp($exampledir, $versiondir, $tarfile); exit; } for $i (keys(%required)) { checkForExistence($i); } cleanUp($exampledir, $versiondir, $tarfile); $execstr = "module-starter --module=\""; $execstr .= "$modulename\" --author=\"$authorname\" --email=\"$authoremail\""; system($execstr); for $i (keys(%required)) { $execstr = "cp -rv "; $execstr .= "$basedir/$i "; $execstr .= "\"$required{$i}\""; system($execstr); } system("mv \"$exampledir\" \"$versiondir\""); system("tar -czvf \"$tarname\" \"$versiondirname\"");