c9-core/plugins/c9.vfs.server/vfs.connect.local.js

69 wiersze
2.1 KiB
JavaScript

define(function(require, exports, module) {
"use strict";
main.consumes = ["Plugin"];
main.provides = ["vfs.connect"];
return main;
function main(options, imports, register) {
var Plugin = imports.Plugin;
var Vfs = require("./vfs");
var localFs = require("vfs-local");
var join = require("path").join;
/***** Initialization *****/
var plugin = new Plugin("Ajax.org", main.consumes);
/***** Methods *****/
function connect(user, pid, callback) {
var vfsOptions = {
root: "/",
metapath: join(options.settingDir, "/metadata"),
wsmetapath: join(options.settingDir, "/metadata/workspace"),
local: false,
readOnly: false,
debug: options.debug,
homeDir: process.env.HOME,
projectDir: options.workspaceDir,
nakBin: options.nakBin || join(options.installPath, "/node_modules/.bin/nak"),
nodeBin: options.nodeBin,
tmuxBin: options.tmuxBin
};
for (var key in options.vfs)
vfsOptions[key] = options.vfs[key];
var master = {
destroy: function() {},
disconnect: function() {},
on: function() {},
removeListener: function() {}
};
callback(null, new Vfs(localFs(vfsOptions), master, {
debug: options.debug || false,
homeDir: vfsOptions.homeDir,
projectDir: vfsOptions.projectDir,
extendDirectory: options.extendDirectory,
extendOptions: options.extendOptions,
vfsOptions: vfsOptions,
public: true
}));
return function cancel() {};
}
/***** Register and define API *****/
plugin.freezePublicAPI({
connect: connect
});
register(null, {
"vfs.connect": plugin
});
}
});