From b90cef3cbb5deca63318d0e1762b8a894cccc917 Mon Sep 17 00:00:00 2001 From: Rob Ellis Date: Tue, 14 Jan 2014 15:26:24 -0800 Subject: [PATCH] Fixes for GH-195 / GH-27 --- lib/middleware.js | 74 ++++++++++++++++------------------------ lib/templates/index.jade | 2 +- 2 files changed, 31 insertions(+), 45 deletions(-) diff --git a/lib/middleware.js b/lib/middleware.js index 870f875d..cad02af9 100644 --- a/lib/middleware.js +++ b/lib/middleware.js @@ -42,43 +42,37 @@ exports.notMultihostURL = function(req, rsp, next){ exports.index = function(dirPath){ return function(req, rsp, next){ - var host = req.headers.host - var hostname = host.split(':')[0] - var arr = hostname.split(".") - var port = host.split(':')[1] ? ':' + host.split(':')[1] : '' + var host = req.headers.host; + var hostname = host.split(':')[0]; + var arr = hostname.split("."); + var port = host.split(':')[1] ? ':' + host.split(':')[1] : ''; + var poly = polymer.root(__dirname + "/templates"); if(arr.length == 2){ fs.readdir(dirPath, function(err, files){ - var projects = [] + var projects = []; files.forEach(function(file){ - if(file.split(".").length == 3){ - - var portal = file.split('.') - portal.shift() - - var local = file.split('.') - local.pop() - local.pop() - local.push(host) + var local = file.split('.'); + var appPart = local.shift(); + // DOT files are ignored. + if (file[0] !== ".") { projects.push({ "name" : file, - "localUrl" : 'http://' + local.join('.'), - "remoteUrl" : 'http://' + file, - "portalUrl" : 'http://' + portal.join('.') + '/apps/' + file, + "localUrl" : 'http://' + appPart + "." + host, "localPath" : path.resolve(dirPath, file) - }) + }); } - }) - var poly = polymer.root(__dirname + "/templates") + }); + poly.render("index.jade", { pkg: pkg, projects: projects, layout: "_layout.jade" }, function(error, body){ rsp.end(body) - }) + }); }) - }else{ - next() + } else { + next(); } } @@ -86,36 +80,28 @@ exports.index = function(dirPath){ exports.hostProjectFinder = function(dirPath){ return function(req, rsp, next){ - var host = req.headers.host - var hostname = host.split(':')[0] - var matches = [] + var host = req.headers.host; + var hostname = host.split(':')[0]; + var matches = []; fs.readdir(dirPath, function(err, files){ + var appPart = hostname.split(".")[0]; - [".io", ".me"].forEach(function(ext){ - var val = hostname.replace(/\.\w+$/, ext) - if(files.indexOf(val) !== -1){ - matches.push(val) + files.forEach(function(file){ + var fp = file.split('.'); + if (appPart == fp[0]) { + matches.push(file); } - }) - - ;[".harpapp.io"].forEach(function(ext){ - var val = hostname.replace(/\.\w+\.\w+$/, ext) - if(files.indexOf(val) !== -1){ - matches.push(val) - } - }) + }); if(matches.length > 0){ - req.projectPath = path.resolve(dirPath, matches[0]) - next() - }else{ - // TODO: add better error message here + req.projectPath = path.resolve(dirPath, matches[0]); + next(); + } else { rsp.end("Cannot find project") } - }) - + }); } } diff --git a/lib/templates/index.jade b/lib/templates/index.jade index 15e8c188..2e3eb6d2 100644 --- a/lib/templates/index.jade +++ b/lib/templates/index.jade @@ -5,7 +5,7 @@ if projects == "" p You have no apps yet, but you are ready to create one! p Inside your apps directory, run harp init myproject and then harp server myproject. else - h2 Your apps + h2 Your apps: ul.projects for project in projects li