Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -3,3 +3,5 @@

# Comment line immediately above ownership line is reserved for related other information. Please be careful while editing.
#ECCN:Open Source
#GUSINFO:Platform CLI,Platform CLI
* @salesforcecli/cli
61 changes: 61 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
## Contributing

1. Please read our [Code of Conduct](CODE_OF_CONDUCT.md).
1. Please create a new issue [here](https://github.com/forcedotcom/cli/issues) before starting any work so that we can also offer suggestions or let you know if there is already an effort in progress.
1. Fork this repository (external contributors) or branch off `main` (committers).
1. [Build the plugin locally](README.md#build).
1. Create a topic branch based on `main`. This is recommended but not required if contributing using a fork.
1. Edit the code in your fork/branch.
1. Write appropriate tests for your changes. Try to achieve at least 95% code coverage on any new code. No pull request will be accepted without associated tests.
1. Sign the Salesforce [CLA](#cla).
1. The CLI team will review your pull request and provide feedback.
1. Once merged, a new release of `@salesforce/plugin-api` will be published to [npm](https://www.npmjs.com/package/@salesforce/plugin-api).

### One-Time Setup

1. Install [Node.js](https://nodejs.org). Use the version specified in the `engines` field of package.json. If you work with multiple Node versions, consider using [nvm](https://github.com/nvm-sh/nvm).
1. Install [Yarn v1](https://classic.yarnpkg.com): `npm install --global yarn`
1. Configure [git commit signing](https://docs.github.com/en/authentication/managing-commit-signature-verification/about-commit-signature-verification).

### CLA

External contributors are required to sign a Contributor License
Agreement. You can do so by going to https://cla.salesforce.com/sign-cla.

## Branches

- We work in branches off of `main`.
- Our release (aka. _production_) branch is `main`.
- Our work happens in _topic_ branches (feature and/or bug-fix).
- Feature as well as bug-fix branches are based on `main`
- Branches _should_ be kept up-to-date using `rebase`

## Pull Requests

- Develop features and bug fixes in _topic_ branches off main, or forks.
- _Topic_ branches can live in forks (external contributors) or within this repository (internal contributors).
- When creating _topic_ branches in this repository please prefix with `<initials>/`. For example: `mb/refactor-tests`.
- Use [conventional commits](https://www.conventionalcommits.org/en/v1.0.0/#summary) to drive semver versioning. Examples:
- `chore: my chore message` --> No release
- `fix: my fix message` --> Patch release
- `feat: my feat message` --> Minor release
- PRs will be reviewed and merged by the CLI team.

## Testing

All changes must have associated tests. This plugin uses a combination of unit testing and NUTs (non-unit tests).

- Run unit tests with `yarn test`. Tests use the mocha framework and are located in the `test` directory with the naming pattern `<test-file>.test.ts`.
- Run integration tests (NUTs) with `yarn test:nuts`. NUTs use the [cli-plugins-testkit](https://github.com/salesforcecli/cli-plugins-testkit) framework and run against the default devhub in your environment.

## Debugging

Refer to the [Salesforce CLI Plugin Developer Guide](https://developer.salesforce.com/docs/platform/salesforce-cli-plugin/guide/debug-plugin.html) for debugging tips.

## Useful Yarn Commands

- `yarn build` — Compile the TypeScript source
- `yarn build --watch` — Recompile automatically on file changes
- `yarn test` — Run unit tests
- `yarn test:nuts` — Run integration tests (NUTs)
- `yarn lint` — Run the linter
23 changes: 4 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,40 +10,25 @@ Please report any issues at https://github.com/forcedotcom/cli/issues

## Contributing

1. Please read our [Code of Conduct](CODE_OF_CONDUCT.md)
2. Create a new issue before starting your project so that we can keep track of
what you are trying to add/fix. That way, we can also offer suggestions or
let you know if there is already an effort in progress.
3. Fork this repository.
4. [Build the plugin locally](#build)
5. Create a _topic_ branch in your fork. Note, this step is recommended but technically not required if contributing using a fork.
6. Edit the code in your fork.
7. Write appropriate tests for your changes. Try to achieve at least 95% code coverage on any new code. No pull request will be accepted without unit tests.
8. Sign CLA (see [CLA](#cla) below).
9. Send us a pull request when you are done. We'll review your code, suggest any needed changes, and merge it in.

### CLA

External contributors will be required to sign a Contributor's License
Agreement. You can do so by going to https://cla.salesforce.com/sign-cla.
If you're interested in contributing, take a look at the [CONTRIBUTING](CONTRIBUTING.md) guide.

### Build

To build the plugin locally, make sure to have yarn installed and run the following commands:

```bash
# Clone the repository
git clone git@github.com:salesforcecli/plugin-template-sf
git clone git@github.com:salesforcecli/plugin-api

# Install the dependencies and compile
yarn && yarn build
```

To use your plugin, run using the local `./bin/dev` or `./bin/dev.cmd` file.
To use your plugin, run using the local `./bin/dev.js` or `./bin/dev.cmd` file.

```bash
# Run using local run file.
./bin/dev hello world
./bin/dev.js api request rest '/services/data/v62.0/limits' -o myOrg@example.com
```

There should be no differences when running via the Salesforce CLI or using the local run file. However, it can be useful to link the plugin to do some additional testing or run your commands from anywhere on your machine.
Expand Down
Loading