├── License.md
├── README.md
├── Tests
└── Tokenizer
│ ├── README.md
│ └── tokenizer-ps3.tests.ps1
└── Utilites
├── Powershell++
├── icon.png
├── task.json
└── task.ps1
├── Rollback
├── Runpowershellwithtaskcontext.ps1
├── icon.png
└── task.json
├── Shell++
├── icon.png
├── node_modules
│ ├── path
│ │ ├── .npmignore
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── node_modules
│ │ │ ├── process
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README.md
│ │ │ │ ├── browser.js
│ │ │ │ ├── index.js
│ │ │ │ ├── package.json
│ │ │ │ └── test.js
│ │ │ └── util
│ │ │ │ ├── .npmignore
│ │ │ │ ├── .travis.yml
│ │ │ │ ├── .zuul.yml
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README.md
│ │ │ │ ├── node_modules
│ │ │ │ └── inherits
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── inherits.js
│ │ │ │ │ ├── inherits_browser.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── test.js
│ │ │ │ ├── package.json
│ │ │ │ ├── support
│ │ │ │ ├── isBuffer.js
│ │ │ │ └── isBufferBrowser.js
│ │ │ │ ├── test
│ │ │ │ ├── browser
│ │ │ │ │ ├── inspect.js
│ │ │ │ │ └── is.js
│ │ │ │ └── node
│ │ │ │ │ ├── debug.js
│ │ │ │ │ ├── format.js
│ │ │ │ │ ├── inspect.js
│ │ │ │ │ ├── log.js
│ │ │ │ │ └── util.js
│ │ │ │ └── util.js
│ │ ├── package.json
│ │ └── path.js
│ └── vso-task-lib
│ │ ├── LICENSE
│ │ ├── README.md
│ │ ├── node_modules
│ │ ├── .bin
│ │ │ ├── shjs
│ │ │ └── shjs.cmd
│ │ ├── glob
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── common.js
│ │ │ ├── glob.js
│ │ │ ├── node_modules
│ │ │ │ ├── inflight
│ │ │ │ │ ├── .eslintrc
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── inflight.js
│ │ │ │ │ ├── node_modules
│ │ │ │ │ │ └── wrappy
│ │ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ ├── test
│ │ │ │ │ │ │ └── basic.js
│ │ │ │ │ │ │ └── wrappy.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── test.js
│ │ │ │ ├── inherits
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── inherits.js
│ │ │ │ │ ├── inherits_browser.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── test.js
│ │ │ │ ├── once
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── node_modules
│ │ │ │ │ │ └── wrappy
│ │ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ │ ├── test
│ │ │ │ │ │ │ └── basic.js
│ │ │ │ │ │ │ └── wrappy.js
│ │ │ │ │ ├── once.js
│ │ │ │ │ └── package.json
│ │ │ │ └── path-is-absolute
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── license
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── readme.md
│ │ │ ├── package.json
│ │ │ └── sync.js
│ │ ├── minimatch
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── minimatch.js
│ │ │ ├── node_modules
│ │ │ │ └── brace-expansion
│ │ │ │ │ ├── .npmignore
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── example.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── node_modules
│ │ │ │ │ ├── balanced-match
│ │ │ │ │ │ ├── .npmignore
│ │ │ │ │ │ ├── .travis.yml
│ │ │ │ │ │ ├── LICENSE.md
│ │ │ │ │ │ ├── Makefile
│ │ │ │ │ │ ├── README.md
│ │ │ │ │ │ ├── example.js
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── test
│ │ │ │ │ │ │ └── balanced.js
│ │ │ │ │ └── concat-map
│ │ │ │ │ │ ├── .travis.yml
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── README.markdown
│ │ │ │ │ │ ├── example
│ │ │ │ │ │ └── map.js
│ │ │ │ │ │ ├── index.js
│ │ │ │ │ │ ├── package.json
│ │ │ │ │ │ └── test
│ │ │ │ │ │ └── map.js
│ │ │ │ │ └── package.json
│ │ │ └── package.json
│ │ ├── q
│ │ │ ├── CHANGES.md
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── package.json
│ │ │ ├── q.js
│ │ │ └── queue.js
│ │ ├── shelljs
│ │ │ ├── .documentup.json
│ │ │ ├── .jshintrc
│ │ │ ├── .npmignore
│ │ │ ├── .travis.yml
│ │ │ ├── LICENSE
│ │ │ ├── README.md
│ │ │ ├── bin
│ │ │ │ └── shjs
│ │ │ ├── global.js
│ │ │ ├── make.js
│ │ │ ├── package.json
│ │ │ ├── scripts
│ │ │ │ ├── generate-docs.js
│ │ │ │ └── run-tests.js
│ │ │ ├── shell.js
│ │ │ └── src
│ │ │ │ ├── cat.js
│ │ │ │ ├── cd.js
│ │ │ │ ├── chmod.js
│ │ │ │ ├── common.js
│ │ │ │ ├── cp.js
│ │ │ │ ├── dirs.js
│ │ │ │ ├── echo.js
│ │ │ │ ├── error.js
│ │ │ │ ├── exec.js
│ │ │ │ ├── find.js
│ │ │ │ ├── grep.js
│ │ │ │ ├── ln.js
│ │ │ │ ├── ls.js
│ │ │ │ ├── mkdir.js
│ │ │ │ ├── mv.js
│ │ │ │ ├── popd.js
│ │ │ │ ├── pushd.js
│ │ │ │ ├── pwd.js
│ │ │ │ ├── rm.js
│ │ │ │ ├── sed.js
│ │ │ │ ├── tempdir.js
│ │ │ │ ├── test.js
│ │ │ │ ├── to.js
│ │ │ │ ├── toEnd.js
│ │ │ │ └── which.js
│ │ └── vso-node-api
│ │ │ ├── BuildApi.js
│ │ │ ├── ClientApiBases.js
│ │ │ ├── CoreApi.js
│ │ │ ├── FileContainerApi.js
│ │ │ ├── GalleryApi.js
│ │ │ ├── GitApi.js
│ │ │ ├── HttpClient.js
│ │ │ ├── README.md
│ │ │ ├── ReleaseManagementApi.js
│ │ │ ├── RestClient.js
│ │ │ ├── Serialization.js
│ │ │ ├── TaskAgentApi.js
│ │ │ ├── TaskAgentApiBase.js
│ │ │ ├── TaskApi.js
│ │ │ ├── TestApi.js
│ │ │ ├── TfvcApi.js
│ │ │ ├── VsoClient.js
│ │ │ ├── WebApi.js
│ │ │ ├── WorkItemTrackingApi.js
│ │ │ ├── handlers
│ │ │ ├── apiversion.js
│ │ │ ├── basiccreds.js
│ │ │ └── bearertoken.js
│ │ │ ├── interfaces
│ │ │ ├── BuildInterfaces.js
│ │ │ ├── CoreInterfaces.js
│ │ │ ├── FileContainerInterfaces.js
│ │ │ ├── GalleryInterfaces.js
│ │ │ ├── GitInterfaces.js
│ │ │ ├── ReleaseManagementInterfaces.js
│ │ │ ├── TaskAgentInterfaces.js
│ │ │ ├── TestInterfaces.js
│ │ │ ├── TfvcInterfaces.js
│ │ │ ├── WorkItemTrackingInterfaces.js
│ │ │ └── common
│ │ │ │ ├── FormInputInterfaces.js
│ │ │ │ ├── OperationsInterfaces.js
│ │ │ │ ├── SystemDataInterfaces.js
│ │ │ │ ├── TfsInterfaces.js
│ │ │ │ ├── VSSInterfaces.js
│ │ │ │ └── VsoBaseInterfaces.js
│ │ │ └── package.json
│ │ ├── package.json
│ │ ├── taskcommand.js
│ │ ├── toolrunner.js
│ │ └── vsotask.js
├── task.js
└── task.json
├── Tokenizer
├── Helpers.ps1
├── icon.png
├── ps_modules
│ └── VstsTaskSdk
│ │ ├── FindFunctions.ps1
│ │ ├── InputFunctions.ps1
│ │ ├── LocalizationFunctions.ps1
│ │ ├── LoggingCommandFunctions.ps1
│ │ ├── LongPathFunctions.ps1
│ │ ├── OutFunctions.ps1
│ │ ├── PSGetModuleInfo.xml
│ │ ├── ServerOMFunctions.ps1
│ │ ├── Strings
│ │ └── resources.resjson
│ │ │ ├── de-de
│ │ │ └── resources.resjson
│ │ │ ├── en-US
│ │ │ └── resources.resjson
│ │ │ ├── es-es
│ │ │ └── resources.resjson
│ │ │ ├── fr-fr
│ │ │ └── resources.resjson
│ │ │ ├── it-IT
│ │ │ └── resources.resjson
│ │ │ ├── ja-jp
│ │ │ └── resources.resjson
│ │ │ ├── ko-KR
│ │ │ └── resources.resjson
│ │ │ ├── ru-RU
│ │ │ └── resources.resjson
│ │ │ ├── zh-CN
│ │ │ └── resources.resjson
│ │ │ └── zh-TW
│ │ │ └── resources.resjson
│ │ ├── ToolFunctions.ps1
│ │ ├── TraceFunctions.ps1
│ │ ├── VstsTaskSdk.psd1
│ │ ├── VstsTaskSdk.psm1
│ │ └── lib.json
├── task.json
├── tokenize-ps3.ps1
└── tokenize.ps1
├── UnZip
├── icon.png
├── task.json
└── unzip.ps1
├── Zip
├── icon.png
├── task.json
└── zip.ps1
├── images
├── Icon1024.png
├── Icon128.png
├── Icon256.png
├── Icon512.png
├── Icon64.png
└── screen1.png
├── ms-devlabs.utilitytasks-0.1.10.vsix
├── ms-devlabs.utilitytasks-0.1.3.vsix
├── ms-devlabs.utilitytasks-0.1.5.vsix
├── ms-devlabs.utilitytasks-0.1.6.vsix
├── ms-devlabs.utilitytasks-0.1.8.vsix
├── ms-devlabs.utilitytasks-0.1.9.vsix
├── overview.md
└── vss-extension.json
/License.md:
--------------------------------------------------------------------------------
1 | Extension-UtilitiesPAck
2 |
3 | All rights reserved.
4 |
5 | The MIT License (MIT)
6 |
7 | Permission is hereby granted, free of charge, to any person obtaining a copy
8 | of this software and associated documentation files (the "Software"), to deal
9 | in the Software without restriction, including without limitation the rights
10 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
11 | copies of the Software, and to permit persons to whom the Software is
12 | furnished to do so, subject to the following conditions:
13 |
14 | The above copyright notice and this permission notice shall be included in all
15 | copies or substantial portions of the Software.
16 |
17 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
18 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
19 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
20 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
21 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
22 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
23 | SOFTWARE.
24 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | 
2 | # Task Utilities
3 | [Release Management utility tasks](https://marketplace.visualstudio.com/items?itemName=ms-devlabs.utilitytasks)
4 |
5 | This extension contains the following Utility tasks:
6 | 1.Tokenizer
7 | 2.Powershell++
8 | 3.Shell++
9 | 4.Zip & Unzip
10 | 5.Powershell to rollback
11 |
12 | Look at [overview.md](Utilites/overview.md) for more details on usage of these tasks.
13 |
14 | # How to contribute
15 |
16 | Please create an issue for any bug/feedback. If you would like to contribute to this extension, you could fork off this repo and submit a pull request.
17 |
18 | Some documents that can help you, in this regard:
19 | 1. [How to write a task for VS Team Services Build/Release task](https://github.com/Microsoft/vso-agent-tasks#writing-tasks)
20 | 2. [How to create and publish an extension](https://www.visualstudio.com/en-us/integrate/extensions/publish/overview)
21 | 3. [Learn about installing npm](https://www.npmjs.com/package/npm)
22 | 4. [How to install tfx-cli tool](https://github.com/Microsoft/tfs-cli), required to create and publish extensions
23 |
--------------------------------------------------------------------------------
/Tests/Tokenizer/README.md:
--------------------------------------------------------------------------------
1 | ## How to Run Tests
2 |
3 | * Install Pester. You can do by `Install-Module Pester`
4 | * Goto the respective tests folder and run `Invoke-Pester`
--------------------------------------------------------------------------------
/Utilites/Powershell++/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/Powershell++/icon.png
--------------------------------------------------------------------------------
/Utilites/Powershell++/task.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "4c073640-a478-11e5-a7e5-850fa42c7a74",
3 | "name": "Powershellpp",
4 | "friendlyName": "Powershell++ (deprecated)",
5 | "description": "(Deprecated) Use the PowerShell task version 2 for online scripts",
6 | "author": "ms-devlabs",
7 | "helpMarkDown": "[More Information](https://github.com/openalm/Extension-UtilitiesPack)",
8 | "category": "Utility",
9 | "deprecated": true,
10 | "visibility": [
11 | "Build",
12 | "Release"
13 | ],
14 | "demands": [
15 | "DotNetFramework"
16 | ],
17 | "version": {
18 | "Major": "0",
19 | "Minor": "4",
20 | "Patch": "0"
21 | },
22 | "minimumAgentVersion": "1.83.0",
23 | "instanceNameFormat": "Powershell",
24 | "groups": [
25 | {
26 | "name":"advanced",
27 | "displayName":"Advanced",
28 | "isExpanded":false
29 | }
30 | ],
31 | "inputs": [
32 | {
33 | "name": "type",
34 | "type": "pickList",
35 | "label": "Type",
36 | "defaultValue": "",
37 | "required": true,
38 | "helpMarkDown": "File Path or Inline Script",
39 | "options": {
40 | "InlineScript": "Inline Script",
41 | "FilePath": "File Path"
42 | }
43 | },
44 | {
45 | "name": "scriptName",
46 | "type": "filePath",
47 | "label": "Script filename",
48 | "defaultValue":"",
49 | "required":true,
50 | "helpMarkDown": "Path of the script to execute. Should be fully qualified path or relative to the default working directory." ,
51 | "visibleRule": "type = FilePath"
52 | },
53 | {
54 | "name": "arguments",
55 | "type": "string",
56 | "label": "Arguments",
57 | "defaultValue":"",
58 | "required":false,
59 | "helpMarkDown": "Arguments passed to the PowerShell script. Either ordinal parameters or named parameters",
60 | "visibleRule": "type = FilePath"
61 | },
62 | {
63 | "name": "workingFolder",
64 | "type": "filePath",
65 | "label": "Working folder",
66 | "defaultValue":"",
67 | "required":false,
68 | "helpMarkDown": "Current working directory when script is run. Defaults to the folder where the script is located.",
69 | "groupName":"advanced"
70 | },
71 | {
72 | "name": "script",
73 | "type": "multiLine",
74 | "label": "Script",
75 | "defaultValue": "Write-Host 'Hello World'",
76 | "required": true,
77 | "helpMarkDown": "Write your scripts and have fun",
78 | "visibleRule": "type = InlineScript"
79 | }
80 | ],
81 | "execution": {
82 | "PowerShell": {
83 | "target": "$(currentDirectory)\\task.ps1",
84 | "argumentFormat": "",
85 | "workingDirectory": "$(currentDirectory)"
86 | }
87 | }
88 | }
89 |
--------------------------------------------------------------------------------
/Utilites/Powershell++/task.ps1:
--------------------------------------------------------------------------------
1 | param (
2 | [string] $type,
3 | [string] $scriptName,
4 | [string] $arguments,
5 | [string] $workingFolder,
6 | [string] $script
7 | )
8 |
9 | Write-Verbose 'Entering task.ps1'
10 | Write-Verbose 'Current Working Directory is $cwd'
11 | Write-Verbose "Your script is \n $script"
12 |
13 | # Import the Task.Common dll that has all the cmdlets we need for Build
14 | import-module "Microsoft.TeamFoundation.DistributedTask.Task.Common"
15 |
16 | if($workingFolder)
17 | {
18 | if(!(Test-Path $workingFolder -PathType Container))
19 | {
20 | throw ("$workingFolder does not exist");
21 | }
22 | Write-Verbose "Setting working directory to $workingFolder"
23 | Set-Location $workingFolder
24 | }
25 |
26 | if($type -eq "FilePath"){
27 | Invoke-Expression "& `"$scriptName`" $arguments"
28 | }
29 | if($type -eq "InlineScript"){
30 | Invoke-Expression $script
31 | }
32 |
33 |
34 |
35 |
36 |
37 |
38 |
--------------------------------------------------------------------------------
/Utilites/Rollback/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/Rollback/icon.png
--------------------------------------------------------------------------------
/Utilites/Rollback/task.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "abc5c778-e949-4435-b156-b00c4ede3fcc",
3 | "name": "Rollback",
4 | "friendlyName": "Rollback PowerShell",
5 | "description": "Run a powershell script to rollback deployments. Task execution context is available in the powershell context for implementing conditional rollback",
6 | "helpMarkDown": "[More Information](https://github.com/openalm/Extension-UtilitiesPack)",
7 | "category": "Deploy",
8 | "visibility": [
9 | "Release"
10 | ],
11 | "author": "ms-devlabs",
12 | "version": {
13 | "Major": 1,
14 | "Minor": 2,
15 | "Patch": 0
16 | },
17 | "minimumAgentVersion": "1.95.0",
18 | "groups": [
19 | {
20 | "name":"advanced",
21 | "displayName":"Advanced",
22 | "isExpanded":false
23 | }
24 | ],
25 | "inputs": [
26 | {
27 | "name": "type",
28 | "type": "pickList",
29 | "label": "Type",
30 | "defaultValue": "FilePath",
31 | "required": true,
32 | "helpMarkDown": "Provide Source for the rollback script. File Path or Inline Script",
33 | "options": {
34 | "InlineScript": "Inline Script",
35 | "FilePath": "File Path"
36 | }
37 | },
38 | {
39 | "name": "rollbackpowershellfile",
40 | "type": "filePath",
41 | "label": "Script Path",
42 | "defaultValue": "",
43 | "required": true,
44 | "helpMarkDown": "Path of the script. Should be fully qualified path or relative to the default working directory. Tasks execution details shall be available in Release_Tasks environment variable.",
45 | "visibleRule": "type = FilePath"
46 | },
47 | {
48 | "name": "additionalarguments",
49 | "type": "string",
50 | "label": "Script Arguments",
51 | "defaultValue": "",
52 | "required": false,
53 | "helpMarkDown": "Additional parameters to pass to PowerShell. Can be either ordinal or named parameters.",
54 | "visibleRule": "type = FilePath"
55 | },
56 | {
57 | "name": "workingFolder",
58 | "type": "filePath",
59 | "label": "Working folder",
60 | "defaultValue":"",
61 | "required":false,
62 | "helpMarkDown": "Current working directory when script is run. Defaults to the folder where the script is located.",
63 | "groupName":"advanced"
64 | },
65 | {
66 | "name": "script",
67 | "type": "multiLine",
68 | "label": "Script",
69 | "defaultValue": "Write-Host 'Rollback logic goes here as a powershell script'",
70 | "required": true,
71 | "helpMarkDown": "Powershell script to perform rollback. Execution is relative to the current working directory. Tasks execution details shall be available in Release_Tasks environment variable.",
72 | "visibleRule": "type = InlineScript",
73 | "properties": {
74 | "resizable": "true",
75 | "rows" : "10"
76 | }
77 | }
78 | ],
79 | "instanceNameFormat": "Rollback $(type): $(rollbackpowershellfile)",
80 | "execution": {
81 | "PowerShell": {
82 | "target": "$(currentDirectory)\\Runpowershellwithtaskcontext.ps1",
83 | "argumentFormat": "",
84 | "workingDirectory": "$(currentDirectory)"
85 | }
86 | }
87 | }
88 |
--------------------------------------------------------------------------------
/Utilites/Shell++/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/Shell++/icon.png
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/.npmignore:
--------------------------------------------------------------------------------
1 | node_modules
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright Joyent, Inc. and other Node contributors. All rights reserved.
2 | Permission is hereby granted, free of charge, to any person obtaining a copy
3 | of this software and associated documentation files (the "Software"), to
4 | deal in the Software without restriction, including without limitation the
5 | rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
6 | sell copies of the Software, and to permit persons to whom the Software is
7 | furnished to do so, subject to the following conditions:
8 |
9 | The above copyright notice and this permission notice shall be included in
10 | all copies or substantial portions of the Software.
11 |
12 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
17 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
18 | IN THE SOFTWARE.
19 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/README.md:
--------------------------------------------------------------------------------
1 | # path
2 |
3 | This is an exact copy of the NodeJS ’path’ module published to the NPM registry.
4 |
5 | [Documentation](http://nodejs.org/docs/latest/api/path.html)
6 |
7 | ## Install
8 |
9 | ```sh
10 | $ npm install --save path
11 | ```
12 |
13 | ## License
14 |
15 | MIT
16 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/process/LICENSE:
--------------------------------------------------------------------------------
1 | (The MIT License)
2 |
3 | Copyright (c) 2013 Roman Shtylman
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining
6 | a copy of this software and associated documentation files (the
7 | 'Software'), to deal in the Software without restriction, including
8 | without limitation the rights to use, copy, modify, merge, publish,
9 | distribute, sublicense, and/or sell copies of the Software, and to
10 | permit persons to whom the Software is furnished to do so, subject to
11 | the following conditions:
12 |
13 | The above copyright notice and this permission notice shall be
14 | included in all copies or substantial portions of the Software.
15 |
16 | THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
17 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19 | IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
20 | CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
21 | TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
22 | SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/process/README.md:
--------------------------------------------------------------------------------
1 | # process
2 |
3 | ```require('process');``` just like any other module.
4 |
5 | Works in node.js and browsers via the browser.js shim provided with the module.
6 |
7 | ## browser implementation
8 |
9 | The goal of this module is not to be a full-fledged alternative to the builtin process module. This module mostly exists to provide the nextTick functionality and little more. We keep this module lean because it will often be included by default by tools like browserify when it detects a module has used the `process` global.
10 |
11 | It also exposes a "browser" member (i.e. `process.browser`) which is `true` in this implementation but `undefined` in node. This can be used in isomorphic code that adjusts it's behavior depending on which environment it's running in.
12 |
13 | If you are looking to provide other process methods, I suggest you monkey patch them onto the process global in your app. A list of user created patches is below.
14 |
15 | * [hrtime](https://github.com/kumavis/browser-process-hrtime)
16 | * [stdout](https://github.com/kumavis/browser-stdout)
17 |
18 | ## package manager notes
19 |
20 | If you are writing a bundler to package modules for client side use, make sure you use the ```browser``` field hint in package.json.
21 |
22 | See https://gist.github.com/4339901 for details.
23 |
24 | The [browserify](https://github.com/substack/node-browserify) module will properly handle this field when bundling your files.
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/process/browser.js:
--------------------------------------------------------------------------------
1 | // shim for using process in browser
2 |
3 | var process = module.exports = {};
4 | var queue = [];
5 | var draining = false;
6 | var currentQueue;
7 | var queueIndex = -1;
8 |
9 | function cleanUpNextTick() {
10 | draining = false;
11 | if (currentQueue.length) {
12 | queue = currentQueue.concat(queue);
13 | } else {
14 | queueIndex = -1;
15 | }
16 | if (queue.length) {
17 | drainQueue();
18 | }
19 | }
20 |
21 | function drainQueue() {
22 | if (draining) {
23 | return;
24 | }
25 | var timeout = setTimeout(cleanUpNextTick);
26 | draining = true;
27 |
28 | var len = queue.length;
29 | while(len) {
30 | currentQueue = queue;
31 | queue = [];
32 | while (++queueIndex < len) {
33 | if (currentQueue) {
34 | currentQueue[queueIndex].run();
35 | }
36 | }
37 | queueIndex = -1;
38 | len = queue.length;
39 | }
40 | currentQueue = null;
41 | draining = false;
42 | clearTimeout(timeout);
43 | }
44 |
45 | process.nextTick = function (fun) {
46 | var args = new Array(arguments.length - 1);
47 | if (arguments.length > 1) {
48 | for (var i = 1; i < arguments.length; i++) {
49 | args[i - 1] = arguments[i];
50 | }
51 | }
52 | queue.push(new Item(fun, args));
53 | if (queue.length === 1 && !draining) {
54 | setTimeout(drainQueue, 0);
55 | }
56 | };
57 |
58 | // v8 likes predictible objects
59 | function Item(fun, array) {
60 | this.fun = fun;
61 | this.array = array;
62 | }
63 | Item.prototype.run = function () {
64 | this.fun.apply(null, this.array);
65 | };
66 | process.title = 'browser';
67 | process.browser = true;
68 | process.env = {};
69 | process.argv = [];
70 | process.version = ''; // empty string to avoid regexp issues
71 | process.versions = {};
72 |
73 | function noop() {}
74 |
75 | process.on = noop;
76 | process.addListener = noop;
77 | process.once = noop;
78 | process.off = noop;
79 | process.removeListener = noop;
80 | process.removeAllListeners = noop;
81 | process.emit = noop;
82 |
83 | process.binding = function (name) {
84 | throw new Error('process.binding is not supported');
85 | };
86 |
87 | process.cwd = function () { return '/' };
88 | process.chdir = function (dir) {
89 | throw new Error('process.chdir is not supported');
90 | };
91 | process.umask = function() { return 0; };
92 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/process/index.js:
--------------------------------------------------------------------------------
1 | // for now just expose the builtin process global from node.js
2 | module.exports = global.process;
3 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/process/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": {
3 | "name": "Roman Shtylman",
4 | "email": "shtylman@gmail.com"
5 | },
6 | "name": "process",
7 | "description": "process information for node.js and browsers",
8 | "keywords": [
9 | "process"
10 | ],
11 | "scripts": {
12 | "test": "mocha test.js"
13 | },
14 | "version": "0.11.2",
15 | "repository": {
16 | "type": "git",
17 | "url": "git://github.com/shtylman/node-process.git"
18 | },
19 | "license": "MIT",
20 | "browser": "./browser.js",
21 | "main": "./index.js",
22 | "engines": {
23 | "node": ">= 0.6.0"
24 | },
25 | "devDependencies": {
26 | "mocha": "2.2.1"
27 | },
28 | "gitHead": "4b996b1e3281aa38d46294f33b9772771f53272d",
29 | "bugs": {
30 | "url": "https://github.com/shtylman/node-process/issues"
31 | },
32 | "homepage": "https://github.com/shtylman/node-process#readme",
33 | "_id": "process@0.11.2",
34 | "_shasum": "8a58d1d12c573f3f890da9848a4fe8e16ca977b2",
35 | "_from": "process@>=0.11.1 <0.12.0",
36 | "_npmVersion": "2.11.1",
37 | "_nodeVersion": "0.10.38",
38 | "_npmUser": {
39 | "name": "defunctzombie",
40 | "email": "shtylman@gmail.com"
41 | },
42 | "dist": {
43 | "shasum": "8a58d1d12c573f3f890da9848a4fe8e16ca977b2",
44 | "tarball": "http://registry.npmjs.org/process/-/process-0.11.2.tgz"
45 | },
46 | "maintainers": [
47 | {
48 | "name": "coolaj86",
49 | "email": "coolaj86@gmail.com"
50 | },
51 | {
52 | "name": "defunctzombie",
53 | "email": "shtylman@gmail.com"
54 | }
55 | ],
56 | "directories": {},
57 | "_resolved": "https://registry.npmjs.org/process/-/process-0.11.2.tgz"
58 | }
59 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/process/test.js:
--------------------------------------------------------------------------------
1 | var assert = require('assert');
2 | var ourProcess = require('./browser');
3 | describe('test against process', function () {
4 | test(process);
5 | });
6 | if (!process.browser) {
7 | describe('test against our shim', function () {
8 | test(ourProcess);
9 | });
10 | }
11 | function test (ourProcess) {
12 | describe('test arguments', function (t) {
13 | it ('works', function (done) {
14 | var order = 0;
15 |
16 |
17 | ourProcess.nextTick(function (num) {
18 | assert.equal(num, order++, 'first one works');
19 | ourProcess.nextTick(function (num) {
20 | assert.equal(num, order++, 'recursive one is 4th');
21 | }, 3);
22 | }, 0);
23 | ourProcess.nextTick(function (num) {
24 | assert.equal(num, order++, 'second one starts');
25 | ourProcess.nextTick(function (num) {
26 | assert.equal(num, order++, 'this is third');
27 | ourProcess.nextTick(function (num) {
28 | assert.equal(num, order++, 'this is last');
29 | done();
30 | }, 5);
31 | }, 4);
32 | }, 1);
33 | ourProcess.nextTick(function (num) {
34 |
35 | assert.equal(num, order++, '3rd schedualed happens after the error');
36 | }, 2);
37 | });
38 | });
39 |
40 | describe('test errors', function (t) {
41 | it ('works', function (done) {
42 | var order = 0;
43 | process.removeAllListeners('uncaughtException');
44 | process.once('uncaughtException', function(err) {
45 | assert.equal(2, order++, 'error is third');
46 | ourProcess.nextTick(function () {
47 | assert.equal(5, order++, 'schedualed in error is last');
48 | done();
49 | });
50 | });
51 | ourProcess.nextTick(function () {
52 | assert.equal(0, order++, 'first one works');
53 | ourProcess.nextTick(function () {
54 | assert.equal(4, order++, 'recursive one is 4th');
55 | });
56 | });
57 | ourProcess.nextTick(function () {
58 | assert.equal(1, order++, 'second one starts');
59 | throw(new Error('an error is thrown'));
60 | });
61 | ourProcess.nextTick(function () {
62 | assert.equal(3, order++, '3rd schedualed happens after the error');
63 | });
64 | });
65 | });
66 | }
67 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/util/.npmignore:
--------------------------------------------------------------------------------
1 | node_modules
2 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/util/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - '0.8'
4 | - '0.10'
5 | env:
6 | global:
7 | - secure: AdUubswCR68/eGD+WWjwTHgFbelwQGnNo81j1IOaUxKw+zgFPzSnFEEtDw7z98pWgg7p9DpCnyzzSnSllP40wq6AG19OwyUJjSLoZK57fp+r8zwTQwWiSqUgMu2YSMmKJPIO/aoSGpRQXT+L1nRrHoUJXgFodyIZgz40qzJeZjc=
8 | - secure: heQuxPVsQ7jBbssoVKimXDpqGjQFiucm6W5spoujmspjDG7oEcHD9ANo9++LoRPrsAmNx56SpMK5fNfVmYediw6SvhXm4Mxt56/fYCrLDBtgGG+1neCeffAi8z1rO8x48m77hcQ6YhbUL5R9uBimUjMX92fZcygAt8Rg804zjFo=
9 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/util/.zuul.yml:
--------------------------------------------------------------------------------
1 | ui: mocha-qunit
2 | browsers:
3 | - name: chrome
4 | version: 27..latest
5 | - name: firefox
6 | version: latest
7 | - name: safari
8 | version: latest
9 | - name: ie
10 | version: 9..latest
11 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/util/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright Joyent, Inc. and other Node contributors. All rights reserved.
2 | Permission is hereby granted, free of charge, to any person obtaining a copy
3 | of this software and associated documentation files (the "Software"), to
4 | deal in the Software without restriction, including without limitation the
5 | rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
6 | sell copies of the Software, and to permit persons to whom the Software is
7 | furnished to do so, subject to the following conditions:
8 |
9 | The above copyright notice and this permission notice shall be included in
10 | all copies or substantial portions of the Software.
11 |
12 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
17 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
18 | IN THE SOFTWARE.
19 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/util/README.md:
--------------------------------------------------------------------------------
1 | # util
2 |
3 | [](https://travis-ci.org/defunctzombie/node-util)
4 |
5 | node.js [util](http://nodejs.org/api/util.html) module as a module
6 |
7 | ## install via [npm](npmjs.org)
8 |
9 | ```shell
10 | npm install util
11 | ```
12 |
13 | ## browser support
14 |
15 | This module also works in modern browsers. If you need legacy browser support you will need to polyfill ES5 features.
16 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/util/node_modules/inherits/LICENSE:
--------------------------------------------------------------------------------
1 | The ISC License
2 |
3 | Copyright (c) Isaac Z. Schlueter
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
11 | FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13 | LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14 | OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15 | PERFORMANCE OF THIS SOFTWARE.
16 |
17 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/util/node_modules/inherits/README.md:
--------------------------------------------------------------------------------
1 | Browser-friendly inheritance fully compatible with standard node.js
2 | [inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).
3 |
4 | This package exports standard `inherits` from node.js `util` module in
5 | node environment, but also provides alternative browser-friendly
6 | implementation through [browser
7 | field](https://gist.github.com/shtylman/4339901). Alternative
8 | implementation is a literal copy of standard one located in standalone
9 | module to avoid requiring of `util`. It also has a shim for old
10 | browsers with no `Object.create` support.
11 |
12 | While keeping you sure you are using standard `inherits`
13 | implementation in node.js environment, it allows bundlers such as
14 | [browserify](https://github.com/substack/node-browserify) to not
15 | include full `util` package to your client code if all you need is
16 | just `inherits` function. It worth, because browser shim for `util`
17 | package is large and `inherits` is often the single function you need
18 | from it.
19 |
20 | It's recommended to use this package instead of
21 | `require('util').inherits` for any code that has chances to be used
22 | not only in node.js but in browser too.
23 |
24 | ## usage
25 |
26 | ```js
27 | var inherits = require('inherits');
28 | // then use exactly as the standard one
29 | ```
30 |
31 | ## note on version ~1.0
32 |
33 | Version ~1.0 had completely different motivation and is not compatible
34 | neither with 2.0 nor with standard node.js `inherits`.
35 |
36 | If you are using version ~1.0 and planning to switch to ~2.0, be
37 | careful:
38 |
39 | * new version uses `super_` instead of `super` for referencing
40 | superclass
41 | * new version overwrites current prototype while old one preserves any
42 | existing fields on it
43 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/util/node_modules/inherits/inherits.js:
--------------------------------------------------------------------------------
1 | module.exports = require('util').inherits
2 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/util/node_modules/inherits/inherits_browser.js:
--------------------------------------------------------------------------------
1 | if (typeof Object.create === 'function') {
2 | // implementation from standard node.js 'util' module
3 | module.exports = function inherits(ctor, superCtor) {
4 | ctor.super_ = superCtor
5 | ctor.prototype = Object.create(superCtor.prototype, {
6 | constructor: {
7 | value: ctor,
8 | enumerable: false,
9 | writable: true,
10 | configurable: true
11 | }
12 | });
13 | };
14 | } else {
15 | // old school shim for old browsers
16 | module.exports = function inherits(ctor, superCtor) {
17 | ctor.super_ = superCtor
18 | var TempCtor = function () {}
19 | TempCtor.prototype = superCtor.prototype
20 | ctor.prototype = new TempCtor()
21 | ctor.prototype.constructor = ctor
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/util/node_modules/inherits/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "inherits",
3 | "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
4 | "version": "2.0.1",
5 | "keywords": [
6 | "inheritance",
7 | "class",
8 | "klass",
9 | "oop",
10 | "object-oriented",
11 | "inherits",
12 | "browser",
13 | "browserify"
14 | ],
15 | "main": "./inherits.js",
16 | "browser": "./inherits_browser.js",
17 | "repository": {
18 | "type": "git",
19 | "url": "git://github.com/isaacs/inherits.git"
20 | },
21 | "license": "ISC",
22 | "scripts": {
23 | "test": "node test"
24 | },
25 | "bugs": {
26 | "url": "https://github.com/isaacs/inherits/issues"
27 | },
28 | "_id": "inherits@2.0.1",
29 | "dist": {
30 | "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
31 | "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
32 | },
33 | "_from": "inherits@2.0.1",
34 | "_npmVersion": "1.3.8",
35 | "_npmUser": {
36 | "name": "isaacs",
37 | "email": "i@izs.me"
38 | },
39 | "maintainers": [
40 | {
41 | "name": "isaacs",
42 | "email": "i@izs.me"
43 | }
44 | ],
45 | "directories": {},
46 | "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
47 | "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
48 | "readme": "ERROR: No README data found!",
49 | "homepage": "https://github.com/isaacs/inherits#readme"
50 | }
51 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/util/node_modules/inherits/test.js:
--------------------------------------------------------------------------------
1 | var inherits = require('./inherits.js')
2 | var assert = require('assert')
3 |
4 | function test(c) {
5 | assert(c.constructor === Child)
6 | assert(c.constructor.super_ === Parent)
7 | assert(Object.getPrototypeOf(c) === Child.prototype)
8 | assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype)
9 | assert(c instanceof Child)
10 | assert(c instanceof Parent)
11 | }
12 |
13 | function Child() {
14 | Parent.call(this)
15 | test(this)
16 | }
17 |
18 | function Parent() {}
19 |
20 | inherits(Child, Parent)
21 |
22 | var c = new Child
23 | test(c)
24 |
25 | console.log('ok')
26 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/util/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": {
3 | "name": "Joyent",
4 | "url": "http://www.joyent.com"
5 | },
6 | "name": "util",
7 | "description": "Node.JS util module",
8 | "keywords": [
9 | "util"
10 | ],
11 | "version": "0.10.3",
12 | "homepage": "https://github.com/defunctzombie/node-util",
13 | "repository": {
14 | "type": "git",
15 | "url": "git://github.com/defunctzombie/node-util"
16 | },
17 | "main": "./util.js",
18 | "scripts": {
19 | "test": "node test/node/*.js && zuul test/browser/*.js"
20 | },
21 | "dependencies": {
22 | "inherits": "2.0.1"
23 | },
24 | "license": "MIT",
25 | "devDependencies": {
26 | "zuul": "~1.0.9"
27 | },
28 | "browser": {
29 | "./support/isBuffer.js": "./support/isBufferBrowser.js"
30 | },
31 | "bugs": {
32 | "url": "https://github.com/defunctzombie/node-util/issues"
33 | },
34 | "_id": "util@0.10.3",
35 | "dist": {
36 | "shasum": "7afb1afe50805246489e3db7fe0ed379336ac0f9",
37 | "tarball": "http://registry.npmjs.org/util/-/util-0.10.3.tgz"
38 | },
39 | "_from": "util@>=0.10.3 <0.11.0",
40 | "_npmVersion": "1.3.24",
41 | "_npmUser": {
42 | "name": "shtylman",
43 | "email": "shtylman@gmail.com"
44 | },
45 | "maintainers": [
46 | {
47 | "name": "shtylman",
48 | "email": "shtylman@gmail.com"
49 | }
50 | ],
51 | "directories": {},
52 | "_shasum": "7afb1afe50805246489e3db7fe0ed379336ac0f9",
53 | "_resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz"
54 | }
55 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/util/support/isBuffer.js:
--------------------------------------------------------------------------------
1 | module.exports = function isBuffer(arg) {
2 | return arg instanceof Buffer;
3 | }
4 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/util/support/isBufferBrowser.js:
--------------------------------------------------------------------------------
1 | module.exports = function isBuffer(arg) {
2 | return arg && typeof arg === 'object'
3 | && typeof arg.copy === 'function'
4 | && typeof arg.fill === 'function'
5 | && typeof arg.readUInt8 === 'function';
6 | }
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/util/test/browser/inspect.js:
--------------------------------------------------------------------------------
1 | // Copyright Joyent, Inc. and other Node contributors.
2 | //
3 | // Permission is hereby granted, free of charge, to any person obtaining a
4 | // copy of this software and associated documentation files (the
5 | // "Software"), to deal in the Software without restriction, including
6 | // without limitation the rights to use, copy, modify, merge, publish,
7 | // distribute, sublicense, and/or sell copies of the Software, and to permit
8 | // persons to whom the Software is furnished to do so, subject to the
9 | // following conditions:
10 | //
11 | // The above copyright notice and this permission notice shall be included
12 | // in all copies or substantial portions of the Software.
13 | //
14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
17 | // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18 | // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19 | // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20 | // USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
22 | var assert = require('assert');
23 | var util = require('../../');
24 |
25 | suite('inspect');
26 |
27 | test('util.inspect - test for sparse array', function () {
28 | var a = ['foo', 'bar', 'baz'];
29 | assert.equal(util.inspect(a), '[ \'foo\', \'bar\', \'baz\' ]');
30 | delete a[1];
31 | assert.equal(util.inspect(a), '[ \'foo\', , \'baz\' ]');
32 | assert.equal(util.inspect(a, true), '[ \'foo\', , \'baz\', [length]: 3 ]');
33 | assert.equal(util.inspect(new Array(5)), '[ , , , , ]');
34 | });
35 |
36 | test('util.inspect - exceptions should print the error message, not \'{}\'', function () {
37 | assert.equal(util.inspect(new Error()), '[Error]');
38 | assert.equal(util.inspect(new Error('FAIL')), '[Error: FAIL]');
39 | assert.equal(util.inspect(new TypeError('FAIL')), '[TypeError: FAIL]');
40 | assert.equal(util.inspect(new SyntaxError('FAIL')), '[SyntaxError: FAIL]');
41 | });
42 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/util/test/node/debug.js:
--------------------------------------------------------------------------------
1 | // Copyright Joyent, Inc. and other Node contributors.
2 | //
3 | // Permission is hereby granted, free of charge, to any person obtaining a
4 | // copy of this software and associated documentation files (the
5 | // "Software"), to deal in the Software without restriction, including
6 | // without limitation the rights to use, copy, modify, merge, publish,
7 | // distribute, sublicense, and/or sell copies of the Software, and to permit
8 | // persons to whom the Software is furnished to do so, subject to the
9 | // following conditions:
10 | //
11 | // The above copyright notice and this permission notice shall be included
12 | // in all copies or substantial portions of the Software.
13 | //
14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
17 | // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18 | // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19 | // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20 | // USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
22 | var assert = require('assert');
23 | var util = require('../../');
24 |
25 | if (process.argv[2] === 'child')
26 | child();
27 | else
28 | parent();
29 |
30 | function parent() {
31 | test('foo,tud,bar', true);
32 | test('foo,tud', true);
33 | test('tud,bar', true);
34 | test('tud', true);
35 | test('foo,bar', false);
36 | test('', false);
37 | }
38 |
39 | function test(environ, shouldWrite) {
40 | var expectErr = '';
41 | if (shouldWrite) {
42 | expectErr = 'TUD %PID%: this { is: \'a\' } /debugging/\n' +
43 | 'TUD %PID%: number=1234 string=asdf obj={"foo":"bar"}\n';
44 | }
45 | var expectOut = 'ok\n';
46 | var didTest = false;
47 |
48 | var spawn = require('child_process').spawn;
49 | var child = spawn(process.execPath, [__filename, 'child'], {
50 | env: { NODE_DEBUG: environ }
51 | });
52 |
53 | expectErr = expectErr.split('%PID%').join(child.pid);
54 |
55 | var err = '';
56 | child.stderr.setEncoding('utf8');
57 | child.stderr.on('data', function(c) {
58 | err += c;
59 | });
60 |
61 | var out = '';
62 | child.stdout.setEncoding('utf8');
63 | child.stdout.on('data', function(c) {
64 | out += c;
65 | });
66 |
67 | child.on('close', function(c) {
68 | assert(!c);
69 | assert.equal(err, expectErr);
70 | assert.equal(out, expectOut);
71 | didTest = true;
72 | console.log('ok %j %j', environ, shouldWrite);
73 | });
74 |
75 | process.on('exit', function() {
76 | assert(didTest);
77 | });
78 | }
79 |
80 |
81 | function child() {
82 | var debug = util.debuglog('tud');
83 | debug('this', { is: 'a' }, /debugging/);
84 | debug('number=%d string=%s obj=%j', 1234, 'asdf', { foo: 'bar' });
85 | console.log('ok');
86 | }
87 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/util/test/node/format.js:
--------------------------------------------------------------------------------
1 | // Copyright Joyent, Inc. and other Node contributors.
2 | //
3 | // Permission is hereby granted, free of charge, to any person obtaining a
4 | // copy of this software and associated documentation files (the
5 | // "Software"), to deal in the Software without restriction, including
6 | // without limitation the rights to use, copy, modify, merge, publish,
7 | // distribute, sublicense, and/or sell copies of the Software, and to permit
8 | // persons to whom the Software is furnished to do so, subject to the
9 | // following conditions:
10 | //
11 | // The above copyright notice and this permission notice shall be included
12 | // in all copies or substantial portions of the Software.
13 | //
14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
17 | // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18 | // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19 | // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20 | // USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
22 |
23 |
24 |
25 | var assert = require('assert');
26 | var util = require('../../');
27 |
28 | assert.equal(util.format(), '');
29 | assert.equal(util.format(''), '');
30 | assert.equal(util.format([]), '[]');
31 | assert.equal(util.format({}), '{}');
32 | assert.equal(util.format(null), 'null');
33 | assert.equal(util.format(true), 'true');
34 | assert.equal(util.format(false), 'false');
35 | assert.equal(util.format('test'), 'test');
36 |
37 | // CHECKME this is for console.log() compatibility - but is it *right*?
38 | assert.equal(util.format('foo', 'bar', 'baz'), 'foo bar baz');
39 |
40 | assert.equal(util.format('%d', 42.0), '42');
41 | assert.equal(util.format('%d', 42), '42');
42 | assert.equal(util.format('%s', 42), '42');
43 | assert.equal(util.format('%j', 42), '42');
44 |
45 | assert.equal(util.format('%d', '42.0'), '42');
46 | assert.equal(util.format('%d', '42'), '42');
47 | assert.equal(util.format('%s', '42'), '42');
48 | assert.equal(util.format('%j', '42'), '"42"');
49 |
50 | assert.equal(util.format('%%s%s', 'foo'), '%sfoo');
51 |
52 | assert.equal(util.format('%s'), '%s');
53 | assert.equal(util.format('%s', undefined), 'undefined');
54 | assert.equal(util.format('%s', 'foo'), 'foo');
55 | assert.equal(util.format('%s:%s'), '%s:%s');
56 | assert.equal(util.format('%s:%s', undefined), 'undefined:%s');
57 | assert.equal(util.format('%s:%s', 'foo'), 'foo:%s');
58 | assert.equal(util.format('%s:%s', 'foo', 'bar'), 'foo:bar');
59 | assert.equal(util.format('%s:%s', 'foo', 'bar', 'baz'), 'foo:bar baz');
60 | assert.equal(util.format('%%%s%%', 'hi'), '%hi%');
61 | assert.equal(util.format('%%%s%%%%', 'hi'), '%hi%%');
62 |
63 | (function() {
64 | var o = {};
65 | o.o = o;
66 | assert.equal(util.format('%j', o), '[Circular]');
67 | })();
68 |
69 | // Errors
70 | assert.equal(util.format(new Error('foo')), '[Error: foo]');
71 | function CustomError(msg) {
72 | Error.call(this);
73 | Object.defineProperty(this, 'message', { value: msg, enumerable: false });
74 | Object.defineProperty(this, 'name', { value: 'CustomError', enumerable: false });
75 | }
76 | util.inherits(CustomError, Error);
77 | assert.equal(util.format(new CustomError('bar')), '[CustomError: bar]');
78 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/node_modules/util/test/node/log.js:
--------------------------------------------------------------------------------
1 | // Copyright Joyent, Inc. and other Node contributors.
2 | //
3 | // Permission is hereby granted, free of charge, to any person obtaining a
4 | // copy of this software and associated documentation files (the
5 | // "Software"), to deal in the Software without restriction, including
6 | // without limitation the rights to use, copy, modify, merge, publish,
7 | // distribute, sublicense, and/or sell copies of the Software, and to permit
8 | // persons to whom the Software is furnished to do so, subject to the
9 | // following conditions:
10 | //
11 | // The above copyright notice and this permission notice shall be included
12 | // in all copies or substantial portions of the Software.
13 | //
14 | // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 | // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 | // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
17 | // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18 | // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
19 | // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20 | // USE OR OTHER DEALINGS IN THE SOFTWARE.
21 |
22 |
23 | var assert = require('assert');
24 | var util = require('../../');
25 |
26 | assert.ok(process.stdout.writable);
27 | assert.ok(process.stderr.writable);
28 |
29 | var stdout_write = global.process.stdout.write;
30 | var strings = [];
31 | global.process.stdout.write = function(string) {
32 | strings.push(string);
33 | };
34 | console._stderr = process.stdout;
35 |
36 | var tests = [
37 | {input: 'foo', output: 'foo'},
38 | {input: undefined, output: 'undefined'},
39 | {input: null, output: 'null'},
40 | {input: false, output: 'false'},
41 | {input: 42, output: '42'},
42 | {input: function(){}, output: '[Function]'},
43 | {input: parseInt('not a number', 10), output: 'NaN'},
44 | {input: {answer: 42}, output: '{ answer: 42 }'},
45 | {input: [1,2,3], output: '[ 1, 2, 3 ]'}
46 | ];
47 |
48 | // test util.log()
49 | tests.forEach(function(test) {
50 | util.log(test.input);
51 | var result = strings.shift().trim(),
52 | re = (/[0-9]{1,2} [A-Z][a-z]{2} [0-9]{2}:[0-9]{2}:[0-9]{2} - (.+)$/),
53 | match = re.exec(result);
54 | assert.ok(match);
55 | assert.equal(match[1], test.output);
56 | });
57 |
58 | global.process.stdout.write = stdout_write;
59 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/path/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": {
3 | "name": "Joyent",
4 | "url": "http://www.joyent.com"
5 | },
6 | "name": "path",
7 | "description": "Node.JS path module",
8 | "keywords": [
9 | "ender",
10 | "path"
11 | ],
12 | "license": "MIT",
13 | "version": "0.12.7",
14 | "homepage": "http://nodejs.org/docs/latest/api/path.html",
15 | "repository": {
16 | "type": "git",
17 | "url": "git://github.com/jinder/path.git"
18 | },
19 | "main": "./path.js",
20 | "dependencies": {
21 | "process": "^0.11.1",
22 | "util": "^0.10.3"
23 | },
24 | "gitHead": "7fbaede3ca9d224494cbdd47d7ca803ee96d2055",
25 | "bugs": {
26 | "url": "https://github.com/jinder/path/issues"
27 | },
28 | "_id": "path@0.12.7",
29 | "scripts": {},
30 | "_shasum": "d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f",
31 | "_from": "path@*",
32 | "_npmVersion": "2.11.3",
33 | "_nodeVersion": "0.12.7",
34 | "_npmUser": {
35 | "name": "jinder",
36 | "email": "jindersidhu@gmail.com"
37 | },
38 | "dist": {
39 | "shasum": "d4dc2a506c4ce2197eb481ebfcd5b36c0140b10f",
40 | "tarball": "http://registry.npmjs.org/path/-/path-0.12.7.tgz"
41 | },
42 | "maintainers": [
43 | {
44 | "name": "coolaj86",
45 | "email": "coolaj86@gmail.com"
46 | },
47 | {
48 | "name": "jinder",
49 | "email": "jindersidhu@gmail.com"
50 | },
51 | {
52 | "name": "defunctzombie",
53 | "email": "shtylman@gmail.com"
54 | }
55 | ],
56 | "directories": {},
57 | "_resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz"
58 | }
59 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/LICENSE:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) 2015 Microsoft
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
23 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/README.md:
--------------------------------------------------------------------------------
1 | # VSO DevOps Task SDK
2 |
3 | Libraries for writing VSO and TFS build and deployment tasks
4 |
5 | ## Node Task Lib
6 | Library for writing tasks with the node handler
7 |
8 | ## Contributing
9 |
10 | ### Node
11 |
12 | Once:
13 | ```bash
14 | $ cd node
15 | $ npm install
16 | $ sudo npm install gulp -g
17 | ```
18 |
19 | Build:
20 | ```bash
21 | $ cd node
22 | $ gulp
23 | ```
24 |
25 | Test:
26 | ```bash
27 | $ cd node
28 | $ gulp test
29 | ```
30 |
31 | ### Powershell
32 |
33 | Coming soon
34 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/.bin/shjs:
--------------------------------------------------------------------------------
1 | #!/bin/sh
2 | basedir=`dirname "$0"`
3 |
4 | case `uname` in
5 | *CYGWIN*) basedir=`cygpath -w "$basedir"`;;
6 | esac
7 |
8 | if [ -x "$basedir/node" ]; then
9 | "$basedir/node" "$basedir/../shelljs/bin/shjs" "$@"
10 | ret=$?
11 | else
12 | node "$basedir/../shelljs/bin/shjs" "$@"
13 | ret=$?
14 | fi
15 | exit $ret
16 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/.bin/shjs.cmd:
--------------------------------------------------------------------------------
1 | @IF EXIST "%~dp0\node.exe" (
2 | "%~dp0\node.exe" "%~dp0\..\shelljs\bin\shjs" %*
3 | ) ELSE (
4 | @SETLOCAL
5 | @SET PATHEXT=%PATHEXT:;.JS;=;%
6 | node "%~dp0\..\shelljs\bin\shjs" %*
7 | )
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/LICENSE:
--------------------------------------------------------------------------------
1 | The ISC License
2 |
3 | Copyright (c) Isaac Z. Schlueter and Contributors
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "env" : {
3 | "node" : true
4 | },
5 | "rules" : {
6 | "semi": [2, "never"],
7 | "strict": 0,
8 | "quotes": [1, "single", "avoid-escape"],
9 | "no-use-before-define": 0,
10 | "curly": 0,
11 | "no-underscore-dangle": 0,
12 | "no-lonely-if": 1,
13 | "no-unused-vars": [2, {"vars" : "all", "args" : "after-used"}],
14 | "no-mixed-requires": 0,
15 | "space-infix-ops": 0
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/LICENSE:
--------------------------------------------------------------------------------
1 | The ISC License
2 |
3 | Copyright (c) Isaac Z. Schlueter
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/README.md:
--------------------------------------------------------------------------------
1 | # inflight
2 |
3 | Add callbacks to requests in flight to avoid async duplication
4 |
5 | ## USAGE
6 |
7 | ```javascript
8 | var inflight = require('inflight')
9 |
10 | // some request that does some stuff
11 | function req(key, callback) {
12 | // key is any random string. like a url or filename or whatever.
13 | //
14 | // will return either a falsey value, indicating that the
15 | // request for this key is already in flight, or a new callback
16 | // which when called will call all callbacks passed to inflightk
17 | // with the same key
18 | callback = inflight(key, callback)
19 |
20 | // If we got a falsey value back, then there's already a req going
21 | if (!callback) return
22 |
23 | // this is where you'd fetch the url or whatever
24 | // callback is also once()-ified, so it can safely be assigned
25 | // to multiple events etc. First call wins.
26 | setTimeout(function() {
27 | callback(null, key)
28 | }, 100)
29 | }
30 |
31 | // only assigns a single setTimeout
32 | // when it dings, all cbs get called
33 | req('foo', cb1)
34 | req('foo', cb2)
35 | req('foo', cb3)
36 | req('foo', cb4)
37 | ```
38 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/inflight.js:
--------------------------------------------------------------------------------
1 | var wrappy = require('wrappy')
2 | var reqs = Object.create(null)
3 | var once = require('once')
4 |
5 | module.exports = wrappy(inflight)
6 |
7 | function inflight (key, cb) {
8 | if (reqs[key]) {
9 | reqs[key].push(cb)
10 | return null
11 | } else {
12 | reqs[key] = [cb]
13 | return makeres(key)
14 | }
15 | }
16 |
17 | function makeres (key) {
18 | return once(function RES () {
19 | var cbs = reqs[key]
20 | var len = cbs.length
21 | var args = slice(arguments)
22 | for (var i = 0; i < len; i++) {
23 | cbs[i].apply(null, args)
24 | }
25 | if (cbs.length > len) {
26 | // added more in the interim.
27 | // de-zalgo, just in case, but don't call again.
28 | cbs.splice(0, len)
29 | process.nextTick(function () {
30 | RES.apply(null, args)
31 | })
32 | } else {
33 | delete reqs[key]
34 | }
35 | })
36 | }
37 |
38 | function slice (args) {
39 | var length = args.length
40 | var array = []
41 |
42 | for (var i = 0; i < length; i++) array[i] = args[i]
43 | return array
44 | }
45 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/node_modules/wrappy/LICENSE:
--------------------------------------------------------------------------------
1 | The ISC License
2 |
3 | Copyright (c) Isaac Z. Schlueter and Contributors
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/node_modules/wrappy/README.md:
--------------------------------------------------------------------------------
1 | # wrappy
2 |
3 | Callback wrapping utility
4 |
5 | ## USAGE
6 |
7 | ```javascript
8 | var wrappy = require("wrappy")
9 |
10 | // var wrapper = wrappy(wrapperFunction)
11 |
12 | // make sure a cb is called only once
13 | // See also: http://npm.im/once for this specific use case
14 | var once = wrappy(function (cb) {
15 | var called = false
16 | return function () {
17 | if (called) return
18 | called = true
19 | return cb.apply(this, arguments)
20 | }
21 | })
22 |
23 | function printBoo () {
24 | console.log('boo')
25 | }
26 | // has some rando property
27 | printBoo.iAmBooPrinter = true
28 |
29 | var onlyPrintOnce = once(printBoo)
30 |
31 | onlyPrintOnce() // prints 'boo'
32 | onlyPrintOnce() // does nothing
33 |
34 | // random property is retained!
35 | assert.equal(onlyPrintOnce.iAmBooPrinter, true)
36 | ```
37 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/node_modules/wrappy/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "wrappy",
3 | "version": "1.0.1",
4 | "description": "Callback wrapping utility",
5 | "main": "wrappy.js",
6 | "directories": {
7 | "test": "test"
8 | },
9 | "dependencies": {},
10 | "devDependencies": {
11 | "tap": "^0.4.12"
12 | },
13 | "scripts": {
14 | "test": "tap test/*.js"
15 | },
16 | "repository": {
17 | "type": "git",
18 | "url": "git+https://github.com/npm/wrappy.git"
19 | },
20 | "author": {
21 | "name": "Isaac Z. Schlueter",
22 | "email": "i@izs.me",
23 | "url": "http://blog.izs.me/"
24 | },
25 | "license": "ISC",
26 | "bugs": {
27 | "url": "https://github.com/npm/wrappy/issues"
28 | },
29 | "homepage": "https://github.com/npm/wrappy",
30 | "gitHead": "006a8cbac6b99988315834c207896eed71fd069a",
31 | "_id": "wrappy@1.0.1",
32 | "_shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739",
33 | "_from": "wrappy@>=1.0.0 <2.0.0",
34 | "_npmVersion": "2.0.0",
35 | "_nodeVersion": "0.10.31",
36 | "_npmUser": {
37 | "name": "isaacs",
38 | "email": "i@izs.me"
39 | },
40 | "maintainers": [
41 | {
42 | "name": "isaacs",
43 | "email": "i@izs.me"
44 | }
45 | ],
46 | "dist": {
47 | "shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739",
48 | "tarball": "http://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
49 | },
50 | "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz",
51 | "readme": "ERROR: No README data found!"
52 | }
53 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/node_modules/wrappy/test/basic.js:
--------------------------------------------------------------------------------
1 | var test = require('tap').test
2 | var wrappy = require('../wrappy.js')
3 |
4 | test('basic', function (t) {
5 | function onceifier (cb) {
6 | var called = false
7 | return function () {
8 | if (called) return
9 | called = true
10 | return cb.apply(this, arguments)
11 | }
12 | }
13 | onceifier.iAmOnce = {}
14 | var once = wrappy(onceifier)
15 | t.equal(once.iAmOnce, onceifier.iAmOnce)
16 |
17 | var called = 0
18 | function boo () {
19 | t.equal(called, 0)
20 | called++
21 | }
22 | // has some rando property
23 | boo.iAmBoo = true
24 |
25 | var onlyPrintOnce = once(boo)
26 |
27 | onlyPrintOnce() // prints 'boo'
28 | onlyPrintOnce() // does nothing
29 | t.equal(called, 1)
30 |
31 | // random property is retained!
32 | t.equal(onlyPrintOnce.iAmBoo, true)
33 |
34 | var logs = []
35 | var logwrap = wrappy(function (msg, cb) {
36 | logs.push(msg + ' wrapping cb')
37 | return function () {
38 | logs.push(msg + ' before cb')
39 | var ret = cb.apply(this, arguments)
40 | logs.push(msg + ' after cb')
41 | }
42 | })
43 |
44 | var c = logwrap('foo', function () {
45 | t.same(logs, [ 'foo wrapping cb', 'foo before cb' ])
46 | })
47 | c()
48 | t.same(logs, [ 'foo wrapping cb', 'foo before cb', 'foo after cb' ])
49 |
50 | t.end()
51 | })
52 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/node_modules/wrappy/wrappy.js:
--------------------------------------------------------------------------------
1 | // Returns a wrapper function that returns a wrapped callback
2 | // The wrapper function should do some stuff, and return a
3 | // presumably different callback function.
4 | // This makes sure that own properties are retained, so that
5 | // decorations and such are not lost along the way.
6 | module.exports = wrappy
7 | function wrappy (fn, cb) {
8 | if (fn && cb) return wrappy(fn)(cb)
9 |
10 | if (typeof fn !== 'function')
11 | throw new TypeError('need wrapper function')
12 |
13 | Object.keys(fn).forEach(function (k) {
14 | wrapper[k] = fn[k]
15 | })
16 |
17 | return wrapper
18 |
19 | function wrapper() {
20 | var args = new Array(arguments.length)
21 | for (var i = 0; i < args.length; i++) {
22 | args[i] = arguments[i]
23 | }
24 | var ret = fn.apply(this, args)
25 | var cb = args[args.length-1]
26 | if (typeof ret === 'function' && ret !== cb) {
27 | Object.keys(cb).forEach(function (k) {
28 | ret[k] = cb[k]
29 | })
30 | }
31 | return ret
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "inflight",
3 | "version": "1.0.4",
4 | "description": "Add callbacks to requests in flight to avoid async duplication",
5 | "main": "inflight.js",
6 | "dependencies": {
7 | "once": "^1.3.0",
8 | "wrappy": "1"
9 | },
10 | "devDependencies": {
11 | "tap": "^0.4.10"
12 | },
13 | "scripts": {
14 | "test": "tap test.js"
15 | },
16 | "repository": {
17 | "type": "git",
18 | "url": "git://github.com/isaacs/inflight.git"
19 | },
20 | "author": {
21 | "name": "Isaac Z. Schlueter",
22 | "email": "i@izs.me",
23 | "url": "http://blog.izs.me/"
24 | },
25 | "bugs": {
26 | "url": "https://github.com/isaacs/inflight/issues"
27 | },
28 | "homepage": "https://github.com/isaacs/inflight",
29 | "license": "ISC",
30 | "gitHead": "c7b5531d572a867064d4a1da9e013e8910b7d1ba",
31 | "_id": "inflight@1.0.4",
32 | "_shasum": "6cbb4521ebd51ce0ec0a936bfd7657ef7e9b172a",
33 | "_from": "inflight@>=1.0.4 <2.0.0",
34 | "_npmVersion": "2.1.3",
35 | "_nodeVersion": "0.10.32",
36 | "_npmUser": {
37 | "name": "othiym23",
38 | "email": "ogd@aoaioxxysz.net"
39 | },
40 | "maintainers": [
41 | {
42 | "name": "isaacs",
43 | "email": "i@izs.me"
44 | },
45 | {
46 | "name": "othiym23",
47 | "email": "ogd@aoaioxxysz.net"
48 | },
49 | {
50 | "name": "iarna",
51 | "email": "me@re-becca.org"
52 | }
53 | ],
54 | "dist": {
55 | "shasum": "6cbb4521ebd51ce0ec0a936bfd7657ef7e9b172a",
56 | "tarball": "http://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz"
57 | },
58 | "directories": {},
59 | "_resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.4.tgz",
60 | "readme": "ERROR: No README data found!"
61 | }
62 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inflight/test.js:
--------------------------------------------------------------------------------
1 | var test = require('tap').test
2 | var inf = require('./inflight.js')
3 |
4 |
5 | function req (key, cb) {
6 | cb = inf(key, cb)
7 | if (cb) setTimeout(function () {
8 | cb(key)
9 | cb(key)
10 | })
11 | return cb
12 | }
13 |
14 | test('basic', function (t) {
15 | var calleda = false
16 | var a = req('key', function (k) {
17 | t.notOk(calleda)
18 | calleda = true
19 | t.equal(k, 'key')
20 | if (calledb) t.end()
21 | })
22 | t.ok(a, 'first returned cb function')
23 |
24 | var calledb = false
25 | var b = req('key', function (k) {
26 | t.notOk(calledb)
27 | calledb = true
28 | t.equal(k, 'key')
29 | if (calleda) t.end()
30 | })
31 |
32 | t.notOk(b, 'second should get falsey inflight response')
33 | })
34 |
35 | test('timing', function (t) {
36 | var expect = [
37 | 'method one',
38 | 'start one',
39 | 'end one',
40 | 'two',
41 | 'tick',
42 | 'three'
43 | ]
44 | var i = 0
45 |
46 | function log (m) {
47 | t.equal(m, expect[i], m + ' === ' + expect[i])
48 | ++i
49 | if (i === expect.length)
50 | t.end()
51 | }
52 |
53 | function method (name, cb) {
54 | log('method ' + name)
55 | process.nextTick(cb)
56 | }
57 |
58 | var one = inf('foo', function () {
59 | log('start one')
60 | var three = inf('foo', function () {
61 | log('three')
62 | })
63 | if (three) method('three', three)
64 | log('end one')
65 | })
66 |
67 | method('one', one)
68 |
69 | var two = inf('foo', function () {
70 | log('two')
71 | })
72 | if (two) method('one', two)
73 |
74 | process.nextTick(log.bind(null, 'tick'))
75 | })
76 |
77 | test('parameters', function (t) {
78 | t.plan(8)
79 |
80 | var a = inf('key', function (first, second, third) {
81 | t.equal(first, 1)
82 | t.equal(second, 2)
83 | t.equal(third, 3)
84 | })
85 | t.ok(a, 'first returned cb function')
86 |
87 | var b = inf('key', function (first, second, third) {
88 | t.equal(first, 1)
89 | t.equal(second, 2)
90 | t.equal(third, 3)
91 | })
92 | t.notOk(b, 'second should get falsey inflight response')
93 |
94 | setTimeout(function () {
95 | a(1, 2, 3)
96 | })
97 | })
98 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inherits/LICENSE:
--------------------------------------------------------------------------------
1 | The ISC License
2 |
3 | Copyright (c) Isaac Z. Schlueter
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
10 | REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
11 | FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
12 | INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
13 | LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
14 | OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
15 | PERFORMANCE OF THIS SOFTWARE.
16 |
17 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inherits/README.md:
--------------------------------------------------------------------------------
1 | Browser-friendly inheritance fully compatible with standard node.js
2 | [inherits](http://nodejs.org/api/util.html#util_util_inherits_constructor_superconstructor).
3 |
4 | This package exports standard `inherits` from node.js `util` module in
5 | node environment, but also provides alternative browser-friendly
6 | implementation through [browser
7 | field](https://gist.github.com/shtylman/4339901). Alternative
8 | implementation is a literal copy of standard one located in standalone
9 | module to avoid requiring of `util`. It also has a shim for old
10 | browsers with no `Object.create` support.
11 |
12 | While keeping you sure you are using standard `inherits`
13 | implementation in node.js environment, it allows bundlers such as
14 | [browserify](https://github.com/substack/node-browserify) to not
15 | include full `util` package to your client code if all you need is
16 | just `inherits` function. It worth, because browser shim for `util`
17 | package is large and `inherits` is often the single function you need
18 | from it.
19 |
20 | It's recommended to use this package instead of
21 | `require('util').inherits` for any code that has chances to be used
22 | not only in node.js but in browser too.
23 |
24 | ## usage
25 |
26 | ```js
27 | var inherits = require('inherits');
28 | // then use exactly as the standard one
29 | ```
30 |
31 | ## note on version ~1.0
32 |
33 | Version ~1.0 had completely different motivation and is not compatible
34 | neither with 2.0 nor with standard node.js `inherits`.
35 |
36 | If you are using version ~1.0 and planning to switch to ~2.0, be
37 | careful:
38 |
39 | * new version uses `super_` instead of `super` for referencing
40 | superclass
41 | * new version overwrites current prototype while old one preserves any
42 | existing fields on it
43 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inherits/inherits.js:
--------------------------------------------------------------------------------
1 | module.exports = require('util').inherits
2 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inherits/inherits_browser.js:
--------------------------------------------------------------------------------
1 | if (typeof Object.create === 'function') {
2 | // implementation from standard node.js 'util' module
3 | module.exports = function inherits(ctor, superCtor) {
4 | ctor.super_ = superCtor
5 | ctor.prototype = Object.create(superCtor.prototype, {
6 | constructor: {
7 | value: ctor,
8 | enumerable: false,
9 | writable: true,
10 | configurable: true
11 | }
12 | });
13 | };
14 | } else {
15 | // old school shim for old browsers
16 | module.exports = function inherits(ctor, superCtor) {
17 | ctor.super_ = superCtor
18 | var TempCtor = function () {}
19 | TempCtor.prototype = superCtor.prototype
20 | ctor.prototype = new TempCtor()
21 | ctor.prototype.constructor = ctor
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inherits/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "inherits",
3 | "description": "Browser-friendly inheritance fully compatible with standard node.js inherits()",
4 | "version": "2.0.1",
5 | "keywords": [
6 | "inheritance",
7 | "class",
8 | "klass",
9 | "oop",
10 | "object-oriented",
11 | "inherits",
12 | "browser",
13 | "browserify"
14 | ],
15 | "main": "./inherits.js",
16 | "browser": "./inherits_browser.js",
17 | "repository": {
18 | "type": "git",
19 | "url": "git://github.com/isaacs/inherits.git"
20 | },
21 | "license": "ISC",
22 | "scripts": {
23 | "test": "node test"
24 | },
25 | "bugs": {
26 | "url": "https://github.com/isaacs/inherits/issues"
27 | },
28 | "_id": "inherits@2.0.1",
29 | "dist": {
30 | "shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
31 | "tarball": "http://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz"
32 | },
33 | "_from": "inherits@>=2.0.0 <3.0.0",
34 | "_npmVersion": "1.3.8",
35 | "_npmUser": {
36 | "name": "isaacs",
37 | "email": "i@izs.me"
38 | },
39 | "maintainers": [
40 | {
41 | "name": "isaacs",
42 | "email": "i@izs.me"
43 | }
44 | ],
45 | "directories": {},
46 | "_shasum": "b17d08d326b4423e568eff719f91b0b1cbdf69f1",
47 | "_resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz",
48 | "readme": "ERROR: No README data found!",
49 | "homepage": "https://github.com/isaacs/inherits#readme"
50 | }
51 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/inherits/test.js:
--------------------------------------------------------------------------------
1 | var inherits = require('./inherits.js')
2 | var assert = require('assert')
3 |
4 | function test(c) {
5 | assert(c.constructor === Child)
6 | assert(c.constructor.super_ === Parent)
7 | assert(Object.getPrototypeOf(c) === Child.prototype)
8 | assert(Object.getPrototypeOf(Object.getPrototypeOf(c)) === Parent.prototype)
9 | assert(c instanceof Child)
10 | assert(c instanceof Parent)
11 | }
12 |
13 | function Child() {
14 | Parent.call(this)
15 | test(this)
16 | }
17 |
18 | function Parent() {}
19 |
20 | inherits(Child, Parent)
21 |
22 | var c = new Child
23 | test(c)
24 |
25 | console.log('ok')
26 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/once/LICENSE:
--------------------------------------------------------------------------------
1 | The ISC License
2 |
3 | Copyright (c) Isaac Z. Schlueter and Contributors
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/once/README.md:
--------------------------------------------------------------------------------
1 | # once
2 |
3 | Only call a function once.
4 |
5 | ## usage
6 |
7 | ```javascript
8 | var once = require('once')
9 |
10 | function load (file, cb) {
11 | cb = once(cb)
12 | loader.load('file')
13 | loader.once('load', cb)
14 | loader.once('error', cb)
15 | }
16 | ```
17 |
18 | Or add to the Function.prototype in a responsible way:
19 |
20 | ```javascript
21 | // only has to be done once
22 | require('once').proto()
23 |
24 | function load (file, cb) {
25 | cb = cb.once()
26 | loader.load('file')
27 | loader.once('load', cb)
28 | loader.once('error', cb)
29 | }
30 | ```
31 |
32 | Ironically, the prototype feature makes this module twice as
33 | complicated as necessary.
34 |
35 | To check whether you function has been called, use `fn.called`. Once the
36 | function is called for the first time the return value of the original
37 | function is saved in `fn.value` and subsequent calls will continue to
38 | return this value.
39 |
40 | ```javascript
41 | var once = require('once')
42 |
43 | function load (cb) {
44 | cb = once(cb)
45 | var stream = createStream()
46 | stream.once('data', cb)
47 | stream.once('end', function () {
48 | if (!cb.called) cb(new Error('not found'))
49 | })
50 | }
51 | ```
52 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/once/node_modules/wrappy/LICENSE:
--------------------------------------------------------------------------------
1 | The ISC License
2 |
3 | Copyright (c) Isaac Z. Schlueter and Contributors
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/once/node_modules/wrappy/README.md:
--------------------------------------------------------------------------------
1 | # wrappy
2 |
3 | Callback wrapping utility
4 |
5 | ## USAGE
6 |
7 | ```javascript
8 | var wrappy = require("wrappy")
9 |
10 | // var wrapper = wrappy(wrapperFunction)
11 |
12 | // make sure a cb is called only once
13 | // See also: http://npm.im/once for this specific use case
14 | var once = wrappy(function (cb) {
15 | var called = false
16 | return function () {
17 | if (called) return
18 | called = true
19 | return cb.apply(this, arguments)
20 | }
21 | })
22 |
23 | function printBoo () {
24 | console.log('boo')
25 | }
26 | // has some rando property
27 | printBoo.iAmBooPrinter = true
28 |
29 | var onlyPrintOnce = once(printBoo)
30 |
31 | onlyPrintOnce() // prints 'boo'
32 | onlyPrintOnce() // does nothing
33 |
34 | // random property is retained!
35 | assert.equal(onlyPrintOnce.iAmBooPrinter, true)
36 | ```
37 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/once/node_modules/wrappy/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "wrappy",
3 | "version": "1.0.1",
4 | "description": "Callback wrapping utility",
5 | "main": "wrappy.js",
6 | "directories": {
7 | "test": "test"
8 | },
9 | "dependencies": {},
10 | "devDependencies": {
11 | "tap": "^0.4.12"
12 | },
13 | "scripts": {
14 | "test": "tap test/*.js"
15 | },
16 | "repository": {
17 | "type": "git",
18 | "url": "git+https://github.com/npm/wrappy.git"
19 | },
20 | "author": {
21 | "name": "Isaac Z. Schlueter",
22 | "email": "i@izs.me",
23 | "url": "http://blog.izs.me/"
24 | },
25 | "license": "ISC",
26 | "bugs": {
27 | "url": "https://github.com/npm/wrappy/issues"
28 | },
29 | "homepage": "https://github.com/npm/wrappy",
30 | "gitHead": "006a8cbac6b99988315834c207896eed71fd069a",
31 | "_id": "wrappy@1.0.1",
32 | "_shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739",
33 | "_from": "wrappy@>=1.0.0 <2.0.0",
34 | "_npmVersion": "2.0.0",
35 | "_nodeVersion": "0.10.31",
36 | "_npmUser": {
37 | "name": "isaacs",
38 | "email": "i@izs.me"
39 | },
40 | "maintainers": [
41 | {
42 | "name": "isaacs",
43 | "email": "i@izs.me"
44 | }
45 | ],
46 | "dist": {
47 | "shasum": "1e65969965ccbc2db4548c6b84a6f2c5aedd4739",
48 | "tarball": "http://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz"
49 | },
50 | "_resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.1.tgz",
51 | "readme": "ERROR: No README data found!"
52 | }
53 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/once/node_modules/wrappy/test/basic.js:
--------------------------------------------------------------------------------
1 | var test = require('tap').test
2 | var wrappy = require('../wrappy.js')
3 |
4 | test('basic', function (t) {
5 | function onceifier (cb) {
6 | var called = false
7 | return function () {
8 | if (called) return
9 | called = true
10 | return cb.apply(this, arguments)
11 | }
12 | }
13 | onceifier.iAmOnce = {}
14 | var once = wrappy(onceifier)
15 | t.equal(once.iAmOnce, onceifier.iAmOnce)
16 |
17 | var called = 0
18 | function boo () {
19 | t.equal(called, 0)
20 | called++
21 | }
22 | // has some rando property
23 | boo.iAmBoo = true
24 |
25 | var onlyPrintOnce = once(boo)
26 |
27 | onlyPrintOnce() // prints 'boo'
28 | onlyPrintOnce() // does nothing
29 | t.equal(called, 1)
30 |
31 | // random property is retained!
32 | t.equal(onlyPrintOnce.iAmBoo, true)
33 |
34 | var logs = []
35 | var logwrap = wrappy(function (msg, cb) {
36 | logs.push(msg + ' wrapping cb')
37 | return function () {
38 | logs.push(msg + ' before cb')
39 | var ret = cb.apply(this, arguments)
40 | logs.push(msg + ' after cb')
41 | }
42 | })
43 |
44 | var c = logwrap('foo', function () {
45 | t.same(logs, [ 'foo wrapping cb', 'foo before cb' ])
46 | })
47 | c()
48 | t.same(logs, [ 'foo wrapping cb', 'foo before cb', 'foo after cb' ])
49 |
50 | t.end()
51 | })
52 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/once/node_modules/wrappy/wrappy.js:
--------------------------------------------------------------------------------
1 | // Returns a wrapper function that returns a wrapped callback
2 | // The wrapper function should do some stuff, and return a
3 | // presumably different callback function.
4 | // This makes sure that own properties are retained, so that
5 | // decorations and such are not lost along the way.
6 | module.exports = wrappy
7 | function wrappy (fn, cb) {
8 | if (fn && cb) return wrappy(fn)(cb)
9 |
10 | if (typeof fn !== 'function')
11 | throw new TypeError('need wrapper function')
12 |
13 | Object.keys(fn).forEach(function (k) {
14 | wrapper[k] = fn[k]
15 | })
16 |
17 | return wrapper
18 |
19 | function wrapper() {
20 | var args = new Array(arguments.length)
21 | for (var i = 0; i < args.length; i++) {
22 | args[i] = arguments[i]
23 | }
24 | var ret = fn.apply(this, args)
25 | var cb = args[args.length-1]
26 | if (typeof ret === 'function' && ret !== cb) {
27 | Object.keys(cb).forEach(function (k) {
28 | ret[k] = cb[k]
29 | })
30 | }
31 | return ret
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/once/once.js:
--------------------------------------------------------------------------------
1 | var wrappy = require('wrappy')
2 | module.exports = wrappy(once)
3 |
4 | once.proto = once(function () {
5 | Object.defineProperty(Function.prototype, 'once', {
6 | value: function () {
7 | return once(this)
8 | },
9 | configurable: true
10 | })
11 | })
12 |
13 | function once (fn) {
14 | var f = function () {
15 | if (f.called) return f.value
16 | f.called = true
17 | return f.value = fn.apply(this, arguments)
18 | }
19 | f.called = false
20 | return f
21 | }
22 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/once/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "once",
3 | "version": "1.3.3",
4 | "description": "Run a function exactly one time",
5 | "main": "once.js",
6 | "directories": {
7 | "test": "test"
8 | },
9 | "dependencies": {
10 | "wrappy": "1"
11 | },
12 | "devDependencies": {
13 | "tap": "^1.2.0"
14 | },
15 | "scripts": {
16 | "test": "tap test/*.js"
17 | },
18 | "files": [
19 | "once.js"
20 | ],
21 | "repository": {
22 | "type": "git",
23 | "url": "git://github.com/isaacs/once.git"
24 | },
25 | "keywords": [
26 | "once",
27 | "function",
28 | "one",
29 | "single"
30 | ],
31 | "author": {
32 | "name": "Isaac Z. Schlueter",
33 | "email": "i@izs.me",
34 | "url": "http://blog.izs.me/"
35 | },
36 | "license": "ISC",
37 | "gitHead": "2ad558657e17fafd24803217ba854762842e4178",
38 | "bugs": {
39 | "url": "https://github.com/isaacs/once/issues"
40 | },
41 | "homepage": "https://github.com/isaacs/once#readme",
42 | "_id": "once@1.3.3",
43 | "_shasum": "b2e261557ce4c314ec8304f3fa82663e4297ca20",
44 | "_from": "once@>=1.3.0 <2.0.0",
45 | "_npmVersion": "3.3.2",
46 | "_nodeVersion": "4.0.0",
47 | "_npmUser": {
48 | "name": "isaacs",
49 | "email": "i@izs.me"
50 | },
51 | "dist": {
52 | "shasum": "b2e261557ce4c314ec8304f3fa82663e4297ca20",
53 | "tarball": "http://registry.npmjs.org/once/-/once-1.3.3.tgz"
54 | },
55 | "maintainers": [
56 | {
57 | "name": "isaacs",
58 | "email": "i@izs.me"
59 | }
60 | ],
61 | "_resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz",
62 | "readme": "ERROR: No README data found!"
63 | }
64 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/path-is-absolute/index.js:
--------------------------------------------------------------------------------
1 | 'use strict';
2 |
3 | function posix(path) {
4 | return path.charAt(0) === '/';
5 | };
6 |
7 | function win32(path) {
8 | // https://github.com/joyent/node/blob/b3fcc245fb25539909ef1d5eaa01dbf92e168633/lib/path.js#L56
9 | var splitDeviceRe = /^([a-zA-Z]:|[\\\/]{2}[^\\\/]+[\\\/]+[^\\\/]+)?([\\\/])?([\s\S]*?)$/;
10 | var result = splitDeviceRe.exec(path);
11 | var device = result[1] || '';
12 | var isUnc = !!device && device.charAt(1) !== ':';
13 |
14 | // UNC paths are always absolute
15 | return !!result[2] || isUnc;
16 | };
17 |
18 | module.exports = process.platform === 'win32' ? win32 : posix;
19 | module.exports.posix = posix;
20 | module.exports.win32 = win32;
21 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/path-is-absolute/license:
--------------------------------------------------------------------------------
1 | The MIT License (MIT)
2 |
3 | Copyright (c) Sindre Sorhus (sindresorhus.com)
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in
13 | all copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21 | THE SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/path-is-absolute/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "path-is-absolute",
3 | "version": "1.0.0",
4 | "description": "Node.js 0.12 path.isAbsolute() ponyfill",
5 | "license": "MIT",
6 | "repository": {
7 | "type": "git",
8 | "url": "git+https://github.com/sindresorhus/path-is-absolute.git"
9 | },
10 | "author": {
11 | "name": "Sindre Sorhus",
12 | "email": "sindresorhus@gmail.com",
13 | "url": "sindresorhus.com"
14 | },
15 | "engines": {
16 | "node": ">=0.10.0"
17 | },
18 | "scripts": {
19 | "test": "node test.js"
20 | },
21 | "files": [
22 | "index.js"
23 | ],
24 | "keywords": [
25 | "path",
26 | "paths",
27 | "file",
28 | "dir",
29 | "absolute",
30 | "isabsolute",
31 | "is-absolute",
32 | "built-in",
33 | "util",
34 | "utils",
35 | "core",
36 | "ponyfill",
37 | "polyfill",
38 | "shim",
39 | "is",
40 | "detect",
41 | "check"
42 | ],
43 | "gitHead": "7a76a0c9f2263192beedbe0a820e4d0baee5b7a1",
44 | "bugs": {
45 | "url": "https://github.com/sindresorhus/path-is-absolute/issues"
46 | },
47 | "homepage": "https://github.com/sindresorhus/path-is-absolute",
48 | "_id": "path-is-absolute@1.0.0",
49 | "_shasum": "263dada66ab3f2fb10bf7f9d24dd8f3e570ef912",
50 | "_from": "path-is-absolute@>=1.0.0 <2.0.0",
51 | "_npmVersion": "2.5.1",
52 | "_nodeVersion": "0.12.0",
53 | "_npmUser": {
54 | "name": "sindresorhus",
55 | "email": "sindresorhus@gmail.com"
56 | },
57 | "maintainers": [
58 | {
59 | "name": "sindresorhus",
60 | "email": "sindresorhus@gmail.com"
61 | }
62 | ],
63 | "dist": {
64 | "shasum": "263dada66ab3f2fb10bf7f9d24dd8f3e570ef912",
65 | "tarball": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz"
66 | },
67 | "directories": {},
68 | "_resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.0.tgz",
69 | "readme": "ERROR: No README data found!"
70 | }
71 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/node_modules/path-is-absolute/readme.md:
--------------------------------------------------------------------------------
1 | # path-is-absolute [](https://travis-ci.org/sindresorhus/path-is-absolute)
2 |
3 | > Node.js 0.12 [`path.isAbsolute()`](http://nodejs.org/api/path.html#path_path_isabsolute_path) ponyfill
4 |
5 | > Ponyfill: A polyfill that doesn't overwrite the native method
6 |
7 |
8 | ## Install
9 |
10 | ```
11 | $ npm install --save path-is-absolute
12 | ```
13 |
14 |
15 | ## Usage
16 |
17 | ```js
18 | var pathIsAbsolute = require('path-is-absolute');
19 |
20 | // Linux
21 | pathIsAbsolute('/home/foo');
22 | //=> true
23 |
24 | // Windows
25 | pathIsAbsolute('C:/Users/');
26 | //=> true
27 |
28 | // Any OS
29 | pathIsAbsolute.posix('/home/foo');
30 | //=> true
31 | ```
32 |
33 |
34 | ## API
35 |
36 | See the [`path.isAbsolute()` docs](http://nodejs.org/api/path.html#path_path_isabsolute_path).
37 |
38 | ### pathIsAbsolute(path)
39 |
40 | ### pathIsAbsolute.posix(path)
41 |
42 | The Posix specific version.
43 |
44 | ### pathIsAbsolute.win32(path)
45 |
46 | The Windows specific version.
47 |
48 |
49 | ## License
50 |
51 | MIT © [Sindre Sorhus](http://sindresorhus.com)
52 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/glob/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": {
3 | "name": "Isaac Z. Schlueter",
4 | "email": "i@izs.me",
5 | "url": "http://blog.izs.me/"
6 | },
7 | "name": "glob",
8 | "description": "a little globber",
9 | "version": "6.0.1",
10 | "repository": {
11 | "type": "git",
12 | "url": "git://github.com/isaacs/node-glob.git"
13 | },
14 | "main": "glob.js",
15 | "files": [
16 | "glob.js",
17 | "sync.js",
18 | "common.js"
19 | ],
20 | "engines": {
21 | "node": "*"
22 | },
23 | "dependencies": {
24 | "inflight": "^1.0.4",
25 | "inherits": "2",
26 | "minimatch": "2 || 3",
27 | "once": "^1.3.0",
28 | "path-is-absolute": "^1.0.0"
29 | },
30 | "devDependencies": {
31 | "mkdirp": "0",
32 | "rimraf": "^2.2.8",
33 | "tap": "^1.1.4",
34 | "tick": "0.0.6"
35 | },
36 | "scripts": {
37 | "prepublish": "npm run benchclean",
38 | "profclean": "rm -f v8.log profile.txt",
39 | "test": "tap test/*.js --cov",
40 | "test-regen": "npm run profclean && TEST_REGEN=1 node test/00-setup.js",
41 | "bench": "bash benchmark.sh",
42 | "prof": "bash prof.sh && cat profile.txt",
43 | "benchclean": "node benchclean.js"
44 | },
45 | "license": "ISC",
46 | "gitHead": "3741149fe4fe7060794e85da1bd8cecde623d90b",
47 | "bugs": {
48 | "url": "https://github.com/isaacs/node-glob/issues"
49 | },
50 | "homepage": "https://github.com/isaacs/node-glob#readme",
51 | "_id": "glob@6.0.1",
52 | "_shasum": "16a89b94ac361b2a670a0a141a21ad51b438d21d",
53 | "_from": "glob@>=6.0.1 <7.0.0",
54 | "_npmVersion": "3.3.2",
55 | "_nodeVersion": "4.0.0",
56 | "_npmUser": {
57 | "name": "isaacs",
58 | "email": "i@izs.me"
59 | },
60 | "dist": {
61 | "shasum": "16a89b94ac361b2a670a0a141a21ad51b438d21d",
62 | "tarball": "http://registry.npmjs.org/glob/-/glob-6.0.1.tgz"
63 | },
64 | "maintainers": [
65 | {
66 | "name": "isaacs",
67 | "email": "i@izs.me"
68 | }
69 | ],
70 | "directories": {},
71 | "_resolved": "https://registry.npmjs.org/glob/-/glob-6.0.1.tgz",
72 | "readme": "ERROR: No README data found!"
73 | }
74 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/LICENSE:
--------------------------------------------------------------------------------
1 | The ISC License
2 |
3 | Copyright (c) Isaac Z. Schlueter and Contributors
4 |
5 | Permission to use, copy, modify, and/or distribute this software for any
6 | purpose with or without fee is hereby granted, provided that the above
7 | copyright notice and this permission notice appear in all copies.
8 |
9 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
10 | WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
11 | MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
12 | ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
13 | WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
14 | ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
15 | IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
16 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/.npmignore:
--------------------------------------------------------------------------------
1 | test
2 | .gitignore
3 | .travis.yml
4 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/example.js:
--------------------------------------------------------------------------------
1 | var expand = require('./');
2 |
3 | console.log(expand('http://any.org/archive{1996..1999}/vol{1..4}/part{a,b,c}.html'));
4 | console.log(expand('http://www.numericals.com/file{1..100..10}.txt'));
5 | console.log(expand('http://www.letters.com/file{a..z..2}.txt'));
6 | console.log(expand('mkdir /usr/local/src/bash/{old,new,dist,bugs}'));
7 | console.log(expand('chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}'));
8 |
9 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.npmignore:
--------------------------------------------------------------------------------
1 | node_modules
2 | .DS_Store
3 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - "0.10"
4 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/LICENSE.md:
--------------------------------------------------------------------------------
1 | (MIT)
2 |
3 | Copyright (c) 2013 Julian Gruber <julian@juliangruber.com>
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy of
6 | this software and associated documentation files (the "Software"), to deal in
7 | the Software without restriction, including without limitation the rights to
8 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
9 | of the Software, and to permit persons to whom the Software is furnished to do
10 | so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/Makefile:
--------------------------------------------------------------------------------
1 |
2 | test:
3 | @node_modules/.bin/tape test/*.js
4 |
5 | .PHONY: test
6 |
7 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/README.md:
--------------------------------------------------------------------------------
1 | # balanced-match
2 |
3 | Match balanced string pairs, like `{` and `}` or `` and ``.
4 |
5 | [](http://travis-ci.org/juliangruber/balanced-match)
6 | [](https://www.npmjs.org/package/balanced-match)
7 |
8 | [](https://ci.testling.com/juliangruber/balanced-match)
9 |
10 | ## Example
11 |
12 | Get the first matching pair of braces:
13 |
14 | ```js
15 | var balanced = require('balanced-match');
16 |
17 | console.log(balanced('{', '}', 'pre{in{nested}}post'));
18 | console.log(balanced('{', '}', 'pre{first}between{second}post'));
19 | ```
20 |
21 | The matches are:
22 |
23 | ```bash
24 | $ node example.js
25 | { start: 3, end: 14, pre: 'pre', body: 'in{nested}', post: 'post' }
26 | { start: 3,
27 | end: 9,
28 | pre: 'pre',
29 | body: 'first',
30 | post: 'between{second}post' }
31 | ```
32 |
33 | ## API
34 |
35 | ### var m = balanced(a, b, str)
36 |
37 | For the first non-nested matching pair of `a` and `b` in `str`, return an
38 | object with those keys:
39 |
40 | * **start** the index of the first match of `a`
41 | * **end** the index of the matching `b`
42 | * **pre** the preamble, `a` and `b` not included
43 | * **body** the match, `a` and `b` not included
44 | * **post** the postscript, `a` and `b` not included
45 |
46 | If there's no match, `undefined` will be returned.
47 |
48 | If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `['{', 'a', '']`.
49 |
50 | ### var r = balanced.range(a, b, str)
51 |
52 | For the first non-nested matching pair of `a` and `b` in `str`, return an
53 | array with indexes: `[ , ]`.
54 |
55 | If there's no match, `undefined` will be returned.
56 |
57 | If the `str` contains more `a` than `b` / there are unmatched pairs, the first match that was closed will be used. For example, `{{a}` will match `[ 1, 3 ]`.
58 |
59 | ## Installation
60 |
61 | With [npm](https://npmjs.org) do:
62 |
63 | ```bash
64 | npm install balanced-match
65 | ```
66 |
67 | ## License
68 |
69 | (MIT)
70 |
71 | Copyright (c) 2013 Julian Gruber <julian@juliangruber.com>
72 |
73 | Permission is hereby granted, free of charge, to any person obtaining a copy of
74 | this software and associated documentation files (the "Software"), to deal in
75 | the Software without restriction, including without limitation the rights to
76 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
77 | of the Software, and to permit persons to whom the Software is furnished to do
78 | so, subject to the following conditions:
79 |
80 | The above copyright notice and this permission notice shall be included in all
81 | copies or substantial portions of the Software.
82 |
83 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
84 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
85 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
86 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
87 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
88 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
89 | SOFTWARE.
90 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/example.js:
--------------------------------------------------------------------------------
1 | var balanced = require('./');
2 |
3 | console.log(balanced('{', '}', 'pre{in{nested}}post'));
4 | console.log(balanced('{', '}', 'pre{first}between{second}post'));
5 |
6 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/index.js:
--------------------------------------------------------------------------------
1 | module.exports = balanced;
2 | function balanced(a, b, str) {
3 | var r = range(a, b, str);
4 |
5 | return r && {
6 | start: r[0],
7 | end: r[1],
8 | pre: str.slice(0, r[0]),
9 | body: str.slice(r[0] + a.length, r[1]),
10 | post: str.slice(r[1] + b.length)
11 | };
12 | }
13 |
14 | balanced.range = range;
15 | function range(a, b, str) {
16 | var begs, beg, left, right, result;
17 | var ai = str.indexOf(a);
18 | var bi = str.indexOf(b, ai + 1);
19 | var i = ai;
20 |
21 | if (ai >= 0 && bi > 0) {
22 | begs = [];
23 | left = str.length;
24 |
25 | while (i < str.length && i >= 0 && ! result) {
26 | if (i == ai) {
27 | begs.push(i);
28 | ai = str.indexOf(a, i + 1);
29 | } else if (begs.length == 1) {
30 | result = [ begs.pop(), bi ];
31 | } else {
32 | beg = begs.pop();
33 | if (beg < left) {
34 | left = beg;
35 | right = bi;
36 | }
37 |
38 | bi = str.indexOf(b, i + 1);
39 | }
40 |
41 | i = ai < bi && ai >= 0 ? ai : bi;
42 | }
43 |
44 | if (begs.length) {
45 | result = [ left, right ];
46 | }
47 | }
48 |
49 | return result;
50 | }
51 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "balanced-match",
3 | "description": "Match balanced character pairs, like \"{\" and \"}\"",
4 | "version": "0.3.0",
5 | "repository": {
6 | "type": "git",
7 | "url": "git://github.com/juliangruber/balanced-match.git"
8 | },
9 | "homepage": "https://github.com/juliangruber/balanced-match",
10 | "main": "index.js",
11 | "scripts": {
12 | "test": "make test"
13 | },
14 | "dependencies": {},
15 | "devDependencies": {
16 | "tape": "~4.2.2"
17 | },
18 | "keywords": [
19 | "match",
20 | "regexp",
21 | "test",
22 | "balanced",
23 | "parse"
24 | ],
25 | "author": {
26 | "name": "Julian Gruber",
27 | "email": "mail@juliangruber.com",
28 | "url": "http://juliangruber.com"
29 | },
30 | "license": "MIT",
31 | "testling": {
32 | "files": "test/*.js",
33 | "browsers": [
34 | "ie/8..latest",
35 | "firefox/20..latest",
36 | "firefox/nightly",
37 | "chrome/25..latest",
38 | "chrome/canary",
39 | "opera/12..latest",
40 | "opera/next",
41 | "safari/5.1..latest",
42 | "ipad/6.0..latest",
43 | "iphone/6.0..latest",
44 | "android-browser/4.2..latest"
45 | ]
46 | },
47 | "gitHead": "a7114b0986554787e90b7ac595a043ca75ea77e5",
48 | "bugs": {
49 | "url": "https://github.com/juliangruber/balanced-match/issues"
50 | },
51 | "_id": "balanced-match@0.3.0",
52 | "_shasum": "a91cdd1ebef1a86659e70ff4def01625fc2d6756",
53 | "_from": "balanced-match@>=0.3.0 <0.4.0",
54 | "_npmVersion": "2.14.7",
55 | "_nodeVersion": "4.2.1",
56 | "_npmUser": {
57 | "name": "juliangruber",
58 | "email": "julian@juliangruber.com"
59 | },
60 | "dist": {
61 | "shasum": "a91cdd1ebef1a86659e70ff4def01625fc2d6756",
62 | "tarball": "http://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz"
63 | },
64 | "maintainers": [
65 | {
66 | "name": "juliangruber",
67 | "email": "julian@juliangruber.com"
68 | }
69 | ],
70 | "directories": {},
71 | "_resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.3.0.tgz",
72 | "readme": "ERROR: No README data found!"
73 | }
74 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/balanced-match/test/balanced.js:
--------------------------------------------------------------------------------
1 | var test = require('tape');
2 | var balanced = require('..');
3 |
4 | test('balanced', function(t) {
5 | t.deepEqual(balanced('{', '}', 'pre{in{nest}}post'), {
6 | start: 3,
7 | end: 12,
8 | pre: 'pre',
9 | body: 'in{nest}',
10 | post: 'post'
11 | });
12 | t.deepEqual(balanced('{', '}', '{{{{{{{{{in}post'), {
13 | start: 8,
14 | end: 11,
15 | pre: '{{{{{{{{',
16 | body: 'in',
17 | post: 'post'
18 | });
19 | t.deepEqual(balanced('{', '}', 'pre{body{in}post'), {
20 | start: 8,
21 | end: 11,
22 | pre: 'pre{body',
23 | body: 'in',
24 | post: 'post'
25 | });
26 | t.deepEqual(balanced('{', '}', 'pre}{in{nest}}post'), {
27 | start: 4,
28 | end: 13,
29 | pre: 'pre}',
30 | body: 'in{nest}',
31 | post: 'post'
32 | });
33 | t.deepEqual(balanced('{', '}', 'pre{body}between{body2}post'), {
34 | start: 3,
35 | end: 8,
36 | pre: 'pre',
37 | body: 'body',
38 | post: 'between{body2}post'
39 | });
40 | t.notOk(balanced('{', '}', 'nope'), 'should be notOk');
41 | t.deepEqual(balanced('', '', 'preinnestpost'), {
42 | start: 3,
43 | end: 19,
44 | pre: 'pre',
45 | body: 'innest',
46 | post: 'post'
47 | });
48 | t.deepEqual(balanced('', '', 'preinnestpost'), {
49 | start: 7,
50 | end: 23,
51 | pre: 'pre',
52 | body: 'innest',
53 | post: 'post'
54 | });
55 | t.deepEqual(balanced('{{', '}}', 'pre{{{in}}}post'), {
56 | start: 3,
57 | end: 9,
58 | pre: 'pre',
59 | body: '{in}',
60 | post: 'post'
61 | });
62 | t.deepEqual(balanced('{{{', '}}', 'pre{{{in}}}post'), {
63 | start: 3,
64 | end: 8,
65 | pre: 'pre',
66 | body: 'in',
67 | post: '}post'
68 | });
69 | t.deepEqual(balanced('{', '}', 'pre{{first}in{second}post'), {
70 | start: 4,
71 | end: 10,
72 | pre: 'pre{',
73 | body: 'first',
74 | post: 'in{second}post'
75 | });
76 | t.deepEqual(balanced('', '?>', 'pre>post'), {
77 | start: 3,
78 | end: 4,
79 | pre: 'pre',
80 | body: '',
81 | post: 'post'
82 | });
83 | t.end();
84 | });
85 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - 0.4
4 | - 0.6
5 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/LICENSE:
--------------------------------------------------------------------------------
1 | This software is released under the MIT license:
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of
4 | this software and associated documentation files (the "Software"), to deal in
5 | the Software without restriction, including without limitation the rights to
6 | use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
7 | the Software, and to permit persons to whom the Software is furnished to do so,
8 | subject to the following conditions:
9 |
10 | The above copyright notice and this permission notice shall be included in all
11 | copies or substantial portions of the Software.
12 |
13 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
15 | FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
16 | COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
17 | IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18 | CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
19 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/README.markdown:
--------------------------------------------------------------------------------
1 | concat-map
2 | ==========
3 |
4 | Concatenative mapdashery.
5 |
6 | [](http://ci.testling.com/substack/node-concat-map)
7 |
8 | [](http://travis-ci.org/substack/node-concat-map)
9 |
10 | example
11 | =======
12 |
13 | ``` js
14 | var concatMap = require('concat-map');
15 | var xs = [ 1, 2, 3, 4, 5, 6 ];
16 | var ys = concatMap(xs, function (x) {
17 | return x % 2 ? [ x - 0.1, x, x + 0.1 ] : [];
18 | });
19 | console.dir(ys);
20 | ```
21 |
22 | ***
23 |
24 | ```
25 | [ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ]
26 | ```
27 |
28 | methods
29 | =======
30 |
31 | ``` js
32 | var concatMap = require('concat-map')
33 | ```
34 |
35 | concatMap(xs, fn)
36 | -----------------
37 |
38 | Return an array of concatenated elements by calling `fn(x, i)` for each element
39 | `x` and each index `i` in the array `xs`.
40 |
41 | When `fn(x, i)` returns an array, its result will be concatenated with the
42 | result array. If `fn(x, i)` returns anything else, that value will be pushed
43 | onto the end of the result array.
44 |
45 | install
46 | =======
47 |
48 | With [npm](http://npmjs.org) do:
49 |
50 | ```
51 | npm install concat-map
52 | ```
53 |
54 | license
55 | =======
56 |
57 | MIT
58 |
59 | notes
60 | =====
61 |
62 | This module was written while sitting high above the ground in a tree.
63 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/example/map.js:
--------------------------------------------------------------------------------
1 | var concatMap = require('../');
2 | var xs = [ 1, 2, 3, 4, 5, 6 ];
3 | var ys = concatMap(xs, function (x) {
4 | return x % 2 ? [ x - 0.1, x, x + 0.1 ] : [];
5 | });
6 | console.dir(ys);
7 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/index.js:
--------------------------------------------------------------------------------
1 | module.exports = function (xs, fn) {
2 | var res = [];
3 | for (var i = 0; i < xs.length; i++) {
4 | var x = fn(xs[i], i);
5 | if (isArray(x)) res.push.apply(res, x);
6 | else res.push(x);
7 | }
8 | return res;
9 | };
10 |
11 | var isArray = Array.isArray || function (xs) {
12 | return Object.prototype.toString.call(xs) === '[object Array]';
13 | };
14 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "concat-map",
3 | "description": "concatenative mapdashery",
4 | "version": "0.0.1",
5 | "repository": {
6 | "type": "git",
7 | "url": "git://github.com/substack/node-concat-map.git"
8 | },
9 | "main": "index.js",
10 | "keywords": [
11 | "concat",
12 | "concatMap",
13 | "map",
14 | "functional",
15 | "higher-order"
16 | ],
17 | "directories": {
18 | "example": "example",
19 | "test": "test"
20 | },
21 | "scripts": {
22 | "test": "tape test/*.js"
23 | },
24 | "devDependencies": {
25 | "tape": "~2.4.0"
26 | },
27 | "license": "MIT",
28 | "author": {
29 | "name": "James Halliday",
30 | "email": "mail@substack.net",
31 | "url": "http://substack.net"
32 | },
33 | "testling": {
34 | "files": "test/*.js",
35 | "browsers": {
36 | "ie": [
37 | 6,
38 | 7,
39 | 8,
40 | 9
41 | ],
42 | "ff": [
43 | 3.5,
44 | 10,
45 | 15
46 | ],
47 | "chrome": [
48 | 10,
49 | 22
50 | ],
51 | "safari": [
52 | 5.1
53 | ],
54 | "opera": [
55 | 12
56 | ]
57 | }
58 | },
59 | "bugs": {
60 | "url": "https://github.com/substack/node-concat-map/issues"
61 | },
62 | "homepage": "https://github.com/substack/node-concat-map",
63 | "_id": "concat-map@0.0.1",
64 | "dist": {
65 | "shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b",
66 | "tarball": "http://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
67 | },
68 | "_from": "concat-map@0.0.1",
69 | "_npmVersion": "1.3.21",
70 | "_npmUser": {
71 | "name": "substack",
72 | "email": "mail@substack.net"
73 | },
74 | "maintainers": [
75 | {
76 | "name": "substack",
77 | "email": "mail@substack.net"
78 | }
79 | ],
80 | "_shasum": "d8a96bd77fd68df7793a73036a3ba0d5405d477b",
81 | "_resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
82 | "readme": "ERROR: No README data found!"
83 | }
84 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/node_modules/concat-map/test/map.js:
--------------------------------------------------------------------------------
1 | var concatMap = require('../');
2 | var test = require('tape');
3 |
4 | test('empty or not', function (t) {
5 | var xs = [ 1, 2, 3, 4, 5, 6 ];
6 | var ixes = [];
7 | var ys = concatMap(xs, function (x, ix) {
8 | ixes.push(ix);
9 | return x % 2 ? [ x - 0.1, x, x + 0.1 ] : [];
10 | });
11 | t.same(ys, [ 0.9, 1, 1.1, 2.9, 3, 3.1, 4.9, 5, 5.1 ]);
12 | t.same(ixes, [ 0, 1, 2, 3, 4, 5 ]);
13 | t.end();
14 | });
15 |
16 | test('always something', function (t) {
17 | var xs = [ 'a', 'b', 'c', 'd' ];
18 | var ys = concatMap(xs, function (x) {
19 | return x === 'b' ? [ 'B', 'B', 'B' ] : [ x ];
20 | });
21 | t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]);
22 | t.end();
23 | });
24 |
25 | test('scalars', function (t) {
26 | var xs = [ 'a', 'b', 'c', 'd' ];
27 | var ys = concatMap(xs, function (x) {
28 | return x === 'b' ? [ 'B', 'B', 'B' ] : x;
29 | });
30 | t.same(ys, [ 'a', 'B', 'B', 'B', 'c', 'd' ]);
31 | t.end();
32 | });
33 |
34 | test('undefs', function (t) {
35 | var xs = [ 'a', 'b', 'c', 'd' ];
36 | var ys = concatMap(xs, function () {});
37 | t.same(ys, [ undefined, undefined, undefined, undefined ]);
38 | t.end();
39 | });
40 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/node_modules/brace-expansion/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "brace-expansion",
3 | "description": "Brace expansion as known from sh/bash",
4 | "version": "1.1.2",
5 | "repository": {
6 | "type": "git",
7 | "url": "git://github.com/juliangruber/brace-expansion.git"
8 | },
9 | "homepage": "https://github.com/juliangruber/brace-expansion",
10 | "main": "index.js",
11 | "scripts": {
12 | "test": "tape test/*.js",
13 | "gentest": "bash test/generate.sh"
14 | },
15 | "dependencies": {
16 | "balanced-match": "^0.3.0",
17 | "concat-map": "0.0.1"
18 | },
19 | "devDependencies": {
20 | "tape": "4.2.2"
21 | },
22 | "keywords": [],
23 | "author": {
24 | "name": "Julian Gruber",
25 | "email": "mail@juliangruber.com",
26 | "url": "http://juliangruber.com"
27 | },
28 | "license": "MIT",
29 | "testling": {
30 | "files": "test/*.js",
31 | "browsers": [
32 | "ie/8..latest",
33 | "firefox/20..latest",
34 | "firefox/nightly",
35 | "chrome/25..latest",
36 | "chrome/canary",
37 | "opera/12..latest",
38 | "opera/next",
39 | "safari/5.1..latest",
40 | "ipad/6.0..latest",
41 | "iphone/6.0..latest",
42 | "android-browser/4.2..latest"
43 | ]
44 | },
45 | "gitHead": "b03773a30fa516b1374945b68e9acb6253d595fa",
46 | "bugs": {
47 | "url": "https://github.com/juliangruber/brace-expansion/issues"
48 | },
49 | "_id": "brace-expansion@1.1.2",
50 | "_shasum": "f21445d0488b658e2771efd870eff51df29f04ef",
51 | "_from": "brace-expansion@>=1.0.0 <2.0.0",
52 | "_npmVersion": "2.14.7",
53 | "_nodeVersion": "4.2.1",
54 | "_npmUser": {
55 | "name": "juliangruber",
56 | "email": "julian@juliangruber.com"
57 | },
58 | "dist": {
59 | "shasum": "f21445d0488b658e2771efd870eff51df29f04ef",
60 | "tarball": "http://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.2.tgz"
61 | },
62 | "maintainers": [
63 | {
64 | "name": "juliangruber",
65 | "email": "julian@juliangruber.com"
66 | },
67 | {
68 | "name": "isaacs",
69 | "email": "isaacs@npmjs.com"
70 | }
71 | ],
72 | "directories": {},
73 | "_resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.2.tgz",
74 | "readme": "ERROR: No README data found!"
75 | }
76 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/minimatch/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "author": {
3 | "name": "Isaac Z. Schlueter",
4 | "email": "i@izs.me",
5 | "url": "http://blog.izs.me"
6 | },
7 | "name": "minimatch",
8 | "description": "a glob matcher in javascript",
9 | "version": "3.0.0",
10 | "repository": {
11 | "type": "git",
12 | "url": "git://github.com/isaacs/minimatch.git"
13 | },
14 | "main": "minimatch.js",
15 | "scripts": {
16 | "posttest": "standard minimatch.js test/*.js",
17 | "test": "tap test/*.js"
18 | },
19 | "engines": {
20 | "node": "*"
21 | },
22 | "dependencies": {
23 | "brace-expansion": "^1.0.0"
24 | },
25 | "devDependencies": {
26 | "standard": "^3.7.2",
27 | "tap": "^1.2.0"
28 | },
29 | "license": "ISC",
30 | "files": [
31 | "minimatch.js"
32 | ],
33 | "gitHead": "270dbea567f0af6918cb18103e98c612aa717a20",
34 | "bugs": {
35 | "url": "https://github.com/isaacs/minimatch/issues"
36 | },
37 | "homepage": "https://github.com/isaacs/minimatch#readme",
38 | "_id": "minimatch@3.0.0",
39 | "_shasum": "5236157a51e4f004c177fb3c527ff7dd78f0ef83",
40 | "_from": "minimatch@>=3.0.0 <4.0.0",
41 | "_npmVersion": "3.3.2",
42 | "_nodeVersion": "4.0.0",
43 | "_npmUser": {
44 | "name": "isaacs",
45 | "email": "isaacs@npmjs.com"
46 | },
47 | "dist": {
48 | "shasum": "5236157a51e4f004c177fb3c527ff7dd78f0ef83",
49 | "tarball": "http://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz"
50 | },
51 | "maintainers": [
52 | {
53 | "name": "isaacs",
54 | "email": "i@izs.me"
55 | }
56 | ],
57 | "directories": {},
58 | "_resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.0.tgz",
59 | "readme": "ERROR: No README data found!"
60 | }
61 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/q/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright 2009–2014 Kristopher Michael Kowal. All rights reserved.
2 | Permission is hereby granted, free of charge, to any person obtaining a copy
3 | of this software and associated documentation files (the "Software"), to
4 | deal in the Software without restriction, including without limitation the
5 | rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
6 | sell copies of the Software, and to permit persons to whom the Software is
7 | furnished to do so, subject to the following conditions:
8 |
9 | The above copyright notice and this permission notice shall be included in
10 | all copies or substantial portions of the Software.
11 |
12 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
13 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
14 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
15 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
16 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
17 | FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
18 | IN THE SOFTWARE.
19 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/q/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "q",
3 | "version": "1.4.1",
4 | "description": "A library for promises (CommonJS/Promises/A,B,D)",
5 | "homepage": "https://github.com/kriskowal/q",
6 | "author": {
7 | "name": "Kris Kowal",
8 | "email": "kris@cixar.com",
9 | "url": "https://github.com/kriskowal"
10 | },
11 | "keywords": [
12 | "q",
13 | "promise",
14 | "promises",
15 | "promises-a",
16 | "promises-aplus",
17 | "deferred",
18 | "future",
19 | "async",
20 | "flow control",
21 | "fluent",
22 | "browser",
23 | "node"
24 | ],
25 | "contributors": [
26 | {
27 | "name": "Kris Kowal",
28 | "email": "kris@cixar.com",
29 | "url": "https://github.com/kriskowal"
30 | },
31 | {
32 | "name": "Irakli Gozalishvili",
33 | "email": "rfobic@gmail.com",
34 | "url": "http://jeditoolkit.com"
35 | },
36 | {
37 | "name": "Domenic Denicola",
38 | "email": "domenic@domenicdenicola.com",
39 | "url": "http://domenicdenicola.com"
40 | }
41 | ],
42 | "bugs": {
43 | "url": "http://github.com/kriskowal/q/issues"
44 | },
45 | "license": {
46 | "type": "MIT",
47 | "url": "http://github.com/kriskowal/q/raw/master/LICENSE"
48 | },
49 | "main": "q.js",
50 | "files": [
51 | "LICENSE",
52 | "q.js",
53 | "queue.js"
54 | ],
55 | "repository": {
56 | "type": "git",
57 | "url": "git://github.com/kriskowal/q.git"
58 | },
59 | "engines": {
60 | "node": ">=0.6.0",
61 | "teleport": ">=0.2.0"
62 | },
63 | "dependencies": {},
64 | "devDependencies": {
65 | "cover": "*",
66 | "grunt": "~0.4.1",
67 | "grunt-cli": "~0.1.9",
68 | "grunt-contrib-uglify": "~0.9.1",
69 | "jasmine-node": "1.11.0",
70 | "jshint": "~2.1.9",
71 | "matcha": "~0.2.0",
72 | "opener": "*",
73 | "promises-aplus-tests": "1.x"
74 | },
75 | "scripts": {
76 | "test": "jasmine-node spec && promises-aplus-tests spec/aplus-adapter",
77 | "test-browser": "opener spec/q-spec.html",
78 | "benchmark": "matcha",
79 | "lint": "jshint q.js",
80 | "cover": "cover run jasmine-node spec && cover report html && opener cover_html/index.html",
81 | "minify": "grunt",
82 | "prepublish": "grunt"
83 | },
84 | "overlay": {
85 | "teleport": {
86 | "dependencies": {
87 | "system": ">=0.0.4"
88 | }
89 | }
90 | },
91 | "directories": {
92 | "test": "./spec"
93 | },
94 | "gitHead": "d373079d3620152e3d60e82f27265a09ee0e81bd",
95 | "_id": "q@1.4.1",
96 | "_shasum": "55705bcd93c5f3673530c2c2cbc0c2b3addc286e",
97 | "_from": "q@>=1.1.2 <2.0.0",
98 | "_npmVersion": "2.8.3",
99 | "_nodeVersion": "1.8.1",
100 | "_npmUser": {
101 | "name": "kriskowal",
102 | "email": "kris.kowal@cixar.com"
103 | },
104 | "maintainers": [
105 | {
106 | "name": "kriskowal",
107 | "email": "kris.kowal@cixar.com"
108 | },
109 | {
110 | "name": "domenic",
111 | "email": "domenic@domenicdenicola.com"
112 | }
113 | ],
114 | "dist": {
115 | "shasum": "55705bcd93c5f3673530c2c2cbc0c2b3addc286e",
116 | "tarball": "http://registry.npmjs.org/q/-/q-1.4.1.tgz"
117 | },
118 | "_resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz",
119 | "readme": "ERROR: No README data found!"
120 | }
121 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/q/queue.js:
--------------------------------------------------------------------------------
1 |
2 | var Q = require("./q");
3 |
4 | module.exports = Queue;
5 | function Queue() {
6 | var ends = Q.defer();
7 | var closed = Q.defer();
8 | return {
9 | put: function (value) {
10 | var next = Q.defer();
11 | ends.resolve({
12 | head: value,
13 | tail: next.promise
14 | });
15 | ends.resolve = next.resolve;
16 | },
17 | get: function () {
18 | var result = ends.promise.get("head");
19 | ends.promise = ends.promise.get("tail");
20 | return result.fail(function (error) {
21 | closed.resolve(error);
22 | throw error;
23 | });
24 | },
25 | closed: closed.promise,
26 | close: function (error) {
27 | error = error || new Error("Can't get value from closed queue");
28 | var end = {head: Q.reject(error)};
29 | end.tail = end;
30 | ends.resolve(end);
31 | return closed.promise;
32 | }
33 | };
34 | }
35 |
36 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/.documentup.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "ShellJS",
3 | "twitter": [
4 | "r2r"
5 | ]
6 | }
7 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/.jshintrc:
--------------------------------------------------------------------------------
1 | {
2 | "loopfunc": true,
3 | "sub": true,
4 | "undef": true,
5 | "unused": true,
6 | "node": true
7 | }
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/.npmignore:
--------------------------------------------------------------------------------
1 | test/
2 | tmp/
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/.travis.yml:
--------------------------------------------------------------------------------
1 | language: node_js
2 | node_js:
3 | - "0.8"
4 | - "0.10"
5 | - "0.11"
6 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/LICENSE:
--------------------------------------------------------------------------------
1 | Copyright (c) 2012, Artur Adib
2 | All rights reserved.
3 |
4 | You may use this project under the terms of the New BSD license as follows:
5 |
6 | Redistribution and use in source and binary forms, with or without
7 | modification, are permitted provided that the following conditions are met:
8 | * Redistributions of source code must retain the above copyright
9 | notice, this list of conditions and the following disclaimer.
10 | * Redistributions in binary form must reproduce the above copyright
11 | notice, this list of conditions and the following disclaimer in the
12 | documentation and/or other materials provided with the distribution.
13 | * Neither the name of Artur Adib nor the
14 | names of the contributors may be used to endorse or promote products
15 | derived from this software without specific prior written permission.
16 |
17 | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
18 | AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19 | IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20 | ARE DISCLAIMED. IN NO EVENT SHALL ARTUR ADIB BE LIABLE FOR ANY
21 | DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22 | (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23 | LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24 | ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 | THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/bin/shjs:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | require('../global');
3 |
4 | if (process.argv.length < 3) {
5 | console.log('ShellJS: missing argument (script name)');
6 | console.log();
7 | process.exit(1);
8 | }
9 |
10 | var args,
11 | scriptName = process.argv[2];
12 | env['NODE_PATH'] = __dirname + '/../..';
13 |
14 | if (!scriptName.match(/\.js/) && !scriptName.match(/\.coffee/)) {
15 | if (test('-f', scriptName + '.js'))
16 | scriptName += '.js';
17 | if (test('-f', scriptName + '.coffee'))
18 | scriptName += '.coffee';
19 | }
20 |
21 | if (!test('-f', scriptName)) {
22 | console.log('ShellJS: script not found ('+scriptName+')');
23 | console.log();
24 | process.exit(1);
25 | }
26 |
27 | args = process.argv.slice(3);
28 |
29 | for (var i = 0, l = args.length; i < l; i++) {
30 | if (args[i][0] !== "-"){
31 | args[i] = '"' + args[i] + '"'; // fixes arguments with multiple words
32 | }
33 | }
34 |
35 | if (scriptName.match(/\.coffee$/)) {
36 | //
37 | // CoffeeScript
38 | //
39 | if (which('coffee')) {
40 | exec('coffee ' + scriptName + ' ' + args.join(' '), { async: true });
41 | } else {
42 | console.log('ShellJS: CoffeeScript interpreter not found');
43 | console.log();
44 | process.exit(1);
45 | }
46 | } else {
47 | //
48 | // JavaScript
49 | //
50 | exec('node ' + scriptName + ' ' + args.join(' '), { async: true });
51 | }
52 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/global.js:
--------------------------------------------------------------------------------
1 | var shell = require('./shell.js');
2 | for (var cmd in shell)
3 | global[cmd] = shell[cmd];
4 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/make.js:
--------------------------------------------------------------------------------
1 | require('./global');
2 |
3 | global.config.fatal = true;
4 | global.target = {};
5 |
6 | // This ensures we only execute the script targets after the entire script has
7 | // been evaluated
8 | var args = process.argv.slice(2);
9 | setTimeout(function() {
10 | var t;
11 |
12 | if (args.length === 1 && args[0] === '--help') {
13 | console.log('Available targets:');
14 | for (t in global.target)
15 | console.log(' ' + t);
16 | return;
17 | }
18 |
19 | // Wrap targets to prevent duplicate execution
20 | for (t in global.target) {
21 | (function(t, oldTarget){
22 |
23 | // Wrap it
24 | global.target[t] = function(force) {
25 | if (oldTarget.done && !force)
26 | return;
27 | oldTarget.done = true;
28 | return oldTarget.apply(oldTarget, arguments);
29 | };
30 |
31 | })(t, global.target[t]);
32 | }
33 |
34 | // Execute desired targets
35 | if (args.length > 0) {
36 | args.forEach(function(arg) {
37 | if (arg in global.target)
38 | global.target[arg]();
39 | else {
40 | console.log('no such target: ' + arg);
41 | }
42 | });
43 | } else if ('all' in global.target) {
44 | global.target.all();
45 | }
46 |
47 | }, 0);
48 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "shelljs",
3 | "version": "0.3.0",
4 | "author": {
5 | "name": "Artur Adib",
6 | "email": "aadib@mozilla.com"
7 | },
8 | "description": "Portable Unix shell commands for Node.js",
9 | "keywords": [
10 | "unix",
11 | "shell",
12 | "makefile",
13 | "make",
14 | "jake",
15 | "synchronous"
16 | ],
17 | "repository": {
18 | "type": "git",
19 | "url": "git://github.com/arturadib/shelljs.git"
20 | },
21 | "license": "BSD*",
22 | "homepage": "http://github.com/arturadib/shelljs",
23 | "main": "./shell.js",
24 | "scripts": {
25 | "test": "node scripts/run-tests"
26 | },
27 | "bin": {
28 | "shjs": "./bin/shjs"
29 | },
30 | "dependencies": {},
31 | "devDependencies": {
32 | "jshint": "~2.1.11"
33 | },
34 | "optionalDependencies": {},
35 | "engines": {
36 | "node": ">=0.8.0"
37 | },
38 | "bugs": {
39 | "url": "https://github.com/arturadib/shelljs/issues"
40 | },
41 | "_id": "shelljs@0.3.0",
42 | "dist": {
43 | "shasum": "3596e6307a781544f591f37da618360f31db57b1",
44 | "tarball": "http://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz"
45 | },
46 | "_from": "shelljs@>=0.3.0 <0.4.0",
47 | "_npmVersion": "1.3.11",
48 | "_npmUser": {
49 | "name": "artur",
50 | "email": "arturadib@gmail.com"
51 | },
52 | "maintainers": [
53 | {
54 | "name": "artur",
55 | "email": "arturadib@gmail.com"
56 | }
57 | ],
58 | "directories": {},
59 | "_shasum": "3596e6307a781544f591f37da618360f31db57b1",
60 | "_resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz",
61 | "readme": "ERROR: No README data found!"
62 | }
63 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/scripts/generate-docs.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | require('../global');
3 |
4 | echo('Appending docs to README.md');
5 |
6 | cd(__dirname + '/..');
7 |
8 | // Extract docs from shell.js
9 | var docs = grep('//@', 'shell.js');
10 |
11 | docs = docs.replace(/\/\/\@include (.+)/g, function(match, path) {
12 | var file = path.match('.js$') ? path : path+'.js';
13 | return grep('//@', file);
14 | });
15 |
16 | // Remove '//@'
17 | docs = docs.replace(/\/\/\@ ?/g, '');
18 | // Append docs to README
19 | sed('-i', /## Command reference(.|\n)*/, '## Command reference\n\n' + docs, 'README.md');
20 |
21 | echo('All done.');
22 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/scripts/run-tests.js:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env node
2 | require('../global');
3 |
4 | var path = require('path');
5 |
6 | var failed = false;
7 |
8 | //
9 | // Lint
10 | //
11 | JSHINT_BIN = './node_modules/jshint/bin/jshint';
12 | cd(__dirname + '/..');
13 |
14 | if (!test('-f', JSHINT_BIN)) {
15 | echo('JSHint not found. Run `npm install` in the root dir first.');
16 | exit(1);
17 | }
18 |
19 | if (exec(JSHINT_BIN + ' *.js test/*.js').code !== 0) {
20 | failed = true;
21 | echo('*** JSHINT FAILED! (return code != 0)');
22 | echo();
23 | } else {
24 | echo('All JSHint tests passed');
25 | echo();
26 | }
27 |
28 | //
29 | // Unit tests
30 | //
31 | cd(__dirname + '/../test');
32 | ls('*.js').forEach(function(file) {
33 | echo('Running test:', file);
34 | if (exec('node ' + file).code !== 123) { // 123 avoids false positives (e.g. premature exit)
35 | failed = true;
36 | echo('*** TEST FAILED! (missing exit code "123")');
37 | echo();
38 | }
39 | });
40 |
41 | if (failed) {
42 | echo();
43 | echo('*******************************************************');
44 | echo('WARNING: Some tests did not pass!');
45 | echo('*******************************************************');
46 | exit(1);
47 | } else {
48 | echo();
49 | echo('All tests passed.');
50 | }
51 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/cat.js:
--------------------------------------------------------------------------------
1 | var common = require('./common');
2 | var fs = require('fs');
3 |
4 | //@
5 | //@ ### cat(file [, file ...])
6 | //@ ### cat(file_array)
7 | //@
8 | //@ Examples:
9 | //@
10 | //@ ```javascript
11 | //@ var str = cat('file*.txt');
12 | //@ var str = cat('file1', 'file2');
13 | //@ var str = cat(['file1', 'file2']); // same as above
14 | //@ ```
15 | //@
16 | //@ Returns a string containing the given file, or a concatenated string
17 | //@ containing the files if more than one file is given (a new line character is
18 | //@ introduced between each file). Wildcard `*` accepted.
19 | function _cat(options, files) {
20 | var cat = '';
21 |
22 | if (!files)
23 | common.error('no paths given');
24 |
25 | if (typeof files === 'string')
26 | files = [].slice.call(arguments, 1);
27 | // if it's array leave it as it is
28 |
29 | files = common.expand(files);
30 |
31 | files.forEach(function(file) {
32 | if (!fs.existsSync(file))
33 | common.error('no such file or directory: ' + file);
34 |
35 | cat += fs.readFileSync(file, 'utf8') + '\n';
36 | });
37 |
38 | if (cat[cat.length-1] === '\n')
39 | cat = cat.substring(0, cat.length-1);
40 |
41 | return common.ShellString(cat);
42 | }
43 | module.exports = _cat;
44 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/cd.js:
--------------------------------------------------------------------------------
1 | var fs = require('fs');
2 | var common = require('./common');
3 |
4 | //@
5 | //@ ### cd('dir')
6 | //@ Changes to directory `dir` for the duration of the script
7 | function _cd(options, dir) {
8 | if (!dir)
9 | common.error('directory not specified');
10 |
11 | if (!fs.existsSync(dir))
12 | common.error('no such file or directory: ' + dir);
13 |
14 | if (!fs.statSync(dir).isDirectory())
15 | common.error('not a directory: ' + dir);
16 |
17 | process.chdir(dir);
18 | }
19 | module.exports = _cd;
20 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/echo.js:
--------------------------------------------------------------------------------
1 | var common = require('./common');
2 |
3 | //@
4 | //@ ### echo(string [,string ...])
5 | //@
6 | //@ Examples:
7 | //@
8 | //@ ```javascript
9 | //@ echo('hello world');
10 | //@ var str = echo('hello world');
11 | //@ ```
12 | //@
13 | //@ Prints string to stdout, and returns string with additional utility methods
14 | //@ like `.to()`.
15 | function _echo() {
16 | var messages = [].slice.call(arguments, 0);
17 | console.log.apply(this, messages);
18 | return common.ShellString(messages.join(' '));
19 | }
20 | module.exports = _echo;
21 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/error.js:
--------------------------------------------------------------------------------
1 | var common = require('./common');
2 |
3 | //@
4 | //@ ### error()
5 | //@ Tests if error occurred in the last command. Returns `null` if no error occurred,
6 | //@ otherwise returns string explaining the error
7 | function error() {
8 | return common.state.error;
9 | };
10 | module.exports = error;
11 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/find.js:
--------------------------------------------------------------------------------
1 | var fs = require('fs');
2 | var common = require('./common');
3 | var _ls = require('./ls');
4 |
5 | //@
6 | //@ ### find(path [,path ...])
7 | //@ ### find(path_array)
8 | //@ Examples:
9 | //@
10 | //@ ```javascript
11 | //@ find('src', 'lib');
12 | //@ find(['src', 'lib']); // same as above
13 | //@ find('.').filter(function(file) { return file.match(/\.js$/); });
14 | //@ ```
15 | //@
16 | //@ Returns array of all files (however deep) in the given paths.
17 | //@
18 | //@ The main difference from `ls('-R', path)` is that the resulting file names
19 | //@ include the base directories, e.g. `lib/resources/file1` instead of just `file1`.
20 | function _find(options, paths) {
21 | if (!paths)
22 | common.error('no path specified');
23 | else if (typeof paths === 'object')
24 | paths = paths; // assume array
25 | else if (typeof paths === 'string')
26 | paths = [].slice.call(arguments, 1);
27 |
28 | var list = [];
29 |
30 | function pushFile(file) {
31 | if (common.platform === 'win')
32 | file = file.replace(/\\/g, '/');
33 | list.push(file);
34 | }
35 |
36 | // why not simply do ls('-R', paths)? because the output wouldn't give the base dirs
37 | // to get the base dir in the output, we need instead ls('-R', 'dir/*') for every directory
38 |
39 | paths.forEach(function(file) {
40 | pushFile(file);
41 |
42 | if (fs.statSync(file).isDirectory()) {
43 | _ls('-RA', file+'/*').forEach(function(subfile) {
44 | pushFile(subfile);
45 | });
46 | }
47 | });
48 |
49 | return list;
50 | }
51 | module.exports = _find;
52 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/grep.js:
--------------------------------------------------------------------------------
1 | var common = require('./common');
2 | var fs = require('fs');
3 |
4 | //@
5 | //@ ### grep([options ,] regex_filter, file [, file ...])
6 | //@ ### grep([options ,] regex_filter, file_array)
7 | //@ Available options:
8 | //@
9 | //@ + `-v`: Inverse the sense of the regex and print the lines not matching the criteria.
10 | //@
11 | //@ Examples:
12 | //@
13 | //@ ```javascript
14 | //@ grep('-v', 'GLOBAL_VARIABLE', '*.js');
15 | //@ grep('GLOBAL_VARIABLE', '*.js');
16 | //@ ```
17 | //@
18 | //@ Reads input string from given files and returns a string containing all lines of the
19 | //@ file that match the given `regex_filter`. Wildcard `*` accepted.
20 | function _grep(options, regex, files) {
21 | options = common.parseOptions(options, {
22 | 'v': 'inverse'
23 | });
24 |
25 | if (!files)
26 | common.error('no paths given');
27 |
28 | if (typeof files === 'string')
29 | files = [].slice.call(arguments, 2);
30 | // if it's array leave it as it is
31 |
32 | files = common.expand(files);
33 |
34 | var grep = '';
35 | files.forEach(function(file) {
36 | if (!fs.existsSync(file)) {
37 | common.error('no such file or directory: ' + file, true);
38 | return;
39 | }
40 |
41 | var contents = fs.readFileSync(file, 'utf8'),
42 | lines = contents.split(/\r*\n/);
43 | lines.forEach(function(line) {
44 | var matched = line.match(regex);
45 | if ((options.inverse && !matched) || (!options.inverse && matched))
46 | grep += line + '\n';
47 | });
48 | });
49 |
50 | return common.ShellString(grep);
51 | }
52 | module.exports = _grep;
53 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/ln.js:
--------------------------------------------------------------------------------
1 | var fs = require('fs');
2 | var path = require('path');
3 | var common = require('./common');
4 | var os = require('os');
5 |
6 | //@
7 | //@ ### ln(options, source, dest)
8 | //@ ### ln(source, dest)
9 | //@ Available options:
10 | //@
11 | //@ + `s`: symlink
12 | //@ + `f`: force
13 | //@
14 | //@ Examples:
15 | //@
16 | //@ ```javascript
17 | //@ ln('file', 'newlink');
18 | //@ ln('-sf', 'file', 'existing');
19 | //@ ```
20 | //@
21 | //@ Links source to dest. Use -f to force the link, should dest already exist.
22 | function _ln(options, source, dest) {
23 | options = common.parseOptions(options, {
24 | 's': 'symlink',
25 | 'f': 'force'
26 | });
27 |
28 | if (!source || !dest) {
29 | common.error('Missing and/or ');
30 | }
31 |
32 | source = path.resolve(process.cwd(), String(source));
33 | dest = path.resolve(process.cwd(), String(dest));
34 |
35 | if (!fs.existsSync(source)) {
36 | common.error('Source file does not exist', true);
37 | }
38 |
39 | if (fs.existsSync(dest)) {
40 | if (!options.force) {
41 | common.error('Destination file exists', true);
42 | }
43 |
44 | fs.unlinkSync(dest);
45 | }
46 |
47 | if (options.symlink) {
48 | fs.symlinkSync(source, dest, os.platform() === "win32" ? "junction" : null);
49 | } else {
50 | fs.linkSync(source, dest, os.platform() === "win32" ? "junction" : null);
51 | }
52 | }
53 | module.exports = _ln;
54 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/mkdir.js:
--------------------------------------------------------------------------------
1 | var common = require('./common');
2 | var fs = require('fs');
3 | var path = require('path');
4 |
5 | // Recursively creates 'dir'
6 | function mkdirSyncRecursive(dir) {
7 | var baseDir = path.dirname(dir);
8 |
9 | // Base dir exists, no recursion necessary
10 | if (fs.existsSync(baseDir)) {
11 | fs.mkdirSync(dir, parseInt('0777', 8));
12 | return;
13 | }
14 |
15 | // Base dir does not exist, go recursive
16 | mkdirSyncRecursive(baseDir);
17 |
18 | // Base dir created, can create dir
19 | fs.mkdirSync(dir, parseInt('0777', 8));
20 | }
21 |
22 | //@
23 | //@ ### mkdir([options ,] dir [, dir ...])
24 | //@ ### mkdir([options ,] dir_array)
25 | //@ Available options:
26 | //@
27 | //@ + `p`: full path (will create intermediate dirs if necessary)
28 | //@
29 | //@ Examples:
30 | //@
31 | //@ ```javascript
32 | //@ mkdir('-p', '/tmp/a/b/c/d', '/tmp/e/f/g');
33 | //@ mkdir('-p', ['/tmp/a/b/c/d', '/tmp/e/f/g']); // same as above
34 | //@ ```
35 | //@
36 | //@ Creates directories.
37 | function _mkdir(options, dirs) {
38 | options = common.parseOptions(options, {
39 | 'p': 'fullpath'
40 | });
41 | if (!dirs)
42 | common.error('no paths given');
43 |
44 | if (typeof dirs === 'string')
45 | dirs = [].slice.call(arguments, 1);
46 | // if it's array leave it as it is
47 |
48 | dirs.forEach(function(dir) {
49 | if (fs.existsSync(dir)) {
50 | if (!options.fullpath)
51 | common.error('path already exists: ' + dir, true);
52 | return; // skip dir
53 | }
54 |
55 | // Base dir does not exist, and no -p option given
56 | var baseDir = path.dirname(dir);
57 | if (!fs.existsSync(baseDir) && !options.fullpath) {
58 | common.error('no such file or directory: ' + baseDir, true);
59 | return; // skip dir
60 | }
61 |
62 | if (options.fullpath)
63 | mkdirSyncRecursive(dir);
64 | else
65 | fs.mkdirSync(dir, parseInt('0777', 8));
66 | });
67 | } // mkdir
68 | module.exports = _mkdir;
69 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/mv.js:
--------------------------------------------------------------------------------
1 | var fs = require('fs');
2 | var path = require('path');
3 | var common = require('./common');
4 |
5 | //@
6 | //@ ### mv(source [, source ...], dest')
7 | //@ ### mv(source_array, dest')
8 | //@ Available options:
9 | //@
10 | //@ + `f`: force
11 | //@
12 | //@ Examples:
13 | //@
14 | //@ ```javascript
15 | //@ mv('-f', 'file', 'dir/');
16 | //@ mv('file1', 'file2', 'dir/');
17 | //@ mv(['file1', 'file2'], 'dir/'); // same as above
18 | //@ ```
19 | //@
20 | //@ Moves files. The wildcard `*` is accepted.
21 | function _mv(options, sources, dest) {
22 | options = common.parseOptions(options, {
23 | 'f': 'force'
24 | });
25 |
26 | // Get sources, dest
27 | if (arguments.length < 3) {
28 | common.error('missing and/or ');
29 | } else if (arguments.length > 3) {
30 | sources = [].slice.call(arguments, 1, arguments.length - 1);
31 | dest = arguments[arguments.length - 1];
32 | } else if (typeof sources === 'string') {
33 | sources = [sources];
34 | } else if ('length' in sources) {
35 | sources = sources; // no-op for array
36 | } else {
37 | common.error('invalid arguments');
38 | }
39 |
40 | sources = common.expand(sources);
41 |
42 | var exists = fs.existsSync(dest),
43 | stats = exists && fs.statSync(dest);
44 |
45 | // Dest is not existing dir, but multiple sources given
46 | if ((!exists || !stats.isDirectory()) && sources.length > 1)
47 | common.error('dest is not a directory (too many sources)');
48 |
49 | // Dest is an existing file, but no -f given
50 | if (exists && stats.isFile() && !options.force)
51 | common.error('dest file already exists: ' + dest);
52 |
53 | sources.forEach(function(src) {
54 | if (!fs.existsSync(src)) {
55 | common.error('no such file or directory: '+src, true);
56 | return; // skip file
57 | }
58 |
59 | // If here, src exists
60 |
61 | // When copying to '/path/dir':
62 | // thisDest = '/path/dir/file1'
63 | var thisDest = dest;
64 | if (fs.existsSync(dest) && fs.statSync(dest).isDirectory())
65 | thisDest = path.normalize(dest + '/' + path.basename(src));
66 |
67 | if (fs.existsSync(thisDest) && !options.force) {
68 | common.error('dest file already exists: ' + thisDest, true);
69 | return; // skip file
70 | }
71 |
72 | if (path.resolve(src) === path.dirname(path.resolve(thisDest))) {
73 | common.error('cannot move to self: '+src, true);
74 | return; // skip file
75 | }
76 |
77 | fs.renameSync(src, thisDest);
78 | }); // forEach(src)
79 | } // mv
80 | module.exports = _mv;
81 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/popd.js:
--------------------------------------------------------------------------------
1 | // see dirs.js
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/pushd.js:
--------------------------------------------------------------------------------
1 | // see dirs.js
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/pwd.js:
--------------------------------------------------------------------------------
1 | var path = require('path');
2 | var common = require('./common');
3 |
4 | //@
5 | //@ ### pwd()
6 | //@ Returns the current directory.
7 | function _pwd(options) {
8 | var pwd = path.resolve(process.cwd());
9 | return common.ShellString(pwd);
10 | }
11 | module.exports = _pwd;
12 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/sed.js:
--------------------------------------------------------------------------------
1 | var common = require('./common');
2 | var fs = require('fs');
3 |
4 | //@
5 | //@ ### sed([options ,] search_regex, replacement, file)
6 | //@ Available options:
7 | //@
8 | //@ + `-i`: Replace contents of 'file' in-place. _Note that no backups will be created!_
9 | //@
10 | //@ Examples:
11 | //@
12 | //@ ```javascript
13 | //@ sed('-i', 'PROGRAM_VERSION', 'v0.1.3', 'source.js');
14 | //@ sed(/.*DELETE_THIS_LINE.*\n/, '', 'source.js');
15 | //@ ```
16 | //@
17 | //@ Reads an input string from `file` and performs a JavaScript `replace()` on the input
18 | //@ using the given search regex and replacement string or function. Returns the new string after replacement.
19 | function _sed(options, regex, replacement, file) {
20 | options = common.parseOptions(options, {
21 | 'i': 'inplace'
22 | });
23 |
24 | if (typeof replacement === 'string' || typeof replacement === 'function')
25 | replacement = replacement; // no-op
26 | else if (typeof replacement === 'number')
27 | replacement = replacement.toString(); // fallback
28 | else
29 | common.error('invalid replacement string');
30 |
31 | if (!file)
32 | common.error('no file given');
33 |
34 | if (!fs.existsSync(file))
35 | common.error('no such file or directory: ' + file);
36 |
37 | var result = fs.readFileSync(file, 'utf8').replace(regex, replacement);
38 | if (options.inplace)
39 | fs.writeFileSync(file, result, 'utf8');
40 |
41 | return common.ShellString(result);
42 | }
43 | module.exports = _sed;
44 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/tempdir.js:
--------------------------------------------------------------------------------
1 | var common = require('./common');
2 | var os = require('os');
3 | var fs = require('fs');
4 |
5 | // Returns false if 'dir' is not a writeable directory, 'dir' otherwise
6 | function writeableDir(dir) {
7 | if (!dir || !fs.existsSync(dir))
8 | return false;
9 |
10 | if (!fs.statSync(dir).isDirectory())
11 | return false;
12 |
13 | var testFile = dir+'/'+common.randomFileName();
14 | try {
15 | fs.writeFileSync(testFile, ' ');
16 | common.unlinkSync(testFile);
17 | return dir;
18 | } catch (e) {
19 | return false;
20 | }
21 | }
22 |
23 |
24 | //@
25 | //@ ### tempdir()
26 | //@
27 | //@ Examples:
28 | //@
29 | //@ ```javascript
30 | //@ var tmp = tempdir(); // "/tmp" for most *nix platforms
31 | //@ ```
32 | //@
33 | //@ Searches and returns string containing a writeable, platform-dependent temporary directory.
34 | //@ Follows Python's [tempfile algorithm](http://docs.python.org/library/tempfile.html#tempfile.tempdir).
35 | function _tempDir() {
36 | var state = common.state;
37 | if (state.tempDir)
38 | return state.tempDir; // from cache
39 |
40 | state.tempDir = writeableDir(os.tempDir && os.tempDir()) || // node 0.8+
41 | writeableDir(process.env['TMPDIR']) ||
42 | writeableDir(process.env['TEMP']) ||
43 | writeableDir(process.env['TMP']) ||
44 | writeableDir(process.env['Wimp$ScrapDir']) || // RiscOS
45 | writeableDir('C:\\TEMP') || // Windows
46 | writeableDir('C:\\TMP') || // Windows
47 | writeableDir('\\TEMP') || // Windows
48 | writeableDir('\\TMP') || // Windows
49 | writeableDir('/tmp') ||
50 | writeableDir('/var/tmp') ||
51 | writeableDir('/usr/tmp') ||
52 | writeableDir('.'); // last resort
53 |
54 | return state.tempDir;
55 | }
56 | module.exports = _tempDir;
57 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/test.js:
--------------------------------------------------------------------------------
1 | var common = require('./common');
2 | var fs = require('fs');
3 |
4 | //@
5 | //@ ### test(expression)
6 | //@ Available expression primaries:
7 | //@
8 | //@ + `'-b', 'path'`: true if path is a block device
9 | //@ + `'-c', 'path'`: true if path is a character device
10 | //@ + `'-d', 'path'`: true if path is a directory
11 | //@ + `'-e', 'path'`: true if path exists
12 | //@ + `'-f', 'path'`: true if path is a regular file
13 | //@ + `'-L', 'path'`: true if path is a symboilc link
14 | //@ + `'-p', 'path'`: true if path is a pipe (FIFO)
15 | //@ + `'-S', 'path'`: true if path is a socket
16 | //@
17 | //@ Examples:
18 | //@
19 | //@ ```javascript
20 | //@ if (test('-d', path)) { /* do something with dir */ };
21 | //@ if (!test('-f', path)) continue; // skip if it's a regular file
22 | //@ ```
23 | //@
24 | //@ Evaluates expression using the available primaries and returns corresponding value.
25 | function _test(options, path) {
26 | if (!path)
27 | common.error('no path given');
28 |
29 | // hack - only works with unary primaries
30 | options = common.parseOptions(options, {
31 | 'b': 'block',
32 | 'c': 'character',
33 | 'd': 'directory',
34 | 'e': 'exists',
35 | 'f': 'file',
36 | 'L': 'link',
37 | 'p': 'pipe',
38 | 'S': 'socket'
39 | });
40 |
41 | var canInterpret = false;
42 | for (var key in options)
43 | if (options[key] === true) {
44 | canInterpret = true;
45 | break;
46 | }
47 |
48 | if (!canInterpret)
49 | common.error('could not interpret expression');
50 |
51 | if (options.link) {
52 | try {
53 | return fs.lstatSync(path).isSymbolicLink();
54 | } catch(e) {
55 | return false;
56 | }
57 | }
58 |
59 | if (!fs.existsSync(path))
60 | return false;
61 |
62 | if (options.exists)
63 | return true;
64 |
65 | var stats = fs.statSync(path);
66 |
67 | if (options.block)
68 | return stats.isBlockDevice();
69 |
70 | if (options.character)
71 | return stats.isCharacterDevice();
72 |
73 | if (options.directory)
74 | return stats.isDirectory();
75 |
76 | if (options.file)
77 | return stats.isFile();
78 |
79 | if (options.pipe)
80 | return stats.isFIFO();
81 |
82 | if (options.socket)
83 | return stats.isSocket();
84 | } // test
85 | module.exports = _test;
86 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/to.js:
--------------------------------------------------------------------------------
1 | var common = require('./common');
2 | var fs = require('fs');
3 | var path = require('path');
4 |
5 | //@
6 | //@ ### 'string'.to(file)
7 | //@
8 | //@ Examples:
9 | //@
10 | //@ ```javascript
11 | //@ cat('input.txt').to('output.txt');
12 | //@ ```
13 | //@
14 | //@ Analogous to the redirection operator `>` in Unix, but works with JavaScript strings (such as
15 | //@ those returned by `cat`, `grep`, etc). _Like Unix redirections, `to()` will overwrite any existing file!_
16 | function _to(options, file) {
17 | if (!file)
18 | common.error('wrong arguments');
19 |
20 | if (!fs.existsSync( path.dirname(file) ))
21 | common.error('no such file or directory: ' + path.dirname(file));
22 |
23 | try {
24 | fs.writeFileSync(file, this.toString(), 'utf8');
25 | } catch(e) {
26 | common.error('could not write to file (code '+e.code+'): '+file, true);
27 | }
28 | }
29 | module.exports = _to;
30 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/toEnd.js:
--------------------------------------------------------------------------------
1 | var common = require('./common');
2 | var fs = require('fs');
3 | var path = require('path');
4 |
5 | //@
6 | //@ ### 'string'.toEnd(file)
7 | //@
8 | //@ Examples:
9 | //@
10 | //@ ```javascript
11 | //@ cat('input.txt').toEnd('output.txt');
12 | //@ ```
13 | //@
14 | //@ Analogous to the redirect-and-append operator `>>` in Unix, but works with JavaScript strings (such as
15 | //@ those returned by `cat`, `grep`, etc).
16 | function _toEnd(options, file) {
17 | if (!file)
18 | common.error('wrong arguments');
19 |
20 | if (!fs.existsSync( path.dirname(file) ))
21 | common.error('no such file or directory: ' + path.dirname(file));
22 |
23 | try {
24 | fs.appendFileSync(file, this.toString(), 'utf8');
25 | } catch(e) {
26 | common.error('could not append to file (code '+e.code+'): '+file, true);
27 | }
28 | }
29 | module.exports = _toEnd;
30 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/shelljs/src/which.js:
--------------------------------------------------------------------------------
1 | var common = require('./common');
2 | var fs = require('fs');
3 | var path = require('path');
4 |
5 | // Cross-platform method for splitting environment PATH variables
6 | function splitPath(p) {
7 | for (i=1;i<2;i++) {}
8 |
9 | if (!p)
10 | return [];
11 |
12 | if (common.platform === 'win')
13 | return p.split(';');
14 | else
15 | return p.split(':');
16 | }
17 |
18 | function checkPath(path) {
19 | return fs.existsSync(path) && fs.statSync(path).isDirectory() == false;
20 | }
21 |
22 | //@
23 | //@ ### which(command)
24 | //@
25 | //@ Examples:
26 | //@
27 | //@ ```javascript
28 | //@ var nodeExec = which('node');
29 | //@ ```
30 | //@
31 | //@ Searches for `command` in the system's PATH. On Windows looks for `.exe`, `.cmd`, and `.bat` extensions.
32 | //@ Returns string containing the absolute path to the command.
33 | function _which(options, cmd) {
34 | if (!cmd)
35 | common.error('must specify command');
36 |
37 | var pathEnv = process.env.path || process.env.Path || process.env.PATH,
38 | pathArray = splitPath(pathEnv),
39 | where = null;
40 |
41 | // No relative/absolute paths provided?
42 | if (cmd.search(/\//) === -1) {
43 | // Search for command in PATH
44 | pathArray.forEach(function(dir) {
45 | if (where)
46 | return; // already found it
47 |
48 | var attempt = path.resolve(dir + '/' + cmd);
49 | if (checkPath(attempt)) {
50 | where = attempt;
51 | return;
52 | }
53 |
54 | if (common.platform === 'win') {
55 | var baseAttempt = attempt;
56 | attempt = baseAttempt + '.exe';
57 | if (checkPath(attempt)) {
58 | where = attempt;
59 | return;
60 | }
61 | attempt = baseAttempt + '.cmd';
62 | if (checkPath(attempt)) {
63 | where = attempt;
64 | return;
65 | }
66 | attempt = baseAttempt + '.bat';
67 | if (checkPath(attempt)) {
68 | where = attempt;
69 | return;
70 | }
71 | } // if 'win'
72 | });
73 | }
74 |
75 | // Command not found anywhere?
76 | if (!checkPath(cmd) && !where)
77 | return null;
78 |
79 | where = where || path.resolve(cmd);
80 |
81 | return common.ShellString(where);
82 | }
83 | module.exports = _which;
84 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/ClientApiBases.js:
--------------------------------------------------------------------------------
1 | // Copyright (c) Microsoft. All rights reserved.
2 | // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3 | var Q = require('q');
4 | var restm = require('./RestClient');
5 | var httpm = require('./HttpClient');
6 | var vsom = require('./VsoClient');
7 | var ClientApiBase = (function () {
8 | function ClientApiBase(baseUrl, handlers, userAgent) {
9 | this.baseUrl = baseUrl;
10 | this.httpClient = new httpm.HttpClient(userAgent, handlers);
11 | this.restClient = new restm.RestClient(this.httpClient);
12 | this.vsoClient = new vsom.VsoClient(baseUrl, this.restClient);
13 | this.userAgent = userAgent;
14 | }
15 | ClientApiBase.prototype.setUserAgent = function (userAgent) {
16 | this.userAgent = userAgent;
17 | this.httpClient.userAgent = userAgent;
18 | };
19 | ClientApiBase.prototype.connect = function (onResult) {
20 | this.restClient.getJson(this.vsoClient.resolveUrl('/_apis/connectionData'), "", null, null, onResult);
21 | };
22 | return ClientApiBase;
23 | })();
24 | exports.ClientApiBase = ClientApiBase;
25 | var QClientApiBase = (function () {
26 | function QClientApiBase(baseUrl, handlers, api) {
27 | this.api = new api(baseUrl, handlers);
28 | }
29 | QClientApiBase.prototype.connect = function () {
30 | var defer = Q.defer();
31 | this.api.connect(function (err, statusCode, obj) {
32 | if (err) {
33 | err.statusCode = statusCode;
34 | defer.reject(err);
35 | }
36 | else {
37 | defer.resolve(obj);
38 | }
39 | });
40 | return defer.promise;
41 | };
42 | return QClientApiBase;
43 | })();
44 | exports.QClientApiBase = QClientApiBase;
45 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/README.md:
--------------------------------------------------------------------------------
1 | # vso-node-api
2 | Node client for Visual Studio Online/TFS REST APIs
3 |
4 | ## Goals and Scope
5 |
6 | * **Complete coverage**: All VSO services and resources
7 | * **Always up to date**: Generated and released every sprint by the Visual Studio Online team
8 | * **Share what we use**: Used by our apps including the [VSO build agent](https://github.com/Microsoft/vso-agent)
9 | * **Patterns**: Use traditional node call back patterns or Q Promises. Async/Await when available in ts.
10 | * **Definition Files**: generate typescript d.ts files for all services
11 | * **Authentication Flows**: Alternate Credentials, Personal Access Tokens and OAuth flows
12 | * **Versioning and Negotiation**: Same versioning mechanism and negoation as the other VSO clients. Shares code/logic with VSO web UI code
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/handlers/apiversion.js:
--------------------------------------------------------------------------------
1 | // Copyright (c) Microsoft. All rights reserved.
2 | // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3 | var ApiVersionHandler = (function () {
4 | function ApiVersionHandler(apiVersion) {
5 | this.apiVersion = apiVersion;
6 | }
7 | ApiVersionHandler.prototype.prepareRequest = function (options) {
8 | if (options.headers && options.headers['Accept']) {
9 | options.headers["Accept"] = options.headers['Accept'] + '; api-version=' + this.apiVersion;
10 | }
11 | };
12 | return ApiVersionHandler;
13 | })();
14 | exports.ApiVersionHandler = ApiVersionHandler;
15 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/handlers/basiccreds.js:
--------------------------------------------------------------------------------
1 | // Copyright (c) Microsoft. All rights reserved.
2 | // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3 | var BasicCredentialHandler = (function () {
4 | function BasicCredentialHandler(username, password) {
5 | this.username = username;
6 | this.password = password;
7 | }
8 | BasicCredentialHandler.prototype.prepareRequest = function (options) {
9 | options.headers['Authorization'] = 'Basic ' + new Buffer(this.username + ':' + this.password).toString('base64');
10 | options.headers['X-TFS-FedAuthRedirect'] = 'Suppress';
11 | };
12 | return BasicCredentialHandler;
13 | })();
14 | exports.BasicCredentialHandler = BasicCredentialHandler;
15 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/handlers/bearertoken.js:
--------------------------------------------------------------------------------
1 | // Copyright (c) Microsoft. All rights reserved.
2 | // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3 | var BearerCredentialHandler = (function () {
4 | function BearerCredentialHandler(token) {
5 | this.token = token;
6 | }
7 | BearerCredentialHandler.prototype.prepareRequest = function (options) {
8 | options.headers['Authorization'] = 'Bearer ' + this.token;
9 | options.headers['X-TFS-FedAuthRedirect'] = 'Suppress';
10 | };
11 | return BearerCredentialHandler;
12 | })();
13 | exports.BearerCredentialHandler = BearerCredentialHandler;
14 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/interfaces/FileContainerInterfaces.js:
--------------------------------------------------------------------------------
1 | /*
2 | * ---------------------------------------------------------
3 | * Copyright(C) Microsoft Corporation. All rights reserved.
4 | * ---------------------------------------------------------
5 | *
6 | * ---------------------------------------------------------
7 | * Generated file, DO NOT EDIT
8 | * ---------------------------------------------------------
9 | */
10 | "use strict";
11 | (function (ContainerItemStatus) {
12 | ContainerItemStatus[ContainerItemStatus["Created"] = 1] = "Created";
13 | ContainerItemStatus[ContainerItemStatus["PendingUpload"] = 2] = "PendingUpload";
14 | })(exports.ContainerItemStatus || (exports.ContainerItemStatus = {}));
15 | var ContainerItemStatus = exports.ContainerItemStatus;
16 | (function (ContainerItemType) {
17 | ContainerItemType[ContainerItemType["Any"] = 0] = "Any";
18 | ContainerItemType[ContainerItemType["Folder"] = 1] = "Folder";
19 | ContainerItemType[ContainerItemType["File"] = 2] = "File";
20 | })(exports.ContainerItemType || (exports.ContainerItemType = {}));
21 | var ContainerItemType = exports.ContainerItemType;
22 | (function (ContainerOptions) {
23 | ContainerOptions[ContainerOptions["None"] = 0] = "None";
24 | })(exports.ContainerOptions || (exports.ContainerOptions = {}));
25 | var ContainerOptions = exports.ContainerOptions;
26 | exports.TypeInfo = {
27 | ContainerItemStatus: {
28 | enumValues: {
29 | "created": 1,
30 | "pendingUpload": 2
31 | }
32 | },
33 | ContainerItemType: {
34 | enumValues: {
35 | "any": 0,
36 | "folder": 1,
37 | "file": 2
38 | }
39 | },
40 | ContainerOptions: {
41 | enumValues: {
42 | "none": 0
43 | }
44 | },
45 | FileContainer: {
46 | fields: null
47 | },
48 | FileContainerItem: {
49 | fields: null
50 | }
51 | };
52 | exports.TypeInfo.FileContainer.fields = {
53 | dateCreated: {
54 | isDate: true
55 | },
56 | options: {
57 | enumType: exports.TypeInfo.ContainerOptions
58 | }
59 | };
60 | exports.TypeInfo.FileContainerItem.fields = {
61 | dateCreated: {
62 | isDate: true
63 | },
64 | dateLastModified: {
65 | isDate: true
66 | },
67 | itemType: {
68 | enumType: exports.TypeInfo.ContainerItemType
69 | },
70 | status: {
71 | enumType: exports.TypeInfo.ContainerItemStatus
72 | }
73 | };
74 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/interfaces/common/OperationsInterfaces.js:
--------------------------------------------------------------------------------
1 | /*
2 | * ---------------------------------------------------------
3 | * Copyright(C) Microsoft Corporation. All rights reserved.
4 | * ---------------------------------------------------------
5 | *
6 | * ---------------------------------------------------------
7 | * Generated file, DO NOT EDIT
8 | * ---------------------------------------------------------
9 | */
10 | "use strict";
11 | (function (OperationStatus) {
12 | OperationStatus[OperationStatus["NotSet"] = 0] = "NotSet";
13 | OperationStatus[OperationStatus["Queued"] = 1] = "Queued";
14 | OperationStatus[OperationStatus["InProgress"] = 2] = "InProgress";
15 | OperationStatus[OperationStatus["Cancelled"] = 3] = "Cancelled";
16 | OperationStatus[OperationStatus["Succeeded"] = 4] = "Succeeded";
17 | OperationStatus[OperationStatus["Failed"] = 5] = "Failed";
18 | })(exports.OperationStatus || (exports.OperationStatus = {}));
19 | var OperationStatus = exports.OperationStatus;
20 | exports.TypeInfo = {
21 | OperationReference: {
22 | fields: null
23 | },
24 | OperationStatus: {
25 | enumValues: {
26 | "notSet": 0,
27 | "queued": 1,
28 | "inProgress": 2,
29 | "cancelled": 3,
30 | "succeeded": 4,
31 | "failed": 5
32 | }
33 | }
34 | };
35 | exports.TypeInfo.OperationReference.fields = {
36 | status: {
37 | enumType: exports.TypeInfo.OperationStatus
38 | }
39 | };
40 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/interfaces/common/SystemDataInterfaces.js:
--------------------------------------------------------------------------------
1 | //----------------------------------------------------------
2 | // Copyright (C) Microsoft Corporation. All rights reserved.
3 | //----------------------------------------------------------
4 | (function (SqlDbType) {
5 | SqlDbType[SqlDbType["BigInt"] = 0] = "BigInt";
6 | SqlDbType[SqlDbType["Binary"] = 1] = "Binary";
7 | SqlDbType[SqlDbType["Bit"] = 2] = "Bit";
8 | SqlDbType[SqlDbType["Char"] = 3] = "Char";
9 | SqlDbType[SqlDbType["DateTime"] = 4] = "DateTime";
10 | SqlDbType[SqlDbType["Decimal"] = 5] = "Decimal";
11 | SqlDbType[SqlDbType["Float"] = 6] = "Float";
12 | SqlDbType[SqlDbType["Image"] = 7] = "Image";
13 | SqlDbType[SqlDbType["Int"] = 8] = "Int";
14 | SqlDbType[SqlDbType["Money"] = 9] = "Money";
15 | SqlDbType[SqlDbType["NChar"] = 10] = "NChar";
16 | SqlDbType[SqlDbType["NText"] = 11] = "NText";
17 | SqlDbType[SqlDbType["NVarChar"] = 12] = "NVarChar";
18 | SqlDbType[SqlDbType["Real"] = 13] = "Real";
19 | SqlDbType[SqlDbType["UniqueIdentifier"] = 14] = "UniqueIdentifier";
20 | SqlDbType[SqlDbType["SmallDateTime"] = 15] = "SmallDateTime";
21 | SqlDbType[SqlDbType["SmallInt"] = 16] = "SmallInt";
22 | SqlDbType[SqlDbType["SmallMoney"] = 17] = "SmallMoney";
23 | SqlDbType[SqlDbType["Text"] = 18] = "Text";
24 | SqlDbType[SqlDbType["Timestamp"] = 19] = "Timestamp";
25 | SqlDbType[SqlDbType["TinyInt"] = 20] = "TinyInt";
26 | SqlDbType[SqlDbType["VarBinary"] = 21] = "VarBinary";
27 | SqlDbType[SqlDbType["VarChar"] = 22] = "VarChar";
28 | SqlDbType[SqlDbType["Variant"] = 23] = "Variant";
29 | SqlDbType[SqlDbType["Xml"] = 25] = "Xml";
30 | SqlDbType[SqlDbType["Udt"] = 29] = "Udt";
31 | SqlDbType[SqlDbType["Structured"] = 30] = "Structured";
32 | SqlDbType[SqlDbType["Date"] = 31] = "Date";
33 | SqlDbType[SqlDbType["Time"] = 32] = "Time";
34 | SqlDbType[SqlDbType["DateTime2"] = 33] = "DateTime2";
35 | SqlDbType[SqlDbType["DateTimeOffset"] = 34] = "DateTimeOffset";
36 | })(exports.SqlDbType || (exports.SqlDbType = {}));
37 | var SqlDbType = exports.SqlDbType;
38 | exports.TypeInfo = {
39 | SqlDbType: {
40 | enumValues: {
41 | "BigInt": 0,
42 | "Binary": 1,
43 | "Bit": 2,
44 | "Char": 3,
45 | "DateTime": 4,
46 | "Decimal": 5,
47 | "Float": 6,
48 | "Image": 7,
49 | "Int": 8,
50 | "Money": 9,
51 | "NChar": 10,
52 | "NText": 11,
53 | "NVarChar": 12,
54 | "Real": 13,
55 | "UniqueIdentifier": 14,
56 | "SmallDateTime": 15,
57 | "SmallInt": 16,
58 | "SmallMoney": 17,
59 | "Text": 18,
60 | "Timestamp": 19,
61 | "TinyInt": 20,
62 | "VarBinary": 21,
63 | "VarChar": 22,
64 | "Variant": 23,
65 | "Xml": 25,
66 | "Udt": 29,
67 | "Structured": 30,
68 | "Date": 31,
69 | "Time": 32,
70 | "DateTime2": 33,
71 | "DateTimeOffset": 34
72 | }
73 | }
74 | };
75 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/interfaces/common/TfsInterfaces.js:
--------------------------------------------------------------------------------
1 | /*
2 | * ---------------------------------------------------------
3 | * Copyright(C) Microsoft Corporation. All rights reserved.
4 | * ---------------------------------------------------------
5 | *
6 | * ---------------------------------------------------------
7 | * Generated file, DO NOT EDIT
8 | * ---------------------------------------------------------
9 | */
10 | "use strict";
11 | exports.TypeInfo = {
12 | TeamProjectCollectionReference: {
13 | fields: null
14 | },
15 | TeamProjectReference: {
16 | fields: null
17 | },
18 | WebApiConnectedServiceRef: {
19 | fields: null
20 | }
21 | };
22 | exports.TypeInfo.TeamProjectCollectionReference.fields = {};
23 | exports.TypeInfo.TeamProjectReference.fields = {};
24 | exports.TypeInfo.WebApiConnectedServiceRef.fields = {};
25 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/interfaces/common/VSSInterfaces.js:
--------------------------------------------------------------------------------
1 | /*
2 | * ---------------------------------------------------------
3 | * Copyright(C) Microsoft Corporation. All rights reserved.
4 | * ---------------------------------------------------------
5 | *
6 | * ---------------------------------------------------------
7 | * Generated file, DO NOT EDIT
8 | * ---------------------------------------------------------
9 | */
10 | "use strict";
11 | (function (Operation) {
12 | Operation[Operation["Add"] = 0] = "Add";
13 | Operation[Operation["Remove"] = 1] = "Remove";
14 | Operation[Operation["Replace"] = 2] = "Replace";
15 | Operation[Operation["Move"] = 3] = "Move";
16 | Operation[Operation["Copy"] = 4] = "Copy";
17 | Operation[Operation["Test"] = 5] = "Test";
18 | })(exports.Operation || (exports.Operation = {}));
19 | var Operation = exports.Operation;
20 | exports.TypeInfo = {
21 | IdentityRef: {
22 | fields: null
23 | },
24 | JsonPatchDocument: {
25 | fields: null
26 | },
27 | JsonPatchOperation: {
28 | fields: null
29 | },
30 | Operation: {
31 | enumValues: {
32 | "add": 0,
33 | "remove": 1,
34 | "replace": 2,
35 | "move": 3,
36 | "copy": 4,
37 | "test": 5
38 | }
39 | },
40 | OperationReference: {
41 | fields: null
42 | },
43 | ResourceRef: {
44 | fields: null
45 | },
46 | VssJsonCollectionWrapper: {
47 | fields: null
48 | },
49 | VssJsonCollectionWrapperV: {
50 | fields: null
51 | },
52 | VssJsonCollectionWrapperBase: {
53 | fields: null
54 | }
55 | };
56 | exports.TypeInfo.IdentityRef.fields = {};
57 | exports.TypeInfo.JsonPatchDocument.fields = {};
58 | exports.TypeInfo.JsonPatchOperation.fields = {
59 | op: {
60 | enumType: exports.TypeInfo.Operation
61 | }
62 | };
63 | exports.TypeInfo.OperationReference.fields = {};
64 | exports.TypeInfo.ResourceRef.fields = {};
65 | exports.TypeInfo.VssJsonCollectionWrapper.fields = {};
66 | exports.TypeInfo.VssJsonCollectionWrapperV.fields = {};
67 | exports.TypeInfo.VssJsonCollectionWrapperBase.fields = {};
68 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/interfaces/common/VsoBaseInterfaces.js:
--------------------------------------------------------------------------------
1 | // Copyright (c) Microsoft. All rights reserved.
2 | // Licensed under the MIT license. See LICENSE file in the project root for full license information.
3 | ;
4 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/node_modules/vso-node-api/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vso-node-api",
3 | "description": "Node client for Visual Studio Online/TFS REST APIs",
4 | "version": "0.6.1",
5 | "main": "./WebApi.js",
6 | "repository": {
7 | "type": "git",
8 | "url": "git+https://github.com/Microsoft/vso-node-api.git"
9 | },
10 | "author": {
11 | "name": "Microsoft Corporation"
12 | },
13 | "contributors": [
14 | {
15 | "name": "Teddy Ward",
16 | "email": "t-edward@microsoft.com"
17 | },
18 | {
19 | "name": "Bryan MacFarlane",
20 | "email": "bryanmac@microsoft.com"
21 | },
22 | {
23 | "name": "Scott Dallamura",
24 | "email": "scdallam@microsoft.com"
25 | }
26 | ],
27 | "license": "MIT",
28 | "dependencies": {
29 | "q": "^1.0.1"
30 | },
31 | "devDependencies": {
32 | "del": "^1.1.1",
33 | "gulp": "^3.8.11",
34 | "gulp-gzip": "^1.0.0",
35 | "gulp-mocha": "^2.0.0",
36 | "gulp-tsc": "^0.10.1",
37 | "merge2": "^0.3.1",
38 | "mocha": "^2.1.0",
39 | "dts-generator": "1.5.0"
40 | },
41 | "bugs": {
42 | "url": "https://github.com/Microsoft/vso-node-api/issues"
43 | },
44 | "homepage": "https://github.com/Microsoft/vso-node-api",
45 | "_id": "vso-node-api@0.6.1",
46 | "scripts": {},
47 | "_shasum": "9d3dd06a8dae2ff3682af8f28a845739a0bd6481",
48 | "_from": "vso-node-api@>=0.6.1 <0.7.0",
49 | "_npmVersion": "2.5.1",
50 | "_nodeVersion": "0.12.0",
51 | "_npmUser": {
52 | "name": "vsonline",
53 | "email": "bigbldt@microsoft.com"
54 | },
55 | "maintainers": [
56 | {
57 | "name": "vsonline",
58 | "email": "bigbldt@microsoft.com"
59 | }
60 | ],
61 | "dist": {
62 | "shasum": "9d3dd06a8dae2ff3682af8f28a845739a0bd6481",
63 | "tarball": "http://registry.npmjs.org/vso-node-api/-/vso-node-api-0.6.1.tgz"
64 | },
65 | "directories": {},
66 | "_resolved": "https://registry.npmjs.org/vso-node-api/-/vso-node-api-0.6.1.tgz",
67 | "readme": "ERROR: No README data found!"
68 | }
69 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "vso-task-lib",
3 | "version": "0.5.4",
4 | "description": "VSO Agent Task Library",
5 | "main": "./vsotask.js",
6 | "scripts": {
7 | "test": "echo \"Error: no test specified\" && exit 1"
8 | },
9 | "repository": {
10 | "type": "git",
11 | "url": "git+https://github.com/Microsoft/vso-task-lib.git"
12 | },
13 | "keywords": [
14 | "vso",
15 | "xplat",
16 | "agent",
17 | "build"
18 | ],
19 | "author": {
20 | "name": "Microsoft"
21 | },
22 | "license": "MIT",
23 | "bugs": {
24 | "url": "https://github.com/Microsoft/vso-agent/issues"
25 | },
26 | "homepage": "https://github.com/Microsoft/vso-agent",
27 | "dependencies": {
28 | "glob": "^6.0.1",
29 | "minimatch": "^3.0.0",
30 | "q": "^1.1.2",
31 | "shelljs": "^0.3.0",
32 | "vso-node-api": "^0.6.1"
33 | },
34 | "devDependencies": {
35 | "del": "^1.2.0",
36 | "dts-generator": "1.5.0",
37 | "gulp": "^3.9.0",
38 | "gulp-mocha": "2.0.0",
39 | "gulp-typescript": "^2.9.0",
40 | "merge2": "^0.3.6",
41 | "mocha": "^2.2.5",
42 | "semver": "^5.1.0",
43 | "typescript": "next"
44 | },
45 | "_id": "vso-task-lib@0.5.4",
46 | "_shasum": "77d5fd00afae3469631033da9aa58dc3139f6e7a",
47 | "_from": "vso-task-lib@*",
48 | "_npmVersion": "3.5.0",
49 | "_nodeVersion": "4.2.2",
50 | "_npmUser": {
51 | "name": "vsonline",
52 | "email": "bigbldt@microsoft.com"
53 | },
54 | "maintainers": [
55 | {
56 | "name": "vsonline",
57 | "email": "bigbldt@microsoft.com"
58 | }
59 | ],
60 | "dist": {
61 | "shasum": "77d5fd00afae3469631033da9aa58dc3139f6e7a",
62 | "tarball": "http://registry.npmjs.org/vso-task-lib/-/vso-task-lib-0.5.4.tgz"
63 | },
64 | "directories": {},
65 | "_resolved": "https://registry.npmjs.org/vso-task-lib/-/vso-task-lib-0.5.4.tgz"
66 | }
67 |
--------------------------------------------------------------------------------
/Utilites/Shell++/node_modules/vso-task-lib/taskcommand.js:
--------------------------------------------------------------------------------
1 | "use strict";
2 | //
3 | // Command Format:
4 | // ##vso[artifact.command key=value;key=value]user message
5 | //
6 | // Examples:
7 | // ##vso[task.progress value=58]
8 | // ##vso[task.issue type=warning;]This is the user warning message
9 | //
10 | var CMD_PREFIX = '##vso[';
11 | var TaskCommand = (function () {
12 | function TaskCommand(command, properties, message) {
13 | if (!command) {
14 | command = 'missing.command';
15 | }
16 | this.command = command;
17 | this.properties = properties;
18 | this.message = message;
19 | }
20 | TaskCommand.prototype.toString = function () {
21 | var cmdStr = CMD_PREFIX + this.command;
22 | if (this.properties && Object.keys(this.properties).length > 0) {
23 | cmdStr += ' ';
24 | for (var key in this.properties) {
25 | if (this.properties.hasOwnProperty(key)) {
26 | var val = this.properties[key];
27 | if (val) {
28 | cmdStr += key + '=' + val + ';';
29 | }
30 | }
31 | }
32 | }
33 | cmdStr += ']' + this.message;
34 | return cmdStr;
35 | };
36 | return TaskCommand;
37 | })();
38 | exports.TaskCommand = TaskCommand;
39 | function commandFromString(commandLine) {
40 | var preLen = CMD_PREFIX.length;
41 | var lbPos = commandLine.indexOf('[');
42 | var rbPos = commandLine.indexOf(']');
43 | if (lbPos == -1 || rbPos == -1 || rbPos - lbPos < 3) {
44 | throw new Error('Invalid command brackets');
45 | }
46 | var cmdInfo = commandLine.substring(lbPos + 1, rbPos);
47 | var spaceIdx = cmdInfo.indexOf(' ');
48 | var command = cmdInfo;
49 | var properties = {};
50 | if (spaceIdx > 0) {
51 | command = cmdInfo.trim().substring(0, spaceIdx);
52 | var propSection = cmdInfo.trim().substring(spaceIdx + 1);
53 | var propLines = propSection.split(';');
54 | propLines.forEach(function (propLine) {
55 | propLine = propLine.trim();
56 | if (propLine.length > 0) {
57 | var propParts = propLine.split('=');
58 | if (propParts.length != 2) {
59 | throw new Error('Invalid property: ' + propLine);
60 | }
61 | properties[propParts[0]] = propParts[1];
62 | }
63 | });
64 | }
65 | var msg = commandLine.substring(rbPos + 1);
66 | var cmd = new TaskCommand(command, properties, msg);
67 | return cmd;
68 | }
69 | exports.commandFromString = commandFromString;
70 |
--------------------------------------------------------------------------------
/Utilites/Shell++/task.js:
--------------------------------------------------------------------------------
1 | var path = require('path');
2 | var tl = require('vso-task-lib');
3 | var fs = require('fs');
4 |
5 | var echo = new tl.ToolRunner(tl.which('echo', true));
6 | var bash = new tl.ToolRunner(tl.which('bash', true));
7 |
8 | var cwd = tl.getPathInput('cwd', false);
9 | var script = tl.getInput('script', false);
10 | var failOnStdErr = tl.getInput('failOnStandardError') == 'true';
11 | var scriptPath = tl.getPathInput('scriptPath', false);
12 | var type = tl.getInput('type');
13 |
14 | if(!type){
15 | // nothing to do
16 | tl.warning("type is not mentioned")
17 | }else if(type == 'InlineScript'){
18 | if (cwd == null || cwd == "") {
19 | cwd = "/tmp";
20 | }
21 |
22 | tl.debug('using cwd: ' + cwd);
23 | tl.cd(cwd);
24 |
25 | scriptPath = cwd + "/user_script.sh";
26 | fs.writeFileSync(scriptPath,script,'utf8');
27 |
28 | bash.arg(scriptPath);
29 | bash.exec({ failOnStdErr: failOnStdErr})
30 | .then(function(code) {
31 | // TODO: switch to setResult in the next couple of sprints
32 | tl.exit(code);
33 | })
34 | .fail(function(err) {
35 | console.error(err.message);
36 | tl.debug('taskRunner fail');
37 | tl.exit(1);
38 | });
39 | }else if(type == 'FilePath'){
40 | if(!scriptPath){
41 | tl.warning("No script to execute");
42 | tl.exit(1);
43 | }
44 | if (!cwd) {
45 | cwd = path.dirname(scriptPath);
46 | }
47 | tl.debug('using cwd: ' + cwd);
48 | tl.cd(cwd);
49 | bash.arg(scriptPath);
50 | bash.arg(tl.getInput('args', false));
51 | bash.exec({ failOnStdErr: failOnStdErr})
52 | .then(function(code) {
53 | // TODO: switch to setResult in the next couple of sprints
54 | tl.exit(code);
55 | })
56 | .fail(function(err) {
57 | console.error(err.message);
58 | tl.debug('taskRunner fail');
59 | tl.exit(1);
60 | });
61 | }else{
62 | tl.debug("something is wrong buddy");
63 | tl.exit(1);
64 | }
65 |
--------------------------------------------------------------------------------
/Utilites/Shell++/task.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "10f1f9a1-74b0-47ab-87bf-e3c9c68e8b0d",
3 | "name": "Shellpp",
4 | "friendlyName": "Shell++",
5 | "description": "Execute bash script",
6 | "author": "ms-devlabs",
7 | "helpMarkDown": "[More Information](https://github.com/openalm/Extension-UtilitiesPack)",
8 | "category": "Utility",
9 | "visibility": [
10 | "Build",
11 | "Release"
12 | ],
13 | "demands": [
14 | "sh"
15 | ],
16 | "version": {
17 | "Major": "0",
18 | "Minor": "3",
19 | "Patch": "1"
20 | },
21 | "minimumAgentVersion": "1.83.0",
22 | "instanceNameFormat": "Shell Script",
23 | "groups": [
24 | {
25 | "name":"advanced",
26 | "displayName":"Advanced",
27 | "isExpanded":false
28 | }
29 | ],
30 | "inputs": [
31 | {
32 | "name": "type",
33 | "type": "pickList",
34 | "label": "Type",
35 | "defaultValue": "",
36 | "required": true,
37 | "helpMarkDown": "File Path or Inline Script",
38 | "options": {
39 | "InlineScript": "Inline Script",
40 | "FilePath": "File Path"
41 | }
42 | },
43 | {
44 | "name": "scriptPath",
45 | "type": "filePath",
46 | "label": "Script Path",
47 | "defaultValue":"",
48 | "required":true,
49 | "helpMarkDown": "Relative path from repo root of the shell script file to run.",
50 | "visibleRule": "type = FilePath"
51 | },
52 | {
53 | "name": "args",
54 | "type": "string",
55 | "label": "Arguments",
56 | "defaultValue":"",
57 | "required":false,
58 | "helpMarkDown": "Arguments passed to the shell script",
59 | "visibleRule": "type = FilePath"
60 | },
61 | {
62 | "name": "cwd",
63 | "type": "filePath",
64 | "label": "Working Directory",
65 | "defaultValue":"",
66 | "required":false,
67 | "helpMarkDown": "Current working directory when script is run. Defaults to the folder where the script is located." ,
68 | "groupName":"advanced"
69 | },
70 | {
71 | "name": "failOnStandardError",
72 | "type": "boolean",
73 | "label": "Fail on Standard Error",
74 | "defaultValue": "false",
75 | "required": false,
76 | "helpMarkDown": "If this is true, this task will fail if any errors are written to the StandardError stream.",
77 | "groupName":"advanced"
78 | },
79 | {
80 | "name": "script",
81 | "type": "multiLine",
82 | "label": "Script",
83 | "defaultValue": "echo 'Hello World'",
84 | "required": true,
85 | "properties": {
86 | "resizable": true,
87 | "rows": "20"
88 | },
89 | "helpMarkDown": "Write your scripts and have fun",
90 | "visibleRule": "type = InlineScript"
91 | }
92 | ],
93 | "execution": {
94 | "Node": {
95 | "target": "task.js",
96 | "argumentFormat": ""
97 | }
98 | }
99 | }
100 |
--------------------------------------------------------------------------------
/Utilites/Tokenizer/Helpers.ps1:
--------------------------------------------------------------------------------
1 | function Test-ValidXmlFile {
2 | param (
3 | [parameter(mandatory=$true)][ValidateNotNullorEmpty()][string]$xmlFilePath
4 | )
5 |
6 | # Does file exist?
7 | if ((Test-Path -Path $xmlFilePath)){
8 | # Check for Load or Parse errors when loading the XML file
9 | $xml = New-Object System.Xml.XmlDocument
10 | try {
11 | $xml.Load((Get-ChildItem -Path $xmlFilePath).FullName)
12 | return $true
13 | }
14 | catch [System.Xml.XmlException] {
15 | Write-Verbose "$xmlFilePath : $($_.toString())"
16 | return $false
17 | }
18 | }
19 | else{
20 | return $false
21 | }
22 |
23 | }
24 |
25 |
26 | function Get-JsonFromFile {
27 | param (
28 | [parameter(mandatory=$true)][ValidateNotNullorEmpty()][string]$jsonFilePath
29 | )
30 | # Does file exist?
31 | if ((Test-Path -Path $jsonFilePath)){
32 | try {
33 | $encoding = Get-FileEncoding $jsonFilePath
34 | $outObject = (Get-Content $jsonFilePath -Encoding $encoding) -join "`n" | ConvertFrom-Json
35 | return $outObject
36 | }
37 | catch {
38 | Write-Host "Error parsing configuration file. Exception message: "
39 | Write-Host $_.Exception | Format-List
40 | return
41 | }
42 | }
43 | else {
44 | Write-Host "Configuration file '$jsonFilePath' not found."
45 | return
46 | }
47 |
48 | }
49 |
50 | function ArrayToHash($a)
51 | {
52 | $hash = @{}
53 | $a | foreach { $hash[$_.Name] = $_ }
54 | return $hash
55 | }
56 |
57 | function Get-FileEncoding {
58 | param ( [string] $FilePath )
59 |
60 | [byte[]] $byte = get-content -Encoding byte -ReadCount 4 -TotalCount 4 -Path $FilePath
61 |
62 | if ( $byte[0] -eq 0xef -and $byte[1] -eq 0xbb -and $byte[2] -eq 0xbf )
63 | { $encoding = 'UTF8' }
64 | elseif ($byte[0] -eq 0xfe -and $byte[1] -eq 0xff)
65 | { $encoding = 'BigEndianUnicode' }
66 | elseif ($byte[0] -eq 0xff -and $byte[1] -eq 0xfe)
67 | { $encoding = 'Unicode' }
68 | elseif ($byte[0] -eq 0 -and $byte[1] -eq 0 -and $byte[2] -eq 0xfe -and $byte[3] -eq 0xff)
69 | { $encoding = 'UTF32' }
70 | elseif ($byte[0] -eq 0x2b -and $byte[1] -eq 0x2f -and $byte[2] -eq 0x76)
71 | { $encoding = 'UTF7'}
72 | else
73 | { $encoding = 'ASCII' }
74 | return $encoding
75 | }
76 |
--------------------------------------------------------------------------------
/Utilites/Tokenizer/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/Tokenizer/icon.png
--------------------------------------------------------------------------------
/Utilites/Tokenizer/ps_modules/VstsTaskSdk/OutFunctions.ps1:
--------------------------------------------------------------------------------
1 | # TODO: It would be better if the Out-Default function resolved the underlying Out-Default
2 | # command in the begin block. This would allow for supporting other modules that override
3 | # Out-Default.
4 | $script:outDefaultCmdlet = $ExecutionContext.InvokeCommand.GetCmdlet("Microsoft.PowerShell.Core\Out-Default")
5 |
6 | ########################################
7 | # Public functions.
8 | ########################################
9 | function Out-Default {
10 | [CmdletBinding(ConfirmImpact = "Medium")]
11 | param(
12 | [Parameter(ValueFromPipeline = $true)]
13 | [System.Management.Automation.PSObject]$InputObject)
14 |
15 | begin {
16 | #Write-Host '[Entering Begin Out-Default]'
17 | $__sp = { & $script:outDefaultCmdlet @PSBoundParameters }.GetSteppablePipeline()
18 | $__sp.Begin($pscmdlet)
19 | #Write-Host '[Leaving Begin Out-Default]'
20 | }
21 |
22 | process {
23 | #Write-Host '[Entering Process Out-Default]'
24 | if ($_ -is [System.Management.Automation.ErrorRecord]) {
25 | Write-Verbose -Message 'Error record:' 4>&1 | Out-Default
26 | Write-Verbose -Message (Remove-TrailingNewLine (Out-String -InputObject $_ -Width 2147483647)) 4>&1 | Out-Default
27 | Write-Verbose -Message 'Script stack trace:' 4>&1 | Out-Default
28 | Write-Verbose -Message "$($_.ScriptStackTrace)" 4>&1 | Out-Default
29 | Write-Verbose -Message 'Exception:' 4>&1 | Out-Default
30 | Write-Verbose -Message $_.Exception.ToString() 4>&1 | Out-Default
31 | Write-TaskError -Message $_.Exception.Message
32 | } elseif ($_ -is [System.Management.Automation.WarningRecord]) {
33 | Write-TaskWarning -Message (Remove-TrailingNewLine (Out-String -InputObject $_ -Width 2147483647))
34 | } elseif ($_ -is [System.Management.Automation.VerboseRecord]) {
35 | foreach ($private:str in (Format-DebugMessage -Object $_)) {
36 | Write-TaskVerbose -Message $private:str
37 | }
38 | } elseif ($_ -is [System.Management.Automation.DebugRecord]) {
39 | foreach ($private:str in (Format-DebugMessage -Object $_)) {
40 | Write-TaskDebug -Message $private:str
41 | }
42 | } else {
43 | # TODO: Consider using out-string here to control the width. As a security precaution it would actually be best to set it to max so wrapping doesn't interfere with secret masking.
44 | $__sp.Process($_)
45 | }
46 |
47 | #Write-Host '[Leaving Process Out-Default]'
48 | }
49 |
50 | end {
51 | #Write-Host '[Entering End Out-Default]'
52 | $__sp.End()
53 | #Write-Host '[Leaving End Out-Default]'
54 | }
55 | }
56 |
57 | ########################################
58 | # Private functions.
59 | ########################################
60 | function Format-DebugMessage {
61 | [CmdletBinding()]
62 | param([psobject]$Object)
63 |
64 | $private:str = Out-String -InputObject $Object -Width 2147483647
65 | $private:str = Remove-TrailingNewLine $private:str
66 | "$private:str".Replace("`r`n", "`n").Replace("`r", "`n").Split("`n"[0])
67 | }
68 |
69 | function Remove-TrailingNewLine {
70 | [CmdletBinding()]
71 | param($Str)
72 | if ([object]::ReferenceEquals($Str, $null)) {
73 | return $Str
74 | } elseif ($Str.EndsWith("`r`n")) {
75 | return $Str.Substring(0, $Str.Length - 2)
76 | } else {
77 | return $Str
78 | }
79 | }
80 |
--------------------------------------------------------------------------------
/Utilites/Tokenizer/ps_modules/VstsTaskSdk/PSGetModuleInfo.xml:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/Tokenizer/ps_modules/VstsTaskSdk/PSGetModuleInfo.xml
--------------------------------------------------------------------------------
/Utilites/Tokenizer/ps_modules/VstsTaskSdk/Strings/resources.resjson/de-de/resources.resjson:
--------------------------------------------------------------------------------
1 | {
2 | "loc.messages.PSLIB_ContainerPathNotFound0": "Der Containerpfad wurde nicht gefunden: \"{0}\".",
3 | "loc.messages.PSLIB_EndpointAuth0": "\"{0}\"-Dienstendpunkt-Anmeldeinformationen",
4 | "loc.messages.PSLIB_EndpointUrl0": "\"{0}\"-Dienstendpunkt-URL",
5 | "loc.messages.PSLIB_EnumeratingSubdirectoriesFailedForPath0": "Fehler beim Aufzählen von Unterverzeichnissen für den folgenden Pfad: \"{0}\"",
6 | "loc.messages.PSLIB_FileNotFound0": "Die Datei wurde nicht gefunden: \"{0}\".",
7 | "loc.messages.PSLIB_Input0": "\"{0}\"-Eingabe",
8 | "loc.messages.PSLIB_InvalidPattern0": "Ungültiges Muster: \"{0}\"",
9 | "loc.messages.PSLIB_LeafPathNotFound0": "Der Blattpfad wurde nicht gefunden: \"{0}\".",
10 | "loc.messages.PSLIB_PathLengthNotReturnedFor0": "Fehler bei der Normalisierung bzw. Erweiterung des Pfads. Die Pfadlänge wurde vom Kernel32-Subsystem nicht zurückgegeben für: \"{0}\"",
11 | "loc.messages.PSLIB_PathNotFound0": "Der Pfad wurde nicht gefunden: \"{0}\".",
12 | "loc.messages.PSLIB_Process0ExitedWithCode1": "Der Prozess \"{0}\" wurde mit dem Code \"{1}\" beendet.",
13 | "loc.messages.PSLIB_Required0": "Erforderlich: {0}",
14 | "loc.messages.PSLIB_StringFormatFailed": "Fehler beim Zeichenfolgenformat.",
15 | "loc.messages.PSLIB_StringResourceKeyNotFound0": "Der Zeichenfolgen-Ressourcenschlüssel wurde nicht gefunden: \"{0}\".",
16 | "loc.messages.PSLIB_TaskVariable0": "\"{0}\"-Taskvariable"
17 | }
--------------------------------------------------------------------------------
/Utilites/Tokenizer/ps_modules/VstsTaskSdk/Strings/resources.resjson/en-US/resources.resjson:
--------------------------------------------------------------------------------
1 | {
2 | "loc.messages.PSLIB_ContainerPathNotFound0": "Container path not found: '{0}'",
3 | "loc.messages.PSLIB_EndpointAuth0": "'{0}' service endpoint credentials",
4 | "loc.messages.PSLIB_EndpointUrl0": "'{0}' service endpoint URL",
5 | "loc.messages.PSLIB_EnumeratingSubdirectoriesFailedForPath0": "Enumerating subdirectories failed for path: '{0}'",
6 | "loc.messages.PSLIB_FileNotFound0": "File not found: '{0}'",
7 | "loc.messages.PSLIB_Input0": "'{0}' input",
8 | "loc.messages.PSLIB_InvalidPattern0": "Invalid pattern: '{0}'",
9 | "loc.messages.PSLIB_LeafPathNotFound0": "Leaf path not found: '{0}'",
10 | "loc.messages.PSLIB_PathLengthNotReturnedFor0": "Path normalization/expansion failed. The path length was not returned by the Kernel32 subsystem for: '{0}'",
11 | "loc.messages.PSLIB_PathNotFound0": "Path not found: '{0}'",
12 | "loc.messages.PSLIB_Process0ExitedWithCode1": "Process '{0}' exited with code '{1}'.",
13 | "loc.messages.PSLIB_Required0": "Required: {0}",
14 | "loc.messages.PSLIB_StringFormatFailed": "String format failed.",
15 | "loc.messages.PSLIB_StringResourceKeyNotFound0": "String resource key not found: '{0}'",
16 | "loc.messages.PSLIB_TaskVariable0": "'{0}' task variable"
17 | }
--------------------------------------------------------------------------------
/Utilites/Tokenizer/ps_modules/VstsTaskSdk/Strings/resources.resjson/es-es/resources.resjson:
--------------------------------------------------------------------------------
1 | {
2 | "loc.messages.PSLIB_ContainerPathNotFound0": "No se encuentra la ruta de acceso del contenedor: '{0}'",
3 | "loc.messages.PSLIB_EndpointAuth0": "Credenciales del punto de conexión de servicio '{0}'",
4 | "loc.messages.PSLIB_EndpointUrl0": "URL del punto de conexión de servicio '{0}'",
5 | "loc.messages.PSLIB_EnumeratingSubdirectoriesFailedForPath0": "No se pudieron enumerar los subdirectorios de la ruta de acceso: '{0}'",
6 | "loc.messages.PSLIB_FileNotFound0": "Archivo no encontrado: '{0}'",
7 | "loc.messages.PSLIB_Input0": "Entrada '{0}'",
8 | "loc.messages.PSLIB_InvalidPattern0": "Patrón no válido: '{0}'",
9 | "loc.messages.PSLIB_LeafPathNotFound0": "No se encuentra la ruta de acceso de la hoja: '{0}'",
10 | "loc.messages.PSLIB_PathLengthNotReturnedFor0": "No se pudo normalizar o expandir la ruta de acceso. El subsistema Kernel32 no devolvió la longitud de la ruta de acceso para: '{0}'",
11 | "loc.messages.PSLIB_PathNotFound0": "No se encuentra la ruta de acceso: '{0}'",
12 | "loc.messages.PSLIB_Process0ExitedWithCode1": "El proceso '{0}' finalizó con el código '{1}'.",
13 | "loc.messages.PSLIB_Required0": "Se requiere: {0}",
14 | "loc.messages.PSLIB_StringFormatFailed": "Error de formato de cadena.",
15 | "loc.messages.PSLIB_StringResourceKeyNotFound0": "No se encuentra la clave de recurso de la cadena: '{0}'",
16 | "loc.messages.PSLIB_TaskVariable0": "Variable de tarea '{0}'"
17 | }
--------------------------------------------------------------------------------
/Utilites/Tokenizer/ps_modules/VstsTaskSdk/Strings/resources.resjson/fr-fr/resources.resjson:
--------------------------------------------------------------------------------
1 | {
2 | "loc.messages.PSLIB_ContainerPathNotFound0": "Le chemin du conteneur est introuvable : '{0}'",
3 | "loc.messages.PSLIB_EndpointAuth0": "Informations d'identification du point de terminaison de service '{0}'",
4 | "loc.messages.PSLIB_EndpointUrl0": "URL du point de terminaison de service '{0}'",
5 | "loc.messages.PSLIB_EnumeratingSubdirectoriesFailedForPath0": "Échec de l'énumération des sous-répertoires pour le chemin : '{0}'",
6 | "loc.messages.PSLIB_FileNotFound0": "Fichier introuvable : {0}.",
7 | "loc.messages.PSLIB_Input0": "Entrée '{0}'",
8 | "loc.messages.PSLIB_InvalidPattern0": "Modèle non valide : '{0}'",
9 | "loc.messages.PSLIB_LeafPathNotFound0": "Le chemin feuille est introuvable : '{0}'",
10 | "loc.messages.PSLIB_PathLengthNotReturnedFor0": "Échec de la normalisation/l'expansion du chemin. La longueur du chemin n'a pas été retournée par le sous-système Kernel32 pour : '{0}'",
11 | "loc.messages.PSLIB_PathNotFound0": "Chemin introuvable : '{0}'",
12 | "loc.messages.PSLIB_Process0ExitedWithCode1": "Le processus '{0}' s'est arrêté avec le code '{1}'.",
13 | "loc.messages.PSLIB_Required0": "Obligatoire : {0}",
14 | "loc.messages.PSLIB_StringFormatFailed": "Échec du format de la chaîne.",
15 | "loc.messages.PSLIB_StringResourceKeyNotFound0": "Clé de la ressource de type chaîne introuvable : '{0}'",
16 | "loc.messages.PSLIB_TaskVariable0": "Variable de tâche '{0}'"
17 | }
--------------------------------------------------------------------------------
/Utilites/Tokenizer/ps_modules/VstsTaskSdk/Strings/resources.resjson/it-IT/resources.resjson:
--------------------------------------------------------------------------------
1 | {
2 | "loc.messages.PSLIB_ContainerPathNotFound0": "Percorso del contenitore non trovato: '{0}'",
3 | "loc.messages.PSLIB_EndpointAuth0": "Credenziali dell'endpoint servizio '{0}'",
4 | "loc.messages.PSLIB_EndpointUrl0": "URL dell'endpoint servizio '{0}'",
5 | "loc.messages.PSLIB_EnumeratingSubdirectoriesFailedForPath0": "L'enumerazione delle sottodirectory per il percorso '{0}' non è riuscita",
6 | "loc.messages.PSLIB_FileNotFound0": "File non trovato: '{0}'",
7 | "loc.messages.PSLIB_Input0": "Input di '{0}'",
8 | "loc.messages.PSLIB_InvalidPattern0": "Criterio non valido: '{0}'",
9 | "loc.messages.PSLIB_LeafPathNotFound0": "Percorso foglia non trovato: '{0}'",
10 | "loc.messages.PSLIB_PathLengthNotReturnedFor0": "La normalizzazione o l'espansione del percorso non è riuscita. Il sottosistema Kernel32 non ha restituito la lunghezza del percorso per '{0}'",
11 | "loc.messages.PSLIB_PathNotFound0": "Percorso non trovato: '{0}'",
12 | "loc.messages.PSLIB_Process0ExitedWithCode1": "Il processo '{0}' è stato terminato ed è stato restituito il codice '{1}'.",
13 | "loc.messages.PSLIB_Required0": "Obbligatorio: {0}",
14 | "loc.messages.PSLIB_StringFormatFailed": "Errore nel formato della stringa.",
15 | "loc.messages.PSLIB_StringResourceKeyNotFound0": "La chiave della risorsa stringa non è stata trovata: '{0}'",
16 | "loc.messages.PSLIB_TaskVariable0": "Variabile dell'attività '{0}'"
17 | }
--------------------------------------------------------------------------------
/Utilites/Tokenizer/ps_modules/VstsTaskSdk/Strings/resources.resjson/ja-jp/resources.resjson:
--------------------------------------------------------------------------------
1 | {
2 | "loc.messages.PSLIB_ContainerPathNotFound0": "コンテナーのパスが見つかりません: '{0}'",
3 | "loc.messages.PSLIB_EndpointAuth0": "'{0}' サービス エンドポイントの資格情報",
4 | "loc.messages.PSLIB_EndpointUrl0": "'{0}' サービス エンドポイントの URL",
5 | "loc.messages.PSLIB_EnumeratingSubdirectoriesFailedForPath0": "パス '{0}' のサブディレクトリを列挙できませんでした",
6 | "loc.messages.PSLIB_FileNotFound0": "ファイルが見つかりません: '{0}'",
7 | "loc.messages.PSLIB_Input0": "'{0}' 入力",
8 | "loc.messages.PSLIB_InvalidPattern0": "使用できないパターンです: '{0}'",
9 | "loc.messages.PSLIB_LeafPathNotFound0": "リーフ パスが見つかりません: '{0}'",
10 | "loc.messages.PSLIB_PathLengthNotReturnedFor0": "パスの正規化/展開に失敗しました。Kernel32 サブシステムからパス '{0}' の長さが返されませんでした",
11 | "loc.messages.PSLIB_PathNotFound0": "パスが見つかりません: '{0}'",
12 | "loc.messages.PSLIB_Process0ExitedWithCode1": "プロセス '{0}' がコード '{1}' で終了しました。",
13 | "loc.messages.PSLIB_Required0": "必要: {0}",
14 | "loc.messages.PSLIB_StringFormatFailed": "文字列のフォーマットに失敗しました。",
15 | "loc.messages.PSLIB_StringResourceKeyNotFound0": "文字列のリソース キーが見つかりません: '{0}'",
16 | "loc.messages.PSLIB_TaskVariable0": "'{0}' タスク変数"
17 | }
--------------------------------------------------------------------------------
/Utilites/Tokenizer/ps_modules/VstsTaskSdk/Strings/resources.resjson/ko-KR/resources.resjson:
--------------------------------------------------------------------------------
1 | {
2 | "loc.messages.PSLIB_ContainerPathNotFound0": "컨테이너 경로를 찾을 수 없음: '{0}'",
3 | "loc.messages.PSLIB_EndpointAuth0": "'{0}' 서비스 끝점 자격 증명",
4 | "loc.messages.PSLIB_EndpointUrl0": "'{0}' 서비스 끝점 URL",
5 | "loc.messages.PSLIB_EnumeratingSubdirectoriesFailedForPath0": "경로에 대해 하위 디렉터리를 열거하지 못함: '{0}'",
6 | "loc.messages.PSLIB_FileNotFound0": "{0} 파일을 찾을 수 없습니다.",
7 | "loc.messages.PSLIB_Input0": "'{0}' 입력",
8 | "loc.messages.PSLIB_InvalidPattern0": "잘못된 패턴: '{0}'",
9 | "loc.messages.PSLIB_LeafPathNotFound0": "Leaf 경로를 찾을 수 없음: '{0}'",
10 | "loc.messages.PSLIB_PathLengthNotReturnedFor0": "경로 정규화/확장에 실패했습니다. 다음에 대해 Kernel32 subsystem에서 경로 길이를 반환하지 않음: '{0}'",
11 | "loc.messages.PSLIB_PathNotFound0": "경로를 찾을 수 없음: '{0}'",
12 | "loc.messages.PSLIB_Process0ExitedWithCode1": "'{1}' 코드로 '{0}' 프로세스가 종료되었습니다.",
13 | "loc.messages.PSLIB_Required0": "필수: {0}",
14 | "loc.messages.PSLIB_StringFormatFailed": "문자열을 포맷하지 못했습니다.",
15 | "loc.messages.PSLIB_StringResourceKeyNotFound0": "문자열 리소스 키를 찾을 수 없음: '{0}'",
16 | "loc.messages.PSLIB_TaskVariable0": "'{0}' 작업 변수"
17 | }
--------------------------------------------------------------------------------
/Utilites/Tokenizer/ps_modules/VstsTaskSdk/Strings/resources.resjson/ru-RU/resources.resjson:
--------------------------------------------------------------------------------
1 | {
2 | "loc.messages.PSLIB_ContainerPathNotFound0": "Путь к контейнеру не найден: \"{0}\".",
3 | "loc.messages.PSLIB_EndpointAuth0": "Учетные данные конечной точки службы \"{0}\"",
4 | "loc.messages.PSLIB_EndpointUrl0": "URL-адрес конечной точки службы \"{0}\"",
5 | "loc.messages.PSLIB_EnumeratingSubdirectoriesFailedForPath0": "Сбой перечисления подкаталогов для пути: \"{0}\".",
6 | "loc.messages.PSLIB_FileNotFound0": "Файл не найден: \"{0}\".",
7 | "loc.messages.PSLIB_Input0": "Входные данные \"{0}\".",
8 | "loc.messages.PSLIB_InvalidPattern0": "Недопустимый шаблон: \"{0}\".",
9 | "loc.messages.PSLIB_LeafPathNotFound0": "Путь к конечному объекту не найден: \"{0}\".",
10 | "loc.messages.PSLIB_PathLengthNotReturnedFor0": "Сбой нормализации и расширения пути. Длина пути не была возвращена подсистемой Kernel32 для: \"{0}\".",
11 | "loc.messages.PSLIB_PathNotFound0": "Путь не найден: \"{0}\".",
12 | "loc.messages.PSLIB_Process0ExitedWithCode1": "Процесс \"{0}\" завершил работу с кодом \"{1}\".",
13 | "loc.messages.PSLIB_Required0": "Требуется: {0}",
14 | "loc.messages.PSLIB_StringFormatFailed": "Сбой формата строки.",
15 | "loc.messages.PSLIB_StringResourceKeyNotFound0": "Ключ ресурса строки не найден: \"{0}\".",
16 | "loc.messages.PSLIB_TaskVariable0": "Переменная задачи \"{0}\""
17 | }
--------------------------------------------------------------------------------
/Utilites/Tokenizer/ps_modules/VstsTaskSdk/Strings/resources.resjson/zh-CN/resources.resjson:
--------------------------------------------------------------------------------
1 | {
2 | "loc.messages.PSLIB_ContainerPathNotFound0": "找不到容器路径:“{0}”",
3 | "loc.messages.PSLIB_EndpointAuth0": "“{0}”服务终结点凭据",
4 | "loc.messages.PSLIB_EndpointUrl0": "“{0}”服务终结点 URL",
5 | "loc.messages.PSLIB_EnumeratingSubdirectoriesFailedForPath0": "枚举路径的子目录失败:“{0}”",
6 | "loc.messages.PSLIB_FileNotFound0": "找不到文件: {0}。",
7 | "loc.messages.PSLIB_Input0": "“{0}”输入",
8 | "loc.messages.PSLIB_InvalidPattern0": "无效的模式:“{0}”",
9 | "loc.messages.PSLIB_LeafPathNotFound0": "找不到叶路径:“{0}”",
10 | "loc.messages.PSLIB_PathLengthNotReturnedFor0": "路径规范化/扩展失败。路径长度不是由“{0}”的 Kernel32 子系统返回的",
11 | "loc.messages.PSLIB_PathNotFound0": "找不到路径:“{0}”",
12 | "loc.messages.PSLIB_Process0ExitedWithCode1": "过程“{0}”已退出,代码为“{1}”。",
13 | "loc.messages.PSLIB_Required0": "必需: {0}",
14 | "loc.messages.PSLIB_StringFormatFailed": "字符串格式无效。",
15 | "loc.messages.PSLIB_StringResourceKeyNotFound0": "找不到字符串资源关键字:“{0}”",
16 | "loc.messages.PSLIB_TaskVariable0": "“{0}”任务变量"
17 | }
--------------------------------------------------------------------------------
/Utilites/Tokenizer/ps_modules/VstsTaskSdk/Strings/resources.resjson/zh-TW/resources.resjson:
--------------------------------------------------------------------------------
1 | {
2 | "loc.messages.PSLIB_ContainerPathNotFound0": "找不到容器路徑: '{0}'",
3 | "loc.messages.PSLIB_EndpointAuth0": "'{0}' 服務端點認證",
4 | "loc.messages.PSLIB_EndpointUrl0": "'{0}' 服務端點 URL",
5 | "loc.messages.PSLIB_EnumeratingSubdirectoriesFailedForPath0": "為路徑列舉子目錄失敗: '{0}'",
6 | "loc.messages.PSLIB_FileNotFound0": "找不到檔案: '{0}'",
7 | "loc.messages.PSLIB_Input0": "'{0}' 輸入",
8 | "loc.messages.PSLIB_InvalidPattern0": "模式無效: '{0}'",
9 | "loc.messages.PSLIB_LeafPathNotFound0": "找不到分葉路徑: '{0}'",
10 | "loc.messages.PSLIB_PathLengthNotReturnedFor0": "路徑正規化/展開失敗。Kernel32 子系統未傳回 '{0}' 的路徑長度",
11 | "loc.messages.PSLIB_PathNotFound0": "找不到路徑: '{0}'",
12 | "loc.messages.PSLIB_Process0ExitedWithCode1": "處理序 '{0}' 以返回碼 '{1}' 結束。",
13 | "loc.messages.PSLIB_Required0": "必要項: {0}",
14 | "loc.messages.PSLIB_StringFormatFailed": "字串格式失敗。",
15 | "loc.messages.PSLIB_StringResourceKeyNotFound0": "找不到字串資源索引鍵: '{0}'",
16 | "loc.messages.PSLIB_TaskVariable0": "'{0}' 工作變數"
17 | }
--------------------------------------------------------------------------------
/Utilites/Tokenizer/ps_modules/VstsTaskSdk/ToolFunctions.ps1:
--------------------------------------------------------------------------------
1 | <#
2 | .SYNOPSIS
3 | Asserts that a path exists. Throws if the path does not exist.
4 |
5 | .PARAMETER PassThru
6 | True to return the path.
7 | #>
8 | function Assert-Path {
9 | [CmdletBinding()]
10 | param(
11 | [Parameter(Mandatory = $true)]
12 | [string]$LiteralPath,
13 | [Microsoft.PowerShell.Commands.TestPathType]$PathType = [Microsoft.PowerShell.Commands.TestPathType]::Any,
14 | [switch]$PassThru)
15 |
16 | if ($PathType -eq [Microsoft.PowerShell.Commands.TestPathType]::Any) {
17 | Write-Verbose "Asserting path exists: '$LiteralPath'"
18 | } else {
19 | Write-Verbose "Asserting $("$PathType".ToLowerInvariant()) path exists: '$LiteralPath'"
20 | }
21 |
22 | if (Test-Path -LiteralPath $LiteralPath -PathType $PathType) {
23 | if ($PassThru) {
24 | return $LiteralPath
25 | }
26 |
27 | return
28 | }
29 |
30 | $resourceKey = switch ($PathType) {
31 | ([Microsoft.PowerShell.Commands.TestPathType]::Container) { "PSLIB_ContainerPathNotFound0" ; break }
32 | ([Microsoft.PowerShell.Commands.TestPathType]::Leaf) { "PSLIB_LeafPathNotFound0" ; break }
33 | default { "PSLIB_PathNotFound0" }
34 | }
35 |
36 | throw (Get-LocString -Key $resourceKey -ArgumentList $LiteralPath)
37 | }
38 |
39 | <#
40 | .SYNOPSIS
41 | Executes an external program.
42 |
43 | .DESCRIPTION
44 | Executes an external program and waits for the process to exit.
45 |
46 | After calling this command, the exit code of the process can be retrieved from the variable $LASTEXITCODE.
47 |
48 | .PARAMETER Encoding
49 | This parameter not required for most scenarios. Indicates how to interpret the encoding from the external program. An example use case would be if an external program outputs UTF-16 XML and the output needs to be parsed.
50 |
51 | .PARAMETER RequireExitCodeZero
52 | Indicates whether to write an error to the error pipeline if the exit code is not zero.
53 | #>
54 | function Invoke-Tool { # TODO: RENAME TO INVOKE-PROCESS?
55 | [CmdletBinding()]
56 | param(
57 | [ValidatePattern('^[^\r\n]*$')]
58 | [Parameter(Mandatory = $true)]
59 | [string]$FileName,
60 | [ValidatePattern('^[^\r\n]*$')]
61 | [Parameter()]
62 | [string]$Arguments,
63 | [string]$WorkingDirectory,
64 | [System.Text.Encoding]$Encoding,
65 | [switch]$RequireExitCodeZero)
66 |
67 | Trace-EnteringInvocation $MyInvocation
68 | $isPushed = $false
69 | $originalEncoding = $null
70 | try {
71 | if ($Encoding) {
72 | $originalEncoding = [System.Console]::OutputEncoding
73 | [System.Console]::OutputEncoding = $Encoding
74 | }
75 |
76 | if ($WorkingDirectory) {
77 | Push-Location -LiteralPath $WorkingDirectory -ErrorAction Stop
78 | $isPushed = $true
79 | }
80 |
81 | $FileName = $FileName.Replace('"', '').Replace("'", "''")
82 | Write-Host "##[command]""$FileName"" $Arguments"
83 | Invoke-Expression "& '$FileName' --% $Arguments"
84 | Write-Verbose "Exit code: $LASTEXITCODE"
85 | if ($RequireExitCodeZero -and $LASTEXITCODE -ne 0) {
86 | Write-Error (Get-LocString -Key PSLIB_Process0ExitedWithCode1 -ArgumentList ([System.IO.Path]::GetFileName($FileName)), $LASTEXITCODE)
87 | }
88 | } finally {
89 | if ($originalEncoding) {
90 | [System.Console]::OutputEncoding = $originalEncoding
91 | }
92 |
93 | if ($isPushed) {
94 | Pop-Location
95 | }
96 |
97 | Trace-LeavingInvocation $MyInvocation
98 | }
99 | }
100 |
--------------------------------------------------------------------------------
/Utilites/Tokenizer/ps_modules/VstsTaskSdk/VstsTaskSdk.psd1:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/Tokenizer/ps_modules/VstsTaskSdk/VstsTaskSdk.psd1
--------------------------------------------------------------------------------
/Utilites/Tokenizer/ps_modules/VstsTaskSdk/lib.json:
--------------------------------------------------------------------------------
1 | {
2 | "messages": {
3 | "PSLIB_ContainerPathNotFound0": "Container path not found: '{0}'",
4 | "PSLIB_EndpointAuth0": "'{0}' service endpoint credentials",
5 | "PSLIB_EndpointUrl0": "'{0}' service endpoint URL",
6 | "PSLIB_EnumeratingSubdirectoriesFailedForPath0": "Enumerating subdirectories failed for path: '{0}'",
7 | "PSLIB_FileNotFound0": "File not found: '{0}'",
8 | "PSLIB_Input0": "'{0}' input",
9 | "PSLIB_InvalidPattern0": "Invalid pattern: '{0}'",
10 | "PSLIB_LeafPathNotFound0": "Leaf path not found: '{0}'",
11 | "PSLIB_PathLengthNotReturnedFor0": "Path normalization/expansion failed. The path length was not returned by the Kernel32 subsystem for: '{0}'",
12 | "PSLIB_PathNotFound0": "Path not found: '{0}'",
13 | "PSLIB_Process0ExitedWithCode1": "Process '{0}' exited with code '{1}'.",
14 | "PSLIB_Required0": "Required: {0}",
15 | "PSLIB_StringFormatFailed": "String format failed.",
16 | "PSLIB_StringResourceKeyNotFound0": "String resource key not found: '{0}'",
17 | "PSLIB_TaskVariable0": "'{0}' task variable"
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/Utilites/Tokenizer/task.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "57ee7959-ba10-47a7-8adb-19d032873133",
3 | "name": "Tokenizer",
4 | "friendlyName": "Tokenize with XPath/Regular expressions",
5 | "description": "Replaces ____ and/or XPath for XML documents with User Defined variables or configuration json document",
6 | "helpMarkDown": "[More Information](https://github.com/openalm/Extension-UtilitiesPack)",
7 | "category": "Utility",
8 | "visibility": [
9 | "Build",
10 | "Release"
11 | ],
12 | "author": "ms-devlabs",
13 | "version": {
14 | "Major": 2,
15 | "Minor": 1,
16 | "Patch": 0
17 | },
18 | "demands": [
19 | ],
20 | "groups": [
21 | {
22 | "name": "advanced",
23 | "displayName": "Advanced",
24 | "isExpanded": false
25 | }
26 | ],
27 | "inputs": [
28 | {
29 | "name": "SourcePath",
30 | "type": "filePath",
31 | "label": "Source filename",
32 | "defaultValue": "",
33 | "required": true,
34 | "helpMarkDown": "Source file name that contains the tokens (____). These patterns will be replaced with user-defined variables or from Configuration Json FileName. If it is an XML document, XPaths mentioned in the Configuration JsonFileName will be set as per environment"
35 | },
36 | {
37 | "name": "DestinationPath",
38 | "type": "string",
39 | "label": "Destination filename",
40 | "defaultValue": "",
41 | "helpMarkDown": "The destination filename that has transformed Source filename. If this is empty, the 'Source filename' will be modified.",
42 | "required": false
43 | },
44 | {
45 | "name": "ConfigurationJsonFile",
46 | "type": "string",
47 | "label": "Configuration Json filename",
48 | "defaultValue": "",
49 | "helpMarkDown": "Json file that contains environment specific settings in the form XPath, Attribute, Value and values for user-defined variables.",
50 | "required": false
51 | },
52 | {
53 | "name": "ReplaceUndefinedValuesWithEmpty",
54 | "type": "boolean",
55 | "label": "Replace undefined values with empty",
56 | "defaultValue": false,
57 | "groupName": "advanced",
58 | "helpMarkDown": "If set tokens will be set to an empty value if neither environment variable was set nor the value be found in the configuration. Otherwise the token will be skipped.",
59 | "required": false
60 | }
61 | ],
62 | "instanceNameFormat": "Tokenizer: Transform Source filename",
63 | "execution": {
64 | "Powershell": {
65 | "target": "$(currentDirectory)\\tokenize.ps1",
66 | "argumentFormat": "",
67 | "workingDirectory": "$(currentDirectory)",
68 | "platforms": [
69 | "windows"
70 | ]
71 | },
72 | "Powershell3": {
73 | "target": "tokenize-ps3.ps1"
74 | }
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/Utilites/UnZip/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/UnZip/icon.png
--------------------------------------------------------------------------------
/Utilites/UnZip/task.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "f3256ce0-a7ba-11e5-9412-1587795ee05c",
3 | "name": "unzip",
4 | "friendlyName": "UnZip A package",
5 | "description": "UnZip a package",
6 | "author": "ms-devlabs",
7 | "helpMarkDown": "[More Information](https://github.com/openalm/Extension-UtilitiesPack)",
8 | "category": "Utility",
9 | "visibility": [
10 | "Build",
11 | "Release"
12 | ],
13 | "demands": [
14 | "DotNetFramework"
15 | ],
16 | "version": {
17 | "Major": "0",
18 | "Minor": "1",
19 | "Patch": "1"
20 | },
21 | "minimumAgentVersion": "1.83.0",
22 | "instanceNameFormat": "UnZip",
23 | "inputs": [
24 | {
25 | "name": "pathToZipFile",
26 | "type": "filePath",
27 | "label": "Path to the zip file",
28 | "defaultValue": "",
29 | "required": true,
30 | "helpMarkDown": "Path to the zip file which you want to unzip"
31 | },
32 | {
33 | "name": "pathToZipFolder",
34 | "type": "filePath",
35 | "label": "Path to folder",
36 | "defaultValue": "",
37 | "required": true,
38 | "helpMarkDown": "Path to the folder where you want unzipped content."
39 | }
40 | ],
41 | "execution": {
42 | "PowerShell": {
43 | "target": "$(currentDirectory)\\unzip.ps1",
44 | "argumentFormat": "",
45 | "workingDirectory": "$(currentDirectory)"
46 | }
47 | }
48 | }
--------------------------------------------------------------------------------
/Utilites/UnZip/unzip.ps1:
--------------------------------------------------------------------------------
1 | param (
2 | [string]$pathToZipFile,
3 | [string]$pathToZipFolder
4 |
5 | )
6 |
7 | Write-Verbose 'Entering sample.ps1'
8 | Write-Verbose "pathToZipFile = $pathToZipFile"
9 | Write-Verbose "pathToZipFolder = $pathToZipFolder"
10 |
11 |
12 | # Import the Task.Common dll that has all the cmdlets we need for Build
13 | # import-module "Microsoft.TeamFoundation.DistributedTask.Task.Common"
14 | Add-Type -A System.IO.Compression.FileSystem
15 |
16 | [IO.Compression.ZipFile]::ExtractToDirectory($pathToZipFile, $pathToZipFolder)
17 |
--------------------------------------------------------------------------------
/Utilites/Zip/icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/Zip/icon.png
--------------------------------------------------------------------------------
/Utilites/Zip/task.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": "dc66d2f0-a7ba-11e5-ae62-3deab86d85e3",
3 | "name": "zip",
4 | "friendlyName": "Zip A Folder",
5 | "description": "Zip Files and Folder",
6 | "author": "ms-devlabs",
7 | "helpMarkDown": "[More Information](https://github.com/openalm/Extension-UtilitiesPack)",
8 | "category": "Utility",
9 | "visibility": [
10 | "Build",
11 | "Release"
12 | ],
13 | "demands": [],
14 | "version": {
15 | "Major": "0",
16 | "Minor": "2",
17 | "Patch": "0"
18 | },
19 | "minimumAgentVersion": "1.83.0",
20 | "instanceNameFormat": "Zip",
21 | "groups": [
22 | {
23 | "name":"advanced",
24 | "displayName":"Advanced",
25 | "isExpanded":false
26 | }
27 | ],
28 | "inputs": [
29 | {
30 | "name": "pathToZipFolder",
31 | "type": "filePath",
32 | "label": "Path to folder",
33 | "defaultValue": "",
34 | "required": true,
35 | "helpMarkDown": "Path to the folder whose content has to be zipped."
36 | },
37 | {
38 | "name": "pathToZipFile",
39 | "type": "filePath",
40 | "label": "Path to the zip file",
41 | "defaultValue": "",
42 | "required": true,
43 | "helpMarkDown": "Path to the zip file which will be generated"
44 | },
45 | {
46 | "name": "overwrite",
47 | "type": "boolean",
48 | "label": "Overwrite zip file",
49 | "defaultValue": "false",
50 | "required":false,
51 | "helpMarkDown": "Overwrites the existing zip file",
52 | "groupName":"advanced"
53 | }
54 | ],
55 | "execution": {
56 | "PowerShell": {
57 | "target": "$(currentDirectory)\\zip.ps1",
58 | "argumentFormat": "",
59 | "workingDirectory": "$(currentDirectory)"
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/Utilites/Zip/zip.ps1:
--------------------------------------------------------------------------------
1 | param (
2 | [string]$pathToZipFolder,
3 | [string]$pathToZipFile,
4 | [string]$overwrite
5 | )
6 |
7 | Write-Verbose 'Entering sample.ps1'
8 | Write-Verbose "pathToZipFolder = $pathToZipFolder"
9 | Write-Verbose "pathToZipFile = $pathToZipFile"
10 | Write-Verbose "overwrite = $overwrite"
11 |
12 | Add-Type -A System.IO.Compression.FileSystem
13 |
14 | # This is a hack since the agent passes this as a string.
15 | if($overwrite -eq "true"){
16 | $overwrite = $true
17 | }else{
18 | $overwrite = $false
19 | }
20 |
21 | if ($overwrite -and (Test-Path $pathToZipFile)){
22 | Write-Verbose "Removing the old file"
23 | Remove-Item $pathToZipFile
24 | }
25 |
26 | [IO.Compression.ZipFile]::CreateFromDirectory($pathToZipFolder, $pathToZipFile)
--------------------------------------------------------------------------------
/Utilites/images/Icon1024.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/images/Icon1024.png
--------------------------------------------------------------------------------
/Utilites/images/Icon128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/images/Icon128.png
--------------------------------------------------------------------------------
/Utilites/images/Icon256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/images/Icon256.png
--------------------------------------------------------------------------------
/Utilites/images/Icon512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/images/Icon512.png
--------------------------------------------------------------------------------
/Utilites/images/Icon64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/images/Icon64.png
--------------------------------------------------------------------------------
/Utilites/images/screen1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/images/screen1.png
--------------------------------------------------------------------------------
/Utilites/ms-devlabs.utilitytasks-0.1.10.vsix:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/ms-devlabs.utilitytasks-0.1.10.vsix
--------------------------------------------------------------------------------
/Utilites/ms-devlabs.utilitytasks-0.1.3.vsix:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/ms-devlabs.utilitytasks-0.1.3.vsix
--------------------------------------------------------------------------------
/Utilites/ms-devlabs.utilitytasks-0.1.5.vsix:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/ms-devlabs.utilitytasks-0.1.5.vsix
--------------------------------------------------------------------------------
/Utilites/ms-devlabs.utilitytasks-0.1.6.vsix:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/ms-devlabs.utilitytasks-0.1.6.vsix
--------------------------------------------------------------------------------
/Utilites/ms-devlabs.utilitytasks-0.1.8.vsix:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/ms-devlabs.utilitytasks-0.1.8.vsix
--------------------------------------------------------------------------------
/Utilites/ms-devlabs.utilitytasks-0.1.9.vsix:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/openalm/Extension-UtilitiesPack/4747cae037612c5f3e41bdf6e6aa3b285cbc29eb/Utilites/ms-devlabs.utilitytasks-0.1.9.vsix
--------------------------------------------------------------------------------