読者です 読者をやめる 読者になる 読者になる

かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

Visual Studio Codeの拡張機能で環境変数を取りたい取得したい!

Visual Studio Code

ここらへんになるとnode.jsとかelectronの範疇になるんですね。 一生懸命VS Codeの拡張機能のAPIリファレンス眺めてて悩んでました。

ということでprocess.envから取得できます。先日作ったjava -versionを出力ウィンドウに出力するプログラムをJAVA_HOME環境変数からフルパス指定で実行する方法は以下のような感じになります。

'use strict';
import * as vscode from 'vscode';
import * as child_process from 'child_process';
import * as path from 'path';

export function activate(context: vscode.ExtensionContext) {

    var outputChannel = vscode.window.createOutputChannel("java");

    // ここ!
    var javaHome = process.env['JAVA_HOME'];
    var javaCommand = '"' + path.join(javaHome, "bin", 'java.exe') + '"';


    let disposable = vscode.commands.registerCommand('extension.sayHello', () => {
        child_process.exec(javaCommand + " -version", (error, stdout, stderror) => {
            outputChannel.appendLine(stdout);
            outputChannel.appendLine(stderror);
        });
    });

    context.subscriptions.push(disposable);
}

export function deactivate() {
}

パスの結合はimport * as path from "path";で読み込んだpathのjoinがいい具合にやってくれるので楽ちんです。