/*---------------------------------------------------------------------------------------------
 *  Copyright (c) Microsoft Corporation. All rights reserved.
 *  Licensed under the MIT License. See License.txt in the project root for license information.
 *--------------------------------------------------------------------------------------------*/

var express = require('express');
var glob = require('glob');
var path = require('path');
var fs = require('fs');

var port = 8887;
var root = path.dirname(__dirname);

function template(str, env) {
	return str.replace(/{{\s*([\w_\-]+)\s*}}/g, function (all, part) {
		return env[part];
	});
}

var app = express();

app.use('/out', express.static(path.join(root, 'out')));
app.use('/test', express.static(path.join(root, 'test')));
app.use('/node_modules', express.static(path.join(root, 'node_modules')));

app.get('/', function (req, res) {
	glob('**/vs/{base,platform,editor}/**/test/{common,browser}/**/*.test.js', {
		cwd: path.join(root, 'out'),
		// ignore: ['**/test/{node,electron*}/**/*.js']
	}, function (err, files) {
		if (err) { return res.sendStatus(500); }

		var modules = files
			.map(function (file) { return file.replace(/\.js$/, ''); });

		fs.readFile(path.join(__dirname, 'index.html'), 'utf8', function (err, templateString) {
			if (err) { return res.sendStatus(500); }

			res.send(template(templateString, {
				modules: JSON.stringify(modules)
			}));
		});
	});
});

app.listen(port, function () {
	console.log('http://localhost:8887/');
});