#!/usr/bin/perl
  #**************************************************************************#
  # phpGroupWare                                                             #
  # http://www.phpgroupware.org                                              #
  # --------------------------------------------                             #
  #  This program is free software; you can redistribute it and/or modify it #
  #  under the terms of the GNU General Public License as published by the   #
  #  Free Software Foundation; either version 2 of the License, or (at your  #
  #  option) any later version.                                              #
  #**************************************************************************#

  # $Id$ #
 
	# versions.pl (c) 2001 Miles Lott
	# Extract and print all app versions, and create a versions.inc.php file.
	# This would be run at each release to generate a tab-delimited listing
	# of appnames and current versions.

	$installdir = '/usr/local/apache/htdocs/phpgroupware/';
	$count = $nover = $ver = $i = 0;
	@info = @versions = ();

	sub get_versions()
	{
		$d = opendir(DIR,$installdir);
		while($entry = readdir(DIR))
		{
			$found = 0;
			$_ = $entry;
			if (/\A.\Z/)
			{
				next;
			}
			if (!(/setup/ || /tmp/))
			{
				$setupdir = $installdir . $entry . '/setup/';
				my $f = $setupdir . 'setup.inc.php';
				if (stat($f))
				{
					open(FILE,$f);
					while(<FILE>)
					{
						$_ =~ s/"/'/g;
						if (/((.*?)version')(.*?)=(.*?)'(.*?)';/)
						{
							$info[$i] = $entry . "\t" . $5 . "\n";
							$found = 1;
							$ver++;
							$count++;
						}
					}
					close FILE;
				}
				if (!$found && stat($setupdir))
				{
					$info[$i] = $entry . "\t0.0.0\n";
					$nover++;
					$count++;
				}
			}
			$i++;
		}
		close DIR;
	}

	get_versions();

	if(@info)
	{
		@versions = sort @info;
		reset(@versions);
		open(OUT,'>' . $installdir. '/setup/versions.inc.php'); 
		for $i (0..$#versions)
		{
			print $versions[$i];
			print OUT $versions[$i];
		}
		close OUT;
		printf('Found %s applications',$count);
		print "\n";
	}
	if ($ver)
	{
		if ($ver != $count)
		{
			printf('%s of these had a valid version string.',$ver);
		}
		else
		{
			print 'All had a valid version string.';
		}
		print "\n";
	}
	if ($nover)
	{
		if ($nover != $count)
		{
			printf('%s of these had no version string.',$nover);
		}
		else
		{
			print 'None had a valid version string.';
		}
		print "\n";
	}

