diff --git a/README.md b/README.md index 99da196..3316207 100644 --- a/README.md +++ b/README.md @@ -93,7 +93,7 @@ The project provides a set of [entrypoint scripts](src/scripts/ci) for generatin The entrypoint script [`Invoke-Generate.ps1`](src/scripts/ci/Invoke-Generate.ps1) is used to generate release notes for any local git repository. To do so, simply define applicable [environment variables](#environment-variables-1) before executing the entrypoint script. -The project includes [`.vscode/tasks.json`](.vscode/tasks.json) which allows execution of `Invoke-Generate.ps1` via [*Build Tasks*](https://code.visualstudio.com/docs/editor/tasks) in [VSCode](https://code.visualstudio.com/). Simply execute the relevant build task while entering custom or default values per variable prompt. +The project includes [inbuilt](.vscode/tasks.json) and [samples](docs/samples/.vscode) of `.vscode/tasks.json` for generating release notes via [*Build Tasks*](https://code.visualstudio.com/docs/editor/tasks) in [VSCode](https://code.visualstudio.com/). Simply execute the relevant build task while entering custom or default values per variable prompt. ##### Variants @@ -107,7 +107,7 @@ Generating of release notes supports all tag refs. Tags *need not* follow [Seman The entrypoint script [`Invoke-Release.ps1`](src/scripts/ci/Invoke-Release.ps1) can be used to create releases for GitHub repositories. To do so, simply define applicable [environment variables](#environment-variables-1) before executing the entrypoint script. -The project includes [`.vscode/tasks.json`](.vscode/tasks.json) which allows execution of `Invoke-Release.ps1` via [*Build Tasks*](https://code.visualstudio.com/docs/editor/tasks) in [VSCode](https://code.visualstudio.com/). Simply execute the relevant build task while entering custom or default values per variable prompt. Note that due to the inability to enter multiline strings in build tasks, the options `RELEASE_NOTES_CONTENT` and `RELEASE_ASSETS` are presently unavailable and limited in usability respectively. +The project includes [inbuilt](.vscode/tasks.json) and [samples](docs/samples/.vscode) of `.vscode/tasks.json` for creating releases via [*Build Tasks*](https://code.visualstudio.com/docs/editor/tasks) in [VSCode](https://code.visualstudio.com/). Simply execute the relevant build task while entering custom or default values per variable prompt. Note that due to the inability to enter multiline strings in build tasks, the options `RELEASE_NOTES_CONTENT` and `RELEASE_ASSETS` are presently unavailable and limited in usability respectively. ##### Valid tags diff --git a/docs/samples/.vscode/tasks.submodule.json b/docs/samples/.vscode/tasks.submodule.json new file mode 100644 index 0000000..8220a3a --- /dev/null +++ b/docs/samples/.vscode/tasks.submodule.json @@ -0,0 +1,139 @@ +{ + // See https://go.microsoft.com/fwlink/?LinkId=733558 + // for the documentation about the tasks.json format + "version": "2.0.0", + "inputs": [ + // PSRepositoryReleaseManager + { + "id": "PROJECT_DIRECTORY", + "description": "PROJECT_DIRECTORY?", + "type": "promptString", + "default": "${workspaceFolder}" + }, + { + "id": "RELEASE_TAG_REF", + "description": "RELEASE_TAG_REF?", + "type": "promptString", + "default": "vx.x.x | branch | HEAD | remote/branch | commit-hash" + }, + { + "id": "RELEASE_NOTES_VARIANT", + "description": "RELEASE_NOTES_VARIANT?", + "type": "pickString", + "options": [ + "Changes-HashSubject-Merges", + "Changes-HashSubject-NoMerges-Categorized", + "Changes-HashSubject-NoMerges-CategorizedSorted", + "Changes-HashSubject-NoMerges", + "Changes-HashSubject", + "Changes-HashSubjectAuthor-NoMerges-Categorized", + "Changes-HashSubjectAuthor-NoMerges-CategorizedSorted", + "VersionDate-HashSubject-Merges", + "VersionDate-HashSubject-NoMerges-Categorized", + "VersionDate-HashSubject-NoMerges-CategorizedSorted", + "VersionDate-HashSubject-NoMerges", + "VersionDate-HashSubject", + "VersionDate-HashSubjectAuthor-NoMerges-Categorized", + "VersionDate-HashSubjectAuthor-NoMerges-CategorizedSorted", + "VersionDate-Subject-Merges", + "VersionDate-Subject-NoMerges-Categorized", + "VersionDate-Subject-NoMerges-CategorizedSorted", + "VersionDate-Subject-NoMerges", + "VersionDate-Subject", + "VersionDate-SubjectAuthor-NoMerges-Categorized", + "VersionDate-SubjectAuthor-NoMerges-CategorizedSorted" + ], + "default": "VersionDate-HashSubject-NoMerges-CategorizedSorted" + }, + { + "id": "RELEASE_NOTES_PATH", + "description": "RELEASE_NOTES_PATH?", + "type": "promptString", + "default": "${workspaceFolder}/.release-notes.md" + }, + { + "id": "GITHUB_API_TOKEN", + "description": "GITHUB_API_TOKEN?", + "type": "promptString", + "default": "xxx", + "password": true + }, + { + "id": "RELEASE_NAMESPACE", + "description": "RELEASE_NAMESPACE?", + "type": "promptString", + "default": "mygithubnamespace" + }, + { + "id": "RELEASE_REPOSITORY", + "description": "RELEASE_REPOSITORY?", + "type": "promptString", + "default": "my-project" + }, + { + "id": "RELEASE_NAME", + "description": "RELEASE_NAME?", + "type": "promptString", + "default": "My release name | vx.x.x" + }, + // { + // "id": "RELEASE_NOTES_CONTENT", + // "description": "RELEASE_NOTES_CONTENT?", + // "type": "promptString", + // "default": "My multi-line release notes", + // }, + { + "id": "RELEASE_DRAFT", + "description": "RELEASE_DRAFT?", + "type": "pickString", + "options": [ + "true", + "false" + ], + "default": "false" + }, + { + "id": "RELEASE_PRERELEASE", + "description": "RELEASE_PRERELEASE?", + "type": "pickString", + "options": [ + "true", + "false" + ], + "default": "false" + }, + { + "id": "RELEASE_ASSETS", + "description": "RELEASE_ASSETS?", + "type": "promptString", + "default": "path/to/assets/*" + } + ], + "tasks": [ + // PSRepositoryReleaseManager + { + "label": "[PSRepositoryReleaseManager] Generate release notes (pwsh)", + "type": "shell", + "command": "PROJECT_DIRECTORY='${input:PROJECT_DIRECTORY}' RELEASE_TAG_REF='${input:RELEASE_TAG_REF}' RELEASE_NOTES_VARIANT='${input:RELEASE_NOTES_VARIANT}' RELEASE_NOTES_PATH='${input:RELEASE_NOTES_PATH}' pwsh -NoLogo -NonInteractive -NoProfile -Command '$VerbosePreference = \"Continue\"; ./build/PSRepositoryReleaseManager/src/scripts/ci/Invoke-Generate.ps1'", + "group": "build" + }, + { + "label": "[PSRepositoryReleaseManager] Generate release notes (powershell)", + "type": "shell", + "command": "PROJECT_DIRECTORY='${input:PROJECT_DIRECTORY}' RELEASE_TAG_REF='${input:RELEASE_TAG_REF}' RELEASE_NOTES_VARIANT='${input:RELEASE_NOTES_VARIANT}' RELEASE_NOTES_PATH='${input:RELEASE_NOTES_PATH}' powershell -NoLogo -NonInteractive -NoProfile -Command '$VerbosePreference = \"Continue\"; ./build/PSRepositoryReleaseManager/src/scripts/ci/Invoke-Generate.ps1'", + "group": "build" + }, + { + "label": "[PSRepositoryReleaseManager] Create release (pwsh)", + "type": "shell", + "command": "GITHUB_API_TOKEN='${input:GITHUB_API_TOKEN}' PROJECT_DIRECTORY='${input:PROJECT_DIRECTORY}' RELEASE_TAG_REF='${input:RELEASE_TAG_REF}' RELEASE_NAMESPACE='${input:RELEASE_NAMESPACE}' RELEASE_REPOSITORY='${input:RELEASE_REPOSITORY}' RELEASE_NAME='${input:RELEASE_NAME}' RELEASE_DRAFT='${input:RELEASE_DRAFT}' RELEASE_PRERELEASE='${input:RELEASE_PRERELEASE}' RELEASE_ASSETS='${input:RELEASE_ASSETS}' pwsh -NoLogo -NonInteractive -NoProfile -Command '$VerbosePreference = \"Continue\"; ./build/PSRepositoryReleaseManager/src/scripts/ci/Invoke-Release.ps1'", + "group": "build" + }, + { + "label": "[PSRepositoryReleaseManager] Create release (powershell)", + "type": "shell", + "command": "GITHUB_API_TOKEN='${input:GITHUB_API_TOKEN}' PROJECT_DIRECTORY='${input:PROJECT_DIRECTORY}' RELEASE_TAG_REF='${input:RELEASE_TAG_REF}' RELEASE_NAMESPACE='${input:RELEASE_NAMESPACE}' RELEASE_REPOSITORY='${input:RELEASE_REPOSITORY}' RELEASE_NAME='${input:RELEASE_NAME}' RELEASE_DRAFT='${input:RELEASE_DRAFT}' RELEASE_PRERELEASE='${input:RELEASE_PRERELEASE}' RELEASE_ASSETS='${input:RELEASE_ASSETS}' powershell -NoLogo -NonInteractive -NoProfile -Command '$VerbosePreference = \"Continue\"; ./build/PSRepositoryReleaseManager/src/scripts/ci/Invoke-Release.ps1'", + "group": "build" + } + ] +}