mirror of
https://github.com/actions/setup-dotnet.git
synced 2025-08-18 14:45:09 +00:00
Implement proposal stated in ADR for setup-dotnet v3
In the scope of this commit such functionalty was added: 1. Installation directories for Windows and Ubuntu were changed to the folder with preinstalled .NET SDK's 2. Inner logic of interaction with MS dotnet installer scripts was changed 3. New input "dotnet-quality" was added Such functionality was cut out: 1. Input "include-prerelease"
This commit is contained in:
parent
fd4e15fa44
commit
8b5d13bd26
2
.licenses/npm/@actions/core.dep.yml
generated
2
.licenses/npm/@actions/core.dep.yml
generated
@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: "@actions/core"
|
name: "@actions/core"
|
||||||
version: 1.6.0
|
version: 1.9.1
|
||||||
type: npm
|
type: npm
|
||||||
summary: Actions core lib
|
summary: Actions core lib
|
||||||
homepage: https://github.com/actions/toolkit/tree/main/packages/core
|
homepage: https://github.com/actions/toolkit/tree/main/packages/core
|
||||||
|
30
.licenses/npm/@actions/exec.dep.yml
generated
30
.licenses/npm/@actions/exec.dep.yml
generated
@ -1,30 +1,20 @@
|
|||||||
---
|
---
|
||||||
name: "@actions/exec"
|
name: "@actions/exec"
|
||||||
version: 1.0.4
|
version: 1.1.1
|
||||||
type: npm
|
type: npm
|
||||||
summary: Actions exec lib
|
summary: Actions exec lib
|
||||||
homepage: https://github.com/actions/toolkit/tree/master/packages/exec
|
homepage: https://github.com/actions/toolkit/tree/main/packages/exec
|
||||||
license: mit
|
license: mit
|
||||||
licenses:
|
licenses:
|
||||||
- sources: Auto-generated MIT license text
|
- sources: LICENSE.md
|
||||||
text: |
|
text: |-
|
||||||
MIT License
|
The MIT License (MIT)
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Copyright 2019 GitHub
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
notices: []
|
notices: []
|
||||||
|
2
.licenses/npm/@actions/http-client-1.0.8.dep.yml
generated
2
.licenses/npm/@actions/http-client-1.0.8.dep.yml
generated
@ -3,7 +3,7 @@ name: "@actions/http-client"
|
|||||||
version: 1.0.8
|
version: 1.0.8
|
||||||
type: npm
|
type: npm
|
||||||
summary: Actions Http Client
|
summary: Actions Http Client
|
||||||
homepage: https://github.com/actions/http-client#readme
|
homepage: https://github.com/actions/toolkit/tree/main/packages/http-client
|
||||||
license: mit
|
license: mit
|
||||||
licenses:
|
licenses:
|
||||||
- sources: LICENSE
|
- sources: LICENSE
|
||||||
|
@ -1,9 +1,9 @@
|
|||||||
---
|
---
|
||||||
name: "@actions/http-client"
|
name: "@actions/http-client"
|
||||||
version: 1.0.11
|
version: 2.0.1
|
||||||
type: npm
|
type: npm
|
||||||
summary: Actions Http Client
|
summary: Actions Http Client
|
||||||
homepage: https://github.com/actions/http-client#readme
|
homepage: https://github.com/actions/toolkit/tree/main/packages/http-client
|
||||||
license: mit
|
license: mit
|
||||||
licenses:
|
licenses:
|
||||||
- sources: LICENSE
|
- sources: LICENSE
|
30
.licenses/npm/@actions/io.dep.yml
generated
30
.licenses/npm/@actions/io.dep.yml
generated
@ -1,30 +1,20 @@
|
|||||||
---
|
---
|
||||||
name: "@actions/io"
|
name: "@actions/io"
|
||||||
version: 1.0.2
|
version: 1.1.2
|
||||||
type: npm
|
type: npm
|
||||||
summary: Actions io lib
|
summary: Actions io lib
|
||||||
homepage: https://github.com/actions/toolkit/tree/master/packages/io
|
homepage: https://github.com/actions/toolkit/tree/main/packages/io
|
||||||
license: mit
|
license: mit
|
||||||
licenses:
|
licenses:
|
||||||
- sources: Auto-generated MIT license text
|
- sources: LICENSE.md
|
||||||
text: |
|
text: |-
|
||||||
MIT License
|
The MIT License (MIT)
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Copyright 2019 GitHub
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
notices: []
|
notices: []
|
||||||
|
20
.licenses/npm/uuid.dep.yml
generated
Normal file
20
.licenses/npm/uuid.dep.yml
generated
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
name: uuid
|
||||||
|
version: 8.3.2
|
||||||
|
type: npm
|
||||||
|
summary: RFC4122 (v1, v4, and v5) UUIDs
|
||||||
|
homepage:
|
||||||
|
license: mit
|
||||||
|
licenses:
|
||||||
|
- sources: LICENSE.md
|
||||||
|
text: |
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2010-2020 Robert Kieffer and other contributors
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
notices: []
|
@ -6,7 +6,9 @@ branding:
|
|||||||
color: green
|
color: green
|
||||||
inputs:
|
inputs:
|
||||||
dotnet-version:
|
dotnet-version:
|
||||||
description: 'Optional SDK version(s) to use. If not provided, will install global.json version when available. Examples: 2.2.104, 3.1, 3.1.x'
|
description: 'Optional SDK version(s) to use. If not provided, will install global.json version when available. Examples: 2.2.104, 3.1, 3.1.x, 3.x'
|
||||||
|
dotnet-quality:
|
||||||
|
description: 'Optional quality of the build. The possible values are: daily, signed, validated, preview, ga.'
|
||||||
global-json-file:
|
global-json-file:
|
||||||
description: 'Optional global.json location, if your global.json isn''t located in the root of the repo.'
|
description: 'Optional global.json location, if your global.json isn''t located in the root of the repo.'
|
||||||
source-url:
|
source-url:
|
||||||
@ -15,10 +17,6 @@ inputs:
|
|||||||
description: 'Optional OWNER for using packages from GitHub Package Registry organizations/users other than the current repository''s owner. Only used if a GPR URL is also provided in source-url'
|
description: 'Optional OWNER for using packages from GitHub Package Registry organizations/users other than the current repository''s owner. Only used if a GPR URL is also provided in source-url'
|
||||||
config-file:
|
config-file:
|
||||||
description: 'Optional NuGet.config location, if your NuGet.config isn''t located in the root of the repo.'
|
description: 'Optional NuGet.config location, if your NuGet.config isn''t located in the root of the repo.'
|
||||||
include-prerelease:
|
|
||||||
description: 'Whether prerelease versions should be matched with non-exact versions (for example 5.0.0-preview.6 being matched by 5, 5.0, 5.x or 5.0.x). Defaults to false if not provided.'
|
|
||||||
required: False
|
|
||||||
default: 'false'
|
|
||||||
runs:
|
runs:
|
||||||
using: 'node16'
|
using: 'node16'
|
||||||
main: 'dist/index.js'
|
main: 'dist/index.js'
|
||||||
|
2730
dist/index.js
vendored
2730
dist/index.js
vendored
File diff suppressed because it is too large
Load Diff
310
package-lock.json
generated
310
package-lock.json
generated
@ -1,15 +1,15 @@
|
|||||||
{
|
{
|
||||||
"name": "setup-dotnet",
|
"name": "setup-dotnet",
|
||||||
"version": "1.0.0",
|
"version": "2.1.0",
|
||||||
"lockfileVersion": 2,
|
"lockfileVersion": 2,
|
||||||
"requires": true,
|
"requires": true,
|
||||||
"packages": {
|
"packages": {
|
||||||
"": {
|
"": {
|
||||||
"name": "setup-dotnet",
|
"name": "setup-dotnet",
|
||||||
"version": "1.0.0",
|
"version": "2.1.0",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.6.0",
|
"@actions/core": "^1.9.1",
|
||||||
"@actions/exec": "^1.0.4",
|
"@actions/exec": "^1.0.4",
|
||||||
"@actions/github": "^1.1.0",
|
"@actions/github": "^1.1.0",
|
||||||
"@actions/http-client": "^1.0.8",
|
"@actions/http-client": "^1.0.8",
|
||||||
@ -33,25 +33,26 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@actions/core": {
|
"node_modules/@actions/core": {
|
||||||
"version": "1.6.0",
|
"version": "1.9.1",
|
||||||
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.9.1.tgz",
|
||||||
"integrity": "sha512-NB1UAZomZlCV/LmJqkLhNTqtKfFXJZAUPcfl/zqG7EfsQdeUJtaWO98SGbuQ3pydJ3fHl2CvI/51OKYlCYYcaw==",
|
"integrity": "sha512-5ad+U2YGrmmiw6du20AQW5XuWo7UKN2052FjSV7MX+Wfjf8sCqcsZe62NfgHys4QI4/Y+vQvLKYL8jWtA1ZBTA==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/http-client": "^1.0.11"
|
"@actions/http-client": "^2.0.1",
|
||||||
|
"uuid": "^8.3.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@actions/core/node_modules/@actions/http-client": {
|
"node_modules/@actions/core/node_modules/@actions/http-client": {
|
||||||
"version": "1.0.11",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.11.tgz",
|
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz",
|
||||||
"integrity": "sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==",
|
"integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"tunnel": "0.0.6"
|
"tunnel": "^0.0.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@actions/exec": {
|
"node_modules/@actions/exec": {
|
||||||
"version": "1.0.4",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz",
|
||||||
"integrity": "sha512-4DPChWow9yc9W3WqEbUj8Nr86xkpyE29ZzWjXucHItclLbEW6jr80Zx4nqv18QL6KK65+cifiQZXvnqgTV6oHw==",
|
"integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/io": "^1.0.1"
|
"@actions/io": "^1.0.1"
|
||||||
}
|
}
|
||||||
@ -73,18 +74,10 @@
|
|||||||
"tunnel": "0.0.6"
|
"tunnel": "0.0.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@actions/http-client/node_modules/tunnel": {
|
|
||||||
"version": "0.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
|
|
||||||
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.6.11 <=0.7.0 || >=0.7.3"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@actions/io": {
|
"node_modules/@actions/io": {
|
||||||
"version": "1.0.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/@actions/io/-/io-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.2.tgz",
|
||||||
"integrity": "sha512-J8KuFqVPr3p6U8W93DOXlXW6zFvrQAJANdS+vw0YhusLIq+bszW8zmK2Fh1C2kDPX8FMvwIl1OUcFgvJoXLbAg=="
|
"integrity": "sha512-d+RwPlMp+2qmBfeLYPLXuSRykDIFEwdTA0MMxzS9kh4kvP1ftrc/9fzy6pX6qAjthdXruHQ6/6kjT/DNo5ALuw=="
|
||||||
},
|
},
|
||||||
"node_modules/@babel/code-frame": {
|
"node_modules/@babel/code-frame": {
|
||||||
"version": "7.15.8",
|
"version": "7.15.8",
|
||||||
@ -928,15 +921,6 @@
|
|||||||
"node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
|
"node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@jest/types/node_modules/@types/yargs": {
|
|
||||||
"version": "16.0.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz",
|
|
||||||
"integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@types/yargs-parser": "*"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@octokit/endpoint": {
|
"node_modules/@octokit/endpoint": {
|
||||||
"version": "5.3.5",
|
"version": "5.3.5",
|
||||||
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-5.3.5.tgz",
|
"resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-5.3.5.tgz",
|
||||||
@ -1176,66 +1160,6 @@
|
|||||||
"pretty-format": "^27.0.0"
|
"pretty-format": "^27.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/@types/jest/node_modules/ansi-styles": {
|
|
||||||
"version": "5.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
|
|
||||||
"integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
|
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/chalk/ansi-styles?sponsor=1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@types/jest/node_modules/diff-sequences": {
|
|
||||||
"version": "27.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz",
|
|
||||||
"integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==",
|
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
|
||||||
"node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@types/jest/node_modules/jest-diff": {
|
|
||||||
"version": "27.2.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.2.5.tgz",
|
|
||||||
"integrity": "sha512-7gfwwyYkeslOOVQY4tVq5TaQa92mWfC9COsVYMNVYyJTOYAqbIkoD3twi5A+h+tAPtAelRxkqY6/xu+jwTr0dA==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"chalk": "^4.0.0",
|
|
||||||
"diff-sequences": "^27.0.6",
|
|
||||||
"jest-get-type": "^27.0.6",
|
|
||||||
"pretty-format": "^27.2.5"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@types/jest/node_modules/jest-get-type": {
|
|
||||||
"version": "27.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz",
|
|
||||||
"integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==",
|
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
|
||||||
"node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@types/jest/node_modules/pretty-format": {
|
|
||||||
"version": "27.2.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.5.tgz",
|
|
||||||
"integrity": "sha512-+nYn2z9GgicO9JiqmY25Xtq8SYfZ/5VCpEU3pppHHNAhd1y+ZXxmNPd1evmNcAd6Hz4iBV2kf0UpGth5A/VJ7g==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"@jest/types": "^27.2.5",
|
|
||||||
"ansi-regex": "^5.0.1",
|
|
||||||
"ansi-styles": "^5.0.0",
|
|
||||||
"react-is": "^17.0.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/@types/node": {
|
"node_modules/@types/node": {
|
||||||
"version": "16.11.25",
|
"version": "16.11.25",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.25.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.11.25.tgz",
|
||||||
@ -1623,14 +1547,20 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/caniuse-lite": {
|
"node_modules/caniuse-lite": {
|
||||||
"version": "1.0.30001265",
|
"version": "1.0.30001382",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001382.tgz",
|
||||||
"integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==",
|
"integrity": "sha512-2rtJwDmSZ716Pxm1wCtbPvHtbDWAreTPxXbkc5RkKglow3Ig/4GNGazDI9/BVnXbG/wnv6r3B5FEbkfg9OcTGg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"funding": {
|
"funding": [
|
||||||
"type": "opencollective",
|
{
|
||||||
"url": "https://opencollective.com/browserslist"
|
"type": "opencollective",
|
||||||
}
|
"url": "https://opencollective.com/browserslist"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "tidelift",
|
||||||
|
"url": "https://tidelift.com/funding/github/npm/caniuse-lite"
|
||||||
|
}
|
||||||
|
]
|
||||||
},
|
},
|
||||||
"node_modules/chalk": {
|
"node_modules/chalk": {
|
||||||
"version": "4.1.0",
|
"version": "4.1.0",
|
||||||
@ -3285,36 +3215,6 @@
|
|||||||
"node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
|
"node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/jest-util/node_modules/ci-info": {
|
|
||||||
"version": "3.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz",
|
|
||||||
"integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"node_modules/jest-util/node_modules/is-ci": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==",
|
|
||||||
"dev": true,
|
|
||||||
"dependencies": {
|
|
||||||
"ci-info": "^3.1.1"
|
|
||||||
},
|
|
||||||
"bin": {
|
|
||||||
"is-ci": "bin.js"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/jest-util/node_modules/picomatch": {
|
|
||||||
"version": "2.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
|
|
||||||
"integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
|
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">=8.6"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/jonschlinkert"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/jest-validate": {
|
"node_modules/jest-validate": {
|
||||||
"version": "27.2.5",
|
"version": "27.2.5",
|
||||||
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.5.tgz",
|
"resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-27.2.5.tgz",
|
||||||
@ -4487,15 +4387,6 @@
|
|||||||
"node": ">=10"
|
"node": ">=10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/ts-jest/node_modules/yargs-parser": {
|
|
||||||
"version": "20.2.9",
|
|
||||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
|
|
||||||
"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
|
|
||||||
"dev": true,
|
|
||||||
"engines": {
|
|
||||||
"node": ">=10"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/tunnel": {
|
"node_modules/tunnel": {
|
||||||
"version": "0.0.6",
|
"version": "0.0.6",
|
||||||
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
|
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
|
||||||
@ -4576,6 +4467,14 @@
|
|||||||
"node": ">= 4.0.0"
|
"node": ">= 4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/uuid": {
|
||||||
|
"version": "8.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
|
||||||
|
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
|
||||||
|
"bin": {
|
||||||
|
"uuid": "dist/bin/uuid"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/v8-to-istanbul": {
|
"node_modules/v8-to-istanbul": {
|
||||||
"version": "8.1.0",
|
"version": "8.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz",
|
||||||
@ -4834,27 +4733,28 @@
|
|||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": {
|
"@actions/core": {
|
||||||
"version": "1.6.0",
|
"version": "1.9.1",
|
||||||
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.6.0.tgz",
|
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.9.1.tgz",
|
||||||
"integrity": "sha512-NB1UAZomZlCV/LmJqkLhNTqtKfFXJZAUPcfl/zqG7EfsQdeUJtaWO98SGbuQ3pydJ3fHl2CvI/51OKYlCYYcaw==",
|
"integrity": "sha512-5ad+U2YGrmmiw6du20AQW5XuWo7UKN2052FjSV7MX+Wfjf8sCqcsZe62NfgHys4QI4/Y+vQvLKYL8jWtA1ZBTA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@actions/http-client": "^1.0.11"
|
"@actions/http-client": "^2.0.1",
|
||||||
|
"uuid": "^8.3.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/http-client": {
|
"@actions/http-client": {
|
||||||
"version": "1.0.11",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.11.tgz",
|
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.0.1.tgz",
|
||||||
"integrity": "sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==",
|
"integrity": "sha512-PIXiMVtz6VvyaRsGY268qvj57hXQEpsYogYOu2nrQhlf+XCGmZstmuZBbAybUl1nQGnvS1k1eEsQ69ZoD7xlSw==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"tunnel": "0.0.6"
|
"tunnel": "^0.0.6"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@actions/exec": {
|
"@actions/exec": {
|
||||||
"version": "1.0.4",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz",
|
||||||
"integrity": "sha512-4DPChWow9yc9W3WqEbUj8Nr86xkpyE29ZzWjXucHItclLbEW6jr80Zx4nqv18QL6KK65+cifiQZXvnqgTV6oHw==",
|
"integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"@actions/io": "^1.0.1"
|
"@actions/io": "^1.0.1"
|
||||||
}
|
}
|
||||||
@ -4874,19 +4774,12 @@
|
|||||||
"integrity": "sha512-G4JjJ6f9Hb3Zvejj+ewLLKLf99ZC+9v+yCxoYf9vSyH+WkzPLB2LuUtRMGNkooMqdugGBFStIKXOuvH1W+EctA==",
|
"integrity": "sha512-G4JjJ6f9Hb3Zvejj+ewLLKLf99ZC+9v+yCxoYf9vSyH+WkzPLB2LuUtRMGNkooMqdugGBFStIKXOuvH1W+EctA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"tunnel": "0.0.6"
|
"tunnel": "0.0.6"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"tunnel": {
|
|
||||||
"version": "0.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
|
|
||||||
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg=="
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@actions/io": {
|
"@actions/io": {
|
||||||
"version": "1.0.2",
|
"version": "1.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/@actions/io/-/io-1.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.2.tgz",
|
||||||
"integrity": "sha512-J8KuFqVPr3p6U8W93DOXlXW6zFvrQAJANdS+vw0YhusLIq+bszW8zmK2Fh1C2kDPX8FMvwIl1OUcFgvJoXLbAg=="
|
"integrity": "sha512-d+RwPlMp+2qmBfeLYPLXuSRykDIFEwdTA0MMxzS9kh4kvP1ftrc/9fzy6pX6qAjthdXruHQ6/6kjT/DNo5ALuw=="
|
||||||
},
|
},
|
||||||
"@babel/code-frame": {
|
"@babel/code-frame": {
|
||||||
"version": "7.15.8",
|
"version": "7.15.8",
|
||||||
@ -5534,17 +5427,6 @@
|
|||||||
"@types/node": "*",
|
"@types/node": "*",
|
||||||
"@types/yargs": "^16.0.0",
|
"@types/yargs": "^16.0.0",
|
||||||
"chalk": "^4.0.0"
|
"chalk": "^4.0.0"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"@types/yargs": {
|
|
||||||
"version": "16.0.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.4.tgz",
|
|
||||||
"integrity": "sha512-T8Yc9wt/5LbJyCaLiHPReJa0kApcIgJ7Bn735GjItUfh08Z1pJvu8QZqb9s+mMvKV6WUQRV7K2R46YbjMXTTJw==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"@types/yargs-parser": "*"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@octokit/endpoint": {
|
"@octokit/endpoint": {
|
||||||
@ -5775,50 +5657,6 @@
|
|||||||
"requires": {
|
"requires": {
|
||||||
"jest-diff": "^27.0.0",
|
"jest-diff": "^27.0.0",
|
||||||
"pretty-format": "^27.0.0"
|
"pretty-format": "^27.0.0"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"ansi-styles": {
|
|
||||||
"version": "5.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz",
|
|
||||||
"integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"diff-sequences": {
|
|
||||||
"version": "27.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.0.6.tgz",
|
|
||||||
"integrity": "sha512-ag6wfpBFyNXZ0p8pcuIDS//D8H062ZQJ3fzYxjpmeKjnz8W4pekL3AI8VohmyZmsWW2PWaHgjsmqR6L13101VQ==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"jest-diff": {
|
|
||||||
"version": "27.2.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.2.5.tgz",
|
|
||||||
"integrity": "sha512-7gfwwyYkeslOOVQY4tVq5TaQa92mWfC9COsVYMNVYyJTOYAqbIkoD3twi5A+h+tAPtAelRxkqY6/xu+jwTr0dA==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"chalk": "^4.0.0",
|
|
||||||
"diff-sequences": "^27.0.6",
|
|
||||||
"jest-get-type": "^27.0.6",
|
|
||||||
"pretty-format": "^27.2.5"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"jest-get-type": {
|
|
||||||
"version": "27.0.6",
|
|
||||||
"resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.0.6.tgz",
|
|
||||||
"integrity": "sha512-XTkK5exIeUbbveehcSR8w0bhH+c0yloW/Wpl+9vZrjzztCPWrxhHwkIFpZzCt71oRBsgxmuUfxEqOYoZI2macg==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"pretty-format": {
|
|
||||||
"version": "27.2.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.2.5.tgz",
|
|
||||||
"integrity": "sha512-+nYn2z9GgicO9JiqmY25Xtq8SYfZ/5VCpEU3pppHHNAhd1y+ZXxmNPd1evmNcAd6Hz4iBV2kf0UpGth5A/VJ7g==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"@jest/types": "^27.2.5",
|
|
||||||
"ansi-regex": "^5.0.1",
|
|
||||||
"ansi-styles": "^5.0.0",
|
|
||||||
"react-is": "^17.0.1"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"@types/node": {
|
"@types/node": {
|
||||||
@ -6128,9 +5966,9 @@
|
|||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"caniuse-lite": {
|
"caniuse-lite": {
|
||||||
"version": "1.0.30001265",
|
"version": "1.0.30001382",
|
||||||
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001265.tgz",
|
"resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001382.tgz",
|
||||||
"integrity": "sha512-YzBnspggWV5hep1m9Z6sZVLOt7vrju8xWooFAgN6BA5qvy98qPAPb7vNUzypFaoh2pb3vlfzbDO8tB57UPGbtw==",
|
"integrity": "sha512-2rtJwDmSZ716Pxm1wCtbPvHtbDWAreTPxXbkc5RkKglow3Ig/4GNGazDI9/BVnXbG/wnv6r3B5FEbkfg9OcTGg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
"chalk": {
|
"chalk": {
|
||||||
@ -7410,29 +7248,6 @@
|
|||||||
"graceful-fs": "^4.2.4",
|
"graceful-fs": "^4.2.4",
|
||||||
"is-ci": "^3.0.0",
|
"is-ci": "^3.0.0",
|
||||||
"picomatch": "^2.2.3"
|
"picomatch": "^2.2.3"
|
||||||
},
|
|
||||||
"dependencies": {
|
|
||||||
"ci-info": {
|
|
||||||
"version": "3.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.2.0.tgz",
|
|
||||||
"integrity": "sha512-dVqRX7fLUm8J6FgHJ418XuIgDLZDkYcDFTeL6TA2gt5WlIZUQrrH6EZrNClwT/H0FateUsZkGIOPRrLbP+PR9A==",
|
|
||||||
"dev": true
|
|
||||||
},
|
|
||||||
"is-ci": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-kDXyttuLeslKAHYL/K28F2YkM3x5jvFPEw3yXbRptXydjD9rpLEz+C5K5iutY9ZiUu6AP41JdvRQwF4Iqs4ZCQ==",
|
|
||||||
"dev": true,
|
|
||||||
"requires": {
|
|
||||||
"ci-info": "^3.1.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"picomatch": {
|
|
||||||
"version": "2.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz",
|
|
||||||
"integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==",
|
|
||||||
"dev": true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"jest-validate": {
|
"jest-validate": {
|
||||||
@ -8287,12 +8102,6 @@
|
|||||||
"requires": {
|
"requires": {
|
||||||
"lru-cache": "^6.0.0"
|
"lru-cache": "^6.0.0"
|
||||||
}
|
}
|
||||||
},
|
|
||||||
"yargs-parser": {
|
|
||||||
"version": "20.2.9",
|
|
||||||
"resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz",
|
|
||||||
"integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==",
|
|
||||||
"dev": true
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
@ -8351,6 +8160,11 @@
|
|||||||
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
|
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
|
||||||
"dev": true
|
"dev": true
|
||||||
},
|
},
|
||||||
|
"uuid": {
|
||||||
|
"version": "8.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
|
||||||
|
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg=="
|
||||||
|
},
|
||||||
"v8-to-istanbul": {
|
"v8-to-istanbul": {
|
||||||
"version": "8.1.0",
|
"version": "8.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-8.1.0.tgz",
|
||||||
|
@ -9,7 +9,7 @@
|
|||||||
"format": "prettier --write **/*.ts",
|
"format": "prettier --write **/*.ts",
|
||||||
"format-check": "prettier --check **/*.ts",
|
"format-check": "prettier --check **/*.ts",
|
||||||
"prepare": "husky install",
|
"prepare": "husky install",
|
||||||
"test": "jest",
|
"test": "jest --coverage --config ./jest.config.js",
|
||||||
"update-installers": "nwget https://dot.net/v1/dotnet-install.ps1 -O externals/install-dotnet.ps1 && nwget https://dot.net/v1/dotnet-install.sh -O externals/install-dotnet.sh"
|
"update-installers": "nwget https://dot.net/v1/dotnet-install.ps1 -O externals/install-dotnet.ps1 && nwget https://dot.net/v1/dotnet-install.sh -O externals/install-dotnet.sh"
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
@ -24,7 +24,7 @@
|
|||||||
"author": "GitHub",
|
"author": "GitHub",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@actions/core": "^1.6.0",
|
"@actions/core": "^1.9.1",
|
||||||
"@actions/exec": "^1.0.4",
|
"@actions/exec": "^1.0.4",
|
||||||
"@actions/github": "^1.1.0",
|
"@actions/github": "^1.1.0",
|
||||||
"@actions/http-client": "^1.0.8",
|
"@actions/http-client": "^1.0.8",
|
||||||
|
@ -4,7 +4,6 @@ import * as core from '@actions/core';
|
|||||||
import * as github from '@actions/github';
|
import * as github from '@actions/github';
|
||||||
import * as xmlbuilder from 'xmlbuilder';
|
import * as xmlbuilder from 'xmlbuilder';
|
||||||
import * as xmlParser from 'fast-xml-parser';
|
import * as xmlParser from 'fast-xml-parser';
|
||||||
import {ProcessEnvOptions} from 'child_process';
|
|
||||||
|
|
||||||
export function configAuthentication(
|
export function configAuthentication(
|
||||||
feedUrl: string,
|
feedUrl: string,
|
||||||
@ -47,7 +46,7 @@ function writeFeedToFile(
|
|||||||
existingFileLocation: string,
|
existingFileLocation: string,
|
||||||
tempFileLocation: string
|
tempFileLocation: string
|
||||||
) {
|
) {
|
||||||
console.log(
|
core.info(
|
||||||
`dotnet-auth: Finding any source references in ${existingFileLocation}, writing a new temporary configuration file with credentials to ${tempFileLocation}`
|
`dotnet-auth: Finding any source references in ${existingFileLocation}, writing a new temporary configuration file with credentials to ${tempFileLocation}`
|
||||||
);
|
);
|
||||||
let xml: xmlbuilder.XMLElement;
|
let xml: xmlbuilder.XMLElement;
|
||||||
@ -58,7 +57,7 @@ function writeFeedToFile(
|
|||||||
owner = github.context.repo.owner;
|
owner = github.context.repo.owner;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!process.env.NUGET_AUTH_TOKEN || process.env.NUGET_AUTH_TOKEN == '') {
|
if (!process.env.NUGET_AUTH_TOKEN) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
'The NUGET_AUTH_TOKEN environment variable was not provided. In this step, add the following: \r\nenv:\r\n NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}'
|
'The NUGET_AUTH_TOKEN environment variable was not provided. In this step, add the following: \r\nenv:\r\n NUGET_AUTH_TOKEN: ${{secrets.GITHUB_TOKEN}}'
|
||||||
);
|
);
|
||||||
@ -67,22 +66,22 @@ function writeFeedToFile(
|
|||||||
if (fs.existsSync(existingFileLocation)) {
|
if (fs.existsSync(existingFileLocation)) {
|
||||||
// get key from existing NuGet.config so NuGet/dotnet can match credentials
|
// get key from existing NuGet.config so NuGet/dotnet can match credentials
|
||||||
const curContents: string = fs.readFileSync(existingFileLocation, 'utf8');
|
const curContents: string = fs.readFileSync(existingFileLocation, 'utf8');
|
||||||
var json = xmlParser.parse(curContents, {ignoreAttributes: false});
|
const json = xmlParser.parse(curContents, {ignoreAttributes: false});
|
||||||
|
|
||||||
if (typeof json.configuration == 'undefined') {
|
if (typeof json.configuration === 'undefined') {
|
||||||
throw new Error(`The provided NuGet.config seems invalid.`);
|
throw new Error(`The provided NuGet.config seems invalid.`);
|
||||||
}
|
}
|
||||||
if (typeof json.configuration.packageSources != 'undefined') {
|
if (typeof json.configuration.packageSources != 'undefined') {
|
||||||
if (typeof json.configuration.packageSources.add != 'undefined') {
|
if (typeof json.configuration.packageSources.add != 'undefined') {
|
||||||
// file has at least one <add>
|
// file has at least one <add>
|
||||||
if (typeof json.configuration.packageSources.add[0] == 'undefined') {
|
if (typeof json.configuration.packageSources.add[0] === 'undefined') {
|
||||||
// file has only one <add>
|
// file has only one <add>
|
||||||
if (
|
if (
|
||||||
json.configuration.packageSources.add['@_value']
|
json.configuration.packageSources.add['@_value']
|
||||||
.toLowerCase()
|
.toLowerCase()
|
||||||
.includes(feedUrl.toLowerCase())
|
.includes(feedUrl.toLowerCase())
|
||||||
) {
|
) {
|
||||||
let key = json.configuration.packageSources.add['@_key'];
|
const key = json.configuration.packageSources.add['@_key'];
|
||||||
sourceKeys.push(key);
|
sourceKeys.push(key);
|
||||||
core.debug(`Found a URL with key ${key}`);
|
core.debug(`Found a URL with key ${key}`);
|
||||||
}
|
}
|
||||||
@ -97,7 +96,7 @@ function writeFeedToFile(
|
|||||||
const value = source['@_value'];
|
const value = source['@_value'];
|
||||||
core.debug(`source '${value}'`);
|
core.debug(`source '${value}'`);
|
||||||
if (value.toLowerCase().includes(feedUrl.toLowerCase())) {
|
if (value.toLowerCase().includes(feedUrl.toLowerCase())) {
|
||||||
let key = source['@_key'];
|
const key = source['@_key'];
|
||||||
sourceKeys.push(key);
|
sourceKeys.push(key);
|
||||||
core.debug(`Found a URL with key ${key}`);
|
core.debug(`Found a URL with key ${key}`);
|
||||||
}
|
}
|
||||||
@ -114,7 +113,7 @@ function writeFeedToFile(
|
|||||||
.up()
|
.up()
|
||||||
.up();
|
.up();
|
||||||
|
|
||||||
if (sourceKeys.length == 0) {
|
if (!sourceKeys.length) {
|
||||||
let keystring = 'Source';
|
let keystring = 'Source';
|
||||||
xml = xml
|
xml = xml
|
||||||
.ele('packageSources')
|
.ele('packageSources')
|
||||||
@ -150,6 +149,6 @@ function writeFeedToFile(
|
|||||||
// ? '%NUGET_AUTH_TOKEN%'
|
// ? '%NUGET_AUTH_TOKEN%'
|
||||||
// : '$NUGET_AUTH_TOKEN'
|
// : '$NUGET_AUTH_TOKEN'
|
||||||
|
|
||||||
var output = xml.end({pretty: true});
|
const output = xml.end({pretty: true});
|
||||||
fs.writeFileSync(tempFileLocation, output);
|
fs.writeFileSync(tempFileLocation, output);
|
||||||
}
|
}
|
||||||
|
467
src/installer.ts
467
src/installer.ts
@ -2,187 +2,159 @@
|
|||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
import * as exec from '@actions/exec';
|
import * as exec from '@actions/exec';
|
||||||
import * as io from '@actions/io';
|
import * as io from '@actions/io';
|
||||||
import hc = require('@actions/http-client');
|
import * as hc from '@actions/http-client';
|
||||||
import {chmodSync} from 'fs';
|
import {chmodSync} from 'fs';
|
||||||
import * as path from 'path';
|
import path from 'path';
|
||||||
import {ExecOptions} from '@actions/exec/lib/interfaces';
|
import semver from 'semver';
|
||||||
import * as semver from 'semver';
|
import {IS_LINUX, IS_WINDOWS, logWarning} from './utils';
|
||||||
|
|
||||||
const IS_WINDOWS = process.platform === 'win32';
|
export interface IDotNetVersion {
|
||||||
|
type: string;
|
||||||
|
value: string;
|
||||||
|
qualityFlag: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
export class DotnetQualityValidator {
|
||||||
* Represents the inputted version information
|
private quality: string;
|
||||||
*/
|
private qualityOptions = ['daily', 'signed', 'validated', 'preview', 'ga'];
|
||||||
export class DotNetVersionInfo {
|
|
||||||
public inputVersion: string;
|
|
||||||
private fullversion: string;
|
|
||||||
private isExactVersionSet: boolean = false;
|
|
||||||
|
|
||||||
constructor(version: string) {
|
constructor(quality: string) {
|
||||||
this.inputVersion = version;
|
this.quality = quality;
|
||||||
|
}
|
||||||
|
|
||||||
// Check for exact match
|
public validateQuality() {
|
||||||
if (semver.valid(semver.clean(version) || '') != null) {
|
if (this.quality && !this.qualityOptions.includes(this.quality)) {
|
||||||
this.fullversion = semver.clean(version) as string;
|
throw new Error(
|
||||||
this.isExactVersionSet = true;
|
`${this.quality} is not a supported value for 'dotnet-quality' option. Supported values are: daily, signed, validated, preview, ga.`
|
||||||
|
);
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
return this.quality;
|
||||||
const parts: string[] = version.split('.');
|
|
||||||
|
|
||||||
if (parts.length < 2 || parts.length > 3) this.throwInvalidVersionFormat();
|
|
||||||
|
|
||||||
if (parts.length == 3 && parts[2] !== 'x' && parts[2] !== '*') {
|
|
||||||
this.throwInvalidVersionFormat();
|
|
||||||
}
|
|
||||||
|
|
||||||
const major = this.getVersionNumberOrThrow(parts[0]);
|
|
||||||
const minor = ['x', '*'].includes(parts[1])
|
|
||||||
? parts[1]
|
|
||||||
: this.getVersionNumberOrThrow(parts[1]);
|
|
||||||
|
|
||||||
this.fullversion = major + '.' + minor;
|
|
||||||
}
|
|
||||||
|
|
||||||
private getVersionNumberOrThrow(input: string): number {
|
|
||||||
try {
|
|
||||||
if (!input || input.trim() === '') this.throwInvalidVersionFormat();
|
|
||||||
|
|
||||||
let number = Number(input);
|
|
||||||
|
|
||||||
if (Number.isNaN(number) || number < 0) this.throwInvalidVersionFormat();
|
|
||||||
|
|
||||||
return number;
|
|
||||||
} catch {
|
|
||||||
this.throwInvalidVersionFormat();
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private throwInvalidVersionFormat() {
|
|
||||||
throw new Error(
|
|
||||||
'Invalid version format! Supported: 1.2.3, 1.2, 1.2.x, 1.2.*'
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* If true exacatly one version should be resolved
|
|
||||||
*/
|
|
||||||
public isExactVersion(): boolean {
|
|
||||||
return this.isExactVersionSet;
|
|
||||||
}
|
|
||||||
|
|
||||||
public version(): string {
|
|
||||||
return this.fullversion;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export class DotnetCoreInstaller {
|
export class DotnetVersionResolver {
|
||||||
constructor(version: string, includePrerelease: boolean = false) {
|
private inputVersion: string;
|
||||||
this.version = version;
|
private resolvedArgument: IDotNetVersion;
|
||||||
this.includePrerelease = includePrerelease;
|
|
||||||
|
constructor(version: string) {
|
||||||
|
this.inputVersion = version.trim();
|
||||||
|
this.resolvedArgument = {type: '', value: '', qualityFlag: false};
|
||||||
}
|
}
|
||||||
|
|
||||||
public async installDotnet() {
|
private async resolveVersionInput(): Promise<void> {
|
||||||
let output = '';
|
if (
|
||||||
let resultCode = 0;
|
!semver.valid(this.inputVersion) &&
|
||||||
|
!semver.validRange(this.inputVersion)
|
||||||
|
) {
|
||||||
|
throw new Error(
|
||||||
|
`'dotnet-version' was supplied in invalid format: ${this.inputVersion}! Supported syntax: A.B.C, A.B, A.B.x, A, A.x`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
if (semver.valid(this.inputVersion)) {
|
||||||
|
this.resolvedArgument.type = 'version';
|
||||||
|
this.resolvedArgument.value = this.inputVersion;
|
||||||
|
} else {
|
||||||
|
const [major, minor] = this.inputVersion.split('.');
|
||||||
|
|
||||||
let calculatedVersion = await this.resolveVersion(
|
if (this.testTag(major)) {
|
||||||
new DotNetVersionInfo(this.version)
|
this.resolvedArgument.type = 'channel';
|
||||||
);
|
if (this.testTag(minor)) {
|
||||||
|
this.resolvedArgument.value = `${major}.${minor}`;
|
||||||
var envVariables: {[key: string]: string} = {};
|
} else {
|
||||||
for (let key in process.env) {
|
const httpClient = new hc.HttpClient('actions/setup-dotnet', [], {
|
||||||
if (process.env[key]) {
|
allowRetries: true,
|
||||||
let value: any = process.env[key];
|
maxRetries: 3
|
||||||
envVariables[key] = value;
|
});
|
||||||
|
this.resolvedArgument.value = await this.getReleasesJsonUrl(
|
||||||
|
httpClient,
|
||||||
|
[major, minor]
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
this.resolvedArgument.qualityFlag = +major >= 6 ? true : false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private testTag(versionTag): Boolean {
|
||||||
|
return /^\d+$/.test(versionTag);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async createDotNetVersion(): Promise<{
|
||||||
|
type: string;
|
||||||
|
value: string;
|
||||||
|
qualityFlag: boolean;
|
||||||
|
}> {
|
||||||
|
await this.resolveVersionInput();
|
||||||
|
if (!this.resolvedArgument.type) {
|
||||||
|
return this.resolvedArgument;
|
||||||
}
|
}
|
||||||
if (IS_WINDOWS) {
|
if (IS_WINDOWS) {
|
||||||
let escapedScript = path
|
this.resolvedArgument.type =
|
||||||
.join(__dirname, '..', 'externals', 'install-dotnet.ps1')
|
this.resolvedArgument.type === 'channel' ? '-Channel' : '-Version';
|
||||||
.replace(/'/g, "''");
|
|
||||||
let command = `& '${escapedScript}'`;
|
|
||||||
if (calculatedVersion) {
|
|
||||||
command += ` -Version ${calculatedVersion}`;
|
|
||||||
}
|
|
||||||
if (process.env['https_proxy'] != null) {
|
|
||||||
command += ` -ProxyAddress ${process.env['https_proxy']}`;
|
|
||||||
}
|
|
||||||
// This is not currently an option
|
|
||||||
if (process.env['no_proxy'] != null) {
|
|
||||||
command += ` -ProxyBypassList ${process.env['no_proxy']}`;
|
|
||||||
}
|
|
||||||
|
|
||||||
// process.env must be explicitly passed in for DOTNET_INSTALL_DIR to be used
|
|
||||||
const powershellPath = await io.which('powershell', true);
|
|
||||||
|
|
||||||
var options: ExecOptions = {
|
|
||||||
listeners: {
|
|
||||||
stdout: (data: Buffer) => {
|
|
||||||
output += data.toString();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
env: envVariables
|
|
||||||
};
|
|
||||||
|
|
||||||
resultCode = await exec.exec(
|
|
||||||
`"${powershellPath}"`,
|
|
||||||
[
|
|
||||||
'-NoLogo',
|
|
||||||
'-Sta',
|
|
||||||
'-NoProfile',
|
|
||||||
'-NonInteractive',
|
|
||||||
'-ExecutionPolicy',
|
|
||||||
'Unrestricted',
|
|
||||||
'-Command',
|
|
||||||
command
|
|
||||||
],
|
|
||||||
options
|
|
||||||
);
|
|
||||||
} else {
|
} else {
|
||||||
let escapedScript = path
|
this.resolvedArgument.type =
|
||||||
.join(__dirname, '..', 'externals', 'install-dotnet.sh')
|
this.resolvedArgument.type === 'channel' ? '--channel' : '--version';
|
||||||
.replace(/'/g, "''");
|
|
||||||
chmodSync(escapedScript, '777');
|
|
||||||
|
|
||||||
const scriptPath = await io.which(escapedScript, true);
|
|
||||||
|
|
||||||
let scriptArguments: string[] = [];
|
|
||||||
if (calculatedVersion) {
|
|
||||||
scriptArguments.push('--version', calculatedVersion);
|
|
||||||
}
|
|
||||||
|
|
||||||
// process.env must be explicitly passed in for DOTNET_INSTALL_DIR to be used
|
|
||||||
resultCode = await exec.exec(`"${scriptPath}"`, scriptArguments, {
|
|
||||||
listeners: {
|
|
||||||
stdout: (data: Buffer) => {
|
|
||||||
output += data.toString();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
env: envVariables
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
if (resultCode != 0) {
|
|
||||||
throw new Error(`Failed to install dotnet ${resultCode}. ${output}`);
|
|
||||||
}
|
}
|
||||||
|
return this.resolvedArgument;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private async getReleasesJsonUrl(
|
||||||
|
httpClient: hc.HttpClient,
|
||||||
|
versionParts: string[]
|
||||||
|
): Promise<string> {
|
||||||
|
const response = await httpClient.getJson<any>(
|
||||||
|
DotnetVersionResolver.DotNetCoreIndexUrl
|
||||||
|
);
|
||||||
|
const result = response.result || {};
|
||||||
|
let releasesInfo: any[] = result['releases-index'];
|
||||||
|
|
||||||
|
releasesInfo = releasesInfo.filter((info: any) => {
|
||||||
|
const sdkParts: string[] = info['channel-version'].split('.');
|
||||||
|
return versionParts[0] == sdkParts[0];
|
||||||
|
});
|
||||||
|
|
||||||
|
if (releasesInfo.length === 0) {
|
||||||
|
throw new Error(
|
||||||
|
`Could not find info for version ${versionParts.join('.')} at ${
|
||||||
|
DotnetVersionResolver.DotNetCoreIndexUrl
|
||||||
|
}`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const releaseInfo = releasesInfo[0];
|
||||||
|
|
||||||
|
return releaseInfo['channel-version'];
|
||||||
|
}
|
||||||
|
|
||||||
|
static DotNetCoreIndexUrl: string =
|
||||||
|
'https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json';
|
||||||
|
}
|
||||||
|
|
||||||
|
export class DotnetCoreInstaller {
|
||||||
|
private version: string;
|
||||||
|
private quality: string;
|
||||||
|
private static readonly installationDirectoryWindows = path.join(
|
||||||
|
process.env['PROGRAMFILES'] + '',
|
||||||
|
'dotnet'
|
||||||
|
);
|
||||||
|
private static readonly installationDirectoryLinux = '/usr/share/dotnet';
|
||||||
|
|
||||||
static addToPath() {
|
static addToPath() {
|
||||||
if (process.env['DOTNET_INSTALL_DIR']) {
|
if (process.env['DOTNET_INSTALL_DIR']) {
|
||||||
core.addPath(process.env['DOTNET_INSTALL_DIR']);
|
core.addPath(process.env['DOTNET_INSTALL_DIR']);
|
||||||
core.exportVariable('DOTNET_ROOT', process.env['DOTNET_INSTALL_DIR']);
|
core.exportVariable('DOTNET_ROOT', process.env['DOTNET_INSTALL_DIR']);
|
||||||
} else {
|
} else {
|
||||||
if (IS_WINDOWS) {
|
if (IS_WINDOWS) {
|
||||||
// This is the default set in install-dotnet.ps1
|
core.addPath(DotnetCoreInstaller.installationDirectoryWindows);
|
||||||
core.addPath(
|
|
||||||
path.join(process.env['LocalAppData'] + '', 'Microsoft', 'dotnet')
|
|
||||||
);
|
|
||||||
core.exportVariable(
|
core.exportVariable(
|
||||||
'DOTNET_ROOT',
|
'DOTNET_ROOT',
|
||||||
path.join(process.env['LocalAppData'] + '', 'Microsoft', 'dotnet')
|
DotnetCoreInstaller.installationDirectoryWindows
|
||||||
|
);
|
||||||
|
} else if (IS_LINUX) {
|
||||||
|
core.addPath(DotnetCoreInstaller.installationDirectoryLinux);
|
||||||
|
core.exportVariable(
|
||||||
|
'DOTNET_ROOT',
|
||||||
|
DotnetCoreInstaller.installationDirectoryLinux
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
// This is the default set in install-dotnet.sh
|
// This is the default set in install-dotnet.sh
|
||||||
@ -193,111 +165,106 @@ export class DotnetCoreInstaller {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
console.log(process.env['PATH']);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// versionInfo - versionInfo of the SDK/Runtime
|
constructor(version: string, quality: string) {
|
||||||
async resolveVersion(versionInfo: DotNetVersionInfo): Promise<string> {
|
this.version = version;
|
||||||
if (versionInfo.isExactVersion()) {
|
this.quality = quality;
|
||||||
return versionInfo.version();
|
|
||||||
}
|
|
||||||
|
|
||||||
const httpClient = new hc.HttpClient('actions/setup-dotnet', [], {
|
|
||||||
allowRetries: true,
|
|
||||||
maxRetries: 3
|
|
||||||
});
|
|
||||||
|
|
||||||
const releasesJsonUrl: string = await this.getReleasesJsonUrl(
|
|
||||||
httpClient,
|
|
||||||
versionInfo.version().split('.')
|
|
||||||
);
|
|
||||||
|
|
||||||
const releasesResponse = await httpClient.getJson<any>(releasesJsonUrl);
|
|
||||||
const releasesResult = releasesResponse.result || {};
|
|
||||||
let releasesInfo: any[] = releasesResult['releases'];
|
|
||||||
releasesInfo = releasesInfo.filter((releaseInfo: any) => {
|
|
||||||
return (
|
|
||||||
semver.satisfies(releaseInfo['sdk']['version'], versionInfo.version(), {
|
|
||||||
includePrerelease: this.includePrerelease
|
|
||||||
}) ||
|
|
||||||
semver.satisfies(
|
|
||||||
releaseInfo['sdk']['version-display'],
|
|
||||||
versionInfo.version(),
|
|
||||||
{
|
|
||||||
includePrerelease: this.includePrerelease
|
|
||||||
}
|
|
||||||
)
|
|
||||||
);
|
|
||||||
});
|
|
||||||
|
|
||||||
// Exclude versions that are newer than the latest if using not exact
|
|
||||||
let latestSdk: string = releasesResult['latest-sdk'];
|
|
||||||
|
|
||||||
releasesInfo = releasesInfo.filter((releaseInfo: any) =>
|
|
||||||
semver.lte(releaseInfo['sdk']['version'], latestSdk, {
|
|
||||||
includePrerelease: this.includePrerelease
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
// Sort for latest version
|
|
||||||
releasesInfo = releasesInfo.sort((a, b) =>
|
|
||||||
semver.rcompare(a['sdk']['version'], b['sdk']['version'], {
|
|
||||||
includePrerelease: this.includePrerelease
|
|
||||||
})
|
|
||||||
);
|
|
||||||
|
|
||||||
if (releasesInfo.length == 0) {
|
|
||||||
throw new Error(
|
|
||||||
`Could not find dotnet core version. Please ensure that specified version ${versionInfo.inputVersion} is valid.`
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
let release = releasesInfo[0];
|
|
||||||
return release['sdk']['version'];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private async getReleasesJsonUrl(
|
private setQuality(
|
||||||
httpClient: hc.HttpClient,
|
dotnetVersion: IDotNetVersion,
|
||||||
versionParts: string[]
|
scriptArguments: string[]
|
||||||
): Promise<string> {
|
): void {
|
||||||
const response = await httpClient.getJson<any>(DotNetCoreIndexUrl);
|
const option = IS_WINDOWS ? '-Quality' : '--quality';
|
||||||
const result = response.result || {};
|
if (dotnetVersion.qualityFlag) {
|
||||||
let releasesInfo: any[] = result['releases-index'];
|
scriptArguments.push(option, this.quality);
|
||||||
|
} else {
|
||||||
|
logWarning(
|
||||||
|
`'dotnet-quality' input can be used only with .NET SDK version in A.B, A.B.x, A and A.x formats where the major tag is higher than 5. You specified: ${this.version}. 'dotnet-quality' input is ignored.`
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
releasesInfo = releasesInfo.filter((info: any) => {
|
public async installDotnet() {
|
||||||
// channel-version is the first 2 elements of the version (e.g. 2.1), filter out versions that don't match 2.1.x.
|
const windowsDefaultOptions = [
|
||||||
const sdkParts: string[] = info['channel-version'].split('.');
|
'-NoLogo',
|
||||||
if (
|
'-Sta',
|
||||||
versionParts.length >= 2 &&
|
'-NoProfile',
|
||||||
!(versionParts[1] == 'x' || versionParts[1] == '*')
|
'-NonInteractive',
|
||||||
) {
|
'-ExecutionPolicy',
|
||||||
return versionParts[0] == sdkParts[0] && versionParts[1] == sdkParts[1];
|
'Unrestricted',
|
||||||
|
'-Command'
|
||||||
|
];
|
||||||
|
const scriptName = IS_WINDOWS ? 'install-dotnet.ps1' : 'install-dotnet.sh';
|
||||||
|
const escapedScript = path
|
||||||
|
.join(__dirname, '..', 'externals', scriptName)
|
||||||
|
.replace(/'/g, "''");
|
||||||
|
let scriptArguments: string[];
|
||||||
|
let scriptPath = '';
|
||||||
|
|
||||||
|
const versionResolver = new DotnetVersionResolver(this.version);
|
||||||
|
const dotnetVersion = await versionResolver.createDotNetVersion();
|
||||||
|
|
||||||
|
const envVariables: {[key: string]: string} = {};
|
||||||
|
for (let key in process.env) {
|
||||||
|
if (process.env[key]) {
|
||||||
|
let value: any = process.env[key];
|
||||||
|
envVariables[key] = value;
|
||||||
}
|
}
|
||||||
return versionParts[0] == sdkParts[0];
|
|
||||||
});
|
|
||||||
|
|
||||||
if (releasesInfo.length === 0) {
|
|
||||||
throw new Error(
|
|
||||||
`Could not find info for version ${versionParts.join(
|
|
||||||
'.'
|
|
||||||
)} at ${DotNetCoreIndexUrl}`
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
if (IS_WINDOWS) {
|
||||||
|
scriptArguments = ['&', `'${escapedScript}'`];
|
||||||
|
|
||||||
const releaseInfo = releasesInfo[0];
|
if (dotnetVersion.type) {
|
||||||
if (releaseInfo['support-phase'] === 'eol') {
|
scriptArguments.push(dotnetVersion.type, dotnetVersion.value);
|
||||||
core.warning(
|
}
|
||||||
`${releaseInfo['product']} ${releaseInfo['channel-version']} is no longer supported and will not receive security updates in the future. Please refer to https://aka.ms/dotnet-core-support for more information about the .NET support policy.`
|
|
||||||
|
if (this.quality) {
|
||||||
|
this.setQuality(dotnetVersion, scriptArguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (process.env['https_proxy'] != null) {
|
||||||
|
scriptArguments.push(`-ProxyAddress ${process.env['https_proxy']}`);
|
||||||
|
}
|
||||||
|
// This is not currently an option
|
||||||
|
if (process.env['no_proxy'] != null) {
|
||||||
|
scriptArguments.push(`-ProxyBypassList ${process.env['no_proxy']}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
scriptArguments.push(
|
||||||
|
`-InstallDir '${DotnetCoreInstaller.installationDirectoryWindows}'`
|
||||||
);
|
);
|
||||||
}
|
// process.env must be explicitly passed in for DOTNET_INSTALL_DIR to be used
|
||||||
|
scriptPath = await io.which('powershell', true);
|
||||||
|
scriptArguments = [...windowsDefaultOptions, scriptArguments.join(' ')];
|
||||||
|
} else {
|
||||||
|
chmodSync(escapedScript, '777');
|
||||||
|
scriptPath = await io.which(escapedScript, true);
|
||||||
|
scriptArguments = [];
|
||||||
|
|
||||||
return releaseInfo['releases.json'];
|
if (dotnetVersion.type) {
|
||||||
|
scriptArguments.push(dotnetVersion.type, dotnetVersion.value);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.quality) {
|
||||||
|
this.setQuality(dotnetVersion, scriptArguments);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (IS_LINUX) {
|
||||||
|
scriptArguments.push(
|
||||||
|
'--install-dir',
|
||||||
|
DotnetCoreInstaller.installationDirectoryLinux
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
const {exitCode, stdout} = await exec.getExecOutput(
|
||||||
|
`"${scriptPath}"`,
|
||||||
|
scriptArguments,
|
||||||
|
{env: envVariables, ignoreReturnCode: true}
|
||||||
|
);
|
||||||
|
if (exitCode) {
|
||||||
|
throw new Error(`Failed to install dotnet ${exitCode}. ${stdout}`);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private version: string;
|
|
||||||
private includePrerelease: boolean;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const DotNetCoreIndexUrl: string =
|
|
||||||
'https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json';
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
import * as core from '@actions/core';
|
import * as core from '@actions/core';
|
||||||
import * as installer from './installer';
|
import {DotnetQualityValidator, DotnetCoreInstaller} from './installer';
|
||||||
import * as fs from 'fs';
|
import * as fs from 'fs';
|
||||||
import * as path from 'path';
|
import path from 'path';
|
||||||
import * as auth from './authutil';
|
import * as auth from './authutil';
|
||||||
|
|
||||||
export async function run() {
|
export async function run() {
|
||||||
@ -15,7 +15,7 @@ export async function run() {
|
|||||||
// If a valid version still can't be identified, nothing will be installed.
|
// If a valid version still can't be identified, nothing will be installed.
|
||||||
// Proxy, auth, (etc) are still set up, even if no version is identified
|
// Proxy, auth, (etc) are still set up, even if no version is identified
|
||||||
//
|
//
|
||||||
let versions = core.getMultilineInput('dotnet-version');
|
const versions = core.getMultilineInput('dotnet-version');
|
||||||
|
|
||||||
const globalJsonFileInput = core.getInput('global-json-file');
|
const globalJsonFileInput = core.getInput('global-json-file');
|
||||||
if (globalJsonFileInput) {
|
if (globalJsonFileInput) {
|
||||||
@ -38,18 +38,18 @@ export async function run() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (versions.length) {
|
if (versions.length) {
|
||||||
const includePrerelease: boolean = core.getBooleanInput(
|
const qualityValidator = new DotnetQualityValidator(
|
||||||
'include-prerelease'
|
core.getInput('dotnet-quality')
|
||||||
);
|
);
|
||||||
let dotnetInstaller!: installer.DotnetCoreInstaller;
|
const quality = qualityValidator.validateQuality();
|
||||||
for (const version of new Set<string>(versions)) {
|
|
||||||
dotnetInstaller = new installer.DotnetCoreInstaller(
|
let dotnetInstaller: DotnetCoreInstaller;
|
||||||
version,
|
const uniqueVersions = new Set<string>(versions);
|
||||||
includePrerelease
|
for (const version of uniqueVersions) {
|
||||||
);
|
dotnetInstaller = new DotnetCoreInstaller(version, quality);
|
||||||
await dotnetInstaller.installDotnet();
|
await dotnetInstaller.installDotnet();
|
||||||
}
|
}
|
||||||
installer.DotnetCoreInstaller.addToPath();
|
DotnetCoreInstaller.addToPath();
|
||||||
}
|
}
|
||||||
|
|
||||||
const sourceUrl: string = core.getInput('source-url');
|
const sourceUrl: string = core.getInput('source-url');
|
||||||
@ -59,7 +59,7 @@ export async function run() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
const matchersPath = path.join(__dirname, '..', '.github');
|
const matchersPath = path.join(__dirname, '..', '.github');
|
||||||
console.log(`##[add-matcher]${path.join(matchersPath, 'csc.json')}`);
|
core.info(`##[add-matcher]${path.join(matchersPath, 'csc.json')}`);
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
core.setFailed(error.message);
|
core.setFailed(error.message);
|
||||||
}
|
}
|
||||||
|
9
src/utils.ts
Normal file
9
src/utils.ts
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
import * as core from '@actions/core';
|
||||||
|
|
||||||
|
export const IS_WINDOWS = process.platform === 'win32';
|
||||||
|
export const IS_LINUX = process.platform === 'linux';
|
||||||
|
|
||||||
|
export function logWarning(message: string): void {
|
||||||
|
const warningPrefix = '[warning]';
|
||||||
|
core.info(`${warningPrefix}${message}`);
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user