diff --git a/.gitignore b/.gitignore index fa9646b36e..ebfacc0003 100644 --- a/.gitignore +++ b/.gitignore @@ -101,4 +101,18 @@ site/ # Visual Studio Code #################### -.vscode \ No newline at end of file +.vscode + +################### +# VSTS Task +################### +src/GitVersionTfsTask/Tests/**/*.js +src/GitVersionTfsTask/Tests/**/*.js.map +src/GitVersionTfsTask/Tests/**/*.d.ts +src/GitVersionTfsTask/Tasks/**/*.js +src/GitVersionTfsTask/Tasks/**/*.js.map +src/GitVersionTfsTask/Tasks/**/*.d.ts +src/GitVersionTfsTask/Tasks/*/common/**/*.* + +src/GitVersionTfsTask/.BuildOutput +src/GitVersionTfsTask/**/node_modules \ No newline at end of file diff --git a/appveyor.yml b/appveyor.yml index 46018c2de1..004a84bd15 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -10,6 +10,7 @@ configuration: build_script: - cmd: nuget restore src/GitVersion.sln - cmd: npm i -g tfx-cli + - cmd: npm i -g typescript - cmd: msbuild src/GitVersion.sln "/p:Configuration=%CONFIGURATION%;Platform=%PLATFORM%" - ps: .\build\NuGetCommandLineBuild\tools\GitVersion.exe /l console /output buildserver /updateAssemblyInfo diff --git a/src/GitVersionTfsTask/Configuration.json b/src/GitVersionTfsTask/Configuration.json new file mode 100644 index 0000000000..c03a95f513 --- /dev/null +++ b/src/GitVersionTfsTask/Configuration.json @@ -0,0 +1,24 @@ +{ + "environments": [ + { + "Name": "production", + "VssExtensionIdSuffix": "", + "VssExtensionGalleryFlags": [ + "Public" + ], + "DisplayNamesSuffix": "", + "TaskIds": { + "GitVersion" : "e5983830-3f75-11e5-82ed-81492570a08e" + } + }, + { + "Name": "dev", + "VssExtensionIdSuffix": "-dev", + "VssExtensionGalleryFlags": [], + "DisplayNamesSuffix": " (Development)", + "TaskIds": { + "GitVersion" : "f402bc4f-87b9-402a-a018-33aa296c2681" + } + } + ] +} \ No newline at end of file diff --git a/src/GitVersionTfsTask/Create-Vsix.ps1 b/src/GitVersionTfsTask/Create-Vsix.ps1 index 3adea9af82..c42a613b28 100644 --- a/src/GitVersionTfsTask/Create-Vsix.ps1 +++ b/src/GitVersionTfsTask/Create-Vsix.ps1 @@ -5,7 +5,10 @@ param ( Push-Location $taskFolder Try { - & tfx extension create --manifest-globs manifest.json + & npm install + & npm run clean + & npm run build + & npm run package -- --version "$Env:GitVersion_SemVer" --noversiontransform } Finally { diff --git a/src/GitVersionTfsTask/build-task.png b/src/GitVersionTfsTask/Extension/build-task.png similarity index 100% rename from src/GitVersionTfsTask/build-task.png rename to src/GitVersionTfsTask/Extension/build-task.png diff --git a/src/GitVersionTfsTask/builds.png b/src/GitVersionTfsTask/Extension/builds.png similarity index 100% rename from src/GitVersionTfsTask/builds.png rename to src/GitVersionTfsTask/Extension/builds.png diff --git a/src/GitVersionTfsTask/extension-icon.png b/src/GitVersionTfsTask/Extension/extension-icon.png similarity index 100% rename from src/GitVersionTfsTask/extension-icon.png rename to src/GitVersionTfsTask/Extension/extension-icon.png diff --git a/src/GitVersionTfsTask/overview.md b/src/GitVersionTfsTask/Extension/overview.md similarity index 100% rename from src/GitVersionTfsTask/overview.md rename to src/GitVersionTfsTask/Extension/overview.md diff --git a/src/GitVersionTfsTask/manifest.json b/src/GitVersionTfsTask/Extension/vss-extension.json similarity index 70% rename from src/GitVersionTfsTask/manifest.json rename to src/GitVersionTfsTask/Extension/vss-extension.json index e796bd16e1..dfd8de93d0 100644 --- a/src/GitVersionTfsTask/manifest.json +++ b/src/GitVersionTfsTask/Extension/vss-extension.json @@ -1,9 +1,8 @@ { "manifestVersion": 1, - "id": "gitversion", + "id": "gl-gitversion", "name": "GitVersion", - "publisher": "gittools", - "public": true, + "publisher": "geeklearningio", "author": "GitVersion Contributors", "version": "$version$", "description": "Build task for easy semantic versioning for projects using Git.", @@ -14,7 +13,7 @@ ], "files": [ { - "path": "GitVersionTask" + "path": "Tasks" } ], "categories": [ @@ -46,27 +45,15 @@ }, "screenshots": [ { - "path": "img/builds.png" + "path": "builds.png" }, { - "path": "img/build-task.png" + "path": "build-task.png" } ], "content": { "details": { "path": "overview.md" } - }, - "contributions": [ - { - "id": "gitversion-task", - "type": "ms.vss-distributed-task.task", - "targets": [ - "ms.vss-distributed-task.tasks" - ], - "properties": { - "name": "GitVersionTask" - } - } - ] + } } diff --git a/src/GitVersionTfsTask/Tasks/GitVersion/GitVersion.exe b/src/GitVersionTfsTask/Tasks/GitVersion/GitVersion.exe new file mode 100644 index 0000000000..c2f0d68e96 Binary files /dev/null and b/src/GitVersionTfsTask/Tasks/GitVersion/GitVersion.exe differ diff --git a/src/GitVersionTfsTask/Tasks/GitVersion/GitVersion.pdb b/src/GitVersionTfsTask/Tasks/GitVersion/GitVersion.pdb new file mode 100644 index 0000000000..5b7c6cf435 Binary files /dev/null and b/src/GitVersionTfsTask/Tasks/GitVersion/GitVersion.pdb differ diff --git a/src/GitVersionTfsTask/GitVersion.ps1 b/src/GitVersionTfsTask/Tasks/GitVersion/GitVersion.ps1 similarity index 100% rename from src/GitVersionTfsTask/GitVersion.ps1 rename to src/GitVersionTfsTask/Tasks/GitVersion/GitVersion.ps1 diff --git a/src/GitVersionTfsTask/Tasks/GitVersion/GitVersion.ts b/src/GitVersionTfsTask/Tasks/GitVersion/GitVersion.ts new file mode 100644 index 0000000000..c23910d760 --- /dev/null +++ b/src/GitVersionTfsTask/Tasks/GitVersion/GitVersion.ts @@ -0,0 +1,79 @@ +import tl = require('vsts-task-lib/task'); +import { IExecOptions, ToolRunner } from 'vsts-task-lib/toolrunner'; +import path = require('path'); +import q = require('q'); +import os = require('os'); + +var updateAssemblyInfo = tl.getBoolInput('updateAssemblyInfo'); +var updateAssemblyInfoFilename = tl.getInput('updateAssemblyInfoFilename'); +var additionalArguments = tl.getInput('additionalArguments'); +var gitVersionPath = tl.getInput('gitVersionPath'); +var preferBundledVersion = tl.getBoolInput('preferBundledVersion'); + +var currentDirectory = __dirname; + +var sourcesDirectory = tl.getVariable("Build.SourcesDirectory") + +if (!gitVersionPath) { + gitVersionPath = tl.which("GitVersion.exe"); + if (preferBundledVersion || !gitVersionPath) { + gitVersionPath = path.join(currentDirectory, "GitVersion.exe"); + } +} + +(async function execute() { + try { + + var execOptions: IExecOptions = { + cwd: undefined, + env: undefined, + silent: undefined, + failOnStdErr: undefined, + ignoreReturnCode: undefined, + errStream: undefined, + outStream: undefined + }; + + var toolRunner: ToolRunner; + + var isWin32 = os.platform() == "win32"; + + if (isWin32) { + toolRunner = tl.tool(gitVersionPath); + } else { + toolRunner = tl.tool("mono"); + toolRunner.arg(gitVersionPath); + } + + toolRunner.arg([ + sourcesDirectory, + "/output", + "buildserver", + "/nofetch" + ]); + + if (updateAssemblyInfo) { + toolRunner.arg("/updateassemblyinfo") + if (updateAssemblyInfoFilename) { + toolRunner.arg(updateAssemblyInfoFilename); + } else { + toolRunner.arg("true"); + } + } + + if (additionalArguments) { + toolRunner.line(additionalArguments); + } + + var result = await toolRunner.exec(execOptions); + if (result) { + tl.setResult(tl.TaskResult.Failed, "An error occured during GitVersion execution") + } else { + tl.setResult(tl.TaskResult.Succeeded, "GitVersion executed successfully") + } + } + catch (err) { + tl.debug(err.stack) + tl.setResult(tl.TaskResult.Failed, err); + } +})(); diff --git a/src/GitVersionTfsTask/icon.png b/src/GitVersionTfsTask/Tasks/GitVersion/icon.png similarity index 100% rename from src/GitVersionTfsTask/icon.png rename to src/GitVersionTfsTask/Tasks/GitVersion/icon.png diff --git a/src/GitVersionTfsTask/Tasks/GitVersion/lib/linux/x86_64/libgit2-baa87df.so b/src/GitVersionTfsTask/Tasks/GitVersion/lib/linux/x86_64/libgit2-baa87df.so new file mode 100644 index 0000000000..5ebfea73da Binary files /dev/null and b/src/GitVersionTfsTask/Tasks/GitVersion/lib/linux/x86_64/libgit2-baa87df.so differ diff --git a/src/GitVersionTfsTask/Tasks/GitVersion/lib/osx/libgit2-baa87df.dylib b/src/GitVersionTfsTask/Tasks/GitVersion/lib/osx/libgit2-baa87df.dylib new file mode 100644 index 0000000000..d62f01fe68 Binary files /dev/null and b/src/GitVersionTfsTask/Tasks/GitVersion/lib/osx/libgit2-baa87df.dylib differ diff --git a/src/GitVersionTfsTask/Tasks/GitVersion/lib/win32/x64/git2-baa87df.dll b/src/GitVersionTfsTask/Tasks/GitVersion/lib/win32/x64/git2-baa87df.dll new file mode 100644 index 0000000000..abd73221b4 Binary files /dev/null and b/src/GitVersionTfsTask/Tasks/GitVersion/lib/win32/x64/git2-baa87df.dll differ diff --git a/src/GitVersionTfsTask/Tasks/GitVersion/lib/win32/x64/git2-baa87df.pdb b/src/GitVersionTfsTask/Tasks/GitVersion/lib/win32/x64/git2-baa87df.pdb new file mode 100644 index 0000000000..18c415fd2d Binary files /dev/null and b/src/GitVersionTfsTask/Tasks/GitVersion/lib/win32/x64/git2-baa87df.pdb differ diff --git a/src/GitVersionTfsTask/Tasks/GitVersion/lib/win32/x86/git2-baa87df.dll b/src/GitVersionTfsTask/Tasks/GitVersion/lib/win32/x86/git2-baa87df.dll new file mode 100644 index 0000000000..1c14b7c366 Binary files /dev/null and b/src/GitVersionTfsTask/Tasks/GitVersion/lib/win32/x86/git2-baa87df.dll differ diff --git a/src/GitVersionTfsTask/Tasks/GitVersion/lib/win32/x86/git2-baa87df.pdb b/src/GitVersionTfsTask/Tasks/GitVersion/lib/win32/x86/git2-baa87df.pdb new file mode 100644 index 0000000000..d2bb27cfdf Binary files /dev/null and b/src/GitVersionTfsTask/Tasks/GitVersion/lib/win32/x86/git2-baa87df.pdb differ diff --git a/src/GitVersionTfsTask/Tasks/GitVersion/package.json b/src/GitVersionTfsTask/Tasks/GitVersion/package.json new file mode 100644 index 0000000000..8a89bbc429 --- /dev/null +++ b/src/GitVersionTfsTask/Tasks/GitVersion/package.json @@ -0,0 +1,16 @@ +{ + "name": "gitversion", + "version": "1.0.0", + "private": true, + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "MIT", + "dependencies": { + "vsts-task-lib": "0.9.20", + "q" : "1.4.1" + } +} diff --git a/src/GitVersionTfsTask/task.json b/src/GitVersionTfsTask/Tasks/GitVersion/task.json similarity index 84% rename from src/GitVersionTfsTask/task.json rename to src/GitVersionTfsTask/Tasks/GitVersion/task.json index fb53dd9cca..ed1c2a3e31 100644 --- a/src/GitVersionTfsTask/task.json +++ b/src/GitVersionTfsTask/Tasks/GitVersion/task.json @@ -56,11 +56,19 @@ "required": false, "helpMarkDown": "Optionally supply the path to GitVersion.exe", "groupName": "additional" + }, + { + "name": "preferBundledVersion", + "type": "boolean", + "label": "Prefer bundled GiVersion.exe", + "required": false, + "helpMarkDown": "If checked it will prefer the bundled version over a version found in path", + "groupName": "additional" } ], "execution": { - "PowerShell": { - "target": "$(currentDirectory)\\GitVersion.ps1", + "Node": { + "target": "GitVersion.js", "argumentFormat": "", "workingDirectory": "" } diff --git a/src/GitVersionTfsTask/package.json b/src/GitVersionTfsTask/package.json new file mode 100644 index 0000000000..80a2b68d8d --- /dev/null +++ b/src/GitVersionTfsTask/package.json @@ -0,0 +1,24 @@ +{ + "name": "git-version-tfs-task", + "version": "1.0.0", + "description": "", + "private": true, + "main": "index.js", + "author": "", + "license": "MIT", + "scripts": { + "clean": "vsts-build-tools-clean", + "postinstall": "vsts-build-tools-install", + "prebuild": "vsts-build-tools-prebuild", + "build": "tsc", + "package": "vsts-build-tools-package" + }, + "devDependencies": { + "@types/minimatch": "^2.0.29", + "@types/node": "^7.0.5", + "@types/q": "0.0.32", + "async": "^2.0.1", + "gl-vsts-tasks-build-scripts": "0.2.0-alpha.5", + "npm-run-all": "2.3.0" + } +} diff --git a/src/GitVersionTfsTask/tsconfig.json b/src/GitVersionTfsTask/tsconfig.json new file mode 100644 index 0000000000..51456f14a9 --- /dev/null +++ b/src/GitVersionTfsTask/tsconfig.json @@ -0,0 +1,25 @@ +{ + "compilerOptions": { + "module": "commonjs", + "moduleResolution": "node", + "noImplicitAny": true, + "removeComments": true, + "preserveConstEnums": true, + "target": "es6", + "sourceMap": false, + "inlineSourceMap": true, + "declaration": true + }, + "filesGlob": [ + "./Tasks/*.ts", + "./Tests/*.ts", + "./typings/index.d.ts", + "./Common/Node/*.d.ts" + ], + "exclude":[ + "node_modules", + "Tasks/GitVersion/node_modules", + "Common", + ".BuildOutput" + ] +} \ No newline at end of file