Skip to content

Commit

Permalink
pm run --serve working; Projfile may be used for server config
Browse files Browse the repository at this point in the history
  • Loading branch information
Mario L Gutierrez committed Mar 13, 2013
1 parent ccbbb3f commit d6dbd7c
Show file tree
Hide file tree
Showing 16 changed files with 202 additions and 56 deletions.
10 changes: 4 additions & 6 deletions Projfile.coffee
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
exports.server =
directory: 'dist'
http: 80
https: 443
domain: 'dev.projmate.com'
dirname: 'dist'
httpPort: 8000 #80
httpsPort: 8443

exports.project = (pm) ->
f = pm.filters()
Expand All @@ -12,8 +11,7 @@ exports.project = (pm) ->
# "src/foo/index.js" => "dest/foo/index.js"
setDestination =
filename:
chompLeft: "src"
ensureLeft: "dist"
replace: [/^src/, "dist"]

pm.registerTasks
source:
Expand Down
2 changes: 1 addition & 1 deletion dist/cli/pm-run.js
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ Program.on("--help", function() {
});
});

Program.version(Pkg.version).option("-e, --environment <env>", "Set build environment", "development").option("-f, --projfile <file>", "Set project file", "").option("-w, --watch", "Watch and rerun tasks as needed").option("-s, --serve <dir>", "Runs HTTP/HTTPS server").usage("TASKS [options]").parse(process.argv);
Program.version(Pkg.version).option("-e, --environment <env>", "Set build environment", "development").option("-f, --projfile <file>", "Set project file", "").option("-w, --watch", "Watch and rerun tasks as needed").option("-s, --serve [dir]", "Runs HTTP/HTTPS server").usage("TASKS [options]").parse(process.argv);

