<?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 (Eclipse Foundation)- initial API and implementation
 *******************************************************************************/

header("Content-type: text/plain");

require_once($_SERVER['DOCUMENT_ROOT'] . "/eclipse.org-common/system/app.class.php");
$App = new App();

require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/Project.class.php");
require_once($_SERVER['DOCUMENT_ROOT'] . "/projects/classes/debug.php");
trace_file_info(__FILE__);


if (in_array($_REQUEST['type'], array('cvs', 'svn', 'git')))
	$type = $_REQUEST['type'];
else $type = 'cvs';

$projects = getActiveProjects();

foreach($projects as $project) {
	/* @var $project Project */
	$id = $project->getId();
	if (!$pmi = get_project_from_pmi($id)) continue;
	foreach ($pmi->getSourceRepositories() as $repository) {
		/* @var $repository SourceRepository */
		if ($repository->getType() != $type) continue;
		$path = $repository->getPath();
		
		echo "$id\t$path\n";
	}
}

?>