このブログをご覧のみなさん、こんにちは。
以下を参考に、Visual Studio Online のビルドタスクをハックしようとしたらハマりました。
VisualStudioOnline – Visual Studio Onlineのビルドタスクを作成する – Qiita
作成した task.json は以下の通りです。
{
"id": "805ec540-849b-11e5-932a-a52ba8bc3e95",
"name": "sbt",
"friendlyName": "sbt",
"description": "The interactive build tool for Scala",
"author": "Takashi Takebayashi",
"helpMarkDown": "\[More Information\](http://www.scala-sbt.org)",
"category": "Build",
"visibility": [
"Build"
],
"demands": [],
"version": {
"Major": 0,
"Minor": 1,
"Patch": 0
},
"minimumAgentVersion": "1.83.0",
"instanceNameFormat": "sbt $(message)",
"groups": [
{
"name": "advanced",
"displayName": "Advanced",
"isExpanded": false
}
],
"inputs": [
{
"name": "cwd",
"type": "filePath",
"label": "Working Directory",
"defaultValue": "",
"required": false,
"helpMarkDown": "Current working directory when sbt is run.",
"groupName": "advanced"
},
{
"name": "msg",
"type": "string",
"label": "Message",
"defaultValue": "Hello sbt",
"required": true,
"helpMarkDown": "Message to echo out"
},
{
"name": "arguments",
"type": "string",
"label": "sbt command(s)",
"defaultValue": "",
"helpMarkDown": "Optional. Specifying a space-separated list of sbt commands as arguments. compile is not needed since already added via default input.",
"required": false
}
],
"execution": {
"Node": {
"target": "sbt.js",
"argumentFormat": ""
}
}
}
作成した sbt.js は以下の通りです。
var path = require(‘path’);
var tl = require(‘vso-task-lib’);
var echo = new tl.ToolRunner(tl.which(‘echo’, true));
var cwd = tl.getPathInput(‘cwd’, false);
echo.arg(cwd);
echo.arg(tl.getDelimitedInput(‘targets’, ‘ ‘, false));
echo.exec({ failOnStdErr: false})
.then(function(code) {
tl.exit(code);
})
.fail(function(err) {
console.error(err.message);
tl.debug(‘taskRunner fail’);
tl.exit(1);
})
tl.checkPath(cwd, ‘cwd’);
tl.cd(cwd);
echo.exec({ failOnStdErr: false})
.then(function(code) {
tl.exit(code);
})
.fail(function(err) {
console.error(err.message);
tl.debug(‘taskRunner fail’);
tl.exit(1);
})
そして、得られた実行結果は以下の通りです。
2015-11-07T02:39:15.540Z: [command]/bin/echo 'Hello sbt'
2015-11-07T02:39:15.550Z: Hello sbt
何がどうなって「[command]/bin/echo ‘Hello sbt’」を実行しているのか理解できません。