diff --git a/package-lock.json b/package-lock.json index 7a5f259b0490aaa6b402e2d6f530e2ecd9dbbb05..45e7865efd2a84cbdb627ef1f47627596645096b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1978,11 +1978,6 @@ "resolved": "https://registry.npmjs.org/is-valid-glob/-/is-valid-glob-0.3.0.tgz", "integrity": "sha1-1LVcafUYhvm2XHDWwmItN+KfSP4=" }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=" - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", @@ -2518,14 +2513,6 @@ "mimic-fn": "1.2.0" } }, - "opn": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.2.0.tgz", - "integrity": "sha512-Jd/GpzPyHF4P2/aNOVmS3lfMSWV9J7cOhCG1s08XCEAsPkB7lp6ddiU0J7XzyQRDUh8BqJ7PchfINjR8jyofRQ==", - "requires": { - "is-wsl": "1.1.0" - } - }, "optionator": { "version": "0.8.2", "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.2.tgz", diff --git a/package.json b/package.json index 7a999921fc36b66a6aff78008cd63e9b6a390fc2..e3e78eb5aa7b6f37cdbb2dbd7b29acdab8289f62 100644 --- a/package.json +++ b/package.json @@ -119,14 +119,17 @@ ] }, "viewsContainers": { - "activitybar": [{ - "id": "gitlab-workflow", - "title": "GitLab Workflow", - "icon": "src/assets/images/light/gitlab-logo.svg" - }] + "activitybar": [ + { + "id": "gitlab-workflow", + "title": "GitLab Workflow", + "icon": "src/assets/images/light/gitlab-logo.svg" + } + ] }, "views": { - "gitlab-workflow": [{ + "gitlab-workflow": [ + { "id": "issuesAssignedToMe", "name": "Issues assigned to me" }, @@ -193,7 +196,6 @@ }, "dependencies": { "execa": "^0.9.0", - "opn": "^5.2.0", "request-promise": "^4.2.2", "url": "^0.11.0", "@types/node": "^7.0.43", diff --git a/src/gitlab_service.js b/src/gitlab_service.js index 01083ab561ae86d1601c971416dff7f861ce9372..bd52538a8ea7744a978191f3aeb67200b41c917f 100644 --- a/src/gitlab_service.js +++ b/src/gitlab_service.js @@ -1,8 +1,8 @@ const vscode = require('vscode'); -const opn = require('opn'); const request = require('request-promise'); const fs = require('fs'); const gitService = require('./git_service'); +const openers = require('./openers'); const tokenService = require('./token_service'); const statusBar = require('./status_bar'); @@ -218,7 +218,7 @@ async function handlePipelineAction(action) { } if (newPipeline) { - opn(`${project.web_url}/pipelines/${newPipeline.id}`); + openers.openUrl(`${project.web_url}/pipelines/${newPipeline.id}`); statusBar.refreshPipelines(); } } else { diff --git a/src/openers.js b/src/openers.js index 71e8c0ec15ad70fadc59b73bbeaf3cfb31751d82..ca13abbb9c8fafd04221eadee3a5e91e04918fb7 100644 --- a/src/openers.js +++ b/src/openers.js @@ -1,8 +1,11 @@ const vscode = require('vscode'); -const opn = require('opn'); const gitService = require('./git_service'); const gitLabService = require('./gitlab_service'); +const openUrl = (url) => { + vscode.commands.executeCommand('vscode.open', vscode.Uri.parse(url)); +} + /** * Fetches user and project before opening a link. * Link can contain some placeholders which will be replaced by this method @@ -23,7 +26,7 @@ async function openLink(link) { const project = await gitLabService.fetchCurrentProject(); if (project) { - opn(link.replace('$userId', user.id).replace('$projectUrl', project.web_url)); + openUrl(link.replace('$userId', user.id).replace('$projectUrl', project.web_url)); } else { vscode.window.showInformationMessage( 'GitLab Workflow: Failed to open file on web. No GitLab project.', @@ -66,7 +69,7 @@ async function openActiveFile() { } } - opn(`${fileUrl}${anchor}`); + openUrl(`${fileUrl}${anchor}`); } else { vscode.window.showInformationMessage( 'GitLab Workflow: Failed to open file on web. No GitLab project.', @@ -81,7 +84,7 @@ async function openCurrentMergeRequest() { const mr = await gitLabService.fetchOpenMergeRequestForCurrentBranch(); if (mr) { - opn(mr.web_url); + openUrl(mr.web_url); } } @@ -95,7 +98,7 @@ async function openCreateNewMr() { if (project) { const branchName = await gitService.fetchTrackingBranchName(); - opn(`${project.web_url}/merge_requests/new?merge_request%5Bsource_branch%5D=${branchName}`); + openUrl(`${project.web_url}/merge_requests/new?merge_request%5Bsource_branch%5D=${branchName}`); } else { vscode.window.showInformationMessage( 'GitLab Workflow: Failed to open file on web. No GitLab project.', @@ -114,7 +117,7 @@ async function openCurrentPipeline() { const pipeline = await gitLabService.fetchLastPipelineForCurrentBranch(); if (pipeline) { - opn(`${project.web_url}/pipelines/${pipeline.id}`); + openUrl(`${project.web_url}/pipelines/${pipeline.id}`); } } } @@ -131,10 +134,11 @@ async function compareCurrentBranch() { } if (project && lastCommitId) { - opn(`${project.web_url}/compare/master...${lastCommitId}`); + openUrl(`${project.web_url}/compare/master...${lastCommitId}`); } } +exports.openUrl = openUrl; exports.showIssues = showIssues; exports.showMergeRequests = showMergeRequests; exports.openActiveFile = openActiveFile; diff --git a/src/search_input.js b/src/search_input.js index c0ab6ec5597cba2ce656e86784e6352717fc20f5..75d88474b50d167627c78f0a675fd8cb5ed42fa2 100644 --- a/src/search_input.js +++ b/src/search_input.js @@ -1,6 +1,6 @@ const vscode = require('vscode'); -const opn = require('opn'); const gitLabService = require('./gitlab_service'); +const openers = require('./openers'); const parseQuery = (query, noteableType) => { const params = {}; @@ -96,7 +96,7 @@ async function showSearchInputFor(noteableType) { const project = await gitLabService.fetchCurrentProject(); if (project) { - opn(`${project.web_url}/${noteableType}${queryString}`); + openers.openUrl(`${project.web_url}/${noteableType}${queryString}`); } else { vscode.window.showErrorMessage('GitLab Workflow: No project found to search issues'); } diff --git a/src/snippet_input.js b/src/snippet_input.js index 3f04bfbc936fff67b6fba34ec50fb2b51c987541..dd1be505bce84e6479d71b6c0721a9d899fbe392 100644 --- a/src/snippet_input.js +++ b/src/snippet_input.js @@ -1,5 +1,5 @@ const vscode = require('vscode'); -const opn = require('opn'); +const openers = require('./openers'); const gitLabService = require('./gitlab_service'); const visibilityOptions = [ @@ -51,7 +51,7 @@ async function createSnippet(project, editor, visibility, context) { visibility, }); - opn(snippet.web_url); + openers.openUrl(snippet.web_url); } async function showPicker() { diff --git a/src/status_bar.js b/src/status_bar.js index 8f5083ea4ccf1d5afd8af81117659c4650ae6ece..0d6d0a212669394532f707b4702897674c2244ea 100644 --- a/src/status_bar.js +++ b/src/status_bar.js @@ -1,5 +1,5 @@ const vscode = require('vscode'); -const opn = require('opn'); +const openers = require('./openers'); const gitLabService = require('./gitlab_service'); let context = null; @@ -114,7 +114,7 @@ const initMrStatus = () => { const cmdName = `gl.mrOpener${Date.now()}`; commandRegisterHelper(cmdName, () => { if (mr) { - opn(mr.web_url); + openers.openUrl(mr.web_url); } else { vscode.window.showInformationMessage('GitLab Workflow: No MR found for this branch.'); } @@ -132,7 +132,7 @@ const initMrIssueStatus = () => { const cmdName = `gl.mrIssueOpener${Date.now()}`; commandRegisterHelper(cmdName, () => { if (issue) { - opn(issue.web_url); + openers.openUrl(issue.web_url); } else { vscode.window.showInformationMessage('GitLab Workflow: No closing issue found for this MR.'); } diff --git a/src/token_service.js b/src/token_service.js index 8c08027438d7dfa35943263fb07ec0e8ec9fe084..9cc83edf99312279ce3f0f7c62dd47c77651a5b8 100644 --- a/src/token_service.js +++ b/src/token_service.js @@ -1,5 +1,5 @@ const vscode = require('vscode'); -const opn = require('opn'); +const openers = require('./openers'); const statusBar = require('./status_bar'); let context = null; @@ -67,7 +67,7 @@ const askForToken = () => { if (action === 'set') { vscode.commands.executeCommand('gl.setToken'); } else { - opn('https://gitlab.com/fatihacet/gitlab-vscode-extension#setup'); + openers.openUrl('https://gitlab.com/fatihacet/gitlab-vscode-extension#setup'); } } });