code-server
Version:
Run VS Code on a remote server.
3 lines (2 loc) • 5.74 kB
JavaScript
"use strict";var y=Object.create;var c=Object.defineProperty;var E=Object.getOwnPropertyDescriptor;var J=Object.getOwnPropertyNames;var O=Object.getPrototypeOf,L=Object.prototype.hasOwnProperty;var z=(t,e)=>{for(var s in e)c(t,s,{get:e[s],enumerable:!0})},j=(t,e,s,o)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of J(e))!L.call(t,r)&&r!==s&&c(t,r,{get:()=>e[r],enumerable:!(o=E(e,r))||o.enumerable});return t};var u=(t,e,s)=>(s=t!=null?y(O(t)):{},j(e||!t||!t.__esModule?c(s,"default",{value:t,enumerable:!0}):s,t)),N=t=>j(c({},"__esModule",{value:!0}),t);var I={};z(I,{activate:()=>q,deactivate:()=>H});module.exports=N(I);var d=u(require("path")),C=u(require("fs")),W=u(require("child_process")),i=u(require("vscode"));function p(t){return new Promise((e,s)=>{C.exists(t,o=>{e(o)})})}function A(t,e){return new Promise((s,o)=>{W.exec(t,e,(r,n,a)=>{r&&o({error:r,stdout:n,stderr:a}),s({stdout:n,stderr:a})})})}var G=["build","compile","watch"];function M(t){for(let e of G)if(t.indexOf(e)!==-1)return!0;return!1}var $=["test"];function B(t){for(let e of $)if(t.indexOf(e)!==-1)return!0;return!1}var m;function g(){return m||(m=i.window.createOutputChannel("Jake Auto Detection")),m}function F(){i.window.showWarningMessage(i.l10n.t("Problem finding jake tasks. See the output for more information."),i.l10n.t("Go to output")).then(()=>{g().show(!0)})}async function x(t){let e,s=process.platform;return s==="win32"&&await p(d.join(t,"node_modules",".bin","jake.cmd"))?e=d.join(".","node_modules",".bin","jake.cmd"):(s==="linux"||s==="darwin")&&await p(d.join(t,"node_modules",".bin","jake"))?e=d.join(".","node_modules",".bin","jake"):e="jake",e}var l=class{constructor(e,s){this._workspaceFolder=e;this._jakeCommand=s}fileWatcher;promise;get workspaceFolder(){return this._workspaceFolder}isEnabled(){return i.workspace.getConfiguration("jake",this._workspaceFolder.uri).get("autoDetect")==="on"}start(){let e=d.join(this._workspaceFolder.uri.fsPath,"{node_modules,Jakefile,Jakefile.js}");this.fileWatcher=i.workspace.createFileSystemWatcher(e),this.fileWatcher.onDidChange(()=>this.promise=void 0),this.fileWatcher.onDidCreate(()=>this.promise=void 0),this.fileWatcher.onDidDelete(()=>this.promise=void 0)}async getTasks(){return this.isEnabled()?(this.promise||(this.promise=this.computeTasks()),this.promise):[]}async getTask(e){let s=e.definition.task;if(s){let o=e.definition,r={cwd:this.workspaceFolder.uri.fsPath};return new i.Task(o,this.workspaceFolder,s,"jake",new i.ShellExecution(await this._jakeCommand,[s],r))}}async computeTasks(){let e=this._workspaceFolder.uri.scheme==="file"?this._workspaceFolder.uri.fsPath:void 0,s=[];if(!e)return s;let o=d.join(e,"Jakefile");if(!await p(o)&&(o=d.join(e,"Jakefile.js"),!await p(o)))return s;let r=`${await this._jakeCommand} --tasks`;try{let{stdout:n,stderr:a}=await A(r,{cwd:e});a&&(g().appendLine(a),F());let P=[];if(n){let S=n.split(/\r{0,1}\n/);for(let f of S){if(f.length===0)continue;let k=/^jake\s+([^\s]+)\s/g.exec(f);if(k&&k.length===2){let h=k[1],_={type:"jake",task:h},D={cwd:this.workspaceFolder.uri.fsPath},v=new i.Task(_,h,"jake",new i.ShellExecution(`${await this._jakeCommand} ${h}`,D));P.push(v);let b=f.toLowerCase();M(b)?v.group=i.TaskGroup.Build:B(b)&&(v.group=i.TaskGroup.Test)}}}return P}catch(n){let a=g();return n.stderr&&a.appendLine(n.stderr),n.stdout&&a.appendLine(n.stdout),a.appendLine(i.l10n.t("Auto detecting Jake for folder {0} failed with error: {1}', this.workspaceFolder.name, err.error ? err.error.toString() : 'unknown")),F(),s}}dispose(){this.promise=void 0,this.fileWatcher&&this.fileWatcher.dispose()}},w=class{taskProvider;detectors=new Map;constructor(){}start(){let e=i.workspace.workspaceFolders;e&&this.updateWorkspaceFolders(e,[]),i.workspace.onDidChangeWorkspaceFolders(s=>this.updateWorkspaceFolders(s.added,s.removed)),i.workspace.onDidChangeConfiguration(this.updateConfiguration,this)}dispose(){this.taskProvider&&(this.taskProvider.dispose(),this.taskProvider=void 0),this.detectors.clear()}updateWorkspaceFolders(e,s){for(let o of s){let r=this.detectors.get(o.uri.toString());r&&(r.dispose(),this.detectors.delete(o.uri.toString()))}for(let o of e){let r=new l(o,x(o.uri.fsPath));this.detectors.set(o.uri.toString(),r),r.isEnabled()&&r.start()}this.updateProvider()}updateConfiguration(){for(let s of this.detectors.values())s.dispose(),this.detectors.delete(s.workspaceFolder.uri.toString());let e=i.workspace.workspaceFolders;if(e){for(let s of e)if(!this.detectors.has(s.uri.toString())){let o=new l(s,x(s.uri.fsPath));this.detectors.set(s.uri.toString(),o),o.isEnabled()&&o.start()}}this.updateProvider()}updateProvider(){if(!this.taskProvider&&this.detectors.size>0){let e=this;this.taskProvider=i.tasks.registerTaskProvider("jake",{provideTasks(){return e.getTasks()},resolveTask(s){return e.getTask(s)}})}else this.taskProvider&&this.detectors.size===0&&(this.taskProvider.dispose(),this.taskProvider=void 0)}getTasks(){return this.computeTasks()}computeTasks(){if(this.detectors.size===0)return Promise.resolve([]);if(this.detectors.size===1)return this.detectors.values().next().value.getTasks();{let e=[];for(let s of this.detectors.values())e.push(s.getTasks().then(o=>o,()=>[]));return Promise.all(e).then(s=>{let o=[];for(let r of s)r&&r.length>0&&o.push(...r);return o})}}async getTask(e){if(this.detectors.size!==0){if(this.detectors.size===1)return this.detectors.values().next().value.getTask(e);if(e.scope===i.TaskScope.Workspace||e.scope===i.TaskScope.Global)return;if(e.scope){let s=this.detectors.get(e.scope.uri.toString());if(s)return s.getTask(e)}return}}},T;function q(t){T=new w,T.start()}function H(){T.dispose()}0&&(module.exports={activate,deactivate});
//# sourceMappingURL=main.js.map