if (process.argv.length < 3) {
Program.outputHelp();
Expand Down
24 changes: 19 additions & 5 deletions dist/cli/pm-serve.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,39 @@
* See the file COPYING for copying permission.
*/

var Pkg, Program, Server, main;
var Fs, Pkg, Server, findProjfile, main, program;

Pkg = require("../../package.json");

Program = require("commander");
program = require("commander");

Server = require("../lib/serve/server");

Fs = require("fs");

findProjfile = function() {
var file, files, _i, _len;
files = ['Projfile.js', 'Projfile.coffee'];
for (_i = 0, _len = files.length; _i < _len; _i++) {
file = files[_i];
if (Fs.existsSync(file)) {
return file;
}
}
return null;
};

main = function() {
var ex;
try {
Program.dirname = Program.args[0] || ".";
return Server.run(Program);
program.dirname = program.args[0] || ".";
return Server.run(program);
} catch (_error) {
ex = _error;
return console.error(ex.toString());
}
};

Program.version(Pkg.version).usage("[dirname] [options]").option("-p, --http-port <port>", "HTTP port", 1080).option("-P, --https-port <ssl port>", "HTTPS port", 1443).parse(process.argv);
program.version(Pkg.version).usage("[dirname] [options]").option("-p, --http-port <port>", "HTTP port").option("-P, --https-port <ssl port>", "HTTPS port").parse(process.argv);

main();
27 changes: 18 additions & 9 deletions dist/lib/run/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,38 +35,46 @@ loadProjfile = function(projfilePath) {
};

_run = function(options, executeTasks, cb) {
var program, projfile, projfilePath, runner;
var execArgs, program, projfile, projfilePath, runner;
if (!options.program) {
return cb("Options.program is required");
}
if (!options.projfilePath) {
return cb("Options.projfilePath is required");
}
program = options.program, projfilePath = options.projfilePath;
runner = new Runner({
program: program
});
projfile = loadProjfile(projfilePath);
if (!projfile.project) {
return cb("" + projfilePath + " missing `project` function");
}
runner = new Runner({
program: program,
server: projfile.server
});
execArgs = {
runner: runner,
projfile: projfile,
projfilePath: projfilePath
};
if (projfile.project.length === 1) {
projfile.project(runner);
return executeTasks(runner, projfilePath, cb);
return executeTasks(execArgs, cb);
} else {
return projfile.project(runner, function(err) {
if (err) {
return cb(err);
}
return executeTasks(runner, projfilePath, cb);
return executeTasks(execArgs, cb);
});
}
};

exports.run = function(options, cb) {
var executeTasks, tasks;
tasks = options.program.tasks;
executeTasks = function(runner, projfilePath, cb) {
executeTasks = function(args, cb) {
var projfile, projfilePath, runner;
runner = args.runner, projfile = args.projfile, projfilePath = args.projfilePath;
process.chdir(Path.dirname(projfilePath));
return runner.executeTasks(tasks, cb);
};
Expand All @@ -75,8 +83,9 @@ exports.run = function(options, cb) {

exports.taskDescriptions = function(options, cb) {
var executeTasks;
executeTasks = function(runner, projfilePath, cb) {
var L, desc, name, task, taskDesc, _ref;
executeTasks = function(args, cb) {
var L, desc, name, projfile, projfilePath, runner, task, taskDesc, _ref;
runner = args.runner, projfile = args.projfile, projfilePath = args.projfilePath;
desc = [];
L = 0;
for (name in runner.tasks) {
Expand Down
37 changes: 27 additions & 10 deletions dist/lib/run/runner.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* See the file COPYING for copying permission.
*/

var Async, FilterCollection, Logger, Path, Runner, Sex, Task, Util, log, _,
var Async, FilterCollection, Logger, Path, Runner, Server, Shell, Task, Util, log, _,
__bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },
__slice = [].slice;

Expand All @@ -16,14 +16,16 @@ Logger = require("../common/logger");

Path = require("path");

Sex = require("projmate-shell");
Shell = require("projmate-shell");

Task = require("./task");

Util = require("util");

_ = require("lodash");

Server = require("../serve/server");

log = Logger.getLogger("runner");

Runner = (function() {
Expand All @@ -35,6 +37,7 @@ Runner = (function() {
PROJMATE.encoding = "utf8";
this.tasks = {};
this.program = this.options.program;
this.server = this.options.server;
}

Runner.prototype.filters = function() {
Expand All @@ -55,7 +58,7 @@ Runner = (function() {

Runner.prototype.shell = function(shellOptions) {
this.shellOptions = shellOptions != null ? shellOptions : {};
return Sex;
return Shell;
};

Runner.prototype.registerTasks = function(tasksDef) {
Expand Down Expand Up @@ -95,17 +98,31 @@ Runner = (function() {
return task.execute(cb);
}
}, function(err) {
var dirname, serve, serveOptions, serverConfig;
if (err) {
log.error(err);
log.error("FAIL");
} else {
if (!that.program.watch) {
log.info("OK");
}
if (that.program.serve) {
Server.serve({
dirname: that.program.serve
});
serve = that.program.serve;
serverConfig = that.server;
if (serve) {
dirname = serve;
if (dirname.length > 0) {
serveOptions = {
dirname: dirname
};
} else if (serverConfig) {
serveOptions = serverConfig;
} else {
serveOptions = {
dirname: "."
};
}
Server.run(serveOptions);
} else {
if (!that.program.watch) {
log.info("OK");
}
}
}
return cb(err);
Expand Down
2 changes: 0 additions & 2 deletions dist/lib/run/task.js
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,10 @@ Task = (function() {
if (Array.isArray(pipeline)) {
if (load) {
if (!(pipeline[0] instanceof this.filters.loadFiles)) {
this.log.debug("PREPENDING loadFiles");
pipeline.unshift(this.filters.loadFiles);
}
} else {
if (!(pipeline[0] instanceof this.filters.loadFilenames)) {
this.log.debug("PREPENDING loadFilenames");
pipeline.unshift(this.filters.loadFilenames);
}
}
Expand Down
33 changes: 30 additions & 3 deletions dist/lib/serve/server.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
* See the file COPYING for copying permission.
*/

var Fs, Http, Https, Path, S, connect, log;
var Fs, Http, Https, Path, S, connect, log, readLocalProjfile, _;

Fs = require("fs");

Expand All @@ -16,26 +16,53 @@ Path = require("path");

S = require("string");

_ = require("lodash");

connect = require("connect");

log = require("../common/logger").getLogger("server");

process.on("uncaughtException", function(err) {
var message;
message = err;
if (err.stack(message = err.stack)) {
if (err.stack) {
message = err.stack;
}
return log.error("Uncaught exception", message);
});

readLocalProjfile = function(dirname) {
var file, files, modu, projfilePath, _i, _len;
files = ['Projfile.js', 'Projfile.coffee'];
for (_i = 0, _len = files.length; _i < _len; _i++) {
file = files[_i];
projfilePath = Path.join(dirname, file);
if (Fs.existsSync(projfilePath)) {
if (file.match(/coffee$/)) {
require('coffee-script');
}
modu = require(projfilePath);
console.log("modul", modu);
if (modu.server) {
return modu.server;
}
}
}
return {};
};

exports.run = function(options) {
var dirname, dname, httpDomain, httpPort, httpsConfig, httpsDomain, httpsPort, server;
var dirname, dname, httpDomain, httpPort, httpsConfig, httpsDomain, httpsPort, projfile, server;
dirname = options.dirname;
if (!dirname) {
throw new Error("options.dirname is required");
}
dirname = Path.resolve(dirname);
projfile = readLocalProjfile(dirname);
options = _.defaults(options, projfile);
if (projfile.dirname) {
dirname = projfile.dirname;
}
httpPort = options.httpPort || 1080;
httpsPort = options.httpsPort || 1443;
server = connect();
Expand Down
14 changes: 14 additions & 0 deletions dist/test/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
/**
* Copyright (c) 2013 Mario Gutierrez <mario@projmate.com>
*
* See the file COPYING for copying permission.
*/

<html>
<head></head>
<body>
<div>
FOOBAR!
</div>
</body>
</html>
4 changes: 3 additions & 1 deletion src/cli/pm-run.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,9 @@ run = ->
catch e
log.error e


# Gets task descriptions from project file
#
taskDescriptions = (cb) ->
try
projfilePath = findProjfile()
Expand All @@ -68,7 +70,7 @@ Program
.option("-e, --environment <env>", "Set build environment", "development")
.option("-f, --projfile <file>", "Set project file", "")
.option("-w, --watch", "Watch and rerun tasks as needed")
.option("-s, --serve <dir>", "Runs HTTP/HTTPS server")
.option("-s, --serve [dir]", "Runs HTTP/HTTPS server")
.usage("TASKS [options]")
.parse(process.argv)

Expand Down
27 changes: 20 additions & 7 deletions src/cli/pm-serve.coffee
Original file line number Diff line number Diff line change
@@ -1,22 +1,35 @@
Pkg = require("../../package.json")
Program = require("commander")
program = require("commander")
Server = require("../lib/serve/server")
Fs = require("fs")

findProjfile = ->
files = ['Projfile.js', 'Projfile.coffee']
for file in files
if Fs.existsSync(file)
return file
null

# Runs the server

# Runs the server.
#
main = ->
try
Program.dirname = Program.args[0] || "."
Server.run Program
program.dirname = program.args[0] || "."
Server.run program
catch ex
console.error ex.toString()

Program

# Configure command line options.
#
program
.version(Pkg.version)
.usage("[dirname] [options]")
.option("-p, --http-port <port>", "HTTP port", 1080)
.option("-P, --https-port <ssl port>", "HTTPS port", 1443)
.option("-p, --http-port <port>", "HTTP port")
.option("-P, --https-port <ssl port>", "HTTPS port")
.parse(process.argv)


main()

2 changes: 2 additions & 0 deletions src/lib/common/utils.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -143,4 +143,6 @@ Utils =
else
throw new Error("path: " + start + " is not a directory")



module.exports = Utils
1 change: 1 addition & 0 deletions src/lib/run/filter.coffee
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ Util = require("util")
_ = require("lodash")
S = require("string")


##
# A filter participates with one or more filters, creating a pipeline, through which
# a buffer is transformed by each filter.
Expand Down
Loading

0 comments on commit d6dbd7c

Please sign in to comment.