123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- #!/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;
- }
|