extension.js 2.0 KB
Newer Older
1
const vscode = require('vscode');
F
Fatih Acet 已提交
2
const openers = require('./openers');
3
const statusBar = require('./status_bar');
4
const tokenInput = require('./token_input');
F
Fatih Acet 已提交
5
const gitLabService = require('./gitlab_service');
F
Fatih Acet 已提交
6
const pipelineActionsPicker = require('./pipeline_actions_picker');
F
Fatih Acet 已提交
7
const searchInput = require('./search_input');
8

F
Fatih Acet 已提交
9 10 11 12 13 14 15 16 17
let context = null;

const activate = (ctx) => {
  context = ctx;
  registerCommands();
  init();
};

const registerCommands = () => {
18
  const commands = {
F
Fatih Acet 已提交
19 20
    'gl.showIssuesAssigedToMe': openers.showIssues,
    'gl.showMergeRequestsAssigedToMe': openers.showMergeRequests,
21
    'gl.setToken': tokenInput.showInput.bind(null, context),
F
Fatih Acet 已提交
22
    'gl.removeToken': tokenInput.removeToken.bind(null, context),
F
Fatih Acet 已提交
23 24
    'gl.openActiveFile': openers.openActiveFile,
    'gl.openCurrentMergeRequest': openers.openCurrentMergeRequest,
25 26
    'gl.openCreateNewIssue': openers.openCreateNewIssue,
    'gl.openCreateNewMR': openers.openCreateNewMr,
27
    'gl.openProjectPage': openers.openProjectPage,
28
    'gl.openCurrentPipeline': openers.openCurrentPipeline,
F
Fatih Acet 已提交
29
    'gl.pipelineActions': pipelineActionsPicker.showPicker,
F
Fatih Acet 已提交
30 31
    'gl.issueSearch': searchInput.showIssueSearchInput,
    'gl.mergeRequestSearch': searchInput.showMergeRequestSearchInput,
32
    'gl.compareCurrentBranch': openers.compareCurrentBranch,
33
  }
34

35 36 37 38
  Object.keys(commands).forEach((cmd) => {
    context.subscriptions.push(
      vscode.commands.registerCommand(cmd, commands[cmd])
    );
F
Fatih Acet 已提交
39 40
  });
};
41

F
Fatih Acet 已提交
42
const init = () => {
F
Fatih Acet 已提交
43 44 45 46 47 48
  const token = context.globalState.get('glToken');

  if (token) {
    gitLabService._setGLToken(token);
    statusBar.init(context);
  } else {
F
Fatih Acet 已提交
49
    askForToken();
F
Fatih Acet 已提交
50
  }
F
Fatih Acet 已提交
51
}
52

F
Fatih Acet 已提交
53
const askForToken = () => {
54 55 56 57 58 59 60 61
  const gs = context.globalState;

  if (!gs.get('glToken') && !gs.get('askedForToken')) {
    vscode.window.showInformationMessage('GitLab Workflow: Please set GitLab Personal Access Token to setup this extension.');
    gs.update('askedForToken', true);
  }
}

F
Fatih Acet 已提交
62 63 64
const deactivate = () => {
  statusBar.dispose();
};
65

F
Fatih Acet 已提交
66
exports.init = init;
67 68
exports.activate = activate;
exports.deactivate = deactivate;