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