* Revise tsp-client usage instructions in README Updated usage instructions to use 'npm exec --prefix' for running tsp-client commands. The reason is `tsp-client` needs to resolve the input parameters based on the root folder of SDK repository. * Update README.md to use brace expansion for variables * Update README.md --------- Co-authored-by: Ray Chen <raychen@microsoft.com>
83 lines
2.5 KiB
Markdown
83 lines
2.5 KiB
Markdown
# TypeSpec Client Generator CLI
|
|
|
|
This directory contains npm package definitions for `@azure-tools/typespec-client-generator-cli` (tsp-client) with pinned versions to ensure reproducible builds across environments.
|
|
|
|
## Files
|
|
|
|
- **`package.json`** - npm package definition with pinned tsp-client version
|
|
- **`package-lock.json`** - Lock file ensuring exact dependency versions
|
|
|
|
## Prerequisites
|
|
|
|
- **Node.js** (with npm) - Required to install and run tsp-client
|
|
|
|
## Installation
|
|
|
|
### Install dependencies
|
|
|
|
```bash
|
|
# Navigate to this directory
|
|
cd eng/common/tsp-client
|
|
|
|
# Install dependencies
|
|
npm ci
|
|
```
|
|
|
|
## Usage
|
|
|
|
After installation, you can run `tsp-client` using `npm exec --prefix {path_to_the_eng/common/tsp-client}`.
|
|
Note that you should *not* navigate into the `eng/common/tsp-client` folder, since several `tsp-client` commands require the current working directory to be the client library's root.
|
|
|
|
```bash
|
|
# Set the tsp-client directory path relative to your current working directory
|
|
_TspClientDir=eng/common/tsp-client
|
|
|
|
# Get help
|
|
npm exec --prefix ${_TspClientDir} --no -- tsp-client --help
|
|
|
|
# Check version
|
|
npm exec --prefix ${_TspClientDir} --no -- tsp-client version
|
|
|
|
# Generate client code
|
|
npm exec --prefix ${_TspClientDir} --no -- tsp-client generate --output-dir ./generated
|
|
|
|
# Initialize a new project
|
|
npm exec --prefix ${_TspClientDir} --no -- tsp-client init --tsp-config ./tspconfig.yaml
|
|
```
|
|
|
|
## CI/CD Best Practices
|
|
|
|
```bash
|
|
_TspClientDir=eng/common/tsp-client
|
|
npm ci --prefix ${_TspClientDir}
|
|
npm exec --prefix ${_TspClientDir} --no -- tsp-client init --update-if-exists --tsp-config https://github.com/Azure/azure-rest-api-specs/blob/dee71463cbde1d416c47cf544e34f7966a94ddcb/specification/contosowidgetmanager/Contoso.WidgetManager/tspconfig.yaml
|
|
```
|
|
|
|
## Package Management
|
|
|
|
### Automatic Updates via Dependabot
|
|
|
|
Dependabot is configured to automatically check for updates to `@azure-tools/typespec-client-generator-cli` daily and create pull requests with updated `package.json` and `package-lock.json` files. This ensures the package stays current with the latest versions while maintaining security through the PR review process.
|
|
|
|
### Manual Version Updates
|
|
|
|
If you need to manually update the tsp-client version:
|
|
|
|
1. Edit `package.json` to update the version:
|
|
|
|
```json
|
|
{
|
|
"dependencies": {
|
|
"@azure-tools/typespec-client-generator-cli": "0.28.1"
|
|
}
|
|
}
|
|
```
|
|
|
|
2. Update the lock file:
|
|
|
|
```bash
|
|
npm install
|
|
```
|
|
|
|
3. Commit both `package.json` and `package-lock.json`
|