diff --git a/.eslintignore b/.eslintignore new file mode 100644 index 0000000..bc0daab --- /dev/null +++ b/.eslintignore @@ -0,0 +1,11 @@ +# Compiled output +**/dist/ +**/lib/ +**/node_modules/ + +# Build files +**/.eslintrc.js +**/esbuild.js + +# Other generated files +**/*.map \ No newline at end of file diff --git a/.eslintrc.js b/.eslintrc.js index dcde970..0149f8c 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -2,7 +2,6 @@ module.exports = { root: true, extends: '@eclipse-glsp', - ignorePatterns: ['**/{node_modules,lib}', '**/.eslintrc.js'], parserOptions: { tsconfigRootDir: __dirname, diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 1d326d0..2eebb49 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -25,5 +25,5 @@ to learn how to report vulnerabilities. -- [ ] This PR should be mentioned in the changelog -- [ ] This PR introduces a breaking change (if yes, provide more details below for the changelog and the migration guide) +- [ ] This PR should be mentioned in the changelog +- [ ] This PR introduces a breaking change (if yes, provide more details below for the changelog and the migration guide) diff --git a/.github/workflows/prepare-release.yml b/.github/workflows/prepare-release.yml new file mode 100644 index 0000000..3dff521 --- /dev/null +++ b/.github/workflows/prepare-release.yml @@ -0,0 +1,116 @@ +name: Prepare Release + +on: + workflow_dispatch: + inputs: + release_type: + description: 'Release type (major, minor, patch, next, or custom)' + required: true + type: choice + options: + - major + - minor + - patch + - next + - custom + custom_version: + description: 'Custom version (required if release_type is custom)' + required: false + type: string + release_repo: + description: 'GLSP repository to release' + required: true + type: choice + options: + - glsp + - glsp-client + - glsp-theia-integration + - glsp-server + - glsp-server-node + - glsp-eclipse-integration + - glsp-vscode-integration + - glsp-playwright + branch: + description: 'Branch to use for the release repo (default: default branch)' + required: false + type: string + draft: + description: 'Create PR as draft' + required: false + type: boolean + default: false + workflow_call: + inputs: + release_type: + description: 'Release type (major, minor, patch, next, or custom)' + required: true + type: string + custom_version: + description: 'Custom version (required if release_type is custom)' + required: false + type: string + release_repo: + description: 'GLSP repository to release' + required: true + type: string + branch: + description: 'Branch to use for the release repo (default: default branch)' + required: false + type: string + draft: + description: 'Create PR as draft' + required: false + type: boolean + default: false + +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: Checkout release helper repo (@eclipse-glsp/glsp) + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + with: + repository: eclipse-glsp/glsp + path: glsp-release-helper + ref: releng + + - name: Checkout release repo (${{ inputs.release_repo || github.event.inputs.release_repo }}) + uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0 + with: + repository: eclipse-glsp/${{ inputs.release_repo || github.event.inputs.release_repo }} + path: release-repo + ref: ${{ inputs.branch || github.event.inputs.branch }} + + - name: Set up Node.js + uses: actions/setup-node@a0853c24544627f65ddf259abe73b1d18a591444 # v5.0.0 + with: + node-version: 20 + + - name: Install Yarn + run: npm install -g yarn + + - name: Install dependencies in glsp-release-helper + working-directory: ./glsp-release-helper + run: yarn install + + - name: Configure Git + run: | + git config --global user.name "eclipse-glsp-bot" + git config --global user.email "57175764+eclipse-glsp-bot@users.noreply.github.com" + + - name: Prepare release + id: prepare_release + working-directory: ./glsp-release-helper + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + DRAFT_FLAG="" + if [[ "${{ inputs.draft || github.event.inputs.draft }}" == "true" ]]; then + DRAFT_FLAG="-d" + fi + + if [[ "${{ inputs.release_type || github.event.inputs.release_type }}" == "custom" ]]; then + yarn glsp releng prepare custom "${{ inputs.custom_version || github.event.inputs.custom_version }}" -r ${{ github.workspace }}/release-repo $DRAFT_FLAG + else + yarn glsp releng prepare "${{ inputs.release_type || github.event.inputs.release_type }}" -r ${{ github.workspace }}/release-repo $DRAFT_FLAG + fi diff --git a/.gitignore b/.gitignore index a61f277..49cc49f 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,6 @@ node_modules/ *.log lib +dist tsconfig.tsbuildinfo eslint.xml diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 0000000..b50995a --- /dev/null +++ b/.prettierignore @@ -0,0 +1,17 @@ +# Dependencies +node_modules/ + +# Build outputs +lib/ +dist/ + +# Generated files +*.min.js +*.min.css + +# Lock files +package-lock.json +yarn.lock + +# Logs +*.log \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..f554902 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,24 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Debug GLSP CLI", + "type": "node", + "request": "launch", + "program": "${workspaceFolder}/dev-packages/cli/dist/cli.js", + "args": "${input:cliArgs}", + "cwd": "${workspaceFolder}", + "console": "integratedTerminal", + "sourceMaps": true, + "outFiles": ["${workspaceFolder}/dev-packages/cli/dist/*.js"] + } + ], + "inputs": [ + { + "id": "cliArgs", + "description": "CLI arguments (space-separated, e.g., 'checkHeaders ./')", + "default": "", + "type": "promptString" + } + ] +} diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md index d0174bf..9210738 100644 --- a/CODE_OF_CONDUCT.md +++ b/CODE_OF_CONDUCT.md @@ -5,6 +5,7 @@ Version 1.2 August 19, 2020 ## Our Pledge + In the interest of fostering an open and welcoming environment, we as community members, contributors, committers, and project leaders pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. diff --git a/dev-packages/README.md b/dev-packages/README.md index e331619..fed630d 100644 --- a/dev-packages/README.md +++ b/dev-packages/README.md @@ -1,4 +1,5 @@ # Eclipse GLSP - Dev Packages [![build-status](https://img.shields.io/jenkins/build?jobUrl=https://ci.eclipse.org/glsp/job/eclipse-glsp/job/glsp/job/master)](https://ci.eclipse.org/glsp/job/eclipse-glsp/job/glsp-client/job/master) + Common shared development packages for Eclipse GLSP components that are implemented with Typescript. ## Components diff --git a/dev-packages/cli/README.md b/dev-packages/cli/README.md index 6ca2665..0bb99e6 100644 --- a/dev-packages/cli/README.md +++ b/dev-packages/cli/README.md @@ -11,6 +11,24 @@ Install `@eclipse-glsp/cli` as a dev dependency in your application. yarn add @eclipse-glsp/cli --dev ``` +## Usage + +```console +Usage: glsp [options] [command] + +Options: + -V, --version output the version number + -h, --help display help for command + +Commands: + coverageReport [options] Generate a test coverage report for a glsp component + checkHeaders [options] Validates the copyright year range (end year) of license header files + updateNext|u [options] [rootDir] Updates all `next` dependencies in GLSP project to the latest version + generateIndex [options] Generate index files in a given source directory. + releng Commands for GLSP release engineering (Linux only, intended for CI/Maintainer use). + help [command] display help for command +``` + ## checkHeaders The `checkHeaders` command can be used to validate the copyright year (range) of license headers. @@ -23,19 +41,21 @@ $ glsp checkHeaders -h Usage: glsp checkHeaders [options] -Validates the copyright year range of license header files +Validates the copyright year range (end year) of license header files Arguments: rootDir The starting directory for the check Options: - -t, --type The scope of the check. In addition to a full recursive check, is also possible to only consider pending changes or the last commit (choices: "full", "changes", "lastCommit", default: - "full") + -t, --type The scope of the check. In addition to a full recursive check, is also possible to only + consider pending changes or the last commit (choices: "full", "changes", "lastCommit", + default: "full") -f, --fileExtensions File extensions that should be checked (default: ["ts","tsx"]) - -e, --exclude File patterns that should be excluded from the check. New exclude patterns are added to the default patterns (default: [**/@(node_modules|lib|dist|bundle)/**]) - --no-exclude-defaults Disables the default excludes patterns. Only explicitly passed exclude patterns (-e, --exclude) are considered + -e, --exclude File patterns that should be excluded from the check. New exclude patterns are added to + the default patterns (default: [**/@(node_modules|lib|dist|bundle)/**]) + --no-exclude-defaults Disables the default excludes patterns. Only explicitly passed exclude patterns (-e, + --exclude) are considered -j, --json Also persist validation results as json file (default: false) - -s, --severity The severity of validation results that should be printed. (choices: "error", "warn", "ok", default: "error" (only)) -a, --autoFix Auto apply & commit fixes without prompting the user (default: false) -h, --help display help for command ``` @@ -52,37 +72,12 @@ Usage: glsp coverageReport [options] Generate a test coverage report for a glsp component Options: - -p, --projectRoot The root directory of the GLSP component (default: "") + -p, --projectRoot The root directory of the GLSP component (default: + "") -c, --coverageScript