Viewing file: make_archive.pl (2.95 KB) -rwxr-xr-x Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#!/usr/bin/perl # # This all could (maybe) be done in a shell script, but I suck at those.
$i = 0; $Verbose = 0; $Plugin = ""; $Version = ""; $SMVersion = "";
foreach $arg (@ARGV) { if ($arg eq "-v") { $Verbose = 1; } elsif ($Plugin eq "") { $Plugin = $arg; } elsif ($Version eq "") { $Version = $arg; } elsif ($SMVersion eq "") { $SMVersion = $arg; } else { print "Unrecognized argument: $arg\n"; exit(0); } }
if ($SMVersion eq "") { print "Syntax: make_archive.pl [-v] plugin_name version sm_version\n"; print "-v = be verbose\n"; print "plugin_name: The name of the plugin\n"; print "version: The plugin's version number (1.0, 2.3, etc)\n"; print "sm_version: The oldest version of SquirrelMail that this\n"; print " plugin is for sure compatible with (1.0.1, 0.5, 1.1.0, etc)\n"; exit(0); }
print "Validating name and version\n" if ($Verbose); $Plugin =~ s/\///g; if ($Plugin =~ /[^a-z_]/) { print "Plugin name can only contain a-z and _\n"; exit(0); } if ($Version =~ /[^\.0-9]/ || $SMVersion =~ /[^\.0-9]/) { print "Version numbers can only have 0-9 and period\n"; exit(0); }
VerifyPluginDir($Plugin);
print "Getting file list.\n" if ($Verbose); @Files = RecurseDir($Plugin);
$QuietString = " > /dev/null 2> /dev/null" if (! $Verbose);
print "\n\n" if ($Verbose); print "Creating $Plugin.$Version-$SMVersion.tar.gz\n"; system("tar cvfz $Plugin.$Version-$SMVersion.tar.gz $Plugin" . FindTarExcludes(@Files) . $QuietString);
#print "\n\n" if ($Verbose); #print "Creating $Plugin.$Version-$SMVersion.zip\n"; #system("zip -r $Plugin.$Version-$SMVersion.zip $Plugin/" . # FindZipExcludes(@Files) . $QuietString);
sub VerifyPluginDir { local ($Plugin) = @_;
if (! -e $Plugin && ! -d $Plugin) { print "The $Plugin directory doesn't exist, " . "or else it is not a directory.\n"; exit(0); } }
sub FindTarExcludes { local (@Files) = @_;
$ExcludeStr = "";
foreach $File (@Files) { if ($File =~ /^(.*\/CVS)\/$/) { $ExcludeStr .= " --exclude $1"; } }
return $ExcludeStr; }
sub FindZipExcludes { local (@Files) = @_;
$ExcludeStr = "";
foreach $File (@Files) { if ($File =~ /^(.*\/CVS)\/$/) { $ExcludeStr .= " $1/ $1/*"; } }
if ($ExcludeStr ne "") { $ExcludeStr = " -x" . $ExcludeStr; }
return $ExcludeStr; }
sub RecurseDir { local ($Dir) = @_; local (@Files, @Results);
opendir(DIR, $Dir); @Files = readdir(DIR); closedir(DIR);
@Results = ("$Dir/");
foreach $file (@Files) { next if ($file =~ /^[\.]+/); if (-d "$Dir/$file") { push (@Results, RecurseDir("$Dir/$file")); } else { push (@Results, "$Dir/$file"); } }
return @Results; }
|