We encourage the developer community to contribute to this repository. This guide has instructions to install, build, test and contribute to the framework.
git clone [email protected]:scolladon/sfdx-git-delta.git
This will install all the tools needed to contribute
npm install
npm pack
Rebuild every time you made a change in the source and you need to test locally
When developing, use jest unit testing to provide test coverage for new functionality. To run the jest tests use the following command from the root directory:
# just run test
npm run test:unit
To execute a particular test, use the following command:
npm run test:unit -- <path_to_test>
When developing, use mocha testing to provide NUT functional test. To run the mocha tests use the following command from the root directory:
# run test
npm run test:nut
SGD has E2E executed at the PR level.
Those test are located in the branch e2e/base
and e2e/head
Base scenario are implemented in e2e/base
branch
Updates to the metadata are implemented in e2e/head
To run the E2E test locally, clone the repository in another folder and checkout the branch e2e/head
Then execute:
# remove expected content
npm run clean
# run the test
sf sgd source delta --from "e2e/base" --to "e2e/head" --output "expected" --generate-delta
# check expected is back to normal
npm run test:e2e
Note: you may want to execute the local plugin using node
if you have not linked the folder used to develop locally with the plugin.
node path/to/sfdx-git-delta/bin/run sgd:source:delta --from "e2e/base" --to "e2e/head" --output "expected" -d
Configure your editor to use our lint and code style rules.
Biome Format, lint, and more in a fraction of a second.
Biome Format, lint, and more in a fraction of a second.
This repository uses Commitlint to check our commit convention. We follow the angular commit convention. Pre-commit git hook using husky and pull request check both the commit convention for each commit in a branch.
You can use an interactive command line to help you create supported commit message
npm run commit
When a PR is ready for merge we use the PR name to create the squash and merge commit message. We use the commit convention to auto-generate the content and the type of each release It needs to follow our commit lint convention and it will be check at the PR level
The process of submitting a pull request is straightforward and generally follows the same pattern each time:
- Fork the sfdx-git-delta repo
- Create a feature branch
- Make your changes
- Rebase
- Check your submission
- Create a pull request
- Update the pull request
Fork the scolladon/sfdx-git-delta repo. Clone your fork in your local workspace and configure your remote repository settings.
git clone [email protected]:<YOUR-USERNAME>/sfdx-git-delta.git
cd sfdx-git-delta
git remote add upstream [email protected]:scolladon/sfdx-git-delta.git
git checkout main
git pull origin main
git checkout -b feature/<name-of-the-feature>
Change the files, build, test, lint and commit your code using the following command:
git add <path/to/file/to/commit>
git commit ...
git push origin feature/<name-of-the-feature>
Commit your changes using a descriptive commit message
The above commands will commit the files into your feature branch. You can keep pushing new changes into the same branch until you are ready to create a pull request.
Sometimes your feature branch will get stale on the main branch, and it will must a rebase. Do not use the github UI rebase to keep your commits signed. The following steps can help:
git checkout main
git pull upstream main
git checkout feature/<name-of-the-feature>
git rebase upstream/main
note: If no conflicts arise, these commands will apply your changes on top of the main branch. Resolve any conflicts.
npm run lint
The above command may display lint issues not related to your changes. The recommended way to avoid lint issues is to configure your editor to warn you in real time as you edit the file.
the plugin lint all those things :
- typescript files
- folder structure
- plugin parameters
- plugin output
- dependencies
- dead code / configuration
Fixing all existing lint issues is a tedious task so please pitch in by fixing the ones related to the files you make changes to!
Test your change by running the unit tests and integration tests. Instructions here.
If you've never created a pull request before, follow these instructions. Pull request samples here
git fetch origin
git rebase origin/${base_branch}
# Then force push it
git push origin ${feature_branch} --force-with-lease
note: If your pull request needs more changes, keep working on your feature branch as described above.
CI validates prettifying, linting and tests
We use Conventional Comments to ensure every comment expresses the intention and is easy to understand. Pull Request comments are not enforced, it is more a way to help the reviewers and contributors to collaborate on the pull request.
The repo contains a script to increment the Salesforce API version supported by SGD. To upgrade the API version, run the following command:
npm run increment:apiversion
The plugins uses sf cli parameters convention to define parameters for the CLI.
To test SGD as a Salesforce CLI plugin from a pending pull request:
- locate the comment with the beta version published in the pull request
- install the beta version
sf plugins install sfdx-git-delta@<beta-channel>
- test the plugin!