Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
…y-action into dev
  • Loading branch information
JamesIves committed May 18, 2024
2 parents c282185 + 91fd6ee commit dfda814
Show file tree
Hide file tree
Showing 3 changed files with 110 additions and 73 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ jobs:
yarn test
- name: Uploade CodeCov Report
uses: codecov/codecov-action@v4.3.0
uses: codecov/codecov-action@v4.4.0
with:
token: ${{ secrets.CODECOV_TOKEN }}

Expand Down
64 changes: 53 additions & 11 deletions src/worktree.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,37 @@ import {ActionInterface} from './constants'
import {execute} from './execute'
import {extractErrorMessage, suppressSensitiveInformation} from './util'

/**
* Git checkout command.
*/
export class GitCheckout {
/**
* @param orphan - Bool indicating if the branch is an orphan.
*/
orphan = false

/**
* @param commitish - The commitish to check out.
*/
commitish?: string | null = null

/**
* @param branch - The branch name.
*/
branch: string
constructor(branch: string) {

/**
* @param branch - The branch name.
* @param commitish - The commitish to check out.
*/
constructor(branch: string, commitish?: string) {
this.branch = branch
this.commitish = commitish || null
}

/**
* Returns the string representation of the git checkout command.
*/
toString(): string {
return [
'git',
Expand All @@ -22,12 +46,15 @@ export class GitCheckout {
}

/**
* Generate the worktree and set initial content if it exists
* Generates a git worktree.
* @param action - The action interface.
* @param worktreedir - The worktree directory.
* @param branchExists - Bool indicating if the branch exists.
*/
export async function generateWorktree(
action: ActionInterface,
worktreedir: string,
branchExists: unknown
branchExists: boolean | number
): Promise<void> {
try {
info('Creating worktree…')
Expand All @@ -46,7 +73,8 @@ export async function generateWorktree(
action.silent
)

const checkout = new GitCheckout(action.branch)
let branchName = action.branch
let checkout = new GitCheckout(branchName)

if (branchExists) {
// There's existing data on the branch to check out
Expand All @@ -62,14 +90,28 @@ export async function generateWorktree(
checkout.orphan = true
}

await execute(
checkout.toString(),
`${action.workspace}/${worktreedir}`,
action.silent
)
try {
await execute(
checkout.toString(),
`${action.workspace}/${worktreedir}`,
action.silent
)
} catch (error) {
info(
'Error encountered while checking out branch. Attempting to continue with a new branch name.'
)
branchName = `temp-${Date.now()}`
checkout = new GitCheckout(branchName, `origin/${action.branch}`)

await execute(
checkout.toString(),
`${action.workspace}/${worktreedir}`,
action.silent
)
}

if (!branchExists) {
info(`Created the ${action.branch} branch… 🔧`)
info(`Created the ${branchName} branch… 🔧`)

// Our index is in HEAD state, reset
await execute(
Expand All @@ -81,7 +123,7 @@ export async function generateWorktree(
if (!action.singleCommit) {
// New history isn't singleCommit, create empty initial commit
await execute(
`git commit --no-verify --allow-empty -m "Initial ${action.branch} commit"`,
`git commit --no-verify --allow-empty -m "Initial ${branchName} commit"`,
`${action.workspace}/${worktreedir}`,
action.silent
)
Expand Down
117 changes: 56 additions & 61 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -1223,21 +1223,19 @@
semver "^7.6.0"
ts-api-utils "^1.3.0"

"@typescript-eslint/eslint-plugin@7.8.0":
version "7.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.8.0.tgz#c78e309fe967cb4de05b85cdc876fb95f8e01b6f"
integrity sha512-gFTT+ezJmkwutUPmB0skOj3GZJtlEGnlssems4AjkVweUPGj7jRwwqg0Hhg7++kPGJqKtTYx+R05Ftww372aIg==
"@typescript-eslint/eslint-plugin@7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.9.0.tgz#093b96fc4e342226e65d5f18f9c87081e0b04a31"
integrity sha512-6e+X0X3sFe/G/54aC3jt0txuMTURqLyekmEHViqyA2VnxhLMpvA6nqmcjIy+Cr9tLDHPssA74BP5Mx9HQIxBEA==
dependencies:
"@eslint-community/regexpp" "^4.10.0"
"@typescript-eslint/scope-manager" "7.8.0"
"@typescript-eslint/type-utils" "7.8.0"
"@typescript-eslint/utils" "7.8.0"
"@typescript-eslint/visitor-keys" "7.8.0"
debug "^4.3.4"
"@typescript-eslint/scope-manager" "7.9.0"
"@typescript-eslint/type-utils" "7.9.0"
"@typescript-eslint/utils" "7.9.0"
"@typescript-eslint/visitor-keys" "7.9.0"
graphemer "^1.4.0"
ignore "^5.3.1"
natural-compare "^1.4.0"
semver "^7.6.0"
ts-api-utils "^1.3.0"

"@typescript-eslint/parser@7.7.0":
Expand All @@ -1251,15 +1249,15 @@
"@typescript-eslint/visitor-keys" "7.7.0"
debug "^4.3.4"

"@typescript-eslint/parser@7.8.0":
version "7.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.8.0.tgz#1e1db30c8ab832caffee5f37e677dbcb9357ddc8"
integrity sha512-KgKQly1pv0l4ltcftP59uQZCi4HUYswCLbTqVZEJu7uLX8CTLyswqMLqLN+2QFz4jCptqWVV4SB7vdxcH2+0kQ==
"@typescript-eslint/parser@7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-7.9.0.tgz#fb3ba01b75e0e65cb78037a360961b00301f6c70"
integrity sha512-qHMJfkL5qvgQB2aLvhUSXxbK7OLnDkwPzFalg458pxQgfxKDfT1ZDbHQM/I6mDIf/svlMkj21kzKuQ2ixJlatQ==
dependencies:
"@typescript-eslint/scope-manager" "7.8.0"
"@typescript-eslint/types" "7.8.0"
"@typescript-eslint/typescript-estree" "7.8.0"
"@typescript-eslint/visitor-keys" "7.8.0"
"@typescript-eslint/scope-manager" "7.9.0"
"@typescript-eslint/types" "7.9.0"
"@typescript-eslint/typescript-estree" "7.9.0"
"@typescript-eslint/visitor-keys" "7.9.0"
debug "^4.3.4"

"@typescript-eslint/scope-manager@7.7.0":
Expand All @@ -1270,13 +1268,13 @@
"@typescript-eslint/types" "7.7.0"
"@typescript-eslint/visitor-keys" "7.7.0"

"@typescript-eslint/scope-manager@7.8.0":
version "7.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.8.0.tgz#bb19096d11ec6b87fb6640d921df19b813e02047"
integrity sha512-viEmZ1LmwsGcnr85gIq+FCYI7nO90DVbE37/ll51hjv9aG+YZMb4WDE2fyWpUR4O/UrhGRpYXK/XajcGTk2B8g==
"@typescript-eslint/scope-manager@7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-7.9.0.tgz#1dd3e63a4411db356a9d040e75864851b5f2619b"
integrity sha512-ZwPK4DeCDxr3GJltRz5iZejPFAAr4Wk3+2WIBaj1L5PYK5RgxExu/Y68FFVclN0y6GGwH8q+KgKRCvaTmFBbgQ==
dependencies:
"@typescript-eslint/types" "7.8.0"
"@typescript-eslint/visitor-keys" "7.8.0"
"@typescript-eslint/types" "7.9.0"
"@typescript-eslint/visitor-keys" "7.9.0"

"@typescript-eslint/type-utils@7.7.0":
version "7.7.0"
Expand All @@ -1288,13 +1286,13 @@
debug "^4.3.4"
ts-api-utils "^1.3.0"

"@typescript-eslint/type-utils@7.8.0":
version "7.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.8.0.tgz#9de166f182a6e4d1c5da76e94880e91831e3e26f"
integrity sha512-H70R3AefQDQpz9mGv13Uhi121FNMh+WEaRqcXTX09YEDky21km4dV1ZXJIp8QjXc4ZaVkXVdohvWDzbnbHDS+A==
"@typescript-eslint/type-utils@7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-7.9.0.tgz#f523262e1b66ca65540b7a65a1222db52e0a90c9"
integrity sha512-6Qy8dfut0PFrFRAZsGzuLoM4hre4gjzWJB6sUvdunCYZsYemTkzZNwF1rnGea326PHPT3zn5Lmg32M/xfJfByA==
dependencies:
"@typescript-eslint/typescript-estree" "7.8.0"
"@typescript-eslint/utils" "7.8.0"
"@typescript-eslint/typescript-estree" "7.9.0"
"@typescript-eslint/utils" "7.9.0"
debug "^4.3.4"
ts-api-utils "^1.3.0"

Expand All @@ -1303,10 +1301,10 @@
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.7.0.tgz#23af4d24bf9ce15d8d301236e3e3014143604f27"
integrity sha512-G01YPZ1Bd2hn+KPpIbrAhEWOn5lQBrjxkzHkWvP6NucMXFtfXoevK82hzQdpfuQYuhkvFDeQYbzXCjR1z9Z03w==

"@typescript-eslint/types@7.8.0":
version "7.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.8.0.tgz#1fd2577b3ad883b769546e2d1ef379f929a7091d"
integrity sha512-wf0peJ+ZGlcH+2ZS23aJbOv+ztjeeP8uQ9GgwMJGVLx/Nj9CJt17GWgWWoSmoRVKAX2X+7fzEnAjxdvK2gqCLw==
"@typescript-eslint/types@7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-7.9.0.tgz#b58e485e4bfba055659c7e683ad4f5f0821ae2ec"
integrity sha512-oZQD9HEWQanl9UfsbGVcZ2cGaR0YT5476xfWE0oE5kQa2sNK2frxOlkeacLOTh9po4AlUT5rtkGyYM5kew0z5w==

"@typescript-eslint/typescript-estree@7.7.0":
version "7.7.0"
Expand All @@ -1322,13 +1320,13 @@
semver "^7.6.0"
ts-api-utils "^1.3.0"

"@typescript-eslint/typescript-estree@7.8.0":
version "7.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.8.0.tgz#b028a9226860b66e623c1ee55cc2464b95d2987c"
integrity sha512-5pfUCOwK5yjPaJQNy44prjCwtr981dO8Qo9J9PwYXZ0MosgAbfEMB008dJ5sNo3+/BN6ytBPuSvXUg9SAqB0dg==
"@typescript-eslint/typescript-estree@7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-7.9.0.tgz#3395e27656060dc313a6b406c3a298b729685e07"
integrity sha512-zBCMCkrb2YjpKV3LA0ZJubtKCDxLttxfdGmwZvTqqWevUPN0FZvSI26FalGFFUZU/9YQK/A4xcQF9o/VVaCKAg==
dependencies:
"@typescript-eslint/types" "7.8.0"
"@typescript-eslint/visitor-keys" "7.8.0"
"@typescript-eslint/types" "7.9.0"
"@typescript-eslint/visitor-keys" "7.9.0"
debug "^4.3.4"
globby "^11.1.0"
is-glob "^4.0.3"
Expand All @@ -1349,18 +1347,15 @@
"@typescript-eslint/typescript-estree" "7.7.0"
semver "^7.6.0"

"@typescript-eslint/utils@7.8.0", "@typescript-eslint/utils@^6.0.0 || ^7.0.0":
version "7.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.8.0.tgz#57a79f9c0c0740ead2f622e444cfaeeb9fd047cd"
integrity sha512-L0yFqOCflVqXxiZyXrDr80lnahQfSOfc9ELAAZ75sqicqp2i36kEZZGuUymHNFoYOqxRT05up760b4iGsl02nQ==
"@typescript-eslint/utils@7.9.0", "@typescript-eslint/utils@^6.0.0 || ^7.0.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-7.9.0.tgz#1b96a34eefdca1c820cb1bbc2751d848b4540899"
integrity sha512-5KVRQCzZajmT4Ep+NEgjXCvjuypVvYHUW7RHlXzNPuak2oWpVoD1jf5xCP0dPAuNIchjC7uQyvbdaSTFaLqSdA==
dependencies:
"@eslint-community/eslint-utils" "^4.4.0"
"@types/json-schema" "^7.0.15"
"@types/semver" "^7.5.8"
"@typescript-eslint/scope-manager" "7.8.0"
"@typescript-eslint/types" "7.8.0"
"@typescript-eslint/typescript-estree" "7.8.0"
semver "^7.6.0"
"@typescript-eslint/scope-manager" "7.9.0"
"@typescript-eslint/types" "7.9.0"
"@typescript-eslint/typescript-estree" "7.9.0"

"@typescript-eslint/visitor-keys@7.7.0":
version "7.7.0"
Expand All @@ -1370,12 +1365,12 @@
"@typescript-eslint/types" "7.7.0"
eslint-visitor-keys "^3.4.3"

"@typescript-eslint/visitor-keys@7.8.0":
version "7.8.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.8.0.tgz#7285aab991da8bee411a42edbd5db760d22fdd91"
integrity sha512-q4/gibTNBQNA0lGyYQCmWRS5D15n8rXh4QjK3KV+MBPlTYHpfBUT3D3PaPR/HeNiI9W6R7FvlkcGhNyAoP+caA==
"@typescript-eslint/visitor-keys@7.9.0":
version "7.9.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-7.9.0.tgz#82162656e339c3def02895f5c8546f6888d9b9ea"
integrity sha512-iESPx2TNLDNGQLyjKhUvIKprlP49XNEK+MvIf9nIO7ZZaZdbnfWKHnXAgufpxqfA0YryH8XToi4+CjBgVnFTSQ==
dependencies:
"@typescript-eslint/types" "7.8.0"
"@typescript-eslint/types" "7.9.0"
eslint-visitor-keys "^3.4.3"

acorn-jsx@^5.3.2:
Expand Down Expand Up @@ -3337,13 +3332,13 @@ type-fest@^0.8.1:
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d"

typescript-eslint@^7.7.0:
version "7.8.0"
resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-7.8.0.tgz#d2a73d4caac35d4d9825bfdfac06a9bf2ba175e4"
integrity sha512-sheFG+/D8N/L7gC3WT0Q8sB97Nm573Yfr+vZFzl/4nBdYcmviBPtwGSX9TJ7wpVg28ocerKVOt+k2eGmHzcgVA==
version "7.9.0"
resolved "https://registry.yarnpkg.com/typescript-eslint/-/typescript-eslint-7.9.0.tgz#353312f356ef4ba20105a4e2e736aa8c68f096a2"
integrity sha512-7iTn9c10teHHCys5Ud/yaJntXZrjt3h2mrx3feJGBOLgQkF3TB1X89Xs3aVQ/GgdXRAXpk2bPTdpRwHP4YkUow==
dependencies:
"@typescript-eslint/eslint-plugin" "7.8.0"
"@typescript-eslint/parser" "7.8.0"
"@typescript-eslint/utils" "7.8.0"
"@typescript-eslint/eslint-plugin" "7.9.0"
"@typescript-eslint/parser" "7.9.0"
"@typescript-eslint/utils" "7.9.0"

typescript@5.4.5:
version "5.4.5"
Expand Down

0 comments on commit dfda814

Please sign in to comment.