mirror of
https://gitea.com/actions/checkout.git
synced 2025-09-04 05:32:05 +08:00
Compare commits
64 Commits
Author | SHA1 | Date | |
---|---|---|---|
357fea8c37 | |||
85e6279cec | |||
009b9ae9e4 | |||
cbb722410c | |||
3b9b8c884f | |||
11bd71901b | |||
e3d2460bbb | |||
163217dfcd | |||
eef61447b9 | |||
6b42224f41 | |||
de5a000abf | |||
d632683dd7 | |||
6d193bf280 | |||
db0cee9a51 | |||
b684943689 | |||
2d7d9f7ff5 | |||
9a9194f871 | |||
dd960bd3c3 | |||
692973e3d9 | |||
6ccd57f4c5 | |||
b17fe1e4d5 | |||
b80ff79f17 | |||
b1ec3021b8 | |||
a5ac7e51b4 | |||
24ed1a3528 | |||
44c2b7a8a4 | |||
8459bc0c7e | |||
3f603f6d5e | |||
fd084cde18 | |||
9c1e94e0ad | |||
0ad4b8fada | |||
43045ae669 | |||
37b082107b | |||
9839dc14a0 | |||
9b4c13b0bf | |||
1d96c772d1 | |||
cd7d8d697e | |||
8410ad0602 | |||
9bb56186c3 | |||
8eb1f6a495 | |||
556e4c3cb0 | |||
b32f140b0c | |||
2650dbd060 | |||
aadec89964 | |||
df0bcddf6d | |||
473055ba18 | |||
b4ffde65f4 | |||
8530928916 | |||
7cdaf2fbc0 | |||
8ade135a41 | |||
c533a0a4cf | |||
72f2cec99f | |||
3df4ab11eb | |||
8b5e8b7687 | |||
97a652b800 | |||
f43a0e5ff2 | |||
7739b9ba2e | |||
96f53100ba | |||
c85c95e3d7 | |||
d106d4669b | |||
f095bcc56b | |||
47fbe2df0a | |||
8e5e7e5ab8 | |||
eb35239ec2 |
20
.github/dependabot.yml
vendored
Normal file
20
.github/dependabot.yml
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
---
|
||||
version: 2
|
||||
|
||||
updates:
|
||||
- package-ecosystem: "npm"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
groups:
|
||||
minor-npm-dependencies:
|
||||
# NPM: Only group minor and patch updates (we want to carefully review major updates)
|
||||
update-types: [minor, patch]
|
||||
- package-ecosystem: "github-actions"
|
||||
directory: "/"
|
||||
schedule:
|
||||
interval: "weekly"
|
||||
groups:
|
||||
minor-actions-dependencies:
|
||||
# GitHub Actions: Only group minor and patch updates (we want to carefully review major updates)
|
||||
update-types: [minor, patch]
|
10
.github/workflows/check-dist.yml
vendored
10
.github/workflows/check-dist.yml
vendored
@ -22,12 +22,12 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4.1.6
|
||||
|
||||
- name: Set Node.js 16.x
|
||||
uses: actions/setup-node@v1
|
||||
- name: Set Node.js 20.x
|
||||
uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 16.x
|
||||
node-version: 20.x
|
||||
|
||||
- name: Install dependencies
|
||||
run: npm ci
|
||||
@ -44,7 +44,7 @@ jobs:
|
||||
fi
|
||||
|
||||
# If dist/ was different than expected, upload the expected version as an artifact
|
||||
- uses: actions/upload-artifact@v2
|
||||
- uses: actions/upload-artifact@v4
|
||||
if: ${{ failure() && steps.diff.conclusion == 'failure' }}
|
||||
with:
|
||||
name: dist
|
||||
|
6
.github/workflows/codeql-analysis.yml
vendored
6
.github/workflows/codeql-analysis.yml
vendored
@ -39,10 +39,10 @@ jobs:
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4.1.6
|
||||
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v2
|
||||
uses: github/codeql-action/init@v3
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
@ -55,4 +55,4 @@ jobs:
|
||||
- run: rm -rf dist # We want code scanning to analyze lib instead (individual .js files)
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v2
|
||||
uses: github/codeql-action/analyze@v3
|
||||
|
2
.github/workflows/licensed.yml
vendored
2
.github/workflows/licensed.yml
vendored
@ -9,6 +9,6 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
name: Check licenses
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4.1.6
|
||||
- run: npm ci
|
||||
- run: npm run licensed-check
|
20
.github/workflows/publish-immutable-actions.yml
vendored
Normal file
20
.github/workflows/publish-immutable-actions.yml
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
name: 'Publish Immutable Action Version'
|
||||
|
||||
on:
|
||||
release:
|
||||
types: [published]
|
||||
|
||||
jobs:
|
||||
publish:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
id-token: write
|
||||
packages: write
|
||||
|
||||
steps:
|
||||
- name: Checking out
|
||||
uses: actions/checkout@v4
|
||||
- name: Publish
|
||||
id: publish
|
||||
uses: actions/publish-immutable-action@0.0.3
|
114
.github/workflows/test.yml
vendored
114
.github/workflows/test.yml
vendored
@ -7,14 +7,19 @@ on:
|
||||
- main
|
||||
- releases/*
|
||||
|
||||
|
||||
# Note that when you see patterns like "ref: test-data/v2/basic" within this workflow,
|
||||
# these refer to "test-data" branches on this actions/checkout repo.
|
||||
# (For example, test-data/v2/basic -> https://github.com/actions/checkout/tree/test-data/v2/basic)
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/setup-node@v1
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 16.x
|
||||
- uses: actions/checkout@v3
|
||||
node-version: 20.x
|
||||
- uses: actions/checkout@v4.1.6
|
||||
- run: npm ci
|
||||
- run: npm run build
|
||||
- run: npm run format-check
|
||||
@ -32,7 +37,7 @@ jobs:
|
||||
steps:
|
||||
# Clone this repo
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4.1.6
|
||||
|
||||
# Basic checkout
|
||||
- name: Checkout basic
|
||||
@ -72,6 +77,53 @@ jobs:
|
||||
shell: bash
|
||||
run: __test__/verify-side-by-side.sh
|
||||
|
||||
# Filter
|
||||
- name: Fetch filter
|
||||
uses: ./
|
||||
with:
|
||||
filter: 'blob:none'
|
||||
path: fetch-filter
|
||||
|
||||
- name: Verify fetch filter
|
||||
run: __test__/verify-fetch-filter.sh
|
||||
|
||||
# Sparse checkout
|
||||
- name: Sparse checkout
|
||||
uses: ./
|
||||
with:
|
||||
sparse-checkout: |
|
||||
__test__
|
||||
.github
|
||||
dist
|
||||
path: sparse-checkout
|
||||
|
||||
- name: Verify sparse checkout
|
||||
run: __test__/verify-sparse-checkout.sh
|
||||
|
||||
# Disabled sparse checkout in existing checkout
|
||||
- name: Disabled sparse checkout
|
||||
uses: ./
|
||||
with:
|
||||
path: sparse-checkout
|
||||
|
||||
- name: Verify disabled sparse checkout
|
||||
shell: bash
|
||||
run: set -x && ls -l sparse-checkout/src/git-command-manager.ts
|
||||
|
||||
# Sparse checkout (non-cone mode)
|
||||
- name: Sparse checkout (non-cone mode)
|
||||
uses: ./
|
||||
with:
|
||||
sparse-checkout: |
|
||||
/__test__/
|
||||
/.github/
|
||||
/dist/
|
||||
sparse-checkout-cone-mode: false
|
||||
path: sparse-checkout-non-cone-mode
|
||||
|
||||
- name: Verify sparse checkout (non-cone mode)
|
||||
run: __test__/verify-sparse-checkout-non-cone-mode.sh
|
||||
|
||||
# LFS
|
||||
- name: Checkout LFS
|
||||
uses: ./
|
||||
@ -138,7 +190,7 @@ jobs:
|
||||
test-proxy:
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: alpine/git:latest
|
||||
image: ghcr.io/actions/test-ubuntu-git:main.20240221.114913.703z
|
||||
options: --dns 127.0.0.1
|
||||
services:
|
||||
squid-proxy:
|
||||
@ -150,7 +202,7 @@ jobs:
|
||||
steps:
|
||||
# Clone this repo
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4.1.6
|
||||
|
||||
# Basic checkout using git
|
||||
- name: Checkout basic
|
||||
@ -182,7 +234,7 @@ jobs:
|
||||
steps:
|
||||
# Clone this repo
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4.1.6
|
||||
|
||||
# Basic checkout using git
|
||||
- name: Checkout basic
|
||||
@ -205,20 +257,20 @@ jobs:
|
||||
path: basic
|
||||
- name: Verify basic
|
||||
run: __test__/verify-basic.sh --archive
|
||||
|
||||
|
||||
test-git-container:
|
||||
runs-on: ubuntu-latest
|
||||
container: bitnami/git:latest
|
||||
steps:
|
||||
# Clone this repo
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4.1.6
|
||||
with:
|
||||
path: v3
|
||||
path: localClone
|
||||
|
||||
# Basic checkout using git
|
||||
- name: Checkout basic
|
||||
uses: ./v3
|
||||
uses: ./localClone
|
||||
with:
|
||||
ref: test-data/v2/basic
|
||||
- name: Verify basic
|
||||
@ -239,7 +291,41 @@ jobs:
|
||||
git fetch --no-tags --depth=1 origin +refs/heads/main:refs/remotes/origin/main
|
||||
|
||||
# needed to make checkout post cleanup succeed
|
||||
- name: Fix Checkout v3
|
||||
uses: actions/checkout@v3
|
||||
- name: Fix Checkout v4
|
||||
uses: actions/checkout@v4.1.6
|
||||
with:
|
||||
path: v3
|
||||
path: localClone
|
||||
|
||||
test-output:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
# Clone this repo
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4.1.6
|
||||
|
||||
# Basic checkout using git
|
||||
- name: Checkout basic
|
||||
id: checkout
|
||||
uses: ./
|
||||
with:
|
||||
ref: test-data/v2/basic
|
||||
|
||||
# Verify output
|
||||
- name: Verify output
|
||||
run: |
|
||||
echo "Commit: ${{ steps.checkout.outputs.commit }}"
|
||||
echo "Ref: ${{ steps.checkout.outputs.ref }}"
|
||||
|
||||
if [ "${{ steps.checkout.outputs.ref }}" != "test-data/v2/basic" ]; then
|
||||
echo "Expected ref to be test-data/v2/basic"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if [ "${{ steps.checkout.outputs.commit }}" != "82f71901cf8c021332310dcc8cdba84c4193ff5d" ]; then
|
||||
echo "Expected commit to be 82f71901cf8c021332310dcc8cdba84c4193ff5d"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# needed to make checkout post cleanup succeed
|
||||
- name: Fix Checkout
|
||||
uses: actions/checkout@v4.1.6
|
||||
|
10
.github/workflows/update-main-version.yml
vendored
10
.github/workflows/update-main-version.yml
vendored
@ -11,6 +11,7 @@ on:
|
||||
type: choice
|
||||
description: The major version to update
|
||||
options:
|
||||
- v4
|
||||
- v3
|
||||
- v2
|
||||
|
||||
@ -18,13 +19,16 @@ jobs:
|
||||
tag:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
# Note this update workflow can also be used as a rollback tool.
|
||||
# For that reason, it's best to pin `actions/checkout` to a known, stable version
|
||||
# (typically, about two releases back).
|
||||
- uses: actions/checkout@v4.1.6
|
||||
with:
|
||||
fetch-depth: 0
|
||||
- name: Git config
|
||||
run: |
|
||||
git config user.name github-actions
|
||||
git config user.email github-actions@github.com
|
||||
git config user.name "github-actions[bot]"
|
||||
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
||||
- name: Tag new target
|
||||
run: git tag -f ${{ github.event.inputs.major_version }} ${{ github.event.inputs.target }}
|
||||
- name: Push new tag
|
||||
|
59
.github/workflows/update-test-ubuntu-git.yml
vendored
Normal file
59
.github/workflows/update-test-ubuntu-git.yml
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
name: Publish test-ubuntu-git Container
|
||||
|
||||
on:
|
||||
# Use an on demand workflow trigger.
|
||||
# (Forked copies of actions/checkout won't have permission to update GHCR.io/actions,
|
||||
# so avoid trigger events that run automatically.)
|
||||
workflow_dispatch:
|
||||
inputs:
|
||||
publish:
|
||||
description: 'Publish to ghcr.io? (main branch only)'
|
||||
type: boolean
|
||||
required: true
|
||||
default: false
|
||||
|
||||
env:
|
||||
REGISTRY: ghcr.io
|
||||
IMAGE_NAME: actions/test-ubuntu-git
|
||||
|
||||
jobs:
|
||||
build-and-push-image:
|
||||
runs-on: ubuntu-latest
|
||||
# Sets the permissions granted to the `GITHUB_TOKEN` for the actions in this job.
|
||||
permissions:
|
||||
contents: read
|
||||
packages: write
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# Use `docker/login-action` to log in to GHCR.io.
|
||||
# Once published, the packages are scoped to the account defined here.
|
||||
- name: Log in to the ghcr.io container registry
|
||||
uses: docker/login-action@v3.3.0
|
||||
with:
|
||||
registry: ${{ env.REGISTRY }}
|
||||
username: ${{ github.actor }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
- name: Format Timestamp
|
||||
id: timestamp
|
||||
# Use `date` with a custom format to achieve the key=value format GITHUB_OUTPUT expects.
|
||||
run: date -u "+now=%Y%m%d.%H%M%S.%3NZ" >> "$GITHUB_OUTPUT"
|
||||
|
||||
- name: Issue Image Publish Warning
|
||||
if: ${{ inputs.publish && github.ref_name != 'main' }}
|
||||
run: echo "::warning::test-ubuntu-git images can only be published from the actions/checkout 'main' branch. Workflow will continue with push/publish disabled."
|
||||
|
||||
# Use `docker/build-push-action` to build (and optionally publish) the image.
|
||||
- name: Build Docker Image (with optional Push)
|
||||
uses: docker/build-push-action@v6.5.0
|
||||
with:
|
||||
context: .
|
||||
file: images/test-ubuntu-git.Dockerfile
|
||||
# For now, attempts to push to ghcr.io must target the `main` branch.
|
||||
# In the future, consider also allowing attempts from `releases/*` branches.
|
||||
push: ${{ inputs.publish && github.ref_name == 'main' }}
|
||||
tags: |
|
||||
${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:${{ github.ref_name }}.${{ steps.timestamp.outputs.now }}
|
2
.licenses/npm/@actions/core.dep.yml
generated
2
.licenses/npm/@actions/core.dep.yml
generated
@ -1,6 +1,6 @@
|
||||
---
|
||||
name: "@actions/core"
|
||||
version: 1.10.0
|
||||
version: 1.10.1
|
||||
type: npm
|
||||
summary: Actions core lib
|
||||
homepage: https://github.com/actions/toolkit/tree/main/packages/core
|
||||
|
6
.licenses/npm/@actions/exec.dep.yml
generated
6
.licenses/npm/@actions/exec.dep.yml
generated
@ -1,13 +1,15 @@
|
||||
---
|
||||
name: "@actions/exec"
|
||||
version: 1.0.1
|
||||
version: 1.1.1
|
||||
type: npm
|
||||
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
|
||||
licenses:
|
||||
- sources: LICENSE.md
|
||||
text: |-
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright 2019 GitHub
|
||||
|
||||
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:
|
||||
|
2
.licenses/npm/@actions/github.dep.yml
generated
2
.licenses/npm/@actions/github.dep.yml
generated
@ -1,6 +1,6 @@
|
||||
---
|
||||
name: "@actions/github"
|
||||
version: 5.1.1
|
||||
version: 6.0.0
|
||||
type: npm
|
||||
summary: Actions github lib
|
||||
homepage: https://github.com/actions/toolkit/tree/main/packages/github
|
||||
|
2
.licenses/npm/@actions/http-client.dep.yml
generated
2
.licenses/npm/@actions/http-client.dep.yml
generated
@ -1,6 +1,6 @@
|
||||
---
|
||||
name: "@actions/http-client"
|
||||
version: 2.1.0
|
||||
version: 2.2.1
|
||||
type: npm
|
||||
summary: Actions Http Client
|
||||
homepage: https://github.com/actions/toolkit/tree/main/packages/http-client
|
||||
|
30
.licenses/npm/@actions/tool-cache.dep.yml
generated
30
.licenses/npm/@actions/tool-cache.dep.yml
generated
@ -1,30 +1,20 @@
|
||||
---
|
||||
name: "@actions/tool-cache"
|
||||
version: 1.1.2
|
||||
version: 2.0.1
|
||||
type: npm
|
||||
summary: Actions tool-cache lib
|
||||
homepage: https://github.com/actions/toolkit/tree/master/packages/exec
|
||||
homepage: https://github.com/actions/toolkit/tree/main/packages/tool-cache
|
||||
license: mit
|
||||
licenses:
|
||||
- sources: Auto-generated MIT license text
|
||||
text: |
|
||||
MIT License
|
||||
- sources: LICENSE.md
|
||||
text: |-
|
||||
The MIT License (MIT)
|
||||
|
||||
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:
|
||||
Copyright 2019 GitHub
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
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 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.
|
||||
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: []
|
||||
|
@ -1,20 +1,20 @@
|
||||
---
|
||||
name: function-bind
|
||||
version: 1.1.1
|
||||
name: "@fastify/busboy"
|
||||
version: 2.1.1
|
||||
type: npm
|
||||
summary: Implementation of Function.prototype.bind
|
||||
homepage: https://github.com/Raynos/function-bind
|
||||
summary: A streaming parser for HTML form data for node.js
|
||||
homepage:
|
||||
license: mit
|
||||
licenses:
|
||||
- sources: LICENSE
|
||||
text: |+
|
||||
Copyright (c) 2013 Raynos.
|
||||
text: |-
|
||||
Copyright Brian White. All rights reserved.
|
||||
|
||||
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
|
||||
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
|
||||
@ -24,8 +24,7 @@ licenses:
|
||||
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.
|
||||
|
||||
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: []
|
2
.licenses/npm/@octokit/auth-token.dep.yml
generated
2
.licenses/npm/@octokit/auth-token.dep.yml
generated
@ -1,6 +1,6 @@
|
||||
---
|
||||
name: "@octokit/auth-token"
|
||||
version: 2.5.0
|
||||
version: 4.0.0
|
||||
type: npm
|
||||
summary: GitHub API token authentication for browsers and Node.js
|
||||
homepage:
|
||||
|
2
.licenses/npm/@octokit/core.dep.yml
generated
2
.licenses/npm/@octokit/core.dep.yml
generated
@ -1,6 +1,6 @@
|
||||
---
|
||||
name: "@octokit/core"
|
||||
version: 3.6.0
|
||||
version: 5.2.0
|
||||
type: npm
|
||||
summary: Extendable client for GitHub's REST & GraphQL APIs
|
||||
homepage:
|
||||
|
2
.licenses/npm/@octokit/endpoint.dep.yml
generated
2
.licenses/npm/@octokit/endpoint.dep.yml
generated
@ -1,6 +1,6 @@
|
||||
---
|
||||
name: "@octokit/endpoint"
|
||||
version: 6.0.12
|
||||
version: 9.0.5
|
||||
type: npm
|
||||
summary: Turns REST API endpoints into generic request options
|
||||
homepage:
|
||||
|
2
.licenses/npm/@octokit/graphql.dep.yml
generated
2
.licenses/npm/@octokit/graphql.dep.yml
generated
@ -1,6 +1,6 @@
|
||||
---
|
||||
name: "@octokit/graphql"
|
||||
version: 4.8.0
|
||||
version: 7.1.0
|
||||
type: npm
|
||||
summary: GitHub GraphQL API client for browsers and Node
|
||||
homepage:
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
name: "@octokit/openapi-types"
|
||||
version: 12.11.0
|
||||
version: 20.0.0
|
||||
type: npm
|
||||
summary: Generated TypeScript definitions based on GitHub's OpenAPI spec for api.github.com
|
||||
homepage:
|
20
.licenses/npm/@octokit/openapi-types-22.1.0.dep.yml
generated
Normal file
20
.licenses/npm/@octokit/openapi-types-22.1.0.dep.yml
generated
Normal file
@ -0,0 +1,20 @@
|
||||
---
|
||||
name: "@octokit/openapi-types"
|
||||
version: 22.1.0
|
||||
type: npm
|
||||
summary: Generated TypeScript definitions based on GitHub's OpenAPI spec for api.github.com
|
||||
homepage:
|
||||
license: mit
|
||||
licenses:
|
||||
- sources: LICENSE
|
||||
text: |-
|
||||
Copyright 2020 Gregor Martynus
|
||||
|
||||
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.
|
||||
- sources: README.md
|
||||
text: "[MIT](LICENSE)"
|
||||
notices: []
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
name: "@octokit/plugin-paginate-rest"
|
||||
version: 2.21.3
|
||||
version: 9.2.1
|
||||
type: npm
|
||||
summary: Octokit plugin to paginate REST API endpoint responses
|
||||
homepage:
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
name: "@octokit/plugin-rest-endpoint-methods"
|
||||
version: 5.16.2
|
||||
version: 10.4.1
|
||||
type: npm
|
||||
summary: Octokit plugin adding one method for all of api.github.com REST API endpoints
|
||||
homepage:
|
||||
|
2
.licenses/npm/@octokit/request-error.dep.yml
generated
2
.licenses/npm/@octokit/request-error.dep.yml
generated
@ -1,6 +1,6 @@
|
||||
---
|
||||
name: "@octokit/request-error"
|
||||
version: 2.1.0
|
||||
version: 5.1.0
|
||||
type: npm
|
||||
summary: Error class for Octokit request errors
|
||||
homepage:
|
||||
|
2
.licenses/npm/@octokit/request.dep.yml
generated
2
.licenses/npm/@octokit/request.dep.yml
generated
@ -1,6 +1,6 @@
|
||||
---
|
||||
name: "@octokit/request"
|
||||
version: 5.6.3
|
||||
version: 8.4.0
|
||||
type: npm
|
||||
summary: Send parameterized requests to GitHub's APIs with sensible defaults in browsers
|
||||
and Node
|
||||
|
@ -1,6 +1,6 @@
|
||||
---
|
||||
name: "@octokit/types"
|
||||
version: 6.41.0
|
||||
version: 12.6.0
|
||||
type: npm
|
||||
summary: Shared TypeScript definitions for Octokit projects
|
||||
homepage:
|
20
.licenses/npm/@octokit/types-13.4.1.dep.yml
generated
Normal file
20
.licenses/npm/@octokit/types-13.4.1.dep.yml
generated
Normal file
@ -0,0 +1,20 @@
|
||||
---
|
||||
name: "@octokit/types"
|
||||
version: 13.4.1
|
||||
type: npm
|
||||
summary: Shared TypeScript definitions for Octokit projects
|
||||
homepage:
|
||||
license: mit
|
||||
licenses:
|
||||
- sources: LICENSE
|
||||
text: |
|
||||
MIT License Copyright (c) 2019 Octokit 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 (including the next paragraph) 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.
|
||||
- sources: README.md
|
||||
text: "[MIT](LICENSE)"
|
||||
notices: []
|
32
.licenses/npm/call-bind.dep.yml
generated
32
.licenses/npm/call-bind.dep.yml
generated
@ -1,32 +0,0 @@
|
||||
---
|
||||
name: call-bind
|
||||
version: 1.0.2
|
||||
type: npm
|
||||
summary: Robustly `.call.bind()` a function
|
||||
homepage: https://github.com/ljharb/call-bind#readme
|
||||
license: mit
|
||||
licenses:
|
||||
- sources: LICENSE
|
||||
text: |
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 Jordan Harband
|
||||
|
||||
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: []
|
33
.licenses/npm/get-intrinsic.dep.yml
generated
33
.licenses/npm/get-intrinsic.dep.yml
generated
@ -1,33 +0,0 @@
|
||||
---
|
||||
name: get-intrinsic
|
||||
version: 1.1.1
|
||||
type: npm
|
||||
summary: Get and robustly cache all JS language-level intrinsics at first require
|
||||
time
|
||||
homepage: https://github.com/ljharb/get-intrinsic#readme
|
||||
license: mit
|
||||
licenses:
|
||||
- sources: LICENSE
|
||||
text: |
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2020 Jordan Harband
|
||||
|
||||
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: []
|
33
.licenses/npm/has.dep.yml
generated
33
.licenses/npm/has.dep.yml
generated
@ -1,33 +0,0 @@
|
||||
---
|
||||
name: has
|
||||
version: 1.0.3
|
||||
type: npm
|
||||
summary: Object.prototype.hasOwnProperty.call shortcut
|
||||
homepage: https://github.com/tarruda/has
|
||||
license: mit
|
||||
licenses:
|
||||
- sources: LICENSE-MIT
|
||||
text: |
|
||||
Copyright (c) 2013 Thiago de Arruda
|
||||
|
||||
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: []
|
40
.licenses/npm/is-plain-object.dep.yml
generated
40
.licenses/npm/is-plain-object.dep.yml
generated
@ -1,40 +0,0 @@
|
||||
---
|
||||
name: is-plain-object
|
||||
version: 5.0.0
|
||||
type: npm
|
||||
summary: Returns true if an object was created by the `Object` constructor, or Object.create(null).
|
||||
homepage: https://github.com/jonschlinkert/is-plain-object
|
||||
license: mit
|
||||
licenses:
|
||||
- sources: LICENSE
|
||||
text: |
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014-2017, Jon Schlinkert.
|
||||
|
||||
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.
|
||||
- sources: README.md
|
||||
text: |-
|
||||
Copyright © 2019, [Jon Schlinkert](https://github.com/jonschlinkert).
|
||||
Released under the [MIT License](LICENSE).
|
||||
|
||||
***
|
||||
|
||||
_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.8.0, on April 28, 2019._
|
||||
notices: []
|
56
.licenses/npm/node-fetch.dep.yml
generated
56
.licenses/npm/node-fetch.dep.yml
generated
@ -1,56 +0,0 @@
|
||||
---
|
||||
name: node-fetch
|
||||
version: 2.6.9
|
||||
type: npm
|
||||
summary: A light-weight module that brings window.fetch to node.js
|
||||
homepage: https://github.com/bitinn/node-fetch
|
||||
license: mit
|
||||
licenses:
|
||||
- sources: LICENSE.md
|
||||
text: |+
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2016 David Frank
|
||||
|
||||
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.
|
||||
|
||||
- sources: README.md
|
||||
text: |-
|
||||
MIT
|
||||
|
||||
[npm-image]: https://flat.badgen.net/npm/v/node-fetch
|
||||
[npm-url]: https://www.npmjs.com/package/node-fetch
|
||||
[travis-image]: https://flat.badgen.net/travis/bitinn/node-fetch
|
||||
[travis-url]: https://travis-ci.org/bitinn/node-fetch
|
||||
[codecov-image]: https://flat.badgen.net/codecov/c/github/bitinn/node-fetch/master
|
||||
[codecov-url]: https://codecov.io/gh/bitinn/node-fetch
|
||||
[install-size-image]: https://flat.badgen.net/packagephobia/install/node-fetch
|
||||
[install-size-url]: https://packagephobia.now.sh/result?p=node-fetch
|
||||
[discord-image]: https://img.shields.io/discord/619915844268326952?color=%237289DA&label=Discord&style=flat-square
|
||||
[discord-url]: https://discord.gg/Zxbndcm
|
||||
[opencollective-image]: https://opencollective.com/node-fetch/backers.svg
|
||||
[opencollective-url]: https://opencollective.com/node-fetch
|
||||
[whatwg-fetch]: https://fetch.spec.whatwg.org/
|
||||
[response-init]: https://fetch.spec.whatwg.org/#responseinit
|
||||
[node-readable]: https://nodejs.org/api/stream.html#stream_readable_streams
|
||||
[mdn-headers]: https://developer.mozilla.org/en-US/docs/Web/API/Headers
|
||||
[LIMITS.md]: https://github.com/bitinn/node-fetch/blob/master/LIMITS.md
|
||||
[ERROR-HANDLING.md]: https://github.com/bitinn/node-fetch/blob/master/ERROR-HANDLING.md
|
||||
[UPGRADE-GUIDE.md]: https://github.com/bitinn/node-fetch/blob/master/UPGRADE-GUIDE.md
|
||||
notices: []
|
51
.licenses/npm/object-inspect.dep.yml
generated
51
.licenses/npm/object-inspect.dep.yml
generated
@ -1,51 +0,0 @@
|
||||
---
|
||||
name: object-inspect
|
||||
version: 1.11.0
|
||||
type: npm
|
||||
summary: string representations of objects in node and the browser
|
||||
homepage: https://github.com/inspect-js/object-inspect
|
||||
license: mit
|
||||
licenses:
|
||||
- sources: LICENSE
|
||||
text: |
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2013 James Halliday
|
||||
|
||||
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.
|
||||
- sources: readme.markdown
|
||||
text: |-
|
||||
MIT
|
||||
|
||||
[1]: https://npmjs.org/package/object-inspect
|
||||
[2]: https://versionbadg.es/inspect-js/object-inspect.svg
|
||||
[5]: https://david-dm.org/inspect-js/object-inspect.svg
|
||||
[6]: https://david-dm.org/inspect-js/object-inspect
|
||||
[7]: https://david-dm.org/inspect-js/object-inspect/dev-status.svg
|
||||
[8]: https://david-dm.org/inspect-js/object-inspect#info=devDependencies
|
||||
[11]: https://nodei.co/npm/object-inspect.png?downloads=true&stars=true
|
||||
[license-image]: https://img.shields.io/npm/l/object-inspect.svg
|
||||
[license-url]: LICENSE
|
||||
[downloads-image]: https://img.shields.io/npm/dm/object-inspect.svg
|
||||
[downloads-url]: https://npm-stat.com/charts.html?package=object-inspect
|
||||
[codecov-image]: https://codecov.io/gh/inspect-js/object-inspect/branch/main/graphs/badge.svg
|
||||
[codecov-url]: https://app.codecov.io/gh/inspect-js/object-inspect/
|
||||
[actions-image]: https://img.shields.io/endpoint?url=https://github-actions-badge-u3jn4tfpocch.runkit.sh/inspect-js/object-inspect
|
||||
[actions-url]: https://github.com/inspect-js/object-inspect/actions
|
||||
notices: []
|
40
.licenses/npm/qs.dep.yml
generated
40
.licenses/npm/qs.dep.yml
generated
@ -1,40 +0,0 @@
|
||||
---
|
||||
name: qs
|
||||
version: 6.11.0
|
||||
type: npm
|
||||
summary: A querystring parser that supports nesting and arrays, with a depth limit
|
||||
homepage: https://github.com/ljharb/qs
|
||||
license: bsd-3-clause
|
||||
licenses:
|
||||
- sources: LICENSE.md
|
||||
text: |
|
||||
BSD 3-Clause License
|
||||
|
||||
Copyright (c) 2014, Nathan LaFreniere and other [contributors](https://github.com/ljharb/qs/graphs/contributors)
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice,
|
||||
this list of conditions and the following disclaimer in the documentation
|
||||
and/or other materials provided with the distribution.
|
||||
|
||||
3. Neither the name of the copyright holder nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
|
||||
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
|
||||
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
notices: []
|
2
.licenses/npm/semver.dep.yml
generated
2
.licenses/npm/semver.dep.yml
generated
@ -1,6 +1,6 @@
|
||||
---
|
||||
name: semver
|
||||
version: 6.3.0
|
||||
version: 6.3.1
|
||||
type: npm
|
||||
summary: The semantic version parser used by npm.
|
||||
homepage:
|
||||
|
32
.licenses/npm/side-channel.dep.yml
generated
32
.licenses/npm/side-channel.dep.yml
generated
@ -1,32 +0,0 @@
|
||||
---
|
||||
name: side-channel
|
||||
version: 1.0.4
|
||||
type: npm
|
||||
summary: Store information about any JS value in a side channel. Uses WeakMap if available.
|
||||
homepage: https://github.com/ljharb/side-channel#readme
|
||||
license: mit
|
||||
licenses:
|
||||
- sources: LICENSE
|
||||
text: |
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2019 Jordan Harband
|
||||
|
||||
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: []
|
30
.licenses/npm/tr46.dep.yml
generated
30
.licenses/npm/tr46.dep.yml
generated
@ -1,30 +0,0 @@
|
||||
---
|
||||
name: tr46
|
||||
version: 0.0.3
|
||||
type: npm
|
||||
summary: An implementation of the Unicode TR46 spec
|
||||
homepage: https://github.com/Sebmaster/tr46.js#readme
|
||||
license: mit
|
||||
licenses:
|
||||
- sources: Auto-generated MIT license text
|
||||
text: |
|
||||
MIT License
|
||||
|
||||
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: []
|
945
.licenses/npm/typed-rest-client.dep.yml
generated
945
.licenses/npm/typed-rest-client.dep.yml
generated
@ -1,945 +0,0 @@
|
||||
---
|
||||
name: typed-rest-client
|
||||
version: 1.8.6
|
||||
type: npm
|
||||
summary: Node Rest and Http Clients for use with TypeScript
|
||||
homepage: https://github.com/Microsoft/typed-rest-client#readme
|
||||
license: mit
|
||||
licenses:
|
||||
- sources: LICENSE
|
||||
text: |
|
||||
Typed Rest Client for Node.js
|
||||
|
||||
Copyright (c) Microsoft Corporation
|
||||
|
||||
All rights reserved.
|
||||
|
||||
MIT License
|
||||
|
||||
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.
|
||||
|
||||
|
||||
/* Node-SMB/ntlm
|
||||
* https://github.com/Node-SMB/ntlm
|
||||
* Permission to use, copy, modify, and/or distribute this software for any
|
||||
* purpose with or without fee is hereby granted, provided that the above
|
||||
* copyright notice and this permission notice appear in all copies.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
|
||||
* WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
|
||||
* MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
|
||||
* WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
|
||||
* ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
* OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*
|
||||
* Copyright (C) 2012 Joshua M. Clulow <josh@sysmgr.org>
|
||||
*/
|
||||
notices:
|
||||
- sources: ThirdPartyNotice.txt
|
||||
text: "\nTHIRD-PARTY SOFTWARE NOTICES AND INFORMATION\nDo Not Translate or Localize\n\nThis
|
||||
Visual Studio Team Services extension (vsts-task-lib) is based on or incorporates
|
||||
material from the projects listed below (Third Party IP). The original copyright
|
||||
notice and the license under which Microsoft received such Third Party IP, are
|
||||
set forth below. Such licenses and notices are provided for informational purposes
|
||||
only. Microsoft licenses the Third Party IP to you under the licensing terms for
|
||||
the Visual Studio Team Services extension. Microsoft reserves all other rights
|
||||
not expressly granted under this agreement, whether by implication, estoppel or
|
||||
otherwise.\n\n1.\t@types/glob (https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)\n2.\t@types/minimatch
|
||||
(https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)\n3.\t@types/mocha
|
||||
(https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)\n4.\t@types/node
|
||||
(https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)\n5.\t@types/shelljs
|
||||
(https://www.github.com/DefinitelyTyped/DefinitelyTyped.git)\n6.\tbalanced-match
|
||||
(git://github.com/juliangruber/balanced-match.git)\n7.\tbrace-expansion (git://github.com/juliangruber/brace-expansion.git)\n8.\tbrowser-stdout
|
||||
(git+ssh://git@github.com/kumavis/browser-stdout.git)\n9.\tcommander (git+https://github.com/tj/commander.js.git)\n10.\tconcat-map
|
||||
(git://github.com/substack/node-concat-map.git)\n11.\tdebug (git://github.com/visionmedia/debug.git)\n12.\tdiff
|
||||
(git://github.com/kpdecker/jsdiff.git)\n13.\tescape-string-regexp (git+https://github.com/sindresorhus/escape-string-regexp.git)\n14.\tfs.realpath
|
||||
(git+https://github.com/isaacs/fs.realpath.git)\n15.\tglob (git://github.com/isaacs/node-glob.git)\n16.\tgraceful-readlink
|
||||
(git://github.com/zhiyelee/graceful-readlink.git)\n17.\tgrowl (git://github.com/tj/node-growl.git)\n18.\thas-flag
|
||||
(git+https://github.com/sindresorhus/has-flag.git)\n19.\the (git+https://github.com/mathiasbynens/he.git)\n20.\tinflight
|
||||
(git+https://github.com/npm/inflight.git)\n21.\tinherits (git://github.com/isaacs/inherits.git)\n22.\tinterpret
|
||||
(git://github.com/tkellen/node-interpret.git)\n23.\tjson3 (git://github.com/bestiejs/json3.git)\n24.\tlodash.create
|
||||
(git+https://github.com/lodash/lodash.git)\n25.\tlodash.isarguments (git+https://github.com/lodash/lodash.git)\n26.\tlodash.isarray
|
||||
(git+https://github.com/lodash/lodash.git)\n27.\tlodash.keys (git+https://github.com/lodash/lodash.git)\n28.\tlodash._baseassign
|
||||
(git+https://github.com/lodash/lodash.git)\n29.\tlodash._basecopy (git+https://github.com/lodash/lodash.git)\n30.\tlodash._basecreate
|
||||
(git+https://github.com/lodash/lodash.git)\n31.\tlodash._getnative (git+https://github.com/lodash/lodash.git)\n32.\tlodash._isiterateecall
|
||||
(git+https://github.com/lodash/lodash.git)\n33.\tminimatch (git://github.com/isaacs/minimatch.git)\n34.\tminimist
|
||||
(git://github.com/substack/minimist.git)\n35.\tmkdirp (git+https://github.com/substack/node-mkdirp.git)\n36.\tmocha
|
||||
(git+https://github.com/mochajs/mocha.git)\n37.\tms (git+https://github.com/zeit/ms.git)\n38.\tonce
|
||||
(git://github.com/isaacs/once.git)\n39.\tpath-is-absolute (git+https://github.com/sindresorhus/path-is-absolute.git)\n40.\tpath-parse
|
||||
(git+https://github.com/jbgutierrez/path-parse.git)\n41.\trechoir (git://github.com/tkellen/node-rechoir.git)\n42.\tresolve
|
||||
(git://github.com/substack/node-resolve.git)\n43.\tsemver (git://github.com/npm/node-semver.git)\n44.\tshelljs
|
||||
(git://github.com/shelljs/shelljs.git)\n45.\tsupports-color (git+https://github.com/chalk/supports-color.git)\n46.\ttunnel
|
||||
(git+https://github.com/koichik/node-tunnel.git)\n47.\ttypescript (git+https://github.com/Microsoft/TypeScript.git)\n48.\tunderscore
|
||||
(git://github.com/jashkenas/underscore.git)\n49.\twrappy (git+https://github.com/npm/wrappy.git)\n\n\n%%
|
||||
@types/glob NOTICES, INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nMIT
|
||||
License\n\n Copyright (c) Microsoft Corporation. All rights reserved.\n\n Permission
|
||||
is hereby granted, free of charge, to any person obtaining a copy\n of this
|
||||
software and associated documentation files (the \"Software\"), to deal\n in
|
||||
the Software without restriction, including without limitation the rights\n to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies
|
||||
of the Software, and to permit persons to whom the Software is\n furnished
|
||||
to do so, subject to the following conditions:\n\n The above copyright notice
|
||||
and this permission notice shall be included in all\n copies or substantial
|
||||
portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
||||
OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE\n SOFTWARE\n=========================================\nEND
|
||||
OF @types/glob NOTICES, INFORMATION, AND LICENSE\n\n%% @types/minimatch NOTICES,
|
||||
INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nMIT
|
||||
License\n\n Copyright (c) Microsoft Corporation. All rights reserved.\n\n Permission
|
||||
is hereby granted, free of charge, to any person obtaining a copy\n of this
|
||||
software and associated documentation files (the \"Software\"), to deal\n in
|
||||
the Software without restriction, including without limitation the rights\n to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies
|
||||
of the Software, and to permit persons to whom the Software is\n furnished
|
||||
to do so, subject to the following conditions:\n\n The above copyright notice
|
||||
and this permission notice shall be included in all\n copies or substantial
|
||||
portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
||||
OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE\n SOFTWARE\n=========================================\nEND
|
||||
OF @types/minimatch NOTICES, INFORMATION, AND LICENSE\n\n%% @types/mocha NOTICES,
|
||||
INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nMIT
|
||||
License\n\n Copyright (c) Microsoft Corporation. All rights reserved.\n\n Permission
|
||||
is hereby granted, free of charge, to any person obtaining a copy\n of this
|
||||
software and associated documentation files (the \"Software\"), to deal\n in
|
||||
the Software without restriction, including without limitation the rights\n to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies
|
||||
of the Software, and to permit persons to whom the Software is\n furnished
|
||||
to do so, subject to the following conditions:\n\n The above copyright notice
|
||||
and this permission notice shall be included in all\n copies or substantial
|
||||
portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
||||
OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE\n SOFTWARE\n=========================================\nEND
|
||||
OF @types/mocha NOTICES, INFORMATION, AND LICENSE\n\n%% @types/node NOTICES, INFORMATION,
|
||||
AND LICENSE BEGIN HERE\n=========================================\nMIT License\n\n
|
||||
\ Copyright (c) Microsoft Corporation. All rights reserved.\n\n Permission
|
||||
is hereby granted, free of charge, to any person obtaining a copy\n of this
|
||||
software and associated documentation files (the \"Software\"), to deal\n in
|
||||
the Software without restriction, including without limitation the rights\n to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies
|
||||
of the Software, and to permit persons to whom the Software is\n furnished
|
||||
to do so, subject to the following conditions:\n\n The above copyright notice
|
||||
and this permission notice shall be included in all\n copies or substantial
|
||||
portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
||||
OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE\n SOFTWARE\n=========================================\nEND
|
||||
OF @types/node NOTICES, INFORMATION, AND LICENSE\n\n%% @types/shelljs NOTICES,
|
||||
INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nMIT
|
||||
License\n\n Copyright (c) Microsoft Corporation. All rights reserved.\n\n Permission
|
||||
is hereby granted, free of charge, to any person obtaining a copy\n of this
|
||||
software and associated documentation files (the \"Software\"), to deal\n in
|
||||
the Software without restriction, including without limitation the rights\n to
|
||||
use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n copies
|
||||
of the Software, and to permit persons to whom the Software is\n furnished
|
||||
to do so, subject to the following conditions:\n\n The above copyright notice
|
||||
and this permission notice shall be included in all\n copies or substantial
|
||||
portions of the Software.\n\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
||||
OF ANY KIND, EXPRESS OR\n IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY,\n FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE\n AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER\n LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM,\n OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE\n SOFTWARE\n=========================================\nEND
|
||||
OF @types/shelljs NOTICES, INFORMATION, AND LICENSE\n\n%% balanced-match NOTICES,
|
||||
INFORMATION, AND LICENSE BEGIN HERE\n=========================================\n(MIT)\n\nCopyright
|
||||
(c) 2013 Julian Gruber <julian@juliangruber.com>\n\nPermission is hereby
|
||||
granted, free of charge, to any person obtaining a copy of\nthis software and
|
||||
associated documentation files (the \"Software\"), to deal in\nthe Software without
|
||||
restriction, including without limitation the rights to\nuse, copy, modify, merge,
|
||||
publish, distribute, sublicense, and/or sell copies\nof the Software, and to permit
|
||||
persons to whom the Software is furnished to do\nso, subject to the following
|
||||
conditions:\n\nThe above copyright notice and this permission notice shall be
|
||||
included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE
|
||||
IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING
|
||||
BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR
|
||||
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS
|
||||
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF
|
||||
CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||
OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n=========================================\nEND
|
||||
OF balanced-match NOTICES, INFORMATION, AND LICENSE\n\n%% brace-expansion NOTICES,
|
||||
INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nNo
|
||||
license text available.\n=========================================\nEND OF brace-expansion
|
||||
NOTICES, INFORMATION, AND LICENSE\n\n%% browser-stdout NOTICES, INFORMATION, AND
|
||||
LICENSE BEGIN HERE\n=========================================\nNo license text
|
||||
available.\n=========================================\nEND OF browser-stdout NOTICES,
|
||||
INFORMATION, AND LICENSE\n\n%% commander NOTICES, INFORMATION, AND LICENSE BEGIN
|
||||
HERE\n=========================================\n(The MIT License)\n\nCopyright
|
||||
(c) 2011 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted,
|
||||
free of charge, to any person obtaining\na copy of this software and associated
|
||||
documentation files (the\n'Software'), to deal in the Software without restriction,
|
||||
including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute,
|
||||
sublicense, and/or sell copies of the Software, and to\npermit persons to whom
|
||||
the Software is furnished to do so, subject to\nthe following conditions:\n\nThe
|
||||
above copyright notice and this permission notice shall be\nincluded in all copies
|
||||
or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS',
|
||||
WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO
|
||||
THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN
|
||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES
|
||||
OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\nTORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.\n=========================================\nEND OF commander
|
||||
NOTICES, INFORMATION, AND LICENSE\n\n%% concat-map NOTICES, INFORMATION, AND LICENSE
|
||||
BEGIN HERE\n=========================================\nThis software is released
|
||||
under the MIT license:\n\nPermission is hereby granted, free of charge, to any
|
||||
person obtaining a copy of\nthis software and associated documentation files (the
|
||||
\"Software\"), to deal in\nthe Software without restriction, including without
|
||||
limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of\nthe Software, and to permit persons to whom the Software
|
||||
is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright
|
||||
notice and this permission notice shall be included in all\ncopies or substantial
|
||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
||||
OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
||||
NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
|
||||
OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.\n=========================================\nEND OF concat-map
|
||||
NOTICES, INFORMATION, AND LICENSE\n\n%% debug NOTICES, INFORMATION, AND LICENSE
|
||||
BEGIN HERE\n=========================================\n(The MIT License)\n\nCopyright
|
||||
(c) 2014 TJ Holowaychuk <tj@vision-media.ca>\n\nPermission is hereby granted,
|
||||
free of charge, to any person obtaining a copy of this software \nand associated
|
||||
documentation files (the 'Software'), to deal in the Software without restriction,
|
||||
\nincluding without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, \nand/or sell copies of the Software, and to permit persons
|
||||
to whom the Software is furnished to do so,\nsubject to the following conditions:\n\nThe
|
||||
above copyright notice and this permission notice shall be included in all copies
|
||||
or substantial \nportions of the Software.\n\nTHE SOFTWARE IS PROVIDED 'AS IS',
|
||||
WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT \nLIMITED
|
||||
TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
|
||||
DAMAGES OR OTHER LIABILITY, \nWHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
||||
ARISING FROM, OUT OF OR IN CONNECTION WITH THE \nSOFTWARE OR THE USE OR OTHER
|
||||
DEALINGS IN THE SOFTWARE.\n=========================================\nEND OF debug
|
||||
NOTICES, INFORMATION, AND LICENSE\n\n%% diff NOTICES, INFORMATION, AND LICENSE
|
||||
BEGIN HERE\n=========================================\nSoftware License Agreement
|
||||
(BSD License)\n\nCopyright (c) 2009-2015, Kevin Decker <kpdecker@gmail.com>\n\nAll
|
||||
rights reserved.\n\nRedistribution and use of this software in source and binary
|
||||
forms, with or without modification,\nare permitted provided that the following
|
||||
conditions are met:\n\n* Redistributions of source code must retain the above\n
|
||||
\ copyright notice, this list of conditions and the\n following disclaimer.\n\n*
|
||||
Redistributions in binary form must reproduce the above\n copyright notice, this
|
||||
list of conditions and the\n following disclaimer in the documentation and/or
|
||||
other\n materials provided with the distribution.\n\n* Neither the name of Kevin
|
||||
Decker nor the names of its\n contributors may be used to endorse or promote
|
||||
products\n derived from this software without specific prior\n written permission.\n\nTHIS
|
||||
SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS IS\" AND ANY
|
||||
EXPRESS OR\nIMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
|
||||
OF MERCHANTABILITY AND\nFITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
|
||||
EVENT SHALL THE COPYRIGHT OWNER OR\nCONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,\nDATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
WHETHER\nIN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT\nOF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
OF SUCH DAMAGE.\n=========================================\nEND OF diff NOTICES,
|
||||
INFORMATION, AND LICENSE\n\n%% escape-string-regexp NOTICES, INFORMATION, AND
|
||||
LICENSE BEGIN HERE\n=========================================\nThe MIT License
|
||||
(MIT)\n\nCopyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission
|
||||
is hereby granted, free of charge, to any person obtaining a copy\nof this software
|
||||
and associated documentation files (the \"Software\"), to deal\nin the Software
|
||||
without restriction, including without limitation the rights\nto use, copy, modify,
|
||||
merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and
|
||||
to permit persons to whom the Software is\nfurnished to do so, subject to the
|
||||
following conditions:\n\nThe above copyright notice and this permission notice
|
||||
shall be included in\nall copies or substantial portions of the Software.\n\nTHE
|
||||
SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A
|
||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n=========================================\nEND
|
||||
OF escape-string-regexp NOTICES, INFORMATION, AND LICENSE\n\n%% fs.realpath NOTICES,
|
||||
INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nThe
|
||||
ISC License\n\nCopyright (c) Isaac Z. Schlueter and Contributors\n\nPermission
|
||||
to use, copy, modify, and/or distribute this software for any\npurpose with or
|
||||
without fee is hereby granted, provided that the above\ncopyright notice and this
|
||||
permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\"
|
||||
AND THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING
|
||||
ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
||||
AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
|
||||
OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
|
||||
IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
OR\nIN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\n----\n\nThis
|
||||
library bundles a version of the `fs.realpath` and `fs.realpathSync`\nmethods
|
||||
from Node.js v0.10 under the terms of the Node.js MIT license.\n\nNode's license
|
||||
follows, also included at the header of `old.js` which contains\nthe licensed
|
||||
code:\n\n Copyright Joyent, Inc. and other Node contributors.\n\n Permission
|
||||
is hereby granted, free of charge, to any person obtaining a\n copy of this software
|
||||
and associated documentation files (the \"Software\"),\n to deal in the Software
|
||||
without restriction, including without limitation\n the rights to use, copy,
|
||||
modify, merge, publish, distribute, sublicense,\n and/or sell copies of the Software,
|
||||
and to permit persons to whom the\n Software is furnished to do so, subject to
|
||||
the following conditions:\n\n The above copyright notice and this permission
|
||||
notice shall be included in\n all copies or substantial portions of the Software.\n\n
|
||||
\ THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n
|
||||
\ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n AUTHORS
|
||||
OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n LIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER\n DEALINGS IN THE SOFTWARE.\n=========================================\nEND
|
||||
OF fs.realpath NOTICES, INFORMATION, AND LICENSE\n\n%% glob NOTICES, INFORMATION,
|
||||
AND LICENSE BEGIN HERE\n=========================================\nThe ISC License\n\nCopyright
|
||||
(c) Isaac Z. Schlueter and Contributors\n\nPermission to use, copy, modify, and/or
|
||||
distribute this software for any\npurpose with or without fee is hereby granted,
|
||||
provided that the above\ncopyright notice and this permission notice appear in
|
||||
all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL
|
||||
WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY
|
||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS
|
||||
OF USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
TORTIOUS ACTION, ARISING OUT OF OR\nIN CONNECTION WITH THE USE OR PERFORMANCE
|
||||
OF THIS SOFTWARE.\n=========================================\nEND OF glob NOTICES,
|
||||
INFORMATION, AND LICENSE\n\n%% graceful-readlink NOTICES, INFORMATION, AND LICENSE
|
||||
BEGIN HERE\n=========================================\nThe MIT License (MIT)\n\nCopyright
|
||||
(c) 2015 Zhiye Li\n\nPermission is hereby granted, free of charge, to any person
|
||||
obtaining a copy\nof this software and associated documentation files (the \"Software\"),
|
||||
to deal\nin the Software without restriction, including without limitation the
|
||||
rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies
|
||||
of the Software, and to permit persons to whom the Software is\nfurnished to do
|
||||
so, subject to the following conditions:\n\nThe above copyright notice and this
|
||||
permission notice shall be included in all\ncopies or substantial portions of
|
||||
the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n=========================================\nEND
|
||||
OF graceful-readlink NOTICES, INFORMATION, AND LICENSE\n\n%% growl NOTICES, INFORMATION,
|
||||
AND LICENSE BEGIN HERE\n=========================================\nNo license
|
||||
text available.\n=========================================\nEND OF growl NOTICES,
|
||||
INFORMATION, AND LICENSE\n\n%% has-flag NOTICES, INFORMATION, AND LICENSE BEGIN
|
||||
HERE\n=========================================\nThe MIT License (MIT)\n\nCopyright
|
||||
(c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is
|
||||
hereby granted, free of charge, to any person obtaining a copy\nof this software
|
||||
and associated documentation files (the \"Software\"), to deal\nin the Software
|
||||
without restriction, including without limitation the rights\nto use, copy, modify,
|
||||
merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and
|
||||
to permit persons to whom the Software is\nfurnished to do so, subject to the
|
||||
following conditions:\n\nThe above copyright notice and this permission notice
|
||||
shall be included in\nall copies or substantial portions of the Software.\n\nTHE
|
||||
SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A
|
||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n=========================================\nEND
|
||||
OF has-flag NOTICES, INFORMATION, AND LICENSE\n\n%% he NOTICES, INFORMATION, AND
|
||||
LICENSE BEGIN HERE\n=========================================\nCopyright Mathias
|
||||
Bynens <https://mathiasbynens.be/>\n\nPermission is hereby granted, free of charge,
|
||||
to any person obtaining\na copy of this software and associated documentation
|
||||
files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout
|
||||
limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense,
|
||||
and/or sell copies of the Software, and to\npermit persons to whom the Software
|
||||
is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright
|
||||
notice and this permission notice shall be\nincluded in all copies or substantial
|
||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
||||
OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN
|
||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES
|
||||
OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.\n=========================================\nEND OF he NOTICES,
|
||||
INFORMATION, AND LICENSE\n\n%% inflight NOTICES, INFORMATION, AND LICENSE BEGIN
|
||||
HERE\n=========================================\nThe ISC License\n\nCopyright
|
||||
(c) Isaac Z. Schlueter\n\nPermission to use, copy, modify, and/or distribute this
|
||||
software for any\npurpose with or without fee is hereby granted, provided that
|
||||
the above\ncopyright notice and this permission notice appear in all copies.\n\nTHE
|
||||
SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD
|
||||
TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS.
|
||||
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, INDIRECT, OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA
|
||||
OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
|
||||
ARISING OUT OF OR\nIN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n=========================================\nEND
|
||||
OF inflight NOTICES, INFORMATION, AND LICENSE\n\n%% inherits NOTICES, INFORMATION,
|
||||
AND LICENSE BEGIN HERE\n=========================================\nThe ISC License\n\nCopyright
|
||||
(c) Isaac Z. Schlueter\n\nPermission to use, copy, modify, and/or distribute this
|
||||
software for any\npurpose with or without fee is hereby granted, provided that
|
||||
the above\ncopyright notice and this permission notice appear in all copies.\n\nTHE
|
||||
SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD
|
||||
TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND\nFITNESS.
|
||||
IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR
|
||||
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA
|
||||
OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION,
|
||||
ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n=========================================\nEND
|
||||
OF inherits NOTICES, INFORMATION, AND LICENSE\n\n%% interpret NOTICES, INFORMATION,
|
||||
AND LICENSE BEGIN HERE\n=========================================\nCopyright (c)
|
||||
2014 Tyler Kellen\n\nPermission is hereby granted, free of charge, to any person\nobtaining
|
||||
a copy of this software and associated documentation\nfiles (the \"Software\"),
|
||||
to deal in the Software without\nrestriction, including without limitation the
|
||||
rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies
|
||||
of the Software, and to permit persons to whom the\nSoftware is furnished to do
|
||||
so, subject to the following\nconditions:\n\nThe above copyright notice and this
|
||||
permission notice shall be\nincluded in all copies or substantial portions of
|
||||
the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n=========================================\nEND
|
||||
OF interpret NOTICES, INFORMATION, AND LICENSE\n\n%% json3 NOTICES, INFORMATION,
|
||||
AND LICENSE BEGIN HERE\n=========================================\nCopyright (c)
|
||||
2012-2014 Kit Cambridge.\nhttp://kitcambridge.be/\n\nPermission is hereby granted,
|
||||
free of charge, to any person obtaining a copy of\nthis software and associated
|
||||
documentation files (the \"Software\"), to deal in\nthe Software without restriction,
|
||||
including without limitation the rights to\nuse, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies\nof the Software, and to permit persons
|
||||
to whom the Software is furnished to do\nso, subject to the following conditions:\n\nThe
|
||||
above copyright notice and this permission notice shall be included in all\ncopies
|
||||
or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\",
|
||||
WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO
|
||||
THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
|
||||
OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE\nSOFTWARE.\n=========================================\nEND OF json3 NOTICES,
|
||||
INFORMATION, AND LICENSE\n\n%% lodash.create NOTICES, INFORMATION, AND LICENSE
|
||||
BEGIN HERE\n=========================================\nCopyright 2012-2015 The
|
||||
Dojo Foundation <http://dojofoundation.org/>\nBased on Underscore.js, copyright
|
||||
2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors
|
||||
<http://underscorejs.org/>\n\nPermission is hereby granted, free of charge, to
|
||||
any person obtaining\na copy of this software and associated documentation files
|
||||
(the\n\"Software\"), to deal in the Software without restriction, including\nwithout
|
||||
limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense,
|
||||
and/or sell copies of the Software, and to\npermit persons to whom the Software
|
||||
is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright
|
||||
notice and this permission notice shall be\nincluded in all copies or substantial
|
||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
||||
OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN
|
||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES
|
||||
OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.\n=========================================\nEND OF lodash.create
|
||||
NOTICES, INFORMATION, AND LICENSE\n\n%% lodash.isarguments NOTICES, INFORMATION,
|
||||
AND LICENSE BEGIN HERE\n=========================================\nCopyright jQuery
|
||||
Foundation and other contributors <https://jquery.org/>\n\nBased on Underscore.js,
|
||||
copyright Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors
|
||||
<http://underscorejs.org/>\n\nThis software consists of voluntary contributions
|
||||
made by many\nindividuals. For exact contribution history, see the revision history\navailable
|
||||
at https://github.com/lodash/lodash\n\nThe following license applies to all parts
|
||||
of this software except as\ndocumented below:\n\n====\n\nPermission is hereby
|
||||
granted, free of charge, to any person obtaining\na copy of this software and
|
||||
associated documentation files (the\n\"Software\"), to deal in the Software without
|
||||
restriction, including\nwithout limitation the rights to use, copy, modify, merge,
|
||||
publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit
|
||||
persons to whom the Software is furnished to do so, subject to\nthe following
|
||||
conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded
|
||||
in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED
|
||||
\"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT
|
||||
LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
|
||||
AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE
|
||||
FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT,
|
||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR
|
||||
THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n====\n\nCopyright and related rights
|
||||
for sample code are waived via CC0. Sample\ncode is defined as all source code
|
||||
displayed within the prose of the\ndocumentation.\n\nCC0: http://creativecommons.org/publicdomain/zero/1.0/\n\n====\n\nFiles
|
||||
located in the node_modules and vendor directories are externally\nmaintained
|
||||
libraries used by this software which have their own\nlicenses; we recommend you
|
||||
read them, as their terms may differ from the\nterms above.\n=========================================\nEND
|
||||
OF lodash.isarguments NOTICES, INFORMATION, AND LICENSE\n\n%% lodash.isarray NOTICES,
|
||||
INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nCopyright
|
||||
2012-2015 The Dojo Foundation <http://dojofoundation.org/>\nBased on Underscore.js,
|
||||
copyright 2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters
|
||||
& Editors <http://underscorejs.org/>\n\nPermission is hereby granted, free of
|
||||
charge, to any person obtaining\na copy of this software and associated documentation
|
||||
files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout
|
||||
limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense,
|
||||
and/or sell copies of the Software, and to\npermit persons to whom the Software
|
||||
is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright
|
||||
notice and this permission notice shall be\nincluded in all copies or substantial
|
||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
||||
OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN
|
||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES
|
||||
OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.\n=========================================\nEND OF lodash.isarray
|
||||
NOTICES, INFORMATION, AND LICENSE\n\n%% lodash.keys NOTICES, INFORMATION, AND
|
||||
LICENSE BEGIN HERE\n=========================================\nCopyright 2012-2015
|
||||
The Dojo Foundation <http://dojofoundation.org/>\nBased on Underscore.js, copyright
|
||||
2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors
|
||||
<http://underscorejs.org/>\n\nPermission is hereby granted, free of charge, to
|
||||
any person obtaining\na copy of this software and associated documentation files
|
||||
(the\n\"Software\"), to deal in the Software without restriction, including\nwithout
|
||||
limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense,
|
||||
and/or sell copies of the Software, and to\npermit persons to whom the Software
|
||||
is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright
|
||||
notice and this permission notice shall be\nincluded in all copies or substantial
|
||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
||||
OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN
|
||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES
|
||||
OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.\n=========================================\nEND OF lodash.keys
|
||||
NOTICES, INFORMATION, AND LICENSE\n\n%% lodash._baseassign NOTICES, INFORMATION,
|
||||
AND LICENSE BEGIN HERE\n=========================================\nCopyright 2012-2015
|
||||
The Dojo Foundation <http://dojofoundation.org/>\nBased on Underscore.js, copyright
|
||||
2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors
|
||||
<http://underscorejs.org/>\n\nPermission is hereby granted, free of charge, to
|
||||
any person obtaining\na copy of this software and associated documentation files
|
||||
(the\n\"Software\"), to deal in the Software without restriction, including\nwithout
|
||||
limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense,
|
||||
and/or sell copies of the Software, and to\npermit persons to whom the Software
|
||||
is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright
|
||||
notice and this permission notice shall be\nincluded in all copies or substantial
|
||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
||||
OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN
|
||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES
|
||||
OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.\n=========================================\nEND OF lodash._baseassign
|
||||
NOTICES, INFORMATION, AND LICENSE\n\n%% lodash._basecopy NOTICES, INFORMATION,
|
||||
AND LICENSE BEGIN HERE\n=========================================\nCopyright 2012-2015
|
||||
The Dojo Foundation <http://dojofoundation.org/>\nBased on Underscore.js, copyright
|
||||
2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors
|
||||
<http://underscorejs.org/>\n\nPermission is hereby granted, free of charge, to
|
||||
any person obtaining\na copy of this software and associated documentation files
|
||||
(the\n\"Software\"), to deal in the Software without restriction, including\nwithout
|
||||
limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense,
|
||||
and/or sell copies of the Software, and to\npermit persons to whom the Software
|
||||
is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright
|
||||
notice and this permission notice shall be\nincluded in all copies or substantial
|
||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
||||
OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN
|
||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES
|
||||
OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.\n=========================================\nEND OF lodash._basecopy
|
||||
NOTICES, INFORMATION, AND LICENSE\n\n%% lodash._basecreate NOTICES, INFORMATION,
|
||||
AND LICENSE BEGIN HERE\n=========================================\nCopyright 2012-2015
|
||||
The Dojo Foundation <http://dojofoundation.org/>\nBased on Underscore.js, copyright
|
||||
2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors
|
||||
<http://underscorejs.org/>\n\nPermission is hereby granted, free of charge, to
|
||||
any person obtaining\na copy of this software and associated documentation files
|
||||
(the\n\"Software\"), to deal in the Software without restriction, including\nwithout
|
||||
limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense,
|
||||
and/or sell copies of the Software, and to\npermit persons to whom the Software
|
||||
is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright
|
||||
notice and this permission notice shall be\nincluded in all copies or substantial
|
||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
||||
OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN
|
||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES
|
||||
OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.\n=========================================\nEND OF lodash._basecreate
|
||||
NOTICES, INFORMATION, AND LICENSE\n\n%% lodash._getnative NOTICES, INFORMATION,
|
||||
AND LICENSE BEGIN HERE\n=========================================\nCopyright 2012-2015
|
||||
The Dojo Foundation <http://dojofoundation.org/>\nBased on Underscore.js, copyright
|
||||
2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors
|
||||
<http://underscorejs.org/>\n\nPermission is hereby granted, free of charge, to
|
||||
any person obtaining\na copy of this software and associated documentation files
|
||||
(the\n\"Software\"), to deal in the Software without restriction, including\nwithout
|
||||
limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense,
|
||||
and/or sell copies of the Software, and to\npermit persons to whom the Software
|
||||
is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright
|
||||
notice and this permission notice shall be\nincluded in all copies or substantial
|
||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
||||
OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN
|
||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES
|
||||
OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.\n=========================================\nEND OF lodash._getnative
|
||||
NOTICES, INFORMATION, AND LICENSE\n\n%% lodash._isiterateecall NOTICES, INFORMATION,
|
||||
AND LICENSE BEGIN HERE\n=========================================\nCopyright 2012-2015
|
||||
The Dojo Foundation <http://dojofoundation.org/>\nBased on Underscore.js, copyright
|
||||
2009-2015 Jeremy Ashkenas,\nDocumentCloud and Investigative Reporters & Editors
|
||||
<http://underscorejs.org/>\n\nPermission is hereby granted, free of charge, to
|
||||
any person obtaining\na copy of this software and associated documentation files
|
||||
(the\n\"Software\"), to deal in the Software without restriction, including\nwithout
|
||||
limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense,
|
||||
and/or sell copies of the Software, and to\npermit persons to whom the Software
|
||||
is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright
|
||||
notice and this permission notice shall be\nincluded in all copies or substantial
|
||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
||||
OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN
|
||||
NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES
|
||||
OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.\n=========================================\nEND OF lodash._isiterateecall
|
||||
NOTICES, INFORMATION, AND LICENSE\n\n%% minimatch NOTICES, INFORMATION, AND LICENSE
|
||||
BEGIN HERE\n=========================================\nThe ISC License\n\nCopyright
|
||||
(c) Isaac Z. Schlueter and Contributors\n\nPermission to use, copy, modify, and/or
|
||||
distribute this software for any\npurpose with or without fee is hereby granted,
|
||||
provided that the above\ncopyright notice and this permission notice appear in
|
||||
all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL
|
||||
WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY
|
||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS
|
||||
OF USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
TORTIOUS ACTION, ARISING OUT OF OR\nIN CONNECTION WITH THE USE OR PERFORMANCE
|
||||
OF THIS SOFTWARE.\n=========================================\nEND OF minimatch
|
||||
NOTICES, INFORMATION, AND LICENSE\n\n%% minimist NOTICES, INFORMATION, AND LICENSE
|
||||
BEGIN HERE\n=========================================\nThis software is released
|
||||
under the MIT license:\n\nPermission is hereby granted, free of charge, to any
|
||||
person obtaining a copy of\nthis software and associated documentation files (the
|
||||
\"Software\"), to deal in\nthe Software without restriction, including without
|
||||
limitation the rights to\nuse, copy, modify, merge, publish, distribute, sublicense,
|
||||
and/or sell copies of\nthe Software, and to permit persons to whom the Software
|
||||
is furnished to do so,\nsubject to the following conditions:\n\nThe above copyright
|
||||
notice and this permission notice shall be included in all\ncopies or substantial
|
||||
portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY
|
||||
OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
|
||||
OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
|
||||
NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
|
||||
OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.\n=========================================\nEND OF minimist NOTICES,
|
||||
INFORMATION, AND LICENSE\n\n%% mkdirp NOTICES, INFORMATION, AND LICENSE BEGIN
|
||||
HERE\n=========================================\nCopyright 2010 James Halliday
|
||||
(mail@substack.net)\n\nThis project is free software released under the MIT/X11
|
||||
license:\n\nPermission is hereby granted, free of charge, to any person obtaining
|
||||
a copy\nof this software and associated documentation files (the \"Software\"),
|
||||
to deal\nin the Software without restriction, including without limitation the
|
||||
rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies
|
||||
of the Software, and to permit persons to whom the Software is\nfurnished to do
|
||||
so, subject to the following conditions:\n\nThe above copyright notice and this
|
||||
permission notice shall be included in\nall copies or substantial portions of
|
||||
the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS
|
||||
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR
|
||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n=========================================\nEND
|
||||
OF mkdirp NOTICES, INFORMATION, AND LICENSE\n\n%% mocha NOTICES, INFORMATION,
|
||||
AND LICENSE BEGIN HERE\n=========================================\n(The MIT License)\n\nCopyright
|
||||
(c) 2011-2017 JS Foundation and contributors, https://js.foundation\n\nPermission
|
||||
is hereby granted, free of charge, to any person obtaining\na copy of this software
|
||||
and associated documentation files (the\n'Software'), to deal in the Software
|
||||
without restriction, including\nwithout limitation the rights to use, copy, modify,
|
||||
merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and
|
||||
to\npermit persons to whom the Software is furnished to do so, subject to\nthe
|
||||
following conditions:\n\nThe above copyright notice and this permission notice
|
||||
shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE
|
||||
SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A
|
||||
PARTICULAR PURPOSE AND NONINFRINGEMENT.\nIN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY\nCLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT,\nTORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\nSOFTWARE
|
||||
OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n=========================================\nEND
|
||||
OF mocha NOTICES, INFORMATION, AND LICENSE\n\n%% ms NOTICES, INFORMATION, AND
|
||||
LICENSE BEGIN HERE\n=========================================\nThe MIT License
|
||||
(MIT)\n\nCopyright (c) 2016 Zeit, Inc.\n\nPermission is hereby granted, free of
|
||||
charge, to any person obtaining a copy\nof this software and associated documentation
|
||||
files (the \"Software\"), to deal\nin the Software without restriction, including
|
||||
without limitation the rights\nto use, copy, modify, merge, publish, distribute,
|
||||
sublicense, and/or sell\ncopies of the Software, and to permit persons to whom
|
||||
the Software is\nfurnished to do so, subject to the following conditions:\n\nThe
|
||||
above copyright notice and this permission notice shall be included in all\ncopies
|
||||
or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\",
|
||||
WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO
|
||||
THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
|
||||
OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE\nSOFTWARE.\n=========================================\nEND OF ms NOTICES,
|
||||
INFORMATION, AND LICENSE\n\n%% once NOTICES, INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nThe
|
||||
ISC License\n\nCopyright (c) Isaac Z. Schlueter and Contributors\n\nPermission
|
||||
to use, copy, modify, and/or distribute this software for any\npurpose with or
|
||||
without fee is hereby granted, provided that the above\ncopyright notice and this
|
||||
permission notice appear in all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\"
|
||||
AND THE AUTHOR DISCLAIMS ALL WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING
|
||||
ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE
|
||||
AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
|
||||
OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
|
||||
IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
|
||||
OR\nIN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n=========================================\nEND
|
||||
OF once NOTICES, INFORMATION, AND LICENSE\n\n%% path-is-absolute NOTICES, INFORMATION,
|
||||
AND LICENSE BEGIN HERE\n=========================================\nThe MIT License
|
||||
(MIT)\n\nCopyright (c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission
|
||||
is hereby granted, free of charge, to any person obtaining a copy\nof this software
|
||||
and associated documentation files (the \"Software\"), to deal\nin the Software
|
||||
without restriction, including without limitation the rights\nto use, copy, modify,
|
||||
merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and
|
||||
to permit persons to whom the Software is\nfurnished to do so, subject to the
|
||||
following conditions:\n\nThe above copyright notice and this permission notice
|
||||
shall be included in\nall copies or substantial portions of the Software.\n\nTHE
|
||||
SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A
|
||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n=========================================\nEND
|
||||
OF path-is-absolute NOTICES, INFORMATION, AND LICENSE\n\n%% path-parse NOTICES,
|
||||
INFORMATION, AND LICENSE BEGIN HERE\n=========================================\nNo
|
||||
license text available.\n=========================================\nEND OF path-parse
|
||||
NOTICES, INFORMATION, AND LICENSE\n\n%% rechoir NOTICES, INFORMATION, AND LICENSE
|
||||
BEGIN HERE\n=========================================\nCopyright (c) 2015 Tyler
|
||||
Kellen\n\nPermission is hereby granted, free of charge, to any person\nobtaining
|
||||
a copy of this software and associated documentation\nfiles (the \"Software\"),
|
||||
to deal in the Software without\nrestriction, including without limitation the
|
||||
rights to use,\ncopy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies
|
||||
of the Software, and to permit persons to whom the\nSoftware is furnished to do
|
||||
so, subject to the following\nconditions:\n\nThe above copyright notice and this
|
||||
permission notice shall be\nincluded in all copies or substantial portions of
|
||||
the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS
|
||||
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS
|
||||
FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
COPYRIGHT\nHOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER
|
||||
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n=========================================\nEND
|
||||
OF rechoir NOTICES, INFORMATION, AND LICENSE\n\n%% resolve NOTICES, INFORMATION,
|
||||
AND LICENSE BEGIN HERE\n=========================================\nThis software
|
||||
is released under the MIT license:\n\nPermission is hereby granted, free of charge,
|
||||
to any person obtaining a copy of\nthis software and associated documentation
|
||||
files (the \"Software\"), to deal in\nthe Software without restriction, including
|
||||
without limitation the rights to\nuse, copy, modify, merge, publish, distribute,
|
||||
sublicense, and/or sell copies of\nthe Software, and to permit persons to whom
|
||||
the Software is furnished to do so,\nsubject to the following conditions:\n\nThe
|
||||
above copyright notice and this permission notice shall be included in all\ncopies
|
||||
or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\",
|
||||
WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO
|
||||
THE WARRANTIES OF MERCHANTABILITY, FITNESS\nFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE AUTHORS OR\nCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
|
||||
OR OTHER LIABILITY, WHETHER\nIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF OR IN\nCONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN THE SOFTWARE.\n=========================================\nEND OF resolve NOTICES,
|
||||
INFORMATION, AND LICENSE\n\n%% semver NOTICES, INFORMATION, AND LICENSE BEGIN
|
||||
HERE\n=========================================\nCopyright (c) Isaac Z. Schlueter
|
||||
(\"Author\")\nAll rights reserved.\n\nThe BSD License\n\nRedistribution and use
|
||||
in source and binary forms, with or without\nmodification, are permitted provided
|
||||
that the following conditions\nare met:\n\n1. Redistributions of source code must
|
||||
retain the above copyright\n notice, this list of conditions and the following
|
||||
disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\n
|
||||
\ notice, this list of conditions and the following disclaimer in the\n documentation
|
||||
and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED
|
||||
BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND\nANY EXPRESS OR IMPLIED WARRANTIES,
|
||||
INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND
|
||||
FITNESS FOR A PARTICULAR\nPURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR
|
||||
OR CONTRIBUTORS\nBE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY,
|
||||
OR\nCONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF\nSUBSTITUTE
|
||||
GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR\nBUSINESS INTERRUPTION) HOWEVER
|
||||
CAUSED AND ON ANY THEORY OF LIABILITY,\nWHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
OR TORT (INCLUDING NEGLIGENCE\nOR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
OF THIS SOFTWARE, EVEN\nIF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n=========================================\nEND
|
||||
OF semver NOTICES, INFORMATION, AND LICENSE\n\n%% shelljs NOTICES, INFORMATION,
|
||||
AND LICENSE BEGIN HERE\n=========================================\nCopyright (c)
|
||||
2012, Artur Adib <arturadib@gmail.com>\nAll rights reserved.\n\nYou may use this
|
||||
project under the terms of the New BSD license as follows:\n\nRedistribution and
|
||||
use in source and binary forms, with or without\nmodification, are permitted provided
|
||||
that the following conditions are met:\n * Redistributions of source code must
|
||||
retain the above copyright\n notice, this list of conditions and the following
|
||||
disclaimer.\n * Redistributions in binary form must reproduce the above copyright\n
|
||||
\ notice, this list of conditions and the following disclaimer in the\n documentation
|
||||
and/or other materials provided with the distribution.\n * Neither the name
|
||||
of Artur Adib nor the\n names of the contributors may be used to endorse
|
||||
or promote products\n derived from this software without specific prior written
|
||||
permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
\"AS IS\" \nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
TO, THE \nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
\nARE DISCLAIMED. IN NO EVENT SHALL ARTUR ADIB BE LIABLE FOR ANY\nDIRECT, INDIRECT,
|
||||
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES\n(INCLUDING, BUT NOT
|
||||
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;\nLOSS OF USE, DATA, OR
|
||||
PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND\nON ANY THEORY OF LIABILITY,
|
||||
WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\n(INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
ARISING IN ANY WAY OUT OF THE USE OF \nTHIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY
|
||||
OF SUCH DAMAGE.\n=========================================\nEND OF shelljs NOTICES,
|
||||
INFORMATION, AND LICENSE\n\n%% supports-color NOTICES, INFORMATION, AND LICENSE
|
||||
BEGIN HERE\n=========================================\nThe MIT License (MIT)\n\nCopyright
|
||||
(c) Sindre Sorhus <sindresorhus@gmail.com> (sindresorhus.com)\n\nPermission is
|
||||
hereby granted, free of charge, to any person obtaining a copy\nof this software
|
||||
and associated documentation files (the \"Software\"), to deal\nin the Software
|
||||
without restriction, including without limitation the rights\nto use, copy, modify,
|
||||
merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and
|
||||
to permit persons to whom the Software is\nfurnished to do so, subject to the
|
||||
following conditions:\n\nThe above copyright notice and this permission notice
|
||||
shall be included in\nall copies or substantial portions of the Software.\n\nTHE
|
||||
SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A
|
||||
PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT
|
||||
HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE
|
||||
SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n=========================================\nEND
|
||||
OF supports-color NOTICES, INFORMATION, AND LICENSE\n\n%% tunnel NOTICES, INFORMATION,
|
||||
AND LICENSE BEGIN HERE\n=========================================\nThe MIT License
|
||||
(MIT)\n\nCopyright (c) 2012 Koichi Kobayashi\n\nPermission is hereby granted,
|
||||
free of charge, to any person obtaining a copy\nof this software and associated
|
||||
documentation files (the \"Software\"), to deal\nin the Software without restriction,
|
||||
including without limitation the rights\nto use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons
|
||||
to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe
|
||||
above copyright notice and this permission notice shall be included in\nall copies
|
||||
or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\",
|
||||
WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO
|
||||
THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||
IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES
|
||||
OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
||||
IN\nTHE SOFTWARE.\n=========================================\nEND OF tunnel NOTICES,
|
||||
INFORMATION, AND LICENSE\n\n%% typescript NOTICES, INFORMATION, AND LICENSE BEGIN
|
||||
HERE\n=========================================\nApache License\n\nVersion 2.0,
|
||||
January 2004\n\nhttp://www.apache.org/licenses/ \n\nTERMS AND CONDITIONS FOR USE,
|
||||
REPRODUCTION, AND DISTRIBUTION\n\n1. Definitions.\n\n\"License\" shall mean the
|
||||
terms and conditions for use, reproduction, and distribution as defined by Sections
|
||||
1 through 9 of this document.\n\n\"Licensor\" shall mean the copyright owner or
|
||||
entity authorized by the copyright owner that is granting the License.\n\n\"Legal
|
||||
Entity\" shall mean the union of the acting entity and all other entities that
|
||||
control, are controlled by, or are under common control with that entity. For
|
||||
the purposes of this definition, \"control\" means (i) the power, direct or indirect,
|
||||
to cause the direction or management of such entity, whether by contract or otherwise,
|
||||
or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or
|
||||
(iii) beneficial ownership of such entity.\n\n\"You\" (or \"Your\") shall mean
|
||||
an individual or Legal Entity exercising permissions granted by this License.\n\n\"Source\"
|
||||
form shall mean the preferred form for making modifications, including but not
|
||||
limited to software source code, documentation source, and configuration files.\n\n\"Object\"
|
||||
form shall mean any form resulting from mechanical transformation or translation
|
||||
of a Source form, including but not limited to compiled object code, generated
|
||||
documentation, and conversions to other media types.\n\n\"Work\" shall mean the
|
||||
work of authorship, whether in Source or Object form, made available under the
|
||||
License, as indicated by a copyright notice that is included in or attached to
|
||||
the work (an example is provided in the Appendix below).\n\n\"Derivative Works\"
|
||||
shall mean any work, whether in Source or Object form, that is based on (or derived
|
||||
from) the Work and for which the editorial revisions, annotations, elaborations,
|
||||
or other modifications represent, as a whole, an original work of authorship.
|
||||
For the purposes of this License, Derivative Works shall not include works that
|
||||
remain separable from, or merely link (or bind by name) to the interfaces of,
|
||||
the Work and Derivative Works thereof.\n\n\"Contribution\" shall mean any work
|
||||
of authorship, including the original version of the Work and any modifications
|
||||
or additions to that Work or Derivative Works thereof, that is intentionally submitted
|
||||
to Licensor for inclusion in the Work by the copyright owner or by an individual
|
||||
or Legal Entity authorized to submit on behalf of the copyright owner. For the
|
||||
purposes of this definition, \"submitted\" means any form of electronic, verbal,
|
||||
or written communication sent to the Licensor or its representatives, including
|
||||
but not limited to communication on electronic mailing lists, source code control
|
||||
systems, and issue tracking systems that are managed by, or on behalf of, the
|
||||
Licensor for the purpose of discussing and improving the Work, but excluding communication
|
||||
that is conspicuously marked or otherwise designated in writing by the copyright
|
||||
owner as \"Not a Contribution.\"\n\n\"Contributor\" shall mean Licensor and any
|
||||
individual or Legal Entity on behalf of whom a Contribution has been received
|
||||
by Licensor and subsequently incorporated within the Work.\n\n2. Grant of Copyright
|
||||
License. Subject to the terms and conditions of this License, each Contributor
|
||||
hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free,
|
||||
irrevocable copyright license to reproduce, prepare Derivative Works of, publicly
|
||||
display, publicly perform, sublicense, and distribute the Work and such Derivative
|
||||
Works in Source or Object form.\n\n3. Grant of Patent License. Subject to the
|
||||
terms and conditions of this License, each Contributor hereby grants to You a
|
||||
perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except
|
||||
as stated in this section) patent license to make, have made, use, offer to sell,
|
||||
sell, import, and otherwise transfer the Work, where such license applies only
|
||||
to those patent claims licensable by such Contributor that are necessarily infringed
|
||||
by their Contribution(s) alone or by combination of their Contribution(s) with
|
||||
the Work to which such Contribution(s) was submitted. If You institute patent
|
||||
litigation against any entity (including a cross-claim or counterclaim in a lawsuit)
|
||||
alleging that the Work or a Contribution incorporated within the Work constitutes
|
||||
direct or contributory patent infringement, then any patent licenses granted to
|
||||
You under this License for that Work shall terminate as of the date such litigation
|
||||
is filed.\n\n4. Redistribution. You may reproduce and distribute copies of the
|
||||
Work or Derivative Works thereof in any medium, with or without modifications,
|
||||
and in Source or Object form, provided that You meet the following conditions:\n\nYou
|
||||
must give any other recipients of the Work or Derivative Works a copy of this
|
||||
License; and\n\nYou must cause any modified files to carry prominent notices stating
|
||||
that You changed the files; and\n\nYou must retain, in the Source form of any
|
||||
Derivative Works that You distribute, all copyright, patent, trademark, and attribution
|
||||
notices from the Source form of the Work, excluding those notices that do not
|
||||
pertain to any part of the Derivative Works; and\n\nIf the Work includes a \"NOTICE\"
|
||||
text file as part of its distribution, then any Derivative Works that You distribute
|
||||
must include a readable copy of the attribution notices contained within such
|
||||
NOTICE file, excluding those notices that do not pertain to any part of the Derivative
|
||||
Works, in at least one of the following places: within a NOTICE text file distributed
|
||||
as part of the Derivative Works; within the Source form or documentation, if provided
|
||||
along with the Derivative Works; or, within a display generated by the Derivative
|
||||
Works, if and wherever such third-party notices normally appear. The contents
|
||||
of the NOTICE file are for informational purposes only and do not modify the License.
|
||||
You may add Your own attribution notices within Derivative Works that You distribute,
|
||||
alongside or as an addendum to the NOTICE text from the Work, provided that such
|
||||
additional attribution notices cannot be construed as modifying the License. You
|
||||
may add Your own copyright statement to Your modifications and may provide additional
|
||||
or different license terms and conditions for use, reproduction, or distribution
|
||||
of Your modifications, or for any such Derivative Works as a whole, provided Your
|
||||
use, reproduction, and distribution of the Work otherwise complies with the conditions
|
||||
stated in this License.\n\n5. Submission of Contributions. Unless You explicitly
|
||||
state otherwise, any Contribution intentionally submitted for inclusion in the
|
||||
Work by You to the Licensor shall be under the terms and conditions of this License,
|
||||
without any additional terms or conditions. Notwithstanding the above, nothing
|
||||
herein shall supersede or modify the terms of any separate license agreement you
|
||||
may have executed with Licensor regarding such Contributions.\n\n6. Trademarks.
|
||||
This License does not grant permission to use the trade names, trademarks, service
|
||||
marks, or product names of the Licensor, except as required for reasonable and
|
||||
customary use in describing the origin of the Work and reproducing the content
|
||||
of the NOTICE file.\n\n7. Disclaimer of Warranty. Unless required by applicable
|
||||
law or agreed to in writing, Licensor provides the Work (and each Contributor
|
||||
provides its Contributions) on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS
|
||||
OF ANY KIND, either express or implied, including, without limitation, any warranties
|
||||
or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR
|
||||
PURPOSE. You are solely responsible for determining the appropriateness of using
|
||||
or redistributing the Work and assume any risks associated with Your exercise
|
||||
of permissions under this License.\n\n8. Limitation of Liability. In no event
|
||||
and under no legal theory, whether in tort (including negligence), contract, or
|
||||
otherwise, unless required by applicable law (such as deliberate and grossly negligent
|
||||
acts) or agreed to in writing, shall any Contributor be liable to You for damages,
|
||||
including any direct, indirect, special, incidental, or consequential damages
|
||||
of any character arising as a result of this License or out of the use or inability
|
||||
to use the Work (including but not limited to damages for loss of goodwill, work
|
||||
stoppage, computer failure or malfunction, or any and all other commercial damages
|
||||
or losses), even if such Contributor has been advised of the possibility of such
|
||||
damages.\n\n9. Accepting Warranty or Additional Liability. While redistributing
|
||||
the Work or Derivative Works thereof, You may choose to offer, and charge a fee
|
||||
for, acceptance of support, warranty, indemnity, or other liability obligations
|
||||
and/or rights consistent with this License. However, in accepting such obligations,
|
||||
You may act only on Your own behalf and on Your sole responsibility, not on behalf
|
||||
of any other Contributor, and only if You agree to indemnify, defend, and hold
|
||||
each Contributor harmless for any liability incurred by, or claims asserted against,
|
||||
such Contributor by reason of your accepting any such warranty or additional liability.\n\nEND
|
||||
OF TERMS AND CONDITIONS\n=========================================\nEND OF typescript
|
||||
NOTICES, INFORMATION, AND LICENSE\n\n%% underscore NOTICES, INFORMATION, AND LICENSE
|
||||
BEGIN HERE\n=========================================\nCopyright (c) 2009-2015
|
||||
Jeremy Ashkenas, DocumentCloud and Investigative\nReporters & Editors\n\nPermission
|
||||
is hereby granted, free of charge, to any person\nobtaining a copy of this software
|
||||
and associated documentation\nfiles (the \"Software\"), to deal in the Software
|
||||
without\nrestriction, including without limitation the rights to use,\ncopy, modify,
|
||||
merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and
|
||||
to permit persons to whom the\nSoftware is furnished to do so, subject to the
|
||||
following\nconditions:\n\nThe above copyright notice and this permission notice
|
||||
shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE
|
||||
SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED,
|
||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES\nOF MERCHANTABILITY, FITNESS FOR A
|
||||
PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT\nHOLDERS
|
||||
BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,\nWHETHER IN AN ACTION OF
|
||||
CONTRACT, TORT OR OTHERWISE, ARISING\nFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE
|
||||
OR THE USE OR\nOTHER DEALINGS IN THE SOFTWARE.\n=========================================\nEND
|
||||
OF underscore NOTICES, INFORMATION, AND LICENSE\n\n%% wrappy NOTICES, INFORMATION,
|
||||
AND LICENSE BEGIN HERE\n=========================================\nThe ISC License\n\nCopyright
|
||||
(c) Isaac Z. Schlueter and Contributors\n\nPermission to use, copy, modify, and/or
|
||||
distribute this software for any\npurpose with or without fee is hereby granted,
|
||||
provided that the above\ncopyright notice and this permission notice appear in
|
||||
all copies.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL
|
||||
WARRANTIES\nWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\nMERCHANTABILITY
|
||||
AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\nANY SPECIAL, DIRECT,
|
||||
INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\nWHATSOEVER RESULTING FROM LOSS
|
||||
OF USE, DATA OR PROFITS, WHETHER IN AN\nACTION OF CONTRACT, NEGLIGENCE OR OTHER
|
||||
TORTIOUS ACTION, ARISING OUT OF OR\nIN CONNECTION WITH THE USE OR PERFORMANCE
|
||||
OF THIS SOFTWARE.\n=========================================\nEND OF wrappy NOTICES,
|
||||
INFORMATION, AND LICENSE"
|
33
.licenses/npm/underscore.dep.yml
generated
33
.licenses/npm/underscore.dep.yml
generated
@ -1,33 +0,0 @@
|
||||
---
|
||||
name: underscore
|
||||
version: 1.13.1
|
||||
type: npm
|
||||
summary: JavaScript's functional programming helper library.
|
||||
homepage: https://underscorejs.org
|
||||
license: mit
|
||||
licenses:
|
||||
- sources: LICENSE
|
||||
text: |
|
||||
Copyright (c) 2009-2021 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors
|
||||
|
||||
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: []
|
@ -1,16 +1,16 @@
|
||||
---
|
||||
name: has-symbols
|
||||
version: 1.0.2
|
||||
name: undici
|
||||
version: 5.28.4
|
||||
type: npm
|
||||
summary: Determine if the JS environment has Symbol support. Supports spec, or shams.
|
||||
homepage: https://github.com/inspect-js/has-symbols#readme
|
||||
summary: An HTTP/1.1 client, written from scratch for Node.js
|
||||
homepage: https://undici.nodejs.org
|
||||
license: mit
|
||||
licenses:
|
||||
- sources: LICENSE
|
||||
text: |
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2016 Jordan Harband
|
||||
Copyright (c) Matteo Collina and Undici 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
|
||||
@ -29,4 +29,6 @@ licenses:
|
||||
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.
|
||||
- sources: README.md
|
||||
text: MIT
|
||||
notices: []
|
2
.licenses/npm/universal-user-agent.dep.yml
generated
2
.licenses/npm/universal-user-agent.dep.yml
generated
@ -1,6 +1,6 @@
|
||||
---
|
||||
name: universal-user-agent
|
||||
version: 6.0.0
|
||||
version: 6.0.1
|
||||
type: npm
|
||||
summary: Get a user agent string in both browser and node
|
||||
homepage:
|
||||
|
@ -1,9 +1,9 @@
|
||||
---
|
||||
name: uuid
|
||||
version: 3.3.3
|
||||
version: 3.4.0
|
||||
type: npm
|
||||
summary: RFC4122 (v1, v4, and v5) UUIDs
|
||||
homepage: https://github.com/kelektiv/node-uuid#readme
|
||||
homepage:
|
||||
license: mit
|
||||
licenses:
|
||||
- sources: LICENSE.md
|
20
.licenses/npm/uuid-9.0.1.dep.yml
generated
Normal file
20
.licenses/npm/uuid-9.0.1.dep.yml
generated
Normal file
@ -0,0 +1,20 @@
|
||||
---
|
||||
name: uuid
|
||||
version: 9.0.1
|
||||
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: []
|
23
.licenses/npm/webidl-conversions.dep.yml
generated
23
.licenses/npm/webidl-conversions.dep.yml
generated
@ -1,23 +0,0 @@
|
||||
---
|
||||
name: webidl-conversions
|
||||
version: 3.0.1
|
||||
type: npm
|
||||
summary: Implements the WebIDL algorithms for converting to and from JavaScript values
|
||||
homepage: https://github.com/jsdom/webidl-conversions#readme
|
||||
license: bsd-2-clause
|
||||
licenses:
|
||||
- sources: LICENSE.md
|
||||
text: |
|
||||
# The BSD 2-Clause License
|
||||
|
||||
Copyright (c) 2014, Domenic Denicola
|
||||
All rights reserved.
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
notices: []
|
32
.licenses/npm/whatwg-url.dep.yml
generated
32
.licenses/npm/whatwg-url.dep.yml
generated
@ -1,32 +0,0 @@
|
||||
---
|
||||
name: whatwg-url
|
||||
version: 5.0.0
|
||||
type: npm
|
||||
summary: An implementation of the WHATWG URL Standard's URL API and parsing machinery
|
||||
homepage: https://github.com/jsdom/whatwg-url#readme
|
||||
license: mit
|
||||
licenses:
|
||||
- sources: LICENSE.txt
|
||||
text: |
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2015–2016 Sebastian Mayr
|
||||
|
||||
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: []
|
170
CHANGELOG.md
170
CHANGELOG.md
@ -1,96 +1,160 @@
|
||||
# Changelog
|
||||
# 更新日志
|
||||
|
||||
## v4.2.2
|
||||
* `url-helper.ts` 现在利用众所周知的环境变量,由 @jww3 在 https://github.com/actions/checkout/pull/1941 中贡献
|
||||
* 扩展 `isGhes` 的单元测试覆盖率,由 @jww3 在 https://github.com/actions/checkout/pull/1946 中贡献
|
||||
|
||||
## v4.2.1
|
||||
* 如果提供了 commit,则检出其他 refs/*,否则回退到 ref,由 @orhantoy 在 https://github.com/actions/checkout/pull/1924 中贡献
|
||||
|
||||
## v4.2.0
|
||||
|
||||
* 添加 Ref 和 Commit 输出,由 @lucacome 在 https://github.com/actions/checkout/pull/1180 中贡献
|
||||
* 依赖项更新,由 @dependabot 在 https://github.com/actions/checkout/pull/1777 和 https://github.com/actions/checkout/pull/1872 中贡献
|
||||
|
||||
## v4.1.7
|
||||
* 在 1 个目录中更新次要 npm 依赖项组,共 4 次更新,由 @dependabot 在 https://github.com/actions/checkout/pull/1739 中贡献
|
||||
* 将 actions/checkout 从 3 升级到 4,由 @dependabot 在 https://github.com/actions/checkout/pull/1697 中贡献
|
||||
* 按 commit 检出其他 refs/*,由 @orhantoy 在 https://github.com/actions/checkout/pull/1774 中贡献
|
||||
* 将 actions/checkout 自身的工作流固定到已知、良好、稳定的版本,由 @jww3 在 https://github.com/actions/checkout/pull/1776 中贡献
|
||||
|
||||
## v4.1.6
|
||||
* 检查平台以适当设置存档扩展名,由 @cory-miller 在 https://github.com/actions/checkout/pull/1732 中贡献
|
||||
|
||||
## v4.1.5
|
||||
* 更新 NPM 依赖项,由 @cory-miller 在 https://github.com/actions/checkout/pull/1703 中贡献
|
||||
* 将 github/codeql-action 从 2 升级到 3,由 @dependabot 在 https://github.com/actions/checkout/pull/1694 中贡献
|
||||
* 将 actions/setup-node 从 1 升级到 4,由 @dependabot 在 https://github.com/actions/checkout/pull/1696 中贡献
|
||||
* 将 actions/upload-artifact 从 2 升级到 4,由 @dependabot 在 https://github.com/actions/checkout/pull/1695 中贡献
|
||||
* README:建议将 `user.email` 设置为 `41898282+github-actions[bot]@users.noreply.github.com`,由 @cory-miller 在 https://github.com/actions/checkout/pull/1707 中贡献
|
||||
|
||||
## v4.1.4
|
||||
- 禁用 `sparse-checkout` 时禁用 `extensions.worktreeConfig`,由 @jww3 在 https://github.com/actions/checkout/pull/1692 中贡献
|
||||
- 添加 dependabot 配置,由 @cory-miller 在 https://github.com/actions/checkout/pull/1688 中贡献
|
||||
- 使用 2 次更新更新次要 actions 依赖项组,由 @dependabot 在 https://github.com/actions/checkout/pull/1693 中贡献
|
||||
- 将 word-wrap 从 1.2.3 升级到 1.2.5,由 @dependabot 在 https://github.com/actions/checkout/pull/1643 中贡献
|
||||
|
||||
## v4.1.3
|
||||
- 在尝试禁用 `sparse-checkout` 之前检查 git 版本,由 @jww3 在 https://github.com/actions/checkout/pull/1656 中贡献
|
||||
- 添加 SSH 用户参数,由 @cory-miller 在 https://github.com/actions/checkout/pull/1685 中贡献
|
||||
- 在 `update-main-version.yml` 中更新 `actions/checkout` 版本,由 @jww3 在 https://github.com/actions/checkout/pull/1650 中贡献
|
||||
|
||||
## v4.1.2
|
||||
- 修复:当 `sparse-checkout` 选项不存在时禁用稀疏检出,由 @dscho 在 https://github.com/actions/checkout/pull/1598 中贡献
|
||||
|
||||
## v4.1.1
|
||||
- 修正指向 GitHub 文档的链接,由 @peterbe 在 https://github.com/actions/checkout/pull/1511 中贡献
|
||||
- 从“新特性”部分链接到发布页面,由 @cory-miller 在 https://github.com/actions/checkout/pull/1514 中贡献
|
||||
|
||||
## v4.1.0
|
||||
- [添加对部分检出过滤器的支持](https://github.com/actions/checkout/pull/1396)
|
||||
|
||||
## v4.0.0
|
||||
- [支持不带 --progress 选项的获取](https://github.com/actions/checkout/pull/1067)
|
||||
- [升级到 node20](https://github.com/actions/checkout/pull/1436)
|
||||
|
||||
## v3.6.0
|
||||
- [修复:将测试脚本标记为通过 Bash 运行的 Bash'isms](https://github.com/actions/checkout/pull/1377)
|
||||
- [添加选项以在 fetch-depth > 0 时获取标签](https://github.com/actions/checkout/pull/579)
|
||||
|
||||
## v3.5.3
|
||||
- [修复:在自托管运行器上检出失败,当有故障的子模块被签入时](https://github.com/actions/checkout/pull/1196)
|
||||
- [修复 codespell 发现的拼写错误](https://github.com/actions/checkout/pull/1287)
|
||||
- [添加对稀疏检出的支持](https://github.com/actions/checkout/pull/1369)
|
||||
|
||||
## v3.5.2
|
||||
- [修复 GHES 的 api 端点](https://github.com/actions/checkout/pull/1289)
|
||||
|
||||
## v3.5.1
|
||||
- [Fix slow checkout on Windows](https://github.com/actions/checkout/pull/1246)
|
||||
- [修复 Windows 上的慢速检出](https://github.com/actions/checkout/pull/1246)
|
||||
|
||||
## v3.5.0
|
||||
* [Add new public key for known_hosts](https://github.com/actions/checkout/pull/1237)
|
||||
* [添加新的 known_hosts 公钥](https://github.com/actions/checkout/pull/1237)
|
||||
|
||||
## v3.4.0
|
||||
- [Upgrade codeql actions to v2](https://github.com/actions/checkout/pull/1209)
|
||||
- [Upgrade dependencies](https://github.com/actions/checkout/pull/1210)
|
||||
- [Upgrade @actions/io](https://github.com/actions/checkout/pull/1225)
|
||||
- [将 codeql actions 升级到 v2](https://github.com/actions/checkout/pull/1209)
|
||||
- [升级依赖项](https://github.com/actions/checkout/pull/1210)
|
||||
- [升级 @actions/io](https://github.com/actions/checkout/pull/1225)
|
||||
|
||||
## v3.3.0
|
||||
- [Implement branch list using callbacks from exec function](https://github.com/actions/checkout/pull/1045)
|
||||
- [Add in explicit reference to private checkout options](https://github.com/actions/checkout/pull/1050)
|
||||
- [Fix comment typos (that got added in #770)](https://github.com/actions/checkout/pull/1057)
|
||||
- [通过 exec 函数的回调实现分支列表](https://github.com/actions/checkout/pull/1045)
|
||||
- [明确引用私有检出选项](https://github.com/actions/checkout/pull/1050)
|
||||
- [修复评论中的拼写错误(在 #770 中添加)](https://github.com/actions/checkout/pull/1057)
|
||||
|
||||
## v3.2.0
|
||||
- [Add GitHub Action to perform release](https://github.com/actions/checkout/pull/942)
|
||||
- [Fix status badge](https://github.com/actions/checkout/pull/967)
|
||||
- [Replace datadog/squid with ubuntu/squid Docker image](https://github.com/actions/checkout/pull/1002)
|
||||
- [Wrap pipeline commands for submoduleForeach in quotes](https://github.com/actions/checkout/pull/964)
|
||||
- [Update @actions/io to 1.1.2](https://github.com/actions/checkout/pull/1029)
|
||||
- [Upgrading version to 3.2.0](https://github.com/actions/checkout/pull/1039)
|
||||
- [添加 GitHub Action 以执行发布](https://github.com/actions/checkout/pull/942)
|
||||
- [修复状态徽章](https://github.com/actions/checkout/pull/967)
|
||||
- [将 datadog/squid 替换为 ubuntu/squid Docker 镜像](https://github.com/actions/checkout/pull/1002)
|
||||
- [在 submoduleForeach 的管道命令周围添加引号](https://github.com/actions/checkout/pull/964)
|
||||
- [将 @actions/io 升级到 1.1.2](https://github.com/actions/checkout/pull/1029)
|
||||
- [升级到版本 3.2.0](https://github.com/actions/checkout/pull/1039)
|
||||
|
||||
## v3.1.0
|
||||
- [Use @actions/core `saveState` and `getState`](https://github.com/actions/checkout/pull/939)
|
||||
- [Add `github-server-url` input](https://github.com/actions/checkout/pull/922)
|
||||
- [使用 @actions/core `saveState` 和 `getState`](https://github.com/actions/checkout/pull/939)
|
||||
- [添加 `github-server-url` 输入](https://github.com/actions/checkout/pull/922)
|
||||
|
||||
## v3.0.2
|
||||
- [Add input `set-safe-directory`](https://github.com/actions/checkout/pull/770)
|
||||
- [添加输入 `set-safe-directory`](https://github.com/actions/checkout/pull/770)
|
||||
|
||||
## v3.0.1
|
||||
- [Fixed an issue where checkout failed to run in container jobs due to the new git setting `safe.directory`](https://github.com/actions/checkout/pull/762)
|
||||
- [Bumped various npm package versions](https://github.com/actions/checkout/pull/744)
|
||||
- [修复了一个问题,由于新的 git 设置 `safe.directory`,导致在容器作业中无法运行 checkout](https://github.com/actions/checkout/pull/762)
|
||||
- [提升各种 npm 包版本](https://github.com/actions/checkout/pull/744)
|
||||
|
||||
## v3.0.0
|
||||
|
||||
- [Update to node 16](https://github.com/actions/checkout/pull/689)
|
||||
- [升级到 node 16](https://github.com/actions/checkout/pull/689)
|
||||
|
||||
## v2.3.1
|
||||
|
||||
- [Fix default branch resolution for .wiki and when using SSH](https://github.com/actions/checkout/pull/284)
|
||||
- [修复 .wiki 的默认分支解析以及使用 SSH 时的解析](https://github.com/actions/checkout/pull/284)
|
||||
|
||||
## v2.3.0
|
||||
|
||||
- [Fallback to the default branch](https://github.com/actions/checkout/pull/278)
|
||||
- [回退到默认分支](https://github.com/actions/checkout/pull/278)
|
||||
|
||||
## v2.2.0
|
||||
|
||||
- [Fetch all history for all tags and branches when fetch-depth=0](https://github.com/actions/checkout/pull/258)
|
||||
- [当 fetch-depth=0 时获取所有标签和分支的所有历史记录](https://github.com/actions/checkout/pull/258)
|
||||
|
||||
## v2.1.1
|
||||
|
||||
- Changes to support GHES ([here](https://github.com/actions/checkout/pull/236) and [here](https://github.com/actions/checkout/pull/248))
|
||||
- 支持 GHES 的更改([这里](https://github.com/actions/checkout/pull/236) 和 [这里](https://github.com/actions/checkout/pull/248))
|
||||
|
||||
## v2.1.0
|
||||
|
||||
- [Group output](https://github.com/actions/checkout/pull/191)
|
||||
- [Changes to support GHES alpha release](https://github.com/actions/checkout/pull/199)
|
||||
- [Persist core.sshCommand for submodules](https://github.com/actions/checkout/pull/184)
|
||||
- [Add support ssh](https://github.com/actions/checkout/pull/163)
|
||||
- [Convert submodule SSH URL to HTTPS, when not using SSH](https://github.com/actions/checkout/pull/179)
|
||||
- [Add submodule support](https://github.com/actions/checkout/pull/157)
|
||||
- [Follow proxy settings](https://github.com/actions/checkout/pull/144)
|
||||
- [Fix ref for pr closed event when a pr is merged](https://github.com/actions/checkout/pull/141)
|
||||
- [Fix issue checking detached when git less than 2.22](https://github.com/actions/checkout/pull/128)
|
||||
- [分组输出](https://github.com/actions/checkout/pull/191)
|
||||
- [支持 GHES alpha 发布的更改](https://github.com/actions/checkout/pull/199)
|
||||
- [为子模块持久化 core.sshCommand](https://github.com/actions/checkout/pull/184)
|
||||
- [添加对 ssh 的支持](https://github.com/actions/checkout/pull/163)
|
||||
- [当不使用 SSH 时,将子模块 SSH URL 转换为 HTTPS](https://github.com/actions/checkout/pull/179)
|
||||
- [添加子模块支持](https://github.com/actions/checkout/pull/157)
|
||||
- [遵循代理设置](https://github.com/actions/checkout/pull/144)
|
||||
- [修复 pr 关闭事件的 ref,当 pr 被合并时](https://github.com/actions/checkout/pull/141)
|
||||
- [修复 git 版本低于 2.22 时检查分离状态的问题](https://github.com/actions/checkout/pull/128)
|
||||
|
||||
## v2.0.0
|
||||
|
||||
- [Do not pass cred on command line](https://github.com/actions/checkout/pull/108)
|
||||
- [Add input persist-credentials](https://github.com/actions/checkout/pull/107)
|
||||
- [Fallback to REST API to download repo](https://github.com/actions/checkout/pull/104)
|
||||
- [不在命令行上传递凭据](https://github.com/actions/checkout/pull/108)
|
||||
- [添加输入 persist-credentials](https://github.com/actions/checkout/pull/107)
|
||||
- [回退到 REST API 下载仓库](https://github.com/actions/checkout/pull/104)
|
||||
|
||||
## v2 (beta)
|
||||
|
||||
- Improved fetch performance
|
||||
- The default behavior now fetches only the SHA being checked-out
|
||||
- Script authenticated git commands
|
||||
- Persists `with.token` in the local git config
|
||||
- Enables your scripts to run authenticated git commands
|
||||
- Post-job cleanup removes the token
|
||||
- Coming soon: Opt out by setting `with.persist-credentials` to `false`
|
||||
- Creates a local branch
|
||||
- No longer detached HEAD when checking out a branch
|
||||
- A local branch is created with the corresponding upstream branch set
|
||||
- Improved layout
|
||||
- `with.path` is always relative to `github.workspace`
|
||||
- Aligns better with container actions, where `github.workspace` gets mapped in
|
||||
- Removed input `submodules`
|
||||
|
||||
- 改进的获取性能
|
||||
- 默认行为现在仅获取正在检出的 SHA
|
||||
- 脚本认证的 git 命令
|
||||
- 将 `with.token` 持久化到本地 git 配置
|
||||
- 使您的脚本可以运行经过身份验证的 git 命令
|
||||
- 作业后清理移除令牌
|
||||
- 即将推出:通过将 `with.persist-credentials` 设置为 `false` 来选择退出
|
||||
- 创建本地分支
|
||||
- 检出分支时不再是分离的 HEAD
|
||||
- 创建一个带有相应上游分支设置的本地分支
|
||||
- 改进的布局
|
||||
- `with.path` 始终相对于 `github.workspace`
|
||||
- 更好地与容器操作对齐,其中 `github.workspace` 被映射进来
|
||||
- 移除输入 `submodules`
|
||||
|
||||
## v1
|
||||
|
||||
Refer [here](https://github.com/actions/checkout/blob/v1/CHANGELOG.md) for the V1 changelog
|
||||
有关 V1 更新日志,请参阅 [这里](https://github.com/actions/checkout/blob/v1/CHANGELOG.md)
|
@ -1 +1 @@
|
||||
* @actions/actions-runtime
|
||||
* @actions/actions-launch
|
||||
|
@ -1,28 +1,28 @@
|
||||
# Contributing
|
||||
# 贡献指南
|
||||
|
||||
## Submitting a pull request
|
||||
## 提交拉取请求
|
||||
|
||||
1. Fork and clone the repository
|
||||
1. Configure and install the dependencies: `npm install`
|
||||
1. Create a new branch: `git checkout -b my-branch-name`
|
||||
1. Make your change, add tests, and make sure the tests still pass: `npm run test`
|
||||
1. Make sure your code is correctly formatted: `npm run format`
|
||||
1. Update `dist/index.js` using `npm run build`. This creates a single javascript file that is used as an entrypoint for the action
|
||||
1. Push to your fork and submit a pull request
|
||||
1. Pat yourself on the back and wait for your pull request to be reviewed and merged
|
||||
1. Fork 并克隆仓库
|
||||
1. 配置并安装依赖项:`npm install`
|
||||
1. 创建新分支:`git checkout -b my-branch-name`
|
||||
1. 进行更改,添加测试,并确保测试仍然通过:`npm run test`
|
||||
1. 确保代码格式正确:`npm run format`
|
||||
1. 使用 `npm run build` 更新 `dist/index.js`。这将创建一个作为操作入口点的单一 JavaScript 文件
|
||||
1. 推送到您的 Fork 并提交拉取请求
|
||||
1. 拍拍自己的背,等待您的拉取请求被审查和合并
|
||||
|
||||
Here are a few things you can do that will increase the likelihood of your pull request being accepted:
|
||||
以下是一些可以提高您的拉取请求被接受可能性的建议:
|
||||
|
||||
- Write tests.
|
||||
- Keep your change as focused as possible. If there are multiple changes you would like to make that are not dependent upon each other, consider submitting them as separate pull requests.
|
||||
- 编写测试。
|
||||
- 尽量保持更改的专注性。如果您希望进行多个不相互依赖的更改,建议将它们作为单独的拉取请求提交。
|
||||
|
||||
## Resources
|
||||
## 资源
|
||||
|
||||
- [How to Contribute to Open Source](https://opensource.guide/how-to-contribute/)
|
||||
- [Using Pull Requests](https://help.github.com/articles/about-pull-requests/)
|
||||
- [GitHub Help](https://help.github.com)
|
||||
- [Writing good commit messages](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
|
||||
- [如何为开源做贡献](https://opensource.guide/how-to-contribute/)
|
||||
- [使用拉取请求](https://help.github.com/articles/about-pull-requests/)
|
||||
- [GitHub 帮助](https://help.github.com)
|
||||
- [编写良好的提交信息](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html)
|
||||
|
||||
Thanks! :heart: :heart: :heart:
|
||||
谢谢!:heart: :heart: :heart:
|
||||
|
||||
GitHub Actions Team :octocat:
|
||||
GitHub Actions 团队 :octocat:
|
307
README.md
307
README.md
@ -1,204 +1,259 @@
|
||||
[](https://github.com/actions/checkout/actions/workflows/test.yml)
|
||||
[](https://github.com/actions/checkout/actions/workflows/test.yml)
|
||||
|
||||
# Checkout V3
|
||||
# Checkout V4
|
||||
|
||||
This action checks-out your repository under `$GITHUB_WORKSPACE`, so your workflow can access it.
|
||||
此操作将您的仓库检出到 `$GITHUB_WORKSPACE` 下,以便您的工作流可以访问它。
|
||||
|
||||
Only a single commit is fetched by default, for the ref/SHA that triggered the workflow. Set `fetch-depth: 0` to fetch all history for all branches and tags. Refer [here](https://help.github.com/en/articles/events-that-trigger-workflows) to learn which commit `$GITHUB_SHA` points to for different events.
|
||||
默认情况下,仅获取触发工作流的 ref/SHA 的单个提交。设置 `fetch-depth: 0` 可以获取所有分支和标签的所有历史记录。请参考 [这里](https://docs.github.com/actions/using-workflows/events-that-trigger-workflows) 了解不同事件中 `$GITHUB_SHA` 指向的提交。
|
||||
|
||||
The auth token is persisted in the local git config. This enables your scripts to run authenticated git commands. The token is removed during post-job cleanup. Set `persist-credentials: false` to opt-out.
|
||||
认证令牌会持久化到本地 git 配置中。这使得您的脚本可以运行经过身份验证的 git 命令。该令牌会在作业后清理步骤中被移除。设置 `persist-credentials: false` 可以选择不保留。
|
||||
|
||||
When Git 2.18 or higher is not in your PATH, falls back to the REST API to download the files.
|
||||
当 Git 2.18 或更高版本不在您的 PATH 中时,将回退到 REST API 来下载文件。
|
||||
|
||||
# What's new
|
||||
# 新特性
|
||||
|
||||
- Updated to the node16 runtime by default
|
||||
- This requires a minimum [Actions Runner](https://github.com/actions/runner/releases/tag/v2.285.0) version of v2.285.0 to run, which is by default available in GHES 3.4 or later.
|
||||
请参考 [发布页面](https://github.com/actions/checkout/releases/latest) 获取最新的发布说明。
|
||||
|
||||
# Usage
|
||||
# 使用方法
|
||||
|
||||
<!-- start usage -->
|
||||
```yaml
|
||||
- uses: actions/checkout@v3
|
||||
• uses: actions/checkout@v4
|
||||
|
||||
with:
|
||||
# Repository name with owner. For example, actions/checkout
|
||||
# Default: ${{ github.repository }}
|
||||
# 仓库名称及所有者。例如,actions/checkout
|
||||
# 默认值: ${{ github.repository }}
|
||||
repository: ''
|
||||
|
||||
# The branch, tag or SHA to checkout. When checking out the repository that
|
||||
# triggered a workflow, this defaults to the reference or SHA for that event.
|
||||
# Otherwise, uses the default branch.
|
||||
# 要检出的分支、标签或 SHA。当检出触发工作流的仓库时,默认为该事件的引用或 SHA。
|
||||
# 否则,使用默认分支。
|
||||
ref: ''
|
||||
|
||||
# Personal access token (PAT) used to fetch the repository. The PAT is configured
|
||||
# with the local git config, which enables your scripts to run authenticated git
|
||||
# commands. The post-job step removes the PAT.
|
||||
# 用于获取仓库的个人访问令牌 (PAT)。该 PAT 会配置到本地 git 配置中,使您的脚本可以运行经过身份验证的 git 命令。
|
||||
# 作业后步骤会移除该 PAT。
|
||||
#
|
||||
# We recommend using a service account with the least permissions necessary. Also
|
||||
# when generating a new PAT, select the least scopes necessary.
|
||||
# 我们建议使用具有最低必要权限的服务账户。此外,在生成新的 PAT 时,请选择最低必要的范围。
|
||||
#
|
||||
# [Learn more about creating and using encrypted secrets](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)
|
||||
# [了解有关创建和使用加密机密的更多信息](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)
|
||||
#
|
||||
# Default: ${{ github.token }}
|
||||
# 默认值: ${{ github.token }}
|
||||
token: ''
|
||||
|
||||
# SSH key used to fetch the repository. The SSH key is configured with the local
|
||||
# git config, which enables your scripts to run authenticated git commands. The
|
||||
# post-job step removes the SSH key.
|
||||
# 用于获取仓库的 SSH 密钥。该 SSH 密钥会配置到本地 git 配置中,使您的脚本可以运行经过身份验证的 git 命令。
|
||||
# 作业后步骤会移除该 SSH 密钥。
|
||||
#
|
||||
# We recommend using a service account with the least permissions necessary.
|
||||
# 我们建议使用具有最低必要权限的服务账户。
|
||||
#
|
||||
# [Learn more about creating and using encrypted secrets](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)
|
||||
# [了解有关创建和使用加密机密的更多信息](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)
|
||||
ssh-key: ''
|
||||
|
||||
# Known hosts in addition to the user and global host key database. The public SSH
|
||||
# keys for a host may be obtained using the utility `ssh-keyscan`. For example,
|
||||
# `ssh-keyscan github.com`. The public key for github.com is always implicitly
|
||||
# added.
|
||||
# 除用户和全局主机密钥数据库之外的已知主机。可以使用 `ssh-keyscan` 工具获取主机的公共 SSH 密钥。例如,`ssh-keyscan github.com`。
|
||||
# github.com 的公钥始终会隐式添加。
|
||||
ssh-known-hosts: ''
|
||||
|
||||
# Whether to perform strict host key checking. When true, adds the options
|
||||
# `StrictHostKeyChecking=yes` and `CheckHostIP=no` to the SSH command line. Use
|
||||
# the input `ssh-known-hosts` to configure additional hosts.
|
||||
# Default: true
|
||||
# 是否执行严格的主机密钥检查。当为 true 时,会在 SSH 命令行中添加 `StrictHostKeyChecking=yes` 和 `CheckHostIP=no` 选项。
|
||||
# 使用 `ssh-known-hosts` 输入来配置其他主机。
|
||||
# 默认值: true
|
||||
ssh-strict: ''
|
||||
|
||||
# Whether to configure the token or SSH key with the local git config
|
||||
# Default: true
|
||||
# 连接到远程 SSH 主机时使用的用户。默认值为 'git'。
|
||||
# 默认值: git
|
||||
ssh-user: ''
|
||||
|
||||
# 是否将令牌或 SSH 密钥配置到本地 git 配置中
|
||||
# 默认值: true
|
||||
persist-credentials: ''
|
||||
|
||||
# Relative path under $GITHUB_WORKSPACE to place the repository
|
||||
# 在 $GITHUB_WORKSPACE 下放置仓库的相对路径
|
||||
path: ''
|
||||
|
||||
# Whether to execute `git clean -ffdx && git reset --hard HEAD` before fetching
|
||||
# Default: true
|
||||
# 是否在获取前执行 `git clean -ffdx && git reset --hard HEAD`
|
||||
# 默认值: true
|
||||
clean: ''
|
||||
|
||||
# Number of commits to fetch. 0 indicates all history for all branches and tags.
|
||||
# Default: 1
|
||||
# 针对给定过滤器进行部分克隆。如果设置了此选项,则会覆盖 sparse-checkout。
|
||||
# 默认值: null
|
||||
filter: ''
|
||||
|
||||
# 对给定模式进行稀疏检出。每个模式应以换行符分隔。
|
||||
# 默认值: null
|
||||
sparse-checkout: ''
|
||||
|
||||
# 指定在执行稀疏检出时是否使用 cone 模式。
|
||||
# 默认值: true
|
||||
sparse-checkout-cone-mode: ''
|
||||
|
||||
# 要获取的提交数量。0 表示所有分支和标签的所有历史记录。
|
||||
# 默认值: 1
|
||||
fetch-depth: ''
|
||||
|
||||
# Whether to download Git-LFS files
|
||||
# Default: false
|
||||
# 是否获取标签,即使 fetch-depth > 0。
|
||||
# 默认值: false
|
||||
fetch-tags: ''
|
||||
|
||||
# 获取时是否显示进度状态输出。
|
||||
# 默认值: true
|
||||
show-progress: ''
|
||||
|
||||
# 是否下载 Git-LFS 文件
|
||||
# 默认值: false
|
||||
lfs: ''
|
||||
|
||||
# Whether to checkout submodules: `true` to checkout submodules or `recursive` to
|
||||
# recursively checkout submodules.
|
||||
# 是否检出子模块:`true` 表示检出子模块,`recursive` 表示递归检出子模块。
|
||||
#
|
||||
# When the `ssh-key` input is not provided, SSH URLs beginning with
|
||||
# `git@github.com:` are converted to HTTPS.
|
||||
# 当未提供 `ssh-key` 输入时,以 `git@github.com:` 开头的 SSH URL 会被转换为 HTTPS。
|
||||
#
|
||||
# Default: false
|
||||
# 默认值: false
|
||||
submodules: ''
|
||||
|
||||
# Add repository path as safe.directory for Git global config by running `git
|
||||
# config --global --add safe.directory <path>`
|
||||
# Default: true
|
||||
# 通过运行 `git config --global --add safe.directory <path>` 将仓库路径添加为 Git 全局配置的安全目录。
|
||||
# 默认值: true
|
||||
set-safe-directory: ''
|
||||
|
||||
# The base URL for the GitHub instance that you are trying to clone from, will use
|
||||
# environment defaults to fetch from the same instance that the workflow is
|
||||
# running from unless specified. Example URLs are https://github.com or
|
||||
# https://my-ghes-server.example.com
|
||||
# 尝试克隆的 GitHub 实例的基本 URL,将使用环境默认值从工作流运行的同一实例获取,除非指定。示例 URL 包括 https://github.com 或 https://my-ghes-server.example.com
|
||||
github-server-url: ''
|
||||
```
|
||||
<!-- end usage -->
|
||||
|
||||
# Scenarios
|
||||
# 场景
|
||||
|
||||
- [Fetch all history for all tags and branches](#Fetch-all-history-for-all-tags-and-branches)
|
||||
- [Checkout a different branch](#Checkout-a-different-branch)
|
||||
- [Checkout HEAD^](#Checkout-HEAD)
|
||||
- [Checkout multiple repos (side by side)](#Checkout-multiple-repos-side-by-side)
|
||||
- [Checkout multiple repos (nested)](#Checkout-multiple-repos-nested)
|
||||
- [Checkout multiple repos (private)](#Checkout-multiple-repos-private)
|
||||
- [Checkout pull request HEAD commit instead of merge commit](#Checkout-pull-request-HEAD-commit-instead-of-merge-commit)
|
||||
- [Checkout pull request on closed event](#Checkout-pull-request-on-closed-event)
|
||||
- [Push a commit using the built-in token](#Push-a-commit-using-the-built-in-token)
|
||||
- [仅获取根文件](#Fetch-only-the-root-files)
|
||||
- [仅获取根文件和 `.github` 及 `src` 文件夹](#Fetch-only-the-root-files-and-github-and-src-folder)
|
||||
- [仅获取单个文件](#Fetch-only-a-single-file)
|
||||
- [获取所有标签和分支的所有历史记录](#Fetch-all-history-for-all-tags-and-branches)
|
||||
- [检出不同分支](#Checkout-a-different-branch)
|
||||
- [检出 HEAD^](#Checkout-HEAD)
|
||||
- [并行检出多个仓库](#Checkout-multiple-repos-side-by-side)
|
||||
- [嵌套检出多个仓库](#Checkout-multiple-repos-nested)
|
||||
- [检出多个私有仓库](#Checkout-multiple-repos-private)
|
||||
- [检出拉取请求的 HEAD 提交而不是合并提交](#Checkout-pull-request-HEAD-commit-instead-of-merge-commit)
|
||||
- [在关闭事件上检出拉取请求](#Checkout-pull-request-on-closed-event)
|
||||
- [使用内置令牌推送提交](#Push-a-commit-using-the-built-in-token)
|
||||
- [使用内置令牌向拉取请求推送提交](#Push-a-commit-to-a-PR-using-the-built-in-token)
|
||||
|
||||
## Fetch all history for all tags and branches
|
||||
## 仅获取根文件
|
||||
|
||||
```yaml
|
||||
- uses: actions/checkout@v3
|
||||
• uses: actions/checkout@v4
|
||||
|
||||
with:
|
||||
sparse-checkout: .
|
||||
```
|
||||
|
||||
## 仅获取根文件和 `.github` 及 `src` 文件夹
|
||||
|
||||
```yaml
|
||||
• uses: actions/checkout@v4
|
||||
|
||||
with:
|
||||
sparse-checkout: |
|
||||
.github
|
||||
src
|
||||
```
|
||||
|
||||
## 仅获取单个文件
|
||||
|
||||
```yaml
|
||||
• uses: actions/checkout@v4
|
||||
|
||||
with:
|
||||
sparse-checkout: |
|
||||
README.md
|
||||
sparse-checkout-cone-mode: false
|
||||
```
|
||||
|
||||
## 获取所有标签和分支的所有历史记录
|
||||
|
||||
```yaml
|
||||
• uses: actions/checkout@v4
|
||||
|
||||
with:
|
||||
fetch-depth: 0
|
||||
```
|
||||
|
||||
## Checkout a different branch
|
||||
## 检出不同分支
|
||||
|
||||
```yaml
|
||||
- uses: actions/checkout@v3
|
||||
• uses: actions/checkout@v4
|
||||
|
||||
with:
|
||||
ref: my-branch
|
||||
```
|
||||
|
||||
## Checkout HEAD^
|
||||
## 检出 HEAD^
|
||||
|
||||
```yaml
|
||||
- uses: actions/checkout@v3
|
||||
• uses: actions/checkout@v4
|
||||
|
||||
with:
|
||||
fetch-depth: 2
|
||||
- run: git checkout HEAD^
|
||||
• run: git checkout HEAD^
|
||||
|
||||
```
|
||||
|
||||
## Checkout multiple repos (side by side)
|
||||
## 并行检出多个仓库
|
||||
|
||||
```yaml
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
• name: Checkout
|
||||
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: main
|
||||
|
||||
- name: Checkout tools repo
|
||||
uses: actions/checkout@v3
|
||||
• name: Checkout tools repo
|
||||
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: my-org/my-tools
|
||||
path: my-tools
|
||||
```
|
||||
> - If your secondary repository is private you will need to add the option noted in [Checkout multiple repos (private)](#Checkout-multiple-repos-private)
|
||||
> - 如果您的次要仓库是私有或内部的,您需要添加 [Checkout multiple repos (private)](#Checkout-multiple-repos-private) 中提到的选项
|
||||
|
||||
## Checkout multiple repos (nested)
|
||||
## 嵌套检出多个仓库
|
||||
|
||||
```yaml
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
• name: Checkout
|
||||
|
||||
- name: Checkout tools repo
|
||||
uses: actions/checkout@v3
|
||||
uses: actions/checkout@v4
|
||||
|
||||
• name: Checkout tools repo
|
||||
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: my-org/my-tools
|
||||
path: my-tools
|
||||
```
|
||||
> - If your secondary repository is private you will need to add the option noted in [Checkout multiple repos (private)](#Checkout-multiple-repos-private)
|
||||
> - 如果您的次要仓库是私有或内部的,您需要添加 [Checkout multiple repos (private)](#Checkout-multiple-repos-private) 中提到的选项
|
||||
|
||||
## Checkout multiple repos (private)
|
||||
## 检出多个私有仓库
|
||||
|
||||
```yaml
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
• name: Checkout
|
||||
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
path: main
|
||||
|
||||
- name: Checkout private tools
|
||||
uses: actions/checkout@v3
|
||||
• name: Checkout private tools
|
||||
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: my-org/my-private-tools
|
||||
token: ${{ secrets.GH_PAT }} # `GH_PAT` is a secret that contains your PAT
|
||||
token: ${{ secrets.GH_PAT }} # `GH_PAT` 是包含您 PAT 的机密
|
||||
path: my-tools
|
||||
```
|
||||
> - `${{ github.token }}` 的范围限定在当前仓库,因此如果您想检出其他私有仓库,则需要提供您自己的 [PAT](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line)。
|
||||
|
||||
> - `${{ github.token }}` is scoped to the current repository, so if you want to checkout a different repository that is private you will need to provide your own [PAT](https://help.github.com/en/github/authenticating-to-github/creating-a-personal-access-token-for-the-command-line).
|
||||
|
||||
|
||||
## Checkout pull request HEAD commit instead of merge commit
|
||||
## 检出拉取请求的 HEAD 提交而不是合并提交
|
||||
|
||||
```yaml
|
||||
- uses: actions/checkout@v3
|
||||
• uses: actions/checkout@v4
|
||||
|
||||
with:
|
||||
ref: ${{ github.event.pull_request.head.sha }}
|
||||
```
|
||||
|
||||
## Checkout pull request on closed event
|
||||
## 在关闭事件上检出拉取请求
|
||||
|
||||
```yaml
|
||||
on:
|
||||
@ -209,10 +264,11 @@ jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
◦ uses: actions/checkout@v4
|
||||
|
||||
```
|
||||
|
||||
## Push a commit using the built-in token
|
||||
## 使用内置令牌推送提交
|
||||
|
||||
```yaml
|
||||
on: push
|
||||
@ -220,16 +276,55 @@ jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- run: |
|
||||
◦ uses: actions/checkout@v4
|
||||
|
||||
◦ run: |
|
||||
|
||||
date > generated.txt
|
||||
git config user.name github-actions
|
||||
git config user.email github-actions@github.com
|
||||
# 注意:以下账户信息在 GHES 上不起作用
|
||||
git config user.name "github-actions[bot]"
|
||||
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
||||
git add .
|
||||
git commit -m "generated"
|
||||
git push
|
||||
```
|
||||
*注意:* 用户邮箱为 `{user.id}+{user.login}@users.noreply.github.com`。请参阅用户 API: https://api.github.com/users/github-actions%5Bbot%5D
|
||||
|
||||
# License
|
||||
## 使用内置令牌向拉取请求推送提交
|
||||
|
||||
The scripts and documentation in this project are released under the [MIT License](LICENSE)
|
||||
在拉取请求触发器中,需要指定 `ref`,因为 GitHub Actions 默认以分离的 HEAD 模式检出,这意味着它不会默认检出您的分支。
|
||||
|
||||
```yaml
|
||||
on: pull_request
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
◦ uses: actions/checkout@v4
|
||||
|
||||
with:
|
||||
ref: ${{ github.head_ref }}
|
||||
◦ run: |
|
||||
|
||||
date > generated.txt
|
||||
# 注意:以下账户信息在 GHES 上不起作用
|
||||
git config user.name "github-actions[bot]"
|
||||
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
|
||||
git add .
|
||||
git commit -m "generated"
|
||||
git push
|
||||
```
|
||||
*注意:* 用户邮箱为 `{user.id}+{user.login}@users.noreply.github.com`。请参阅用户 API: https://api.github.com/users/github-actions%5Bbot%5D
|
||||
|
||||
# 推荐权限
|
||||
|
||||
在 GitHub Actions 工作流中使用 `checkout` 操作时,建议设置以下 `GITHUB_TOKEN` 权限以确保正常功能,除非通过 `token` 或 `ssh-key` 输入提供了替代身份验证:
|
||||
|
||||
```yaml
|
||||
permissions:
|
||||
contents: read
|
||||
```
|
||||
|
||||
# 许可证
|
||||
|
||||
此项目中的脚本和文档均根据 [MIT 许可证](LICENSE) 发布
|
@ -169,8 +169,9 @@ describe('git-auth-helper tests', () => {
|
||||
|
||||
// Mock fs.promises.readFile
|
||||
const realReadFile = fs.promises.readFile
|
||||
jest.spyOn(fs.promises, 'readFile').mockImplementation(
|
||||
async (file: any, options: any): Promise<Buffer> => {
|
||||
jest
|
||||
.spyOn(fs.promises, 'readFile')
|
||||
.mockImplementation(async (file: any, options: any): Promise<Buffer> => {
|
||||
const userKnownHostsPath = path.join(
|
||||
os.homedir(),
|
||||
'.ssh',
|
||||
@ -181,8 +182,7 @@ describe('git-auth-helper tests', () => {
|
||||
}
|
||||
|
||||
return await realReadFile(file, options)
|
||||
}
|
||||
)
|
||||
})
|
||||
|
||||
// Act
|
||||
const authHelper = gitAuthHelper.createAuthHelper(git, settings)
|
||||
@ -727,6 +727,9 @@ async function setup(testName: string): Promise<void> {
|
||||
branchDelete: jest.fn(),
|
||||
branchExists: jest.fn(),
|
||||
branchList: jest.fn(),
|
||||
disableSparseCheckout: jest.fn(),
|
||||
sparseCheckout: jest.fn(),
|
||||
sparseCheckoutNonConeMode: jest.fn(),
|
||||
checkout: jest.fn(),
|
||||
checkoutDetach: jest.fn(),
|
||||
config: jest.fn(
|
||||
@ -770,6 +773,9 @@ async function setup(testName: string): Promise<void> {
|
||||
return ''
|
||||
}),
|
||||
submoduleSync: jest.fn(),
|
||||
submoduleStatus: jest.fn(async () => {
|
||||
return true
|
||||
}),
|
||||
submoduleUpdate: jest.fn(),
|
||||
tagExists: jest.fn(),
|
||||
tryClean: jest.fn(),
|
||||
@ -790,14 +796,20 @@ async function setup(testName: string): Promise<void> {
|
||||
),
|
||||
tryDisableAutomaticGarbageCollection: jest.fn(),
|
||||
tryGetFetchUrl: jest.fn(),
|
||||
tryReset: jest.fn()
|
||||
tryReset: jest.fn(),
|
||||
version: jest.fn()
|
||||
}
|
||||
|
||||
settings = {
|
||||
authToken: 'some auth token',
|
||||
clean: true,
|
||||
commit: '',
|
||||
filter: undefined,
|
||||
sparseCheckout: [],
|
||||
sparseCheckoutConeMode: true,
|
||||
fetchDepth: 1,
|
||||
fetchTags: false,
|
||||
showProgress: true,
|
||||
lfs: false,
|
||||
submodules: false,
|
||||
nestedSubmodules: false,
|
||||
@ -809,6 +821,7 @@ async function setup(testName: string): Promise<void> {
|
||||
sshKey: sshPath ? 'some ssh private key' : '',
|
||||
sshKnownHosts: '',
|
||||
sshStrict: true,
|
||||
sshUser: '',
|
||||
workflowOrganizationId: 123456,
|
||||
setSafeDirectory: true,
|
||||
githubServerUrl: githubServerUrl
|
||||
|
@ -39,7 +39,12 @@ describe('git-auth-helper tests', () => {
|
||||
jest.spyOn(exec, 'exec').mockImplementation(mockExec)
|
||||
const workingDirectory = 'test'
|
||||
const lfs = false
|
||||
git = await commandManager.createCommandManager(workingDirectory, lfs)
|
||||
const doSparseCheckout = false
|
||||
git = await commandManager.createCommandManager(
|
||||
workingDirectory,
|
||||
lfs,
|
||||
doSparseCheckout
|
||||
)
|
||||
|
||||
let branches = await git.branchList(false)
|
||||
|
||||
@ -70,7 +75,12 @@ describe('git-auth-helper tests', () => {
|
||||
jest.spyOn(exec, 'exec').mockImplementation(mockExec)
|
||||
const workingDirectory = 'test'
|
||||
const lfs = false
|
||||
git = await commandManager.createCommandManager(workingDirectory, lfs)
|
||||
const doSparseCheckout = false
|
||||
git = await commandManager.createCommandManager(
|
||||
workingDirectory,
|
||||
lfs,
|
||||
doSparseCheckout
|
||||
)
|
||||
|
||||
let branches = await git.branchList(false)
|
||||
|
||||
@ -78,3 +88,291 @@ describe('git-auth-helper tests', () => {
|
||||
expect(branches.sort()).toEqual(['foo'].sort())
|
||||
})
|
||||
})
|
||||
|
||||
describe('Test fetchDepth and fetchTags options', () => {
|
||||
beforeEach(async () => {
|
||||
jest.spyOn(fshelper, 'fileExistsSync').mockImplementation(jest.fn())
|
||||
jest.spyOn(fshelper, 'directoryExistsSync').mockImplementation(jest.fn())
|
||||
mockExec.mockImplementation((path, args, options) => {
|
||||
console.log(args, options.listeners.stdout)
|
||||
|
||||
if (args.includes('version')) {
|
||||
options.listeners.stdout(Buffer.from('2.18'))
|
||||
}
|
||||
|
||||
return 0
|
||||
})
|
||||
})
|
||||
|
||||
afterEach(() => {
|
||||
jest.restoreAllMocks()
|
||||
})
|
||||
|
||||
it('should call execGit with the correct arguments when fetchDepth is 0 and fetchTags is true', async () => {
|
||||
jest.spyOn(exec, 'exec').mockImplementation(mockExec)
|
||||
const workingDirectory = 'test'
|
||||
const lfs = false
|
||||
const doSparseCheckout = false
|
||||
git = await commandManager.createCommandManager(
|
||||
workingDirectory,
|
||||
lfs,
|
||||
doSparseCheckout
|
||||
)
|
||||
|
||||
const refSpec = ['refspec1', 'refspec2']
|
||||
const options = {
|
||||
filter: 'filterValue',
|
||||
fetchDepth: 0,
|
||||
fetchTags: true
|
||||
}
|
||||
|
||||
await git.fetch(refSpec, options)
|
||||
|
||||
expect(mockExec).toHaveBeenCalledWith(
|
||||
expect.any(String),
|
||||
[
|
||||
'-c',
|
||||
'protocol.version=2',
|
||||
'fetch',
|
||||
'--prune',
|
||||
'--no-recurse-submodules',
|
||||
'--filter=filterValue',
|
||||
'origin',
|
||||
'refspec1',
|
||||
'refspec2'
|
||||
],
|
||||
expect.any(Object)
|
||||
)
|
||||
})
|
||||
|
||||
it('should call execGit with the correct arguments when fetchDepth is 0 and fetchTags is false', async () => {
|
||||
jest.spyOn(exec, 'exec').mockImplementation(mockExec)
|
||||
|
||||
const workingDirectory = 'test'
|
||||
const lfs = false
|
||||
const doSparseCheckout = false
|
||||
git = await commandManager.createCommandManager(
|
||||
workingDirectory,
|
||||
lfs,
|
||||
doSparseCheckout
|
||||
)
|
||||
const refSpec = ['refspec1', 'refspec2']
|
||||
const options = {
|
||||
filter: 'filterValue',
|
||||
fetchDepth: 0,
|
||||
fetchTags: false
|
||||
}
|
||||
|
||||
await git.fetch(refSpec, options)
|
||||
|
||||
expect(mockExec).toHaveBeenCalledWith(
|
||||
expect.any(String),
|
||||
[
|
||||
'-c',
|
||||
'protocol.version=2',
|
||||
'fetch',
|
||||
'--no-tags',
|
||||
'--prune',
|
||||
'--no-recurse-submodules',
|
||||
'--filter=filterValue',
|
||||
'origin',
|
||||
'refspec1',
|
||||
'refspec2'
|
||||
],
|
||||
expect.any(Object)
|
||||
)
|
||||
})
|
||||
|
||||
it('should call execGit with the correct arguments when fetchDepth is 1 and fetchTags is false', async () => {
|
||||
jest.spyOn(exec, 'exec').mockImplementation(mockExec)
|
||||
|
||||
const workingDirectory = 'test'
|
||||
const lfs = false
|
||||
const doSparseCheckout = false
|
||||
git = await commandManager.createCommandManager(
|
||||
workingDirectory,
|
||||
lfs,
|
||||
doSparseCheckout
|
||||
)
|
||||
const refSpec = ['refspec1', 'refspec2']
|
||||
const options = {
|
||||
filter: 'filterValue',
|
||||
fetchDepth: 1,
|
||||
fetchTags: false
|
||||
}
|
||||
|
||||
await git.fetch(refSpec, options)
|
||||
|
||||
expect(mockExec).toHaveBeenCalledWith(
|
||||
expect.any(String),
|
||||
[
|
||||
'-c',
|
||||
'protocol.version=2',
|
||||
'fetch',
|
||||
'--no-tags',
|
||||
'--prune',
|
||||
'--no-recurse-submodules',
|
||||
'--filter=filterValue',
|
||||
'--depth=1',
|
||||
'origin',
|
||||
'refspec1',
|
||||
'refspec2'
|
||||
],
|
||||
expect.any(Object)
|
||||
)
|
||||
})
|
||||
|
||||
it('should call execGit with the correct arguments when fetchDepth is 1 and fetchTags is true', async () => {
|
||||
jest.spyOn(exec, 'exec').mockImplementation(mockExec)
|
||||
|
||||
const workingDirectory = 'test'
|
||||
const lfs = false
|
||||
const doSparseCheckout = false
|
||||
git = await commandManager.createCommandManager(
|
||||
workingDirectory,
|
||||
lfs,
|
||||
doSparseCheckout
|
||||
)
|
||||
const refSpec = ['refspec1', 'refspec2']
|
||||
const options = {
|
||||
filter: 'filterValue',
|
||||
fetchDepth: 1,
|
||||
fetchTags: true
|
||||
}
|
||||
|
||||
await git.fetch(refSpec, options)
|
||||
|
||||
expect(mockExec).toHaveBeenCalledWith(
|
||||
expect.any(String),
|
||||
[
|
||||
'-c',
|
||||
'protocol.version=2',
|
||||
'fetch',
|
||||
'--prune',
|
||||
'--no-recurse-submodules',
|
||||
'--filter=filterValue',
|
||||
'--depth=1',
|
||||
'origin',
|
||||
'refspec1',
|
||||
'refspec2'
|
||||
],
|
||||
expect.any(Object)
|
||||
)
|
||||
})
|
||||
|
||||
it('should call execGit with the correct arguments when showProgress is true', async () => {
|
||||
jest.spyOn(exec, 'exec').mockImplementation(mockExec)
|
||||
|
||||
const workingDirectory = 'test'
|
||||
const lfs = false
|
||||
const doSparseCheckout = false
|
||||
git = await commandManager.createCommandManager(
|
||||
workingDirectory,
|
||||
lfs,
|
||||
doSparseCheckout
|
||||
)
|
||||
const refSpec = ['refspec1', 'refspec2']
|
||||
const options = {
|
||||
filter: 'filterValue',
|
||||
showProgress: true
|
||||
}
|
||||
|
||||
await git.fetch(refSpec, options)
|
||||
|
||||
expect(mockExec).toHaveBeenCalledWith(
|
||||
expect.any(String),
|
||||
[
|
||||
'-c',
|
||||
'protocol.version=2',
|
||||
'fetch',
|
||||
'--no-tags',
|
||||
'--prune',
|
||||
'--no-recurse-submodules',
|
||||
'--progress',
|
||||
'--filter=filterValue',
|
||||
'origin',
|
||||
'refspec1',
|
||||
'refspec2'
|
||||
],
|
||||
expect.any(Object)
|
||||
)
|
||||
})
|
||||
|
||||
it('should call execGit with the correct arguments when fetchDepth is 42 and showProgress is true', async () => {
|
||||
jest.spyOn(exec, 'exec').mockImplementation(mockExec)
|
||||
|
||||
const workingDirectory = 'test'
|
||||
const lfs = false
|
||||
const doSparseCheckout = false
|
||||
git = await commandManager.createCommandManager(
|
||||
workingDirectory,
|
||||
lfs,
|
||||
doSparseCheckout
|
||||
)
|
||||
const refSpec = ['refspec1', 'refspec2']
|
||||
const options = {
|
||||
filter: 'filterValue',
|
||||
fetchDepth: 42,
|
||||
showProgress: true
|
||||
}
|
||||
|
||||
await git.fetch(refSpec, options)
|
||||
|
||||
expect(mockExec).toHaveBeenCalledWith(
|
||||
expect.any(String),
|
||||
[
|
||||
'-c',
|
||||
'protocol.version=2',
|
||||
'fetch',
|
||||
'--no-tags',
|
||||
'--prune',
|
||||
'--no-recurse-submodules',
|
||||
'--progress',
|
||||
'--filter=filterValue',
|
||||
'--depth=42',
|
||||
'origin',
|
||||
'refspec1',
|
||||
'refspec2'
|
||||
],
|
||||
expect.any(Object)
|
||||
)
|
||||
})
|
||||
|
||||
it('should call execGit with the correct arguments when fetchTags is true and showProgress is true', async () => {
|
||||
jest.spyOn(exec, 'exec').mockImplementation(mockExec)
|
||||
|
||||
const workingDirectory = 'test'
|
||||
const lfs = false
|
||||
const doSparseCheckout = false
|
||||
git = await commandManager.createCommandManager(
|
||||
workingDirectory,
|
||||
lfs,
|
||||
doSparseCheckout
|
||||
)
|
||||
const refSpec = ['refspec1', 'refspec2']
|
||||
const options = {
|
||||
filter: 'filterValue',
|
||||
fetchTags: true,
|
||||
showProgress: true
|
||||
}
|
||||
|
||||
await git.fetch(refSpec, options)
|
||||
|
||||
expect(mockExec).toHaveBeenCalledWith(
|
||||
expect.any(String),
|
||||
[
|
||||
'-c',
|
||||
'protocol.version=2',
|
||||
'fetch',
|
||||
'--prune',
|
||||
'--no-recurse-submodules',
|
||||
'--progress',
|
||||
'--filter=filterValue',
|
||||
'origin',
|
||||
'refspec1',
|
||||
'refspec2'
|
||||
],
|
||||
expect.any(Object)
|
||||
)
|
||||
})
|
||||
})
|
||||
|
@ -281,6 +281,65 @@ describe('git-directory-helper tests', () => {
|
||||
expect(git.branchDelete).toHaveBeenCalledWith(false, 'local-branch-2')
|
||||
})
|
||||
|
||||
const cleanWhenSubmoduleStatusIsFalse =
|
||||
'cleans when submodule status is false'
|
||||
|
||||
it(cleanWhenSubmoduleStatusIsFalse, async () => {
|
||||
// Arrange
|
||||
await setup(cleanWhenSubmoduleStatusIsFalse)
|
||||
await fs.promises.writeFile(path.join(repositoryPath, 'my-file'), '')
|
||||
|
||||
//mock bad submodule
|
||||
|
||||
const submoduleStatus = git.submoduleStatus as jest.Mock<any, any>
|
||||
submoduleStatus.mockImplementation(async (remote: boolean) => {
|
||||
return false
|
||||
})
|
||||
|
||||
// Act
|
||||
await gitDirectoryHelper.prepareExistingDirectory(
|
||||
git,
|
||||
repositoryPath,
|
||||
repositoryUrl,
|
||||
clean,
|
||||
ref
|
||||
)
|
||||
|
||||
// Assert
|
||||
const files = await fs.promises.readdir(repositoryPath)
|
||||
expect(files).toHaveLength(0)
|
||||
expect(git.tryClean).toHaveBeenCalled()
|
||||
})
|
||||
|
||||
const doesNotCleanWhenSubmoduleStatusIsTrue =
|
||||
'does not clean when submodule status is true'
|
||||
|
||||
it(doesNotCleanWhenSubmoduleStatusIsTrue, async () => {
|
||||
// Arrange
|
||||
await setup(doesNotCleanWhenSubmoduleStatusIsTrue)
|
||||
await fs.promises.writeFile(path.join(repositoryPath, 'my-file'), '')
|
||||
|
||||
const submoduleStatus = git.submoduleStatus as jest.Mock<any, any>
|
||||
submoduleStatus.mockImplementation(async (remote: boolean) => {
|
||||
return true
|
||||
})
|
||||
|
||||
// Act
|
||||
await gitDirectoryHelper.prepareExistingDirectory(
|
||||
git,
|
||||
repositoryPath,
|
||||
repositoryUrl,
|
||||
clean,
|
||||
ref
|
||||
)
|
||||
|
||||
// Assert
|
||||
|
||||
const files = await fs.promises.readdir(repositoryPath)
|
||||
expect(files.sort()).toEqual(['.git', 'my-file'])
|
||||
expect(git.tryClean).toHaveBeenCalled()
|
||||
})
|
||||
|
||||
const removesLockFiles = 'removes lock files'
|
||||
it(removesLockFiles, async () => {
|
||||
// Arrange
|
||||
@ -403,6 +462,9 @@ async function setup(testName: string): Promise<void> {
|
||||
branchList: jest.fn(async () => {
|
||||
return []
|
||||
}),
|
||||
disableSparseCheckout: jest.fn(),
|
||||
sparseCheckout: jest.fn(),
|
||||
sparseCheckoutNonConeMode: jest.fn(),
|
||||
checkout: jest.fn(),
|
||||
checkoutDetach: jest.fn(),
|
||||
config: jest.fn(),
|
||||
@ -423,6 +485,9 @@ async function setup(testName: string): Promise<void> {
|
||||
submoduleForeach: jest.fn(),
|
||||
submoduleSync: jest.fn(),
|
||||
submoduleUpdate: jest.fn(),
|
||||
submoduleStatus: jest.fn(async () => {
|
||||
return true
|
||||
}),
|
||||
tagExists: jest.fn(),
|
||||
tryClean: jest.fn(async () => {
|
||||
return true
|
||||
@ -436,6 +501,7 @@ async function setup(testName: string): Promise<void> {
|
||||
}),
|
||||
tryReset: jest.fn(async () => {
|
||||
return true
|
||||
})
|
||||
}),
|
||||
version: jest.fn()
|
||||
}
|
||||
}
|
||||
|
@ -1,4 +1,5 @@
|
||||
import {GitVersion} from '../lib/git-version'
|
||||
import {GitVersion} from '../src/git-version'
|
||||
import {MinimumGitSparseCheckoutVersion} from '../src/git-command-manager'
|
||||
|
||||
describe('git-version tests', () => {
|
||||
it('basics', async () => {
|
||||
@ -42,4 +43,44 @@ describe('git-version tests', () => {
|
||||
expect(version.checkMinimum(new GitVersion('5.1'))).toBeFalsy()
|
||||
expect(version.checkMinimum(new GitVersion('5.1.2'))).toBeFalsy()
|
||||
})
|
||||
|
||||
it('sparse checkout', async () => {
|
||||
const minSparseVer = MinimumGitSparseCheckoutVersion
|
||||
expect(new GitVersion('1.0').checkMinimum(minSparseVer)).toBeFalsy()
|
||||
expect(new GitVersion('1.99').checkMinimum(minSparseVer)).toBeFalsy()
|
||||
expect(new GitVersion('2.0').checkMinimum(minSparseVer)).toBeFalsy()
|
||||
expect(new GitVersion('2.24').checkMinimum(minSparseVer)).toBeFalsy()
|
||||
expect(new GitVersion('2.24.0').checkMinimum(minSparseVer)).toBeFalsy()
|
||||
expect(new GitVersion('2.24.9').checkMinimum(minSparseVer)).toBeFalsy()
|
||||
expect(new GitVersion('2.25').checkMinimum(minSparseVer)).toBeFalsy()
|
||||
expect(new GitVersion('2.25.0').checkMinimum(minSparseVer)).toBeFalsy()
|
||||
expect(new GitVersion('2.25.1').checkMinimum(minSparseVer)).toBeFalsy()
|
||||
expect(new GitVersion('2.25.9').checkMinimum(minSparseVer)).toBeFalsy()
|
||||
expect(new GitVersion('2.26').checkMinimum(minSparseVer)).toBeFalsy()
|
||||
expect(new GitVersion('2.26.0').checkMinimum(minSparseVer)).toBeFalsy()
|
||||
expect(new GitVersion('2.26.1').checkMinimum(minSparseVer)).toBeFalsy()
|
||||
expect(new GitVersion('2.26.9').checkMinimum(minSparseVer)).toBeFalsy()
|
||||
expect(new GitVersion('2.27').checkMinimum(minSparseVer)).toBeFalsy()
|
||||
expect(new GitVersion('2.27.0').checkMinimum(minSparseVer)).toBeFalsy()
|
||||
expect(new GitVersion('2.27.1').checkMinimum(minSparseVer)).toBeFalsy()
|
||||
expect(new GitVersion('2.27.9').checkMinimum(minSparseVer)).toBeFalsy()
|
||||
// /---------------------------------------
|
||||
// ^^^ before / after vvv
|
||||
// --------------------------/
|
||||
expect(new GitVersion('2.28').checkMinimum(minSparseVer)).toBeTruthy()
|
||||
expect(new GitVersion('2.28.0').checkMinimum(minSparseVer)).toBeTruthy()
|
||||
expect(new GitVersion('2.28.1').checkMinimum(minSparseVer)).toBeTruthy()
|
||||
expect(new GitVersion('2.28.9').checkMinimum(minSparseVer)).toBeTruthy()
|
||||
expect(new GitVersion('2.29').checkMinimum(minSparseVer)).toBeTruthy()
|
||||
expect(new GitVersion('2.29.0').checkMinimum(minSparseVer)).toBeTruthy()
|
||||
expect(new GitVersion('2.29.1').checkMinimum(minSparseVer)).toBeTruthy()
|
||||
expect(new GitVersion('2.29.9').checkMinimum(minSparseVer)).toBeTruthy()
|
||||
expect(new GitVersion('2.99').checkMinimum(minSparseVer)).toBeTruthy()
|
||||
expect(new GitVersion('3.0').checkMinimum(minSparseVer)).toBeTruthy()
|
||||
expect(new GitVersion('3.99').checkMinimum(minSparseVer)).toBeTruthy()
|
||||
expect(new GitVersion('4.0').checkMinimum(minSparseVer)).toBeTruthy()
|
||||
expect(new GitVersion('4.99').checkMinimum(minSparseVer)).toBeTruthy()
|
||||
expect(new GitVersion('5.0').checkMinimum(minSparseVer)).toBeTruthy()
|
||||
expect(new GitVersion('5.99').checkMinimum(minSparseVer)).toBeTruthy()
|
||||
})
|
||||
})
|
||||
|
@ -79,7 +79,12 @@ describe('input-helper tests', () => {
|
||||
expect(settings.clean).toBe(true)
|
||||
expect(settings.commit).toBeTruthy()
|
||||
expect(settings.commit).toBe('1234567890123456789012345678901234567890')
|
||||
expect(settings.filter).toBe(undefined)
|
||||
expect(settings.sparseCheckout).toBe(undefined)
|
||||
expect(settings.sparseCheckoutConeMode).toBe(true)
|
||||
expect(settings.fetchDepth).toBe(1)
|
||||
expect(settings.fetchTags).toBe(false)
|
||||
expect(settings.showProgress).toBe(true)
|
||||
expect(settings.lfs).toBe(false)
|
||||
expect(settings.ref).toBe('refs/heads/some-ref')
|
||||
expect(settings.repositoryName).toBe('some-repo')
|
||||
|
@ -7,11 +7,11 @@ let git: IGitCommandManager
|
||||
|
||||
describe('ref-helper tests', () => {
|
||||
beforeEach(() => {
|
||||
git = ({} as unknown) as IGitCommandManager
|
||||
git = {} as unknown as IGitCommandManager
|
||||
})
|
||||
|
||||
it('getCheckoutInfo requires git', async () => {
|
||||
const git = (null as unknown) as IGitCommandManager
|
||||
const git = null as unknown as IGitCommandManager
|
||||
try {
|
||||
await refHelper.getCheckoutInfo(git, 'refs/heads/my/branch', commit)
|
||||
throw new Error('Should not reach here')
|
||||
@ -67,6 +67,26 @@ describe('ref-helper tests', () => {
|
||||
expect(checkoutInfo.startPoint).toBeFalsy()
|
||||
})
|
||||
|
||||
it('getCheckoutInfo refs/', async () => {
|
||||
const checkoutInfo = await refHelper.getCheckoutInfo(
|
||||
git,
|
||||
'refs/gh/queue/main/pr-123',
|
||||
commit
|
||||
)
|
||||
expect(checkoutInfo.ref).toBe(commit)
|
||||
expect(checkoutInfo.startPoint).toBeFalsy()
|
||||
})
|
||||
|
||||
it('getCheckoutInfo refs/ without commit', async () => {
|
||||
const checkoutInfo = await refHelper.getCheckoutInfo(
|
||||
git,
|
||||
'refs/non-standard-ref',
|
||||
''
|
||||
)
|
||||
expect(checkoutInfo.ref).toBe('refs/non-standard-ref')
|
||||
expect(checkoutInfo.startPoint).toBeFalsy()
|
||||
})
|
||||
|
||||
it('getCheckoutInfo unqualified branch only', async () => {
|
||||
git.branchExists = jest.fn(async (remote: boolean, pattern: string) => {
|
||||
return true
|
||||
|
@ -68,7 +68,7 @@ describe('retry-helper tests', () => {
|
||||
|
||||
it('all attempts fail succeeds', async () => {
|
||||
let attempts = 0
|
||||
let error: Error = (null as unknown) as Error
|
||||
let error: Error = null as unknown as Error
|
||||
try {
|
||||
await retryHelper.execute(() => {
|
||||
throw new Error(`some error ${++attempts}`)
|
||||
|
92
__test__/url-helper.test.ts
Normal file
92
__test__/url-helper.test.ts
Normal file
@ -0,0 +1,92 @@
|
||||
import * as urlHelper from '../src/url-helper'
|
||||
|
||||
describe('getServerUrl tests', () => {
|
||||
it('basics', async () => {
|
||||
// Note that URL::toString will append a trailing / when passed just a domain name ...
|
||||
expect(urlHelper.getServerUrl().toString()).toBe('https://github.com/')
|
||||
expect(urlHelper.getServerUrl(' ').toString()).toBe('https://github.com/')
|
||||
expect(urlHelper.getServerUrl(' ').toString()).toBe('https://github.com/')
|
||||
expect(urlHelper.getServerUrl('http://contoso.com').toString()).toBe(
|
||||
'http://contoso.com/'
|
||||
)
|
||||
expect(urlHelper.getServerUrl('https://contoso.com').toString()).toBe(
|
||||
'https://contoso.com/'
|
||||
)
|
||||
expect(urlHelper.getServerUrl('https://contoso.com/').toString()).toBe(
|
||||
'https://contoso.com/'
|
||||
)
|
||||
|
||||
// ... but can't make that same assumption when passed an URL that includes some deeper path.
|
||||
expect(urlHelper.getServerUrl('https://contoso.com/a/b').toString()).toBe(
|
||||
'https://contoso.com/a/b'
|
||||
)
|
||||
})
|
||||
})
|
||||
|
||||
describe('isGhes tests', () => {
|
||||
const pristineEnv = process.env
|
||||
|
||||
beforeEach(() => {
|
||||
jest.resetModules()
|
||||
process.env = {...pristineEnv}
|
||||
})
|
||||
|
||||
afterAll(() => {
|
||||
process.env = pristineEnv
|
||||
})
|
||||
|
||||
it('basics', async () => {
|
||||
delete process.env['GITHUB_SERVER_URL']
|
||||
expect(urlHelper.isGhes()).toBeFalsy()
|
||||
expect(urlHelper.isGhes('https://github.com')).toBeFalsy()
|
||||
expect(urlHelper.isGhes('https://contoso.ghe.com')).toBeFalsy()
|
||||
expect(urlHelper.isGhes('https://test.github.localhost')).toBeFalsy()
|
||||
expect(urlHelper.isGhes('https://src.onpremise.fabrikam.com')).toBeTruthy()
|
||||
})
|
||||
|
||||
it('returns false when the GITHUB_SERVER_URL environment variable is not defined', async () => {
|
||||
delete process.env['GITHUB_SERVER_URL']
|
||||
expect(urlHelper.isGhes()).toBeFalsy()
|
||||
})
|
||||
|
||||
it('returns false when the GITHUB_SERVER_URL environment variable is set to github.com', async () => {
|
||||
process.env['GITHUB_SERVER_URL'] = 'https://github.com'
|
||||
expect(urlHelper.isGhes()).toBeFalsy()
|
||||
})
|
||||
|
||||
it('returns false when the GITHUB_SERVER_URL environment variable is set to a GitHub Enterprise Cloud-style URL', async () => {
|
||||
process.env['GITHUB_SERVER_URL'] = 'https://contoso.ghe.com'
|
||||
expect(urlHelper.isGhes()).toBeFalsy()
|
||||
})
|
||||
|
||||
it('returns false when the GITHUB_SERVER_URL environment variable has a .localhost suffix', async () => {
|
||||
process.env['GITHUB_SERVER_URL'] = 'https://mock-github.localhost'
|
||||
expect(urlHelper.isGhes()).toBeFalsy()
|
||||
})
|
||||
|
||||
it('returns true when the GITHUB_SERVER_URL environment variable is set to some other URL', async () => {
|
||||
process.env['GITHUB_SERVER_URL'] = 'https://src.onpremise.fabrikam.com'
|
||||
expect(urlHelper.isGhes()).toBeTruthy()
|
||||
})
|
||||
})
|
||||
|
||||
describe('getServerApiUrl tests', () => {
|
||||
it('basics', async () => {
|
||||
expect(urlHelper.getServerApiUrl()).toBe('https://api.github.com')
|
||||
expect(urlHelper.getServerApiUrl('https://github.com')).toBe(
|
||||
'https://api.github.com'
|
||||
)
|
||||
expect(urlHelper.getServerApiUrl('https://GitHub.com')).toBe(
|
||||
'https://api.github.com'
|
||||
)
|
||||
expect(urlHelper.getServerApiUrl('https://contoso.ghe.com')).toBe(
|
||||
'https://api.contoso.ghe.com'
|
||||
)
|
||||
expect(urlHelper.getServerApiUrl('https://fabrikam.GHE.COM')).toBe(
|
||||
'https://api.fabrikam.ghe.com'
|
||||
)
|
||||
expect(
|
||||
urlHelper.getServerApiUrl('https://src.onpremise.fabrikam.com')
|
||||
).toBe('https://src.onpremise.fabrikam.com/api/v3')
|
||||
})
|
||||
})
|
@ -18,6 +18,20 @@ else
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verify that sparse-checkout is disabled.
|
||||
SPARSE_CHECKOUT_ENABLED=$(git -C ./basic config --local --get-all core.sparseCheckout)
|
||||
if [ "$SPARSE_CHECKOUT_ENABLED" != "" ]; then
|
||||
echo "Expected sparse-checkout to be disabled (discovered: $SPARSE_CHECKOUT_ENABLED)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verify git configuration shows worktreeConfig is effectively disabled
|
||||
WORKTREE_CONFIG_ENABLED=$(git -C ./basic config --local --get-all extensions.worktreeConfig)
|
||||
if [[ "$WORKTREE_CONFIG_ENABLED" != "" ]]; then
|
||||
echo "Expected extensions.worktreeConfig (boolean) to be disabled in git config. This could be an artifact of sparse checkout functionality."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verify auth token
|
||||
cd basic
|
||||
git fetch --no-tags --depth=1 origin +refs/heads/main:refs/remotes/origin/main
|
||||
|
16
__test__/verify-fetch-filter.sh
Executable file
16
__test__/verify-fetch-filter.sh
Executable file
@ -0,0 +1,16 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Verify .git folder
|
||||
if [ ! -d "./fetch-filter/.git" ]; then
|
||||
echo "Expected ./fetch-filter/.git folder to exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verify .git/config contains partialclonefilter
|
||||
|
||||
CLONE_FILTER=$(git -C fetch-filter config --local --get remote.origin.partialclonefilter)
|
||||
|
||||
if [ "$CLONE_FILTER" != "blob:none" ]; then
|
||||
echo "Expected ./fetch-filter/.git/config to have 'remote.origin.partialclonefilter' set to 'blob:none'"
|
||||
exit 1
|
||||
fi
|
51
__test__/verify-sparse-checkout-non-cone-mode.sh
Executable file
51
__test__/verify-sparse-checkout-non-cone-mode.sh
Executable file
@ -0,0 +1,51 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Verify .git folder
|
||||
if [ ! -d "./sparse-checkout-non-cone-mode/.git" ]; then
|
||||
echo "Expected ./sparse-checkout-non-cone-mode/.git folder to exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verify sparse-checkout (non-cone-mode)
|
||||
cd sparse-checkout-non-cone-mode
|
||||
|
||||
ENABLED=$(git config --local --get-all core.sparseCheckout)
|
||||
|
||||
if [ "$?" != "0" ]; then
|
||||
echo "Failed to verify that sparse-checkout is enabled"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check that sparse-checkout is enabled
|
||||
if [ "$ENABLED" != "true" ]; then
|
||||
echo "Expected sparse-checkout to be enabled (is: $ENABLED)"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
SPARSE_CHECKOUT_FILE=$(git rev-parse --git-path info/sparse-checkout)
|
||||
|
||||
if [ "$?" != "0" ]; then
|
||||
echo "Failed to validate sparse-checkout"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check that sparse-checkout list is not empty
|
||||
if [ ! -f "$SPARSE_CHECKOUT_FILE" ]; then
|
||||
echo "Expected sparse-checkout file to exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check that all folders from sparse-checkout exists
|
||||
for pattern in $(cat "$SPARSE_CHECKOUT_FILE")
|
||||
do
|
||||
if [ ! -d "${pattern#/}" ]; then
|
||||
echo "Expected directory '${pattern#/}' to exist"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
# Verify that the root directory is not checked out
|
||||
if [ -f README.md ]; then
|
||||
echo "Expected top-level files not to exist"
|
||||
exit 1
|
||||
fi
|
63
__test__/verify-sparse-checkout.sh
Executable file
63
__test__/verify-sparse-checkout.sh
Executable file
@ -0,0 +1,63 @@
|
||||
#!/bin/bash
|
||||
|
||||
# Verify .git folder
|
||||
if [ ! -d "./sparse-checkout/.git" ]; then
|
||||
echo "Expected ./sparse-checkout/.git folder to exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Verify sparse-checkout
|
||||
cd sparse-checkout
|
||||
|
||||
SPARSE=$(git sparse-checkout list)
|
||||
|
||||
if [ "$?" != "0" ]; then
|
||||
echo "Failed to validate sparse-checkout"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check that sparse-checkout list is not empty
|
||||
if [ -z "$SPARSE" ]; then
|
||||
echo "Expected sparse-checkout list to not be empty"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check that all folders of the sparse checkout exist
|
||||
for pattern in $SPARSE
|
||||
do
|
||||
if [ ! -d "$pattern" ]; then
|
||||
echo "Expected directory '$pattern' to exist"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
|
||||
checkSparse () {
|
||||
if [ ! -d "./$1" ]; then
|
||||
echo "Expected directory '$1' to exist"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
for file in $(git ls-tree -r --name-only HEAD $1)
|
||||
do
|
||||
if [ ! -f "$file" ]; then
|
||||
echo "Expected file '$file' to exist"
|
||||
exit 1
|
||||
fi
|
||||
done
|
||||
}
|
||||
|
||||
# Check that all folders and their children have been checked out
|
||||
checkSparse __test__
|
||||
checkSparse .github
|
||||
checkSparse dist
|
||||
|
||||
# Check that only sparse-checkout folders have been checked out
|
||||
for pattern in $(git ls-tree --name-only HEAD)
|
||||
do
|
||||
if [ -d "$pattern" ]; then
|
||||
if [[ "$pattern" != "__test__" && "$pattern" != ".github" && "$pattern" != "dist" ]]; then
|
||||
echo "Expected directory '$pattern' to not exist"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
done
|
31
action.yml
31
action.yml
@ -45,6 +45,10 @@ inputs:
|
||||
and `CheckHostIP=no` to the SSH command line. Use the input `ssh-known-hosts` to
|
||||
configure additional hosts.
|
||||
default: true
|
||||
ssh-user:
|
||||
description: >
|
||||
The user to use when connecting to the remote SSH host. By default 'git' is used.
|
||||
default: git
|
||||
persist-credentials:
|
||||
description: 'Whether to configure the token or SSH key with the local git config'
|
||||
default: true
|
||||
@ -53,9 +57,29 @@ inputs:
|
||||
clean:
|
||||
description: 'Whether to execute `git clean -ffdx && git reset --hard HEAD` before fetching'
|
||||
default: true
|
||||
filter:
|
||||
description: >
|
||||
Partially clone against a given filter.
|
||||
Overrides sparse-checkout if set.
|
||||
default: null
|
||||
sparse-checkout:
|
||||
description: >
|
||||
Do a sparse checkout on given patterns.
|
||||
Each pattern should be separated with new lines.
|
||||
default: null
|
||||
sparse-checkout-cone-mode:
|
||||
description: >
|
||||
Specifies whether to use cone-mode when doing a sparse checkout.
|
||||
default: true
|
||||
fetch-depth:
|
||||
description: 'Number of commits to fetch. 0 indicates all history for all branches and tags.'
|
||||
default: 1
|
||||
fetch-tags:
|
||||
description: 'Whether to fetch tags, even if fetch-depth > 0.'
|
||||
default: false
|
||||
show-progress:
|
||||
description: 'Whether to show progress status output when fetching.'
|
||||
default: true
|
||||
lfs:
|
||||
description: 'Whether to download Git-LFS files'
|
||||
default: false
|
||||
@ -74,7 +98,12 @@ inputs:
|
||||
github-server-url:
|
||||
description: The base URL for the GitHub instance that you are trying to clone from, will use environment defaults to fetch from the same instance that the workflow is running from unless specified. Example URLs are https://github.com or https://my-ghes-server.example.com
|
||||
required: false
|
||||
outputs:
|
||||
ref:
|
||||
description: 'The branch, tag or SHA that was checked out'
|
||||
commit:
|
||||
description: 'The commit SHA that was checked out'
|
||||
runs:
|
||||
using: node16
|
||||
using: node20
|
||||
main: dist/index.js
|
||||
post: dist/index.js
|
||||
|
@ -1,290 +1,274 @@
|
||||
# ADR 0153: Checkout v2
|
||||
|
||||
**Date**: 2019-10-21
|
||||
**日期**: 2019-10-21
|
||||
|
||||
**Status**: Accepted
|
||||
**状态**: 已接受
|
||||
|
||||
## Context
|
||||
## 背景
|
||||
|
||||
This ADR details the behavior for `actions/checkout@v2`.
|
||||
本 ADR 详细说明了 `actions/checkout@v2` 的行为。
|
||||
|
||||
The new action will be written in typescript. We are moving away from runner-plugin actions.
|
||||
新操作将用 TypeScript 编写。我们将不再使用运行器插件操作。
|
||||
|
||||
We want to take this opportunity to make behavioral changes, from v1. This document is scoped to those differences.
|
||||
我们希望借此机会从 v1 进行行为变更。本文档的范围仅限于这些差异。
|
||||
|
||||
## Decision
|
||||
## 决策
|
||||
|
||||
### Inputs
|
||||
### 输入参数
|
||||
|
||||
```yaml
|
||||
repository:
|
||||
description: 'Repository name with owner. For example, actions/checkout'
|
||||
default: ${{ github.repository }}
|
||||
描述: '仓库名称及所有者。例如,actions/checkout'
|
||||
默认值: ${{ github.repository }}
|
||||
ref:
|
||||
description: >
|
||||
The branch, tag or SHA to checkout. When checking out the repository that
|
||||
triggered a workflow, this defaults to the reference or SHA for that
|
||||
event. Otherwise, uses the default branch.
|
||||
描述: >
|
||||
要检出的分支、标签或 SHA。当检出触发工作流的仓库时,默认为该事件的引用或 SHA。
|
||||
否则,使用默认分支。
|
||||
token:
|
||||
description: >
|
||||
Personal access token (PAT) used to fetch the repository. The PAT is configured
|
||||
with the local git config, which enables your scripts to run authenticated git
|
||||
commands. The post-job step removes the PAT.
|
||||
描述: >
|
||||
用于获取仓库的个人访问令牌 (PAT)。该 PAT 会配置到本地 git 配置中,使您的脚本可以运行经过身份验证的 git 命令。
|
||||
作业后步骤会移除该 PAT。
|
||||
|
||||
我们建议使用具有最低必要权限的服务账户。
|
||||
此外,在生成新的 PAT 时,请选择最低必要的范围。
|
||||
|
||||
We recommend using a service account with the least permissions necessary.
|
||||
Also when generating a new PAT, select the least scopes necessary.
|
||||
|
||||
|
||||
[Learn more about creating and using encrypted secrets](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)
|
||||
default: ${{ github.token }}
|
||||
[了解有关创建和使用加密机密的更多信息](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)
|
||||
默认值: ${{ github.token }}
|
||||
ssh-key:
|
||||
description: >
|
||||
SSH key used to fetch the repository. The SSH key is configured with the local
|
||||
git config, which enables your scripts to run authenticated git commands.
|
||||
The post-job step removes the SSH key.
|
||||
描述: >
|
||||
用于获取仓库的 SSH 密钥。该 SSH 密钥会配置到本地 git 配置中,使您的脚本可以运行经过身份验证的 git 命令。
|
||||
作业后步骤会移除该 SSH 密钥。
|
||||
|
||||
我们建议使用具有最低必要权限的服务账户。
|
||||
|
||||
We recommend using a service account with the least permissions necessary.
|
||||
|
||||
|
||||
[Learn more about creating and using
|
||||
encrypted secrets](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)
|
||||
[了解有关创建和使用加密机密的更多信息](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/creating-and-using-encrypted-secrets)
|
||||
ssh-known-hosts:
|
||||
description: >
|
||||
Known hosts in addition to the user and global host key database. The public
|
||||
SSH keys for a host may be obtained using the utility `ssh-keyscan`. For example,
|
||||
`ssh-keyscan github.com`. The public key for github.com is always implicitly added.
|
||||
描述: >
|
||||
除用户和全局主机密钥数据库之外的已知主机。可以使用 `ssh-keyscan` 工具获取主机的公共 SSH 密钥。例如,`ssh-keyscan github.com`。
|
||||
github.com 的公钥始终会隐式添加。
|
||||
ssh-strict:
|
||||
description: >
|
||||
Whether to perform strict host key checking. When true, adds the options `StrictHostKeyChecking=yes`
|
||||
and `CheckHostIP=no` to the SSH command line. Use the input `ssh-known-hosts` to
|
||||
configure additional hosts.
|
||||
default: true
|
||||
描述: >
|
||||
是否执行严格的主机密钥检查。当为 true 时,会在 SSH 命令行中添加 `StrictHostKeyChecking=yes` 和 `CheckHostIP=no` 选项。
|
||||
使用 `ssh-known-hosts` 输入来配置其他主机。
|
||||
默认值: true
|
||||
persist-credentials:
|
||||
description: 'Whether to configure the token or SSH key with the local git config'
|
||||
default: true
|
||||
描述: '是否将令牌或 SSH 密钥配置到本地 git 配置中'
|
||||
默认值: true
|
||||
path:
|
||||
description: 'Relative path under $GITHUB_WORKSPACE to place the repository'
|
||||
描述: '在 $GITHUB_WORKSPACE 下放置仓库的相对路径'
|
||||
clean:
|
||||
description: 'Whether to execute `git clean -ffdx && git reset --hard HEAD` before fetching'
|
||||
default: true
|
||||
描述: '是否在获取前执行 `git clean -ffdx && git reset --hard HEAD`'
|
||||
默认值: true
|
||||
fetch-depth:
|
||||
description: 'Number of commits to fetch. 0 indicates all history for all tags and branches.'
|
||||
default: 1
|
||||
描述: '要获取的提交数量。0 表示所有分支和标签的所有历史记录。'
|
||||
默认值: 1
|
||||
lfs:
|
||||
description: 'Whether to download Git-LFS files'
|
||||
default: false
|
||||
描述: '是否下载 Git-LFS 文件'
|
||||
默认值: false
|
||||
submodules:
|
||||
description: >
|
||||
Whether to checkout submodules: `true` to checkout submodules or `recursive` to
|
||||
recursively checkout submodules.
|
||||
描述: >
|
||||
是否检出子模块:`true` 表示检出子模块,`recursive` 表示递归检出子模块。
|
||||
|
||||
|
||||
When the `ssh-key` input is not provided, SSH URLs beginning with `git@github.com:` are
|
||||
converted to HTTPS.
|
||||
default: false
|
||||
当未提供 `ssh-key` 输入时,以 `git@github.com:` 开头的 SSH URL 会被转换为 HTTPS。
|
||||
默认值: false
|
||||
```
|
||||
|
||||
Note:
|
||||
- SSH support is new
|
||||
- `persist-credentials` is new
|
||||
- `path` behavior is different (refer [below](#path) for details)
|
||||
注意:
|
||||
- 新增 SSH 支持
|
||||
- 新增 `persist-credentials` 参数
|
||||
- `path` 行为不同(详见下文 [path](#path))
|
||||
|
||||
### Fallback to GitHub API
|
||||
### 回退到 GitHub API
|
||||
|
||||
When a sufficient version of git is not in the PATH, fallback to the [web API](https://developer.github.com/v3/repos/contents/#get-archive-link) to download a tarball/zipball.
|
||||
当 PATH 中没有足够版本的 git 时,回退到 [Web API](https://developer.github.com/v3/repos/contents/#get-archive-link) 下载 tarball/zipball。
|
||||
|
||||
Note:
|
||||
- LFS files are not included in the archive. Therefore fail if LFS is set to true.
|
||||
- Submodules are also not included in the archive.
|
||||
注意:
|
||||
- 存档中不包含 LFS 文件。因此,如果 LFS 设置为 true,则会失败。
|
||||
- 存档中也不包含子模块。
|
||||
|
||||
### Persist credentials
|
||||
### 持久化凭据
|
||||
|
||||
The credentials will be persisted on disk. This will allow users to script authenticated git commands, like `git fetch`.
|
||||
凭据将持久化到磁盘。这将允许用户编写经过身份验证的 git 命令脚本,如 `git fetch`。
|
||||
|
||||
A post script will remove the credentials (cleanup for self-hosted).
|
||||
作业后脚本将移除凭据(自托管环境的清理)。
|
||||
|
||||
Users may opt-out by specifying `persist-credentials: false`
|
||||
用户可以通过指定 `persist-credentials: false` 选择退出
|
||||
|
||||
Note:
|
||||
- Users scripting `git commit` may need to set the username and email. The service does not provide any reasonable default value. Users can add `git config user.name <NAME>` and `git config user.email <EMAIL>`. We will document this guidance.
|
||||
注意:
|
||||
- 编写 `git commit` 脚本的用户可能需要设置用户名和电子邮件。服务不会提供任何合理的默认值。用户可以添加 `git config user.name <NAME>` 和 `git config user.email <EMAIL>`。我们将记录此指导。
|
||||
|
||||
#### PAT
|
||||
|
||||
When using the `${{github.token}}` or a PAT, the token will be persisted in the local git config. The config key `http.https://github.com/.extraheader` enables an auth header to be specified on all authenticated commands `AUTHORIZATION: basic <BASE64_U:P>`.
|
||||
使用 `${{github.token}}` 或 PAT 时,令牌将持久化到本地 git 配置中。配置键 `http.https://github.com/.extraheader` 允许在所有经过身份验证的命令上指定 auth header `AUTHORIZATION: basic <BASE64_U:P>`。
|
||||
|
||||
Note:
|
||||
- The auth header is scoped to all of github `http.https://github.com/.extraheader`
|
||||
- Additional public remotes also just work.
|
||||
- If users want to authenticate to an additional private remote, they should provide the `token` input.
|
||||
注意:
|
||||
- auth header 的范围限定在所有 github `http.https://github.com/.extraheader`
|
||||
- 额外的公共远程仓库也能正常工作。
|
||||
- 如果用户需要对额外的私有远程仓库进行身份验证,他们应提供 `token` 输入。
|
||||
|
||||
#### SSH key
|
||||
#### SSH 密钥
|
||||
|
||||
The SSH key will be written to disk under the `$RUNNER_TEMP` directory. The SSH key will
|
||||
be removed by the action's post-job hook. Additionally, RUNNER_TEMP is cleared by the
|
||||
runner between jobs.
|
||||
SSH 密钥将写入 `$RUNNER_TEMP` 目录下的磁盘。SSH 密钥将由操作的作业后钩子移除。此外,RUNNER_TEMP 在作业之间会被运行器清除。
|
||||
|
||||
The SSH key must be written with strict file permissions. The SSH client requires the file
|
||||
to be read/write for the user, and not accessible by others.
|
||||
SSH 密钥必须以严格的文件权限写入。SSH 客户端要求文件对用户可读/写,且其他用户无法访问。
|
||||
|
||||
The user host key database (`~/.ssh/known_hosts`) will be copied to a unique file under
|
||||
`$RUNNER_TEMP`. And values from the input `ssh-known-hosts` will be added to the file.
|
||||
用户主机密钥数据库 (`~/.ssh/known_hosts`) 将被复制到 `$RUNNER_TEMP` 下的唯一文件中。输入 `ssh-known-hosts` 的值将被添加到该文件中。
|
||||
|
||||
The SSH command will be overridden for the local git config:
|
||||
SSH 命令将覆盖本地 git 配置:
|
||||
|
||||
```sh
|
||||
git config core.sshCommand 'ssh -i "$RUNNER_TEMP/path-to-ssh-key" -o StrictHostKeyChecking=yes -o CheckHostIP=no -o "UserKnownHostsFile=$RUNNER_TEMP/path-to-known-hosts"'
|
||||
```
|
||||
|
||||
When the input `ssh-strict` is set to `false`, the options `CheckHostIP` and `StrictHostKeyChecking` will not be overridden.
|
||||
当输入 `ssh-strict` 设置为 `false` 时,选项 `CheckHostIP` 和 `StrictHostKeyChecking` 将不会被覆盖。
|
||||
|
||||
Note:
|
||||
- When `ssh-strict` is set to `true` (default), the SSH option `CheckHostIP` can safely be disabled.
|
||||
Strict host checking verifies the server's public key. Therefore, IP verification is unnecessary
|
||||
and noisy. For example:
|
||||
> Warning: Permanently added the RSA host key for IP address '140.82.113.4' to the list of known hosts.
|
||||
- Since GIT_SSH_COMMAND overrides core.sshCommand, temporarily set the env var when fetching the repo. When creds
|
||||
are persisted, core.sshCommand is leveraged to avoid multiple checkout steps stomping over each other.
|
||||
- Modify actions/runner to mount RUNNER_TEMP to enable scripting authenticated git commands from a container action.
|
||||
- Refer [here](https://linux.die.net/man/5/ssh_config) for SSH config details.
|
||||
注意:
|
||||
- 当 `ssh-strict` 设置为 `true`(默认值)时,可以安全地禁用 SSH 选项 `CheckHostIP`。
|
||||
严格的主机检查会验证服务器的公钥。因此,IP 验证是不必要的,并且会产生噪音。例如:
|
||||
> 警告:已将 RSA 主机密钥永久添加到已知主机列表中,IP 地址为 '140.82.113.4'。
|
||||
- 由于 GIT_SSH_COMMAND 会覆盖 core.sshCommand,因此在获取仓库时会临时设置环境变量。当凭据被持久化时,core.sshCommand 将被利用以避免多个检出步骤相互覆盖。
|
||||
- 修改 actions/runner 以挂载 RUNNER_TEMP,从而允许从容器操作中编写经过身份验证的 git 命令脚本。
|
||||
- 有关 SSH 配置详细信息,请参阅 [这里](https://linux.die.net/man/5/ssh_config)。
|
||||
|
||||
### Fetch behavior
|
||||
### 获取行为
|
||||
|
||||
Fetch only the SHA being built and set depth=1. This significantly reduces the fetch time for large repos.
|
||||
仅获取正在构建的 SHA 并将深度设置为 1。这显著减少了大型仓库的获取时间。
|
||||
|
||||
If a SHA isn't available (e.g. multi repo), then fetch only the specified ref with depth=1.
|
||||
如果 SHA 不可用(例如多仓库),则仅获取指定的 ref,深度为 1。
|
||||
|
||||
The input `fetch-depth` can be used to control the depth.
|
||||
可以使用输入 `fetch-depth` 控制深度。
|
||||
|
||||
Note:
|
||||
- Fetching a single commit is supported by Git wire protocol version 2. The git client uses protocol version 0 by default. The desired protocol version can be overridden in the git config or on the fetch command line invocation (`-c protocol.version=2`). We will override on the fetch command line, for transparency.
|
||||
- Git client version 2.18+ (released June 2018) is required for wire protocol version 2.
|
||||
注意:
|
||||
- Git 线路协议版本 2 支持获取单个提交。git 客户端默认使用协议版本 0。可以在 git 配置中或在 fetch 命令行调用时覆盖所需的协议版本(`-c protocol.version=2`)。我们将在 fetch 命令行上覆盖,以确保透明性。
|
||||
- Git 客户端版本 2.18+(2018 年 6 月发布)需要线路协议版本 2。
|
||||
|
||||
### Checkout behavior
|
||||
### 检出行为
|
||||
|
||||
For CI, checkout will create a local ref with the upstream set. This allows users to script git as they normally would.
|
||||
对于 CI,检出将创建一个设置了上游的本地引用。这允许用户像平常一样编写 git 脚本。
|
||||
|
||||
For PR, continue to checkout detached head. The PR branch is special - the branch and merge commit are created by the server. It doesn't match a users' local workflow.
|
||||
对于 PR,继续检出分离的 HEAD。PR 分支是特殊的 - 分支和合并提交由服务器创建。它不匹配用户的本地工作流。
|
||||
|
||||
Note:
|
||||
- Consider deleting all local refs during cleanup if that helps avoid collisions. More testing required.
|
||||
注意:
|
||||
- 如果有助于避免冲突,可以考虑在清理时删除所有本地引用。需要更多测试。
|
||||
|
||||
### Path
|
||||
### 路径
|
||||
|
||||
For the mainline scenario, the disk-layout behavior remains the same.
|
||||
对于主线场景,磁盘布局行为保持不变。
|
||||
|
||||
Remember, given the repo `johndoe/foo`, the mainline disk layout looks like:
|
||||
记住,对于仓库 `johndoe/foo`,主线磁盘布局如下:
|
||||
|
||||
```
|
||||
GITHUB_WORKSPACE=/home/runner/work/foo/foo
|
||||
RUNNER_WORKSPACE=/home/runner/work/foo
|
||||
```
|
||||
|
||||
V2 introduces a new contraint on the checkout path. The location must now be under `github.workspace`. Whereas the checkout@v1 constraint was one level up, under `runner.workspace`.
|
||||
V2 对检出路径引入了新的约束。位置现在必须在 `github.workspace` 下。而 checkout@v1 的约束是在上一级,位于 `runner.workspace` 下。
|
||||
|
||||
V2 no longer changes `github.workspace` to follow wherever the self repo is checked-out.
|
||||
V2 不再更改 `github.workspace` 以跟随自仓库的检出位置。
|
||||
|
||||
These behavioral changes align better with container actions. The [documented filesystem contract](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/virtual-environments-for-github-hosted-runners#docker-container-filesystem) is:
|
||||
这些行为变化更好地与容器操作对齐。[记录的文件系统契约](https://help.github.com/en/actions/automating-your-workflow-with-github-actions/virtual-environments-for-github-hosted-runners#docker-container-filesystem) 是:
|
||||
|
||||
- `/github/home`
|
||||
- `/github/workspace` - Note: GitHub Actions must be run by the default Docker user (root). Ensure your Dockerfile does not set the USER instruction, otherwise you will not be able to access `GITHUB_WORKSPACE`.
|
||||
- `/github/workspace` - 注意:GitHub Actions 必须由默认的 Docker 用户(root)运行。确保您的 Dockerfile 没有设置 USER 指令,否则您将无法访问 `GITHUB_WORKSPACE`。
|
||||
- `/github/workflow`
|
||||
|
||||
Note:
|
||||
- The tracking config will not be updated to reflect the path of the workflow repo.
|
||||
- Any existing workflow repo will not be moved when the checkout path changes. In fact some customers want to checkout the workflow repo twice, side by side against different branches.
|
||||
- Actions that need to operate only against the root of the self repo, should expose a `path` input.
|
||||
注意:
|
||||
- 跟踪配置不会更新以反映工作流仓库的路径。
|
||||
- 当检出路径更改时,任何现有的工作流仓库都不会被移动。实际上,一些客户希望并行检出工作流仓库到不同分支的旁边。
|
||||
- 需要仅针对自仓库的根目录操作的 Actions 应公开一个 `path` 输入。
|
||||
|
||||
#### Default value for `path` input
|
||||
#### `path` 输入的默认值
|
||||
|
||||
The `path` input will default to `./` which is rooted against `github.workspace`.
|
||||
`path` 输入将默认为 `./`,相对于 `github.workspace`。
|
||||
|
||||
This default fits the mainline scenario well: single checkout
|
||||
此默认值非常适合主线场景:单一检出
|
||||
|
||||
For multi-checkout, users must specify the `path` input for at least one of the repositories.
|
||||
对于多检出,用户必须至少为一个仓库指定 `path` 输入。
|
||||
|
||||
Note:
|
||||
- An alternative is for the self repo to default to `./` and other repos default to `<REPO_NAME>`. However nested layout is an atypical git layout and therefore is not a good default. Users should supply the path info.
|
||||
注意:
|
||||
- 另一种选择是自仓库默认为 `./`,其他仓库默认为 `<REPO_NAME>`。然而,嵌套布局是一种非典型的 git 布局,因此不是好的默认值。用户应提供路径信息。
|
||||
|
||||
#### Example - Nested layout
|
||||
#### 示例 - 嵌套布局
|
||||
|
||||
The following example checks-out two repositories and creates a nested layout.
|
||||
以下示例检出两个仓库并创建嵌套布局。
|
||||
|
||||
```yaml
|
||||
# Self repo - Checkout to $GITHUB_WORKSPACE
|
||||
- uses: checkout@v2
|
||||
自仓库 - 检出到 $GITHUB_WORKSPACE
|
||||
• uses: checkout@v2
|
||||
|
||||
|
||||
其他仓库 - 检出到 $GITHUB_WORKSPACE/myscripts
|
||||
• uses: checkout@v2
|
||||
|
||||
# Other repo - Checkout to $GITHUB_WORKSPACE/myscripts
|
||||
- uses: checkout@v2
|
||||
with:
|
||||
repository: myorg/myscripts
|
||||
path: myscripts
|
||||
```
|
||||
|
||||
#### Example - Side by side layout
|
||||
#### 示例 - 并排布局
|
||||
|
||||
The following example checks-out two repositories and creates a side-by-side layout.
|
||||
以下示例检出两个仓库并创建并排布局。
|
||||
|
||||
```yaml
|
||||
# Self repo - Checkout to $GITHUB_WORKSPACE/foo
|
||||
- uses: checkout@v2
|
||||
自仓库 - 检出到 $GITHUB_WORKSPACE/foo
|
||||
• uses: checkout@v2
|
||||
|
||||
with:
|
||||
path: foo
|
||||
|
||||
# Other repo - Checkout to $GITHUB_WORKSPACE/myscripts
|
||||
- uses: checkout@v2
|
||||
其他仓库 - 检出到 $GITHUB_WORKSPACE/myscripts
|
||||
• uses: checkout@v2
|
||||
|
||||
with:
|
||||
repository: myorg/myscripts
|
||||
path: myscripts
|
||||
```
|
||||
|
||||
#### Path impact to problem matchers
|
||||
#### 路径对问题匹配器的影响
|
||||
|
||||
Problem matchers associate the source files with annotations.
|
||||
问题匹配器将源文件与注释关联。
|
||||
|
||||
Today the runner verifies the source file is under the `github.workspace`. Otherwise the source file property is dropped.
|
||||
目前,运行器验证源文件是否在 `github.workspace` 下。否则,源文件属性将被丢弃。
|
||||
|
||||
Multi-checkout complicates the matter. However even today submodules may cause this heuristic to be inaccurate.
|
||||
多检出使问题复杂化。然而,即使是现在,子模块也可能导致此启发式不准确。
|
||||
|
||||
A better solution is:
|
||||
更好的解决方案是:
|
||||
|
||||
Given a source file path, walk up the directories until the first `.git/config` is found. Check if it matches the self repo (`url = https://github.com/OWNER/REPO`). If not, drop the source file path.
|
||||
给定源文件路径,向上遍历目录,直到找到第一个 `.git/config`。检查它是否与自仓库匹配(`url = https://github.com/OWNER/REPO`)。如果不匹配,则丢弃源文件路径。
|
||||
|
||||
### Submodules
|
||||
### 子模块
|
||||
|
||||
With both PAT and SSH key support, we should be able to provide frictionless support for
|
||||
submodules scenarios: recursive, non-recursive, relative submodule paths.
|
||||
有了 PAT 和 SSH 密钥支持,我们应该能够为子模块场景提供无缝支持:递归、非递归、相对子模块路径。
|
||||
|
||||
When fetching submodules, follow the `fetch-depth` settings.
|
||||
获取子模块时,遵循 `fetch-depth` 设置。
|
||||
|
||||
Also when fetching submodules, if the `ssh-key` input is not provided then convert SSH URLs to HTTPS: `-c url."https://github.com/".insteadOf "git@github.com:"`
|
||||
此外,在获取子模块时,如果未提供 `ssh-key` 输入,则将 SSH URL 转换为 HTTPS:`-c url."https://github.com/".insteadOf "git@github.com:"`
|
||||
|
||||
Credentials will be persisted in the submodules local git config too.
|
||||
凭据也将持久化到子模块的本地 git 配置中。
|
||||
|
||||
### Port to typescript
|
||||
### 转换为 TypeScript
|
||||
|
||||
The checkout action should be a typescript action on the GitHub graph, for the following reasons:
|
||||
- Enables customers to fork the checkout repo and modify
|
||||
- Serves as an example for customers
|
||||
- Demystifies the checkout action manifest
|
||||
- Simplifies the runner
|
||||
- Reduce the amount of runner code to port (if we ever do)
|
||||
出于以下原因,检出操作应该是 GitHub graph 上的 TypeScript 操作:
|
||||
- 使客户能够 fork 检出仓库并进行修改
|
||||
- 作为客户的示例
|
||||
- 澄清检出操作清单
|
||||
- 简化运行器
|
||||
- 减少需要移植的运行器代码量(如果我们曾经这样做)
|
||||
|
||||
Note:
|
||||
- This means job-container images will need git in the PATH, for checkout.
|
||||
注意:
|
||||
- 这意味着作业容器镜像需要在 PATH 中有 git,以便进行检出。
|
||||
|
||||
### Branching strategy and release tags
|
||||
### 分支策略和发布标签
|
||||
|
||||
- Create a servicing branch for V1: `releases/v1`
|
||||
- Merge the changes into the default branch
|
||||
- Release using a new tag `preview`
|
||||
- When stable, release using a new tag `v2`
|
||||
- 为 V1 创建一个维护分支:`releases/v1`
|
||||
- 将更改合并到默认分支
|
||||
- 使用新标签 `preview` 发布
|
||||
- 稳定后,使用新标签 `v2` 发布
|
||||
|
||||
## Consequences
|
||||
## 后果
|
||||
|
||||
- Update the checkout action and readme
|
||||
- Update samples to consume `actions/checkout@v2`
|
||||
- Job containers now require git in the PATH for checkout, otherwise fallback to REST API
|
||||
- Minimum git version 2.18
|
||||
- Update problem matcher logic regarding source file verification (runner)
|
||||
- 更新检出操作和自述文件
|
||||
- 更新示例以使用 `actions/checkout@v2`
|
||||
- 作业容器现在需要 PATH 中有 git 才能进行检出,否则回退到 REST API
|
||||
- 最低 git 版本 2.18
|
||||
- 更新问题匹配器逻辑,关于源文件验证(运行器)
|
39497
dist/index.js
vendored
39497
dist/index.js
vendored
File diff suppressed because one or more lines are too long
12
images/test-ubuntu-git.Dockerfile
Normal file
12
images/test-ubuntu-git.Dockerfile
Normal file
@ -0,0 +1,12 @@
|
||||
# Defines the test-ubuntu-git Container Image.
|
||||
# Consumed by actions/checkout CI/CD validation workflows.
|
||||
|
||||
FROM ubuntu:latest
|
||||
|
||||
RUN apt update
|
||||
RUN apt install -y git
|
||||
|
||||
LABEL org.opencontainers.image.title="Ubuntu + git (validation image)"
|
||||
LABEL org.opencontainers.image.description="Ubuntu image with git pre-installed. Intended primarily for testing `actions/checkout` during CI/CD workflows."
|
||||
LABEL org.opencontainers.image.documentation="https://github.com/actions/checkout/tree/main/images/test-ubuntu-git.md"
|
||||
LABEL org.opencontainers.image.licenses=MIT
|
15
images/test-ubuntu-git.md
Normal file
15
images/test-ubuntu-git.md
Normal file
@ -0,0 +1,15 @@
|
||||
# `test-ubuntu-git` Container Image
|
||||
|
||||
[](https://github.com/actions/checkout/actions/workflows/update-test-ubuntu-git.yml)
|
||||
|
||||
## Purpose
|
||||
|
||||
`test-ubuntu-git` is a container image hosted on the GitHub Container Registry, `ghcr.io`.
|
||||
|
||||
It is intended primarily for testing the [`actions/checkout` repository](https://github.com/actions/checkout) as part of `actions/checkout`'s CI/CD workflows.
|
||||
|
||||
The composition of `test-ubuntu-git` is intentionally minimal. It is comprised of [git](https://git-scm.com/) installed on top of a [base-level ubuntu image](https://hub.docker.com/_/ubuntu/tags).
|
||||
|
||||
# License
|
||||
|
||||
`test-ubuntu-git` is released under the [MIT License](/LICENSE).
|
@ -1,5 +1,6 @@
|
||||
module.exports = {
|
||||
clearMocks: true,
|
||||
fakeTimers: {},
|
||||
moduleFileExtensions: ['js', 'ts'],
|
||||
testEnvironment: 'node',
|
||||
testMatch: ['**/*.test.ts'],
|
||||
|
31931
package-lock.json
generated
31931
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
42
package.json
42
package.json
@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "checkout",
|
||||
"version": "3.5.1",
|
||||
"version": "4.2.2",
|
||||
"description": "checkout action",
|
||||
"main": "lib/main.js",
|
||||
"scripts": {
|
||||
@ -28,28 +28,28 @@
|
||||
},
|
||||
"homepage": "https://github.com/actions/checkout#readme",
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.10.0",
|
||||
"@actions/exec": "^1.0.1",
|
||||
"@actions/github": "^5.0.0",
|
||||
"@actions/core": "^1.10.1",
|
||||
"@actions/exec": "^1.1.1",
|
||||
"@actions/github": "^6.0.0",
|
||||
"@actions/io": "^1.1.3",
|
||||
"@actions/tool-cache": "^1.1.2",
|
||||
"uuid": "^3.3.3"
|
||||
"@actions/tool-cache": "^2.0.1",
|
||||
"uuid": "^9.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/jest": "^27.0.2",
|
||||
"@types/node": "^12.7.12",
|
||||
"@types/uuid": "^3.4.6",
|
||||
"@typescript-eslint/eslint-plugin": "^5.45.0",
|
||||
"@typescript-eslint/parser": "^5.45.0",
|
||||
"@vercel/ncc": "^0.36.1",
|
||||
"eslint": "^7.32.0",
|
||||
"eslint-plugin-github": "^4.3.2",
|
||||
"eslint-plugin-jest": "^25.7.0",
|
||||
"jest": "^27.3.0",
|
||||
"jest-circus": "^27.3.0",
|
||||
"js-yaml": "^3.13.1",
|
||||
"prettier": "^1.19.1",
|
||||
"ts-jest": "^27.0.7",
|
||||
"typescript": "^4.4.4"
|
||||
"@types/jest": "^29.5.12",
|
||||
"@types/node": "^20.12.12",
|
||||
"@types/uuid": "^9.0.8",
|
||||
"@typescript-eslint/eslint-plugin": "^7.9.0",
|
||||
"@typescript-eslint/parser": "^7.9.0",
|
||||
"@vercel/ncc": "^0.38.1",
|
||||
"eslint": "^8.57.0",
|
||||
"eslint-plugin-github": "^4.10.2",
|
||||
"eslint-plugin-jest": "^28.8.2",
|
||||
"jest": "^29.7.0",
|
||||
"jest-circus": "^29.7.0",
|
||||
"js-yaml": "^4.1.0",
|
||||
"prettier": "^3.3.3",
|
||||
"ts-jest": "^29.2.5",
|
||||
"typescript": "^5.5.4"
|
||||
}
|
||||
}
|
||||
|
@ -18,8 +18,9 @@ export function directoryExistsSync(path: string, required?: boolean): boolean {
|
||||
}
|
||||
|
||||
throw new Error(
|
||||
`Encountered an error when checking whether path '${path}' exists: ${(error as any)
|
||||
?.message ?? error}`
|
||||
`Encountered an error when checking whether path '${path}' exists: ${
|
||||
(error as any)?.message ?? error
|
||||
}`
|
||||
)
|
||||
}
|
||||
|
||||
@ -45,8 +46,9 @@ export function existsSync(path: string): boolean {
|
||||
}
|
||||
|
||||
throw new Error(
|
||||
`Encountered an error when checking whether path '${path}' exists: ${(error as any)
|
||||
?.message ?? error}`
|
||||
`Encountered an error when checking whether path '${path}' exists: ${
|
||||
(error as any)?.message ?? error
|
||||
}`
|
||||
)
|
||||
}
|
||||
|
||||
@ -67,8 +69,9 @@ export function fileExistsSync(path: string): boolean {
|
||||
}
|
||||
|
||||
throw new Error(
|
||||
`Encountered an error when checking whether path '${path}' exists: ${(error as any)
|
||||
?.message ?? error}`
|
||||
`Encountered an error when checking whether path '${path}' exists: ${
|
||||
(error as any)?.message ?? error
|
||||
}`
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -8,7 +8,7 @@ import * as path from 'path'
|
||||
import * as regexpHelper from './regexp-helper'
|
||||
import * as stateHelper from './state-helper'
|
||||
import * as urlHelper from './url-helper'
|
||||
import {default as uuid} from 'uuid/v4'
|
||||
import {v4 as uuid} from 'uuid'
|
||||
import {IGitCommandManager} from './git-command-manager'
|
||||
import {IGitSourceSettings} from './git-source-settings'
|
||||
|
||||
@ -49,7 +49,7 @@ class GitAuthHelper {
|
||||
gitSourceSettings: IGitSourceSettings | undefined
|
||||
) {
|
||||
this.git = gitCommandManager
|
||||
this.settings = gitSourceSettings || (({} as unknown) as IGitSourceSettings)
|
||||
this.settings = gitSourceSettings || ({} as unknown as IGitSourceSettings)
|
||||
|
||||
// Token auth header
|
||||
const serverUrl = urlHelper.getServerUrl(this.settings.githubServerUrl)
|
||||
|
@ -1,5 +1,6 @@
|
||||
import * as core from '@actions/core'
|
||||
import * as exec from '@actions/exec'
|
||||
import * as fs from 'fs'
|
||||
import * as fshelper from './fs-helper'
|
||||
import * as io from '@actions/io'
|
||||
import * as path from 'path'
|
||||
@ -10,12 +11,17 @@ import {GitVersion} from './git-version'
|
||||
|
||||
// Auth header not supported before 2.9
|
||||
// Wire protocol v2 not supported before 2.18
|
||||
// sparse-checkout not [well-]supported before 2.28 (see https://github.com/actions/checkout/issues/1386)
|
||||
export const MinimumGitVersion = new GitVersion('2.18')
|
||||
export const MinimumGitSparseCheckoutVersion = new GitVersion('2.28')
|
||||
|
||||
export interface IGitCommandManager {
|
||||
branchDelete(remote: boolean, branch: string): Promise<void>
|
||||
branchExists(remote: boolean, pattern: string): Promise<boolean>
|
||||
branchList(remote: boolean): Promise<string[]>
|
||||
disableSparseCheckout(): Promise<void>
|
||||
sparseCheckout(sparseCheckout: string[]): Promise<void>
|
||||
sparseCheckoutNonConeMode(sparseCheckout: string[]): Promise<void>
|
||||
checkout(ref: string, startPoint: string): Promise<void>
|
||||
checkoutDetach(): Promise<void>
|
||||
config(
|
||||
@ -25,7 +31,15 @@ export interface IGitCommandManager {
|
||||
add?: boolean
|
||||
): Promise<void>
|
||||
configExists(configKey: string, globalConfig?: boolean): Promise<boolean>
|
||||
fetch(refSpec: string[], fetchDepth?: number): Promise<void>
|
||||
fetch(
|
||||
refSpec: string[],
|
||||
options: {
|
||||
filter?: string
|
||||
fetchDepth?: number
|
||||
fetchTags?: boolean
|
||||
showProgress?: boolean
|
||||
}
|
||||
): Promise<void>
|
||||
getDefaultBranch(repositoryUrl: string): Promise<string>
|
||||
getWorkingDirectory(): string
|
||||
init(): Promise<void>
|
||||
@ -41,19 +55,26 @@ export interface IGitCommandManager {
|
||||
submoduleForeach(command: string, recursive: boolean): Promise<string>
|
||||
submoduleSync(recursive: boolean): Promise<void>
|
||||
submoduleUpdate(fetchDepth: number, recursive: boolean): Promise<void>
|
||||
submoduleStatus(): Promise<boolean>
|
||||
tagExists(pattern: string): Promise<boolean>
|
||||
tryClean(): Promise<boolean>
|
||||
tryConfigUnset(configKey: string, globalConfig?: boolean): Promise<boolean>
|
||||
tryDisableAutomaticGarbageCollection(): Promise<boolean>
|
||||
tryGetFetchUrl(): Promise<string>
|
||||
tryReset(): Promise<boolean>
|
||||
version(): Promise<GitVersion>
|
||||
}
|
||||
|
||||
export async function createCommandManager(
|
||||
workingDirectory: string,
|
||||
lfs: boolean
|
||||
lfs: boolean,
|
||||
doSparseCheckout: boolean
|
||||
): Promise<IGitCommandManager> {
|
||||
return await GitCommandManager.createCommandManager(workingDirectory, lfs)
|
||||
return await GitCommandManager.createCommandManager(
|
||||
workingDirectory,
|
||||
lfs,
|
||||
doSparseCheckout
|
||||
)
|
||||
}
|
||||
|
||||
class GitCommandManager {
|
||||
@ -63,7 +84,9 @@ class GitCommandManager {
|
||||
}
|
||||
private gitPath = ''
|
||||
private lfs = false
|
||||
private doSparseCheckout = false
|
||||
private workingDirectory = ''
|
||||
private gitVersion: GitVersion = new GitVersion()
|
||||
|
||||
// Private constructor; use createCommandManager()
|
||||
private constructor() {}
|
||||
@ -153,6 +176,33 @@ class GitCommandManager {
|
||||
return result
|
||||
}
|
||||
|
||||
async disableSparseCheckout(): Promise<void> {
|
||||
await this.execGit(['sparse-checkout', 'disable'])
|
||||
// Disabling 'sparse-checkout` leaves behind an undesirable side-effect in config (even in a pristine environment).
|
||||
await this.tryConfigUnset('extensions.worktreeConfig', false)
|
||||
}
|
||||
|
||||
async sparseCheckout(sparseCheckout: string[]): Promise<void> {
|
||||
await this.execGit(['sparse-checkout', 'set', ...sparseCheckout])
|
||||
}
|
||||
|
||||
async sparseCheckoutNonConeMode(sparseCheckout: string[]): Promise<void> {
|
||||
await this.execGit(['config', 'core.sparseCheckout', 'true'])
|
||||
const output = await this.execGit([
|
||||
'rev-parse',
|
||||
'--git-path',
|
||||
'info/sparse-checkout'
|
||||
])
|
||||
const sparseCheckoutPath = path.join(
|
||||
this.workingDirectory,
|
||||
output.stdout.trimRight()
|
||||
)
|
||||
await fs.promises.appendFile(
|
||||
sparseCheckoutPath,
|
||||
`\n${sparseCheckout.join('\n')}\n`
|
||||
)
|
||||
}
|
||||
|
||||
async checkout(ref: string, startPoint: string): Promise<void> {
|
||||
const args = ['checkout', '--progress', '--force']
|
||||
if (startPoint) {
|
||||
@ -201,15 +251,31 @@ class GitCommandManager {
|
||||
return output.exitCode === 0
|
||||
}
|
||||
|
||||
async fetch(refSpec: string[], fetchDepth?: number): Promise<void> {
|
||||
async fetch(
|
||||
refSpec: string[],
|
||||
options: {
|
||||
filter?: string
|
||||
fetchDepth?: number
|
||||
fetchTags?: boolean
|
||||
showProgress?: boolean
|
||||
}
|
||||
): Promise<void> {
|
||||
const args = ['-c', 'protocol.version=2', 'fetch']
|
||||
if (!refSpec.some(x => x === refHelper.tagsRefSpec)) {
|
||||
if (!refSpec.some(x => x === refHelper.tagsRefSpec) && !options.fetchTags) {
|
||||
args.push('--no-tags')
|
||||
}
|
||||
|
||||
args.push('--prune', '--progress', '--no-recurse-submodules')
|
||||
if (fetchDepth && fetchDepth > 0) {
|
||||
args.push(`--depth=${fetchDepth}`)
|
||||
args.push('--prune', '--no-recurse-submodules')
|
||||
if (options.showProgress) {
|
||||
args.push('--progress')
|
||||
}
|
||||
|
||||
if (options.filter) {
|
||||
args.push(`--filter=${options.filter}`)
|
||||
}
|
||||
|
||||
if (options.fetchDepth && options.fetchDepth > 0) {
|
||||
args.push(`--depth=${options.fetchDepth}`)
|
||||
} else if (
|
||||
fshelper.fileExistsSync(
|
||||
path.join(this.workingDirectory, '.git', 'shallow')
|
||||
@ -288,8 +354,8 @@ class GitCommandManager {
|
||||
}
|
||||
|
||||
async log1(format?: string): Promise<string> {
|
||||
var args = format ? ['log', '-1', format] : ['log', '-1']
|
||||
var silent = format ? false : true
|
||||
const args = format ? ['log', '-1', format] : ['log', '-1']
|
||||
const silent = format ? false : true
|
||||
const output = await this.execGit(args, false, silent)
|
||||
return output.stdout
|
||||
}
|
||||
@ -357,6 +423,12 @@ class GitCommandManager {
|
||||
await this.execGit(args)
|
||||
}
|
||||
|
||||
async submoduleStatus(): Promise<boolean> {
|
||||
const output = await this.execGit(['submodule', 'status'], true)
|
||||
core.debug(output.stdout)
|
||||
return output.exitCode === 0
|
||||
}
|
||||
|
||||
async tagExists(pattern: string): Promise<boolean> {
|
||||
const output = await this.execGit(['tag', '--list', pattern])
|
||||
return !!output.stdout.trim()
|
||||
@ -414,12 +486,21 @@ class GitCommandManager {
|
||||
return output.exitCode === 0
|
||||
}
|
||||
|
||||
async version(): Promise<GitVersion> {
|
||||
return this.gitVersion
|
||||
}
|
||||
|
||||
static async createCommandManager(
|
||||
workingDirectory: string,
|
||||
lfs: boolean
|
||||
lfs: boolean,
|
||||
doSparseCheckout: boolean
|
||||
): Promise<GitCommandManager> {
|
||||
const result = new GitCommandManager()
|
||||
await result.initializeCommandManager(workingDirectory, lfs)
|
||||
await result.initializeCommandManager(
|
||||
workingDirectory,
|
||||
lfs,
|
||||
doSparseCheckout
|
||||
)
|
||||
return result
|
||||
}
|
||||
|
||||
@ -469,7 +550,8 @@ class GitCommandManager {
|
||||
|
||||
private async initializeCommandManager(
|
||||
workingDirectory: string,
|
||||
lfs: boolean
|
||||
lfs: boolean,
|
||||
doSparseCheckout: boolean
|
||||
): Promise<void> {
|
||||
this.workingDirectory = workingDirectory
|
||||
|
||||
@ -484,23 +566,23 @@ class GitCommandManager {
|
||||
|
||||
// Git version
|
||||
core.debug('Getting git version')
|
||||
let gitVersion = new GitVersion()
|
||||
this.gitVersion = new GitVersion()
|
||||
let gitOutput = await this.execGit(['version'])
|
||||
let stdout = gitOutput.stdout.trim()
|
||||
if (!stdout.includes('\n')) {
|
||||
const match = stdout.match(/\d+\.\d+(\.\d+)?/)
|
||||
if (match) {
|
||||
gitVersion = new GitVersion(match[0])
|
||||
this.gitVersion = new GitVersion(match[0])
|
||||
}
|
||||
}
|
||||
if (!gitVersion.isValid()) {
|
||||
if (!this.gitVersion.isValid()) {
|
||||
throw new Error('Unable to determine git version')
|
||||
}
|
||||
|
||||
// Minimum git version
|
||||
if (!gitVersion.checkMinimum(MinimumGitVersion)) {
|
||||
if (!this.gitVersion.checkMinimum(MinimumGitVersion)) {
|
||||
throw new Error(
|
||||
`Minimum required git version is ${MinimumGitVersion}. Your git ('${this.gitPath}') is ${gitVersion}`
|
||||
`Minimum required git version is ${MinimumGitVersion}. Your git ('${this.gitPath}') is ${this.gitVersion}`
|
||||
)
|
||||
}
|
||||
|
||||
@ -532,8 +614,16 @@ class GitCommandManager {
|
||||
}
|
||||
}
|
||||
|
||||
this.doSparseCheckout = doSparseCheckout
|
||||
if (this.doSparseCheckout) {
|
||||
if (!this.gitVersion.checkMinimum(MinimumGitSparseCheckoutVersion)) {
|
||||
throw new Error(
|
||||
`Minimum Git version required for sparse checkout is ${MinimumGitSparseCheckoutVersion}. Your git ('${this.gitPath}') is ${this.gitVersion}`
|
||||
)
|
||||
}
|
||||
}
|
||||
// Set the user agent
|
||||
const gitHttpUserAgent = `git/${gitVersion} (github-actions-checkout)`
|
||||
const gitHttpUserAgent = `git/${this.gitVersion} (github-actions-checkout)`
|
||||
core.debug(`Set git useragent to: ${gitHttpUserAgent}`)
|
||||
this.gitEnv['GIT_HTTP_USER_AGENT'] = gitHttpUserAgent
|
||||
}
|
||||
|
@ -81,12 +81,18 @@ export async function prepareExistingDirectory(
|
||||
}
|
||||
core.endGroup()
|
||||
|
||||
// Check for submodules and delete any existing files if submodules are present
|
||||
if (!(await git.submoduleStatus())) {
|
||||
remove = true
|
||||
core.info('Bad Submodules found, removing existing files')
|
||||
}
|
||||
|
||||
// Clean
|
||||
if (clean) {
|
||||
core.startGroup('Cleaning the repository')
|
||||
if (!(await git.tryClean())) {
|
||||
core.debug(
|
||||
`The clean command failed. This might be caused by: 1) path too long, 2) permission issue, or 3) file in use. For futher investigation, manually run 'git clean -ffdx' on the directory '${repositoryPath}'.`
|
||||
`The clean command failed. This might be caused by: 1) path too long, 2) permission issue, or 3) file in use. For further investigation, manually run 'git clean -ffdx' on the directory '${repositoryPath}'.`
|
||||
)
|
||||
remove = true
|
||||
} else if (!(await git.tryReset())) {
|
||||
|
@ -9,7 +9,10 @@ import * as path from 'path'
|
||||
import * as refHelper from './ref-helper'
|
||||
import * as stateHelper from './state-helper'
|
||||
import * as urlHelper from './url-helper'
|
||||
import {IGitCommandManager} from './git-command-manager'
|
||||
import {
|
||||
MinimumGitSparseCheckoutVersion,
|
||||
IGitCommandManager
|
||||
} from './git-command-manager'
|
||||
import {IGitSourceSettings} from './git-source-settings'
|
||||
|
||||
export async function getSource(settings: IGitSourceSettings): Promise<void> {
|
||||
@ -153,23 +156,38 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
|
||||
|
||||
// Fetch
|
||||
core.startGroup('Fetching the repository')
|
||||
const fetchOptions: {
|
||||
filter?: string
|
||||
fetchDepth?: number
|
||||
fetchTags?: boolean
|
||||
showProgress?: boolean
|
||||
} = {}
|
||||
|
||||
if (settings.filter) {
|
||||
fetchOptions.filter = settings.filter
|
||||
} else if (settings.sparseCheckout) {
|
||||
fetchOptions.filter = 'blob:none'
|
||||
}
|
||||
|
||||
if (settings.fetchDepth <= 0) {
|
||||
// Fetch all branches and tags
|
||||
let refSpec = refHelper.getRefSpecForAllHistory(
|
||||
settings.ref,
|
||||
settings.commit
|
||||
)
|
||||
await git.fetch(refSpec)
|
||||
await git.fetch(refSpec, fetchOptions)
|
||||
|
||||
// When all history is fetched, the ref we're interested in may have moved to a different
|
||||
// commit (push or force push). If so, fetch again with a targeted refspec.
|
||||
if (!(await refHelper.testRef(git, settings.ref, settings.commit))) {
|
||||
refSpec = refHelper.getRefSpec(settings.ref, settings.commit)
|
||||
await git.fetch(refSpec)
|
||||
await git.fetch(refSpec, fetchOptions)
|
||||
}
|
||||
} else {
|
||||
fetchOptions.fetchDepth = settings.fetchDepth
|
||||
fetchOptions.fetchTags = settings.fetchTags
|
||||
const refSpec = refHelper.getRefSpec(settings.ref, settings.commit)
|
||||
await git.fetch(refSpec, settings.fetchDepth)
|
||||
await git.fetch(refSpec, fetchOptions)
|
||||
}
|
||||
core.endGroup()
|
||||
|
||||
@ -185,12 +203,30 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
|
||||
// LFS fetch
|
||||
// Explicit lfs-fetch to avoid slow checkout (fetches one lfs object at a time).
|
||||
// Explicit lfs fetch will fetch lfs objects in parallel.
|
||||
if (settings.lfs) {
|
||||
// For sparse checkouts, let `checkout` fetch the needed objects lazily.
|
||||
if (settings.lfs && !settings.sparseCheckout) {
|
||||
core.startGroup('Fetching LFS objects')
|
||||
await git.lfsFetch(checkoutInfo.startPoint || checkoutInfo.ref)
|
||||
core.endGroup()
|
||||
}
|
||||
|
||||
// Sparse checkout
|
||||
if (!settings.sparseCheckout) {
|
||||
let gitVersion = await git.version()
|
||||
// no need to disable sparse-checkout if the installed git runtime doesn't even support it.
|
||||
if (gitVersion.checkMinimum(MinimumGitSparseCheckoutVersion)) {
|
||||
await git.disableSparseCheckout()
|
||||
}
|
||||
} else {
|
||||
core.startGroup('Setting up sparse checkout')
|
||||
if (settings.sparseCheckoutConeMode) {
|
||||
await git.sparseCheckout(settings.sparseCheckout)
|
||||
} else {
|
||||
await git.sparseCheckoutNonConeMode(settings.sparseCheckout)
|
||||
}
|
||||
core.endGroup()
|
||||
}
|
||||
|
||||
// Checkout
|
||||
core.startGroup('Checking out the ref')
|
||||
await git.checkout(checkoutInfo.ref, checkoutInfo.startPoint)
|
||||
@ -225,7 +261,8 @@ export async function getSource(settings: IGitSourceSettings): Promise<void> {
|
||||
const commitInfo = await git.log1()
|
||||
|
||||
// Log commit sha
|
||||
await git.log1("--format='%H'")
|
||||
const commitSHA = await git.log1('--format=%H')
|
||||
core.setOutput('commit', commitSHA.trim())
|
||||
|
||||
// Check for incorrect pull request merge commit
|
||||
await refHelper.checkCommitInfo(
|
||||
@ -261,7 +298,11 @@ export async function cleanup(repositoryPath: string): Promise<void> {
|
||||
|
||||
let git: IGitCommandManager
|
||||
try {
|
||||
git = await gitCommandManager.createCommandManager(repositoryPath, false)
|
||||
git = await gitCommandManager.createCommandManager(
|
||||
repositoryPath,
|
||||
false,
|
||||
false
|
||||
)
|
||||
} catch {
|
||||
return
|
||||
}
|
||||
@ -297,7 +338,8 @@ async function getGitCommandManager(
|
||||
try {
|
||||
return await gitCommandManager.createCommandManager(
|
||||
settings.repositoryPath,
|
||||
settings.lfs
|
||||
settings.lfs,
|
||||
settings.sparseCheckout != null
|
||||
)
|
||||
} catch (err) {
|
||||
// Git is required for LFS
|
||||
|
@ -29,11 +29,36 @@ export interface IGitSourceSettings {
|
||||
*/
|
||||
clean: boolean
|
||||
|
||||
/**
|
||||
* The filter determining which objects to include
|
||||
*/
|
||||
filter: string | undefined
|
||||
|
||||
/**
|
||||
* The array of folders to make the sparse checkout
|
||||
*/
|
||||
sparseCheckout: string[]
|
||||
|
||||
/**
|
||||
* Indicates whether to use cone mode in the sparse checkout (if any)
|
||||
*/
|
||||
sparseCheckoutConeMode: boolean
|
||||
|
||||
/**
|
||||
* The depth when fetching
|
||||
*/
|
||||
fetchDepth: number
|
||||
|
||||
/**
|
||||
* Fetch tags, even if fetchDepth > 0 (default: false)
|
||||
*/
|
||||
fetchTags: boolean
|
||||
|
||||
/**
|
||||
* Indicates whether to use the --progress option when fetching
|
||||
*/
|
||||
showProgress: boolean
|
||||
|
||||
/**
|
||||
* Indicates whether to fetch LFS objects
|
||||
*/
|
||||
@ -69,6 +94,11 @@ export interface IGitSourceSettings {
|
||||
*/
|
||||
sshStrict: boolean
|
||||
|
||||
/**
|
||||
* The SSH user to login as
|
||||
*/
|
||||
sshUser: string
|
||||
|
||||
/**
|
||||
* Indicates whether to persist the credentials on disk to enable scripting authenticated git commands
|
||||
*/
|
||||
|
@ -6,7 +6,8 @@ import * as io from '@actions/io'
|
||||
import * as path from 'path'
|
||||
import * as retryHelper from './retry-helper'
|
||||
import * as toolCache from '@actions/tool-cache'
|
||||
import {default as uuid} from 'uuid/v4'
|
||||
import {v4 as uuid} from 'uuid'
|
||||
import {getServerApiUrl} from './url-helper'
|
||||
|
||||
const IS_WINDOWS = process.platform === 'win32'
|
||||
|
||||
@ -34,7 +35,9 @@ export async function downloadRepository(
|
||||
// Write archive to disk
|
||||
core.info('Writing archive to disk')
|
||||
const uniqueId = uuid()
|
||||
const archivePath = path.join(repositoryPath, `${uniqueId}.tar.gz`)
|
||||
const archivePath = IS_WINDOWS
|
||||
? path.join(repositoryPath, `${uniqueId}.zip`)
|
||||
: path.join(repositoryPath, `${uniqueId}.tar.gz`)
|
||||
await fs.promises.writeFile(archivePath, archiveData)
|
||||
archiveData = Buffer.from('') // Free memory
|
||||
|
||||
@ -84,7 +87,9 @@ export async function getDefaultBranch(
|
||||
): Promise<string> {
|
||||
return await retryHelper.execute(async () => {
|
||||
core.info('Retrieving the default branch name')
|
||||
const octokit = github.getOctokit(authToken, {baseUrl: baseUrl})
|
||||
const octokit = github.getOctokit(authToken, {
|
||||
baseUrl: getServerApiUrl(baseUrl)
|
||||
})
|
||||
let result: string
|
||||
try {
|
||||
// Get the default branch from the repo info
|
||||
@ -125,7 +130,9 @@ async function downloadArchive(
|
||||
commit: string,
|
||||
baseUrl?: string
|
||||
): Promise<Buffer> {
|
||||
const octokit = github.getOctokit(authToken, {baseUrl: baseUrl})
|
||||
const octokit = github.getOctokit(authToken, {
|
||||
baseUrl: getServerApiUrl(baseUrl)
|
||||
})
|
||||
const download = IS_WINDOWS
|
||||
? octokit.rest.repos.downloadZipballArchive
|
||||
: octokit.rest.repos.downloadTarballArchive
|
||||
|
@ -6,7 +6,7 @@ import * as workflowContextHelper from './workflow-context-helper'
|
||||
import {IGitSourceSettings} from './git-source-settings'
|
||||
|
||||
export async function getInputs(): Promise<IGitSourceSettings> {
|
||||
const result = ({} as unknown) as IGitSourceSettings
|
||||
const result = {} as unknown as IGitSourceSettings
|
||||
|
||||
// GitHub workspace
|
||||
let githubWorkspacePath = process.env['GITHUB_WORKSPACE']
|
||||
@ -82,6 +82,25 @@ export async function getInputs(): Promise<IGitSourceSettings> {
|
||||
result.clean = (core.getInput('clean') || 'true').toUpperCase() === 'TRUE'
|
||||
core.debug(`clean = ${result.clean}`)
|
||||
|
||||
// Filter
|
||||
const filter = core.getInput('filter')
|
||||
if (filter) {
|
||||
result.filter = filter
|
||||
}
|
||||
|
||||
core.debug(`filter = ${result.filter}`)
|
||||
|
||||
// Sparse checkout
|
||||
const sparseCheckout = core.getMultilineInput('sparse-checkout')
|
||||
if (sparseCheckout.length) {
|
||||
result.sparseCheckout = sparseCheckout
|
||||
core.debug(`sparse checkout = ${result.sparseCheckout}`)
|
||||
}
|
||||
|
||||
result.sparseCheckoutConeMode =
|
||||
(core.getInput('sparse-checkout-cone-mode') || 'true').toUpperCase() ===
|
||||
'TRUE'
|
||||
|
||||
// Fetch depth
|
||||
result.fetchDepth = Math.floor(Number(core.getInput('fetch-depth') || '1'))
|
||||
if (isNaN(result.fetchDepth) || result.fetchDepth < 0) {
|
||||
@ -89,6 +108,16 @@ export async function getInputs(): Promise<IGitSourceSettings> {
|
||||
}
|
||||
core.debug(`fetch depth = ${result.fetchDepth}`)
|
||||
|
||||
// Fetch tags
|
||||
result.fetchTags =
|
||||
(core.getInput('fetch-tags') || 'false').toUpperCase() === 'TRUE'
|
||||
core.debug(`fetch tags = ${result.fetchTags}`)
|
||||
|
||||
// Show fetch progress
|
||||
result.showProgress =
|
||||
(core.getInput('show-progress') || 'true').toUpperCase() === 'TRUE'
|
||||
core.debug(`show progress = ${result.showProgress}`)
|
||||
|
||||
// LFS
|
||||
result.lfs = (core.getInput('lfs') || 'false').toUpperCase() === 'TRUE'
|
||||
core.debug(`lfs = ${result.lfs}`)
|
||||
@ -114,13 +143,15 @@ export async function getInputs(): Promise<IGitSourceSettings> {
|
||||
result.sshKnownHosts = core.getInput('ssh-known-hosts')
|
||||
result.sshStrict =
|
||||
(core.getInput('ssh-strict') || 'true').toUpperCase() === 'TRUE'
|
||||
result.sshUser = core.getInput('ssh-user')
|
||||
|
||||
// Persist credentials
|
||||
result.persistCredentials =
|
||||
(core.getInput('persist-credentials') || 'false').toUpperCase() === 'TRUE'
|
||||
|
||||
// Workflow organization ID
|
||||
result.workflowOrganizationId = await workflowContextHelper.getOrganizationId()
|
||||
result.workflowOrganizationId =
|
||||
await workflowContextHelper.getOrganizationId()
|
||||
|
||||
// Set safe.directory in git global config.
|
||||
result.setSafeDirectory =
|
||||
|
@ -19,6 +19,7 @@ async function run(): Promise<void> {
|
||||
|
||||
// Get sources
|
||||
await gitSourceProvider.getSource(sourceSettings)
|
||||
core.setOutput('ref', sourceSettings.ref)
|
||||
} finally {
|
||||
// Unregister problem matcher
|
||||
coreCommand.issueCommand('remove-matcher', {owner: 'checkout-git'}, '')
|
||||
|
@ -20,7 +20,7 @@ function updateUsage(
|
||||
}
|
||||
|
||||
// Load the action.yml
|
||||
const actionYaml = yaml.safeLoad(fs.readFileSync(actionYamlPath).toString())
|
||||
const actionYaml = yaml.load(fs.readFileSync(actionYamlPath).toString())
|
||||
|
||||
// Load the README
|
||||
const originalReadme = fs.readFileSync(readmePath).toString()
|
||||
@ -120,7 +120,7 @@ function updateUsage(
|
||||
}
|
||||
|
||||
updateUsage(
|
||||
'actions/checkout@v3',
|
||||
'actions/checkout@v4',
|
||||
path.join(__dirname, '..', '..', 'action.yml'),
|
||||
path.join(__dirname, '..', '..', 'README.md')
|
||||
)
|
||||
|
@ -1,7 +1,7 @@
|
||||
import {IGitCommandManager} from './git-command-manager'
|
||||
import * as core from '@actions/core'
|
||||
import * as github from '@actions/github'
|
||||
import {isGhes} from './url-helper'
|
||||
import {getServerApiUrl, isGhes} from './url-helper'
|
||||
|
||||
export const tagsRefSpec = '+refs/tags/*:refs/tags/*'
|
||||
|
||||
@ -23,7 +23,7 @@ export async function getCheckoutInfo(
|
||||
throw new Error('Args ref and commit cannot both be empty')
|
||||
}
|
||||
|
||||
const result = ({} as unknown) as ICheckoutInfo
|
||||
const result = {} as unknown as ICheckoutInfo
|
||||
const upperRef = (ref || '').toUpperCase()
|
||||
|
||||
// SHA only
|
||||
@ -42,9 +42,13 @@ export async function getCheckoutInfo(
|
||||
result.ref = `refs/remotes/pull/${branch}`
|
||||
}
|
||||
// refs/tags/
|
||||
else if (upperRef.startsWith('REFS/')) {
|
||||
else if (upperRef.startsWith('REFS/TAGS/')) {
|
||||
result.ref = ref
|
||||
}
|
||||
// refs/
|
||||
else if (upperRef.startsWith('REFS/')) {
|
||||
result.ref = commit ? commit : ref
|
||||
}
|
||||
// Unqualified ref, check for a matching branch or tag
|
||||
else {
|
||||
if (await git.branchExists(true, `origin/${ref}`)) {
|
||||
@ -245,7 +249,7 @@ export async function checkCommitInfo(
|
||||
`Expected head sha ${expectedHeadSha}; actual head sha ${actualHeadSha}`
|
||||
)
|
||||
const octokit = github.getOctokit(token, {
|
||||
baseUrl: baseUrl,
|
||||
baseUrl: getServerApiUrl(baseUrl),
|
||||
userAgent: `actions-checkout-tracepoint/1.0 (code=STALE_MERGE;owner=${repositoryOwner};repo=${repositoryName};pr=${fromPayload(
|
||||
'number'
|
||||
)};run_id=${
|
||||
|
@ -12,7 +12,8 @@ export function getFetchUrl(settings: IGitSourceSettings): string {
|
||||
const encodedOwner = encodeURIComponent(settings.repositoryOwner)
|
||||
const encodedName = encodeURIComponent(settings.repositoryName)
|
||||
if (settings.sshKey) {
|
||||
return `git@${serviceUrl.hostname}:${encodedOwner}/${encodedName}.git`
|
||||
const user = settings.sshUser.length > 0 ? settings.sshUser : 'git'
|
||||
return `${user}@${serviceUrl.hostname}:${encodedOwner}/${encodedName}.git`
|
||||
}
|
||||
|
||||
// "origin" is SCHEME://HOSTNAME[:PORT]
|
||||
@ -20,26 +21,61 @@ export function getFetchUrl(settings: IGitSourceSettings): string {
|
||||
}
|
||||
|
||||
export function getServerUrl(url?: string): URL {
|
||||
let urlValue =
|
||||
url && url.trim().length > 0
|
||||
? url
|
||||
: process.env['GITHUB_SERVER_URL'] || 'https://github.com'
|
||||
return new URL(urlValue)
|
||||
let resolvedUrl = process.env['GITHUB_SERVER_URL'] || 'https://github.com'
|
||||
if (hasContent(url, WhitespaceMode.Trim)) {
|
||||
resolvedUrl = url!
|
||||
}
|
||||
|
||||
return new URL(resolvedUrl)
|
||||
}
|
||||
|
||||
export function getServerApiUrl(url?: string): string {
|
||||
let apiUrl = 'https://api.github.com'
|
||||
if (hasContent(url, WhitespaceMode.Trim)) {
|
||||
let serverUrl = getServerUrl(url)
|
||||
if (isGhes(url)) {
|
||||
serverUrl.pathname = 'api/v3'
|
||||
} else {
|
||||
serverUrl.hostname = 'api.' + serverUrl.hostname
|
||||
}
|
||||
|
||||
if (isGhes(url)) {
|
||||
const serverUrl = getServerUrl(url)
|
||||
apiUrl = new URL(`${serverUrl.origin}/api/v3`).toString()
|
||||
return pruneSuffix(serverUrl.toString(), '/')
|
||||
}
|
||||
|
||||
return apiUrl
|
||||
return process.env['GITHUB_API_URL'] || 'https://api.github.com'
|
||||
}
|
||||
|
||||
export function isGhes(url?: string): boolean {
|
||||
const ghUrl = getServerUrl(url)
|
||||
const ghUrl = new URL(
|
||||
url || process.env['GITHUB_SERVER_URL'] || 'https://github.com'
|
||||
)
|
||||
|
||||
return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM'
|
||||
const hostname = ghUrl.hostname.trimEnd().toUpperCase()
|
||||
const isGitHubHost = hostname === 'GITHUB.COM'
|
||||
const isGitHubEnterpriseCloudHost = hostname.endsWith('.GHE.COM')
|
||||
const isLocalHost = hostname.endsWith('.LOCALHOST')
|
||||
|
||||
return !isGitHubHost && !isGitHubEnterpriseCloudHost && !isLocalHost
|
||||
}
|
||||
|
||||
function pruneSuffix(text: string, suffix: string) {
|
||||
if (hasContent(suffix, WhitespaceMode.Preserve) && text?.endsWith(suffix)) {
|
||||
return text.substring(0, text.length - suffix.length)
|
||||
}
|
||||
return text
|
||||
}
|
||||
|
||||
enum WhitespaceMode {
|
||||
Trim,
|
||||
Preserve
|
||||
}
|
||||
|
||||
function hasContent(
|
||||
text: string | undefined,
|
||||
whitespaceMode: WhitespaceMode
|
||||
): boolean {
|
||||
let refinedText = text ?? ''
|
||||
if (whitespaceMode == WhitespaceMode.Trim) {
|
||||
refinedText = refinedText.trim()
|
||||
}
|
||||
return refinedText.length > 0
|
||||
}
|
||||
|
@ -23,8 +23,9 @@ export async function getOrganizationId(): Promise<number | undefined> {
|
||||
return id as number
|
||||
} catch (err) {
|
||||
core.debug(
|
||||
`Unable to load organization ID from GITHUB_EVENT_PATH: ${(err as any)
|
||||
.message || err}`
|
||||
`Unable to load organization ID from GITHUB_EVENT_PATH: ${
|
||||
(err as any).message || err
|
||||
}`
|
||||
)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user