#!/usr/bin/php
<?php 	
/*******************************************************************************
 * Copyright (c) 2011 Eclipse Foundation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *   Wayne Beaton - initial API and implementation
 *******************************************************************************/

/**
 * This script generates the bash code needed to run an analysis of the
 * downloads server. It generates one file for each project that can be identified
 * on the download server.
 * 
 * Example usage:
 * 
 *  php /home/data/users/wbeaton/git/org.eclipse.dash.dashboard/downloads/scan_all.php | nohup nice bash &
 *  
 * This script is currently run every Friday afternoon on the build server
 * in a crontab job created and managed by wbeaton. 
 */
require_once (dirname(__FILE__) . '/classes/functions.php');
require_once (dirname(__FILE__) . '/classes/debug.php');
trace_file_info(__FILE__);

$tmp = "/tmp";
$home = "/home/data/users/wbeaton/git/org.eclipse.dash.dashboard/downloads";
$findjars = "$home/findjars.sh";
/*
 * Add a grep pipe to the scan command to strip comments
 * For reasons I don't understand, the output files are being 
 * generated with '#!/usr/bin/php" on the first line.
 */
$scan = "php $home/scan.php | grep -v ^#";

$output = "/home/data/httpd/writable/projects/ip-scans";

echo "echo \"# Project/Directory mapping\" > $output/mapping.txt\n";
parseProjects("gatherDirectories", "doNothing");
foreach($map as $project => $directories) {
	$file = "$tmp/$project-list.txt";
	echo "echo -e '# File listing for $project.\\n' > $file\n";
	foreach ($directories as $directory) {
		echo "$findjars $directory >> $file \n";
		echo "echo \"$project, $directory\" >> $output/mapping.txt\n";
	}
	echo "cat $file | $scan > $output/$project.xml\n";
	echo "rm $file\n";
	
}

function gatherDirectories($project, $path) {
	if (!file_exists($path)) return;
	global $map;
	
	$map[$project][] = $path;
}

function doNothing($project, $namespace) {
}

?>