npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@simplysf/simply-cicd

v0.11.5

Published

Commands for Salesforce CI/CD pipelines

Readme

@simplysf/simply-cicd

NPM Downloads/week License: Apache-2.0

Install

sf plugins install @simplysf/simply-cicd

Issues

Please report any issues at https://github.com/SimplySF/simply-plugins/issues

Contributing

This package is part of the @simplysf/simply monorepo. See the repo's CONTRIBUTING.md for the repo structure, how to set up and build the project, our commit conventions, and how to submit a pull request. Please also read our Code of Conduct.

Commands

sf simply cicd build cleanup-scratch-orgs

Delete scratch orgs older than 3 hours from every configured Dev Hub.

USAGE
  $ sf simply cicd build cleanup-scratch-orgs --dev-hub <value>... [--json] [--flags-dir <value>] [--debug] [--disabled]

FLAGS
  --debug               [env: SIMPLY_CICD_DEBUG] Enable verbose debug logging.
  --dev-hub=<value>...  (required) Alias of a Dev Hub. Must already be authenticated. Repeat this flag for each Dev Hub
                        to try, in order.
  --disabled            [env: SIMPLY_CICD_DISABLED] Skip this job entirely, logging a warning instead of running it.

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Delete scratch orgs older than 3 hours from every configured Dev Hub.

  For each Dev Hub, queries `ActiveScratchOrg` records created more than 3 hours ago and bulk-deletes them. Useful for
  keeping a shared Dev Hub's scratch org allotment from being exhausted by abandoned CI runs. Every `--dev-hub` alias
  must already be authenticated.

EXAMPLES
  $ sf simply cicd build cleanup-scratch-orgs --dev-hub my-devhub

See code: lib/commands/simply/cicd/build/cleanup-scratch-orgs.js

sf simply cicd build create-fallback-tag

Create a fallback git tag carrying forward the previous package version's ID, for builds that didn't produce a new package version.

USAGE
  $ sf simply cicd build create-fallback-tag --ci-commit-ref-name <value> --ci-pipeline-id <value> --ci-project-path <value>
    --project-access-token <value> [--json] [--flags-dir <value>] [--vcs-host <value>] [--vcs-provider github|gitlab]
    [--debug] [--disabled] [--last-tag <value>] [--out <value>]

FLAGS
  --ci-commit-ref-name=<value>    (required) [env: SIMPLY_CICD_CI_COMMIT_REF_NAME] Git branch or ref name being built.
  --ci-pipeline-id=<value>        (required) [env: SIMPLY_CICD_CI_PIPELINE_ID] CI pipeline ID, used to name the
                                  temporary authenticated git remote.
  --ci-project-path=<value>       (required) [env: SIMPLY_CICD_CI_PROJECT_PATH] CI project's git path (e.g.
                                  group/project), used to build the authenticated git remote URL.
  --debug                         [env: SIMPLY_CICD_DEBUG] Enable verbose debug logging.
  --disabled                      [env: SIMPLY_CICD_DISABLED] Skip this job entirely, logging a warning instead of
                                  running it.
  --last-tag=<value>              Manually specify the last tag to increment, instead of resolving it from git.
  --out=<value>                   [default: subscriberPackageVersionId.env] Output dotenv file path.
  --project-access-token=<value>  (required) [env: SIMPLY_CICD_PROJECT_ACCESS_TOKEN] Access token used to authenticate
                                  git remote operations (tagging, pushing).
  --vcs-host=<value>              [env: SIMPLY_CICD_VCS_HOST] Hostname of the VCS instance hosting this project.
  --vcs-provider=<option>         [default: gitlab, env: SIMPLY_CICD_VCS_PROVIDER] The VCS platform hosting this
                                  project.
                                  <options: github|gitlab>

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Create a fallback git tag carrying forward the previous package version's ID, for builds that didn't produce a new
  package version.

  Resolves the last tag to increment (either `--last-tag`, or the closest reachable tag matching the project's version
  prefix), extracts its annotated `04t` package version ID, and creates/pushes a new tag with an incremented numeric
  suffix (e.g. `v1.1.0` -> `v1.1.0-1` -> `v1.1.0-2`) annotated with that same package ID. Soft no-ops (does not error)
  when no last tag, or no valid package ID within it, can be found — a build with nothing to fall back to just has
  nothing to do here.

  Also soft no-ops when HEAD already carries a tag matching the version prefix, e.g. because `build
  create-package-version` just created and tagged a real package version earlier in the same job. This also keeps a
  retried job from adding a second fallback tag to the same commit.

  Skipped automatically when `PACKAGE_CHANGED=TRUE` is set in the environment (see `build determine-package-changes`) —
  a real package version will be created instead.

EXAMPLES
  $ sf simply cicd build create-fallback-tag --ci-commit-ref-name main --ci-project-path group/project --project-access-token glpat-... --ci-pipeline-id 123

See code: lib/commands/simply/cicd/build/create-fallback-tag.js

sf simply cicd build create-package-version

Create a new package version, verify minimum code coverage, and create/push a version-tracking git tag.

USAGE
  $ sf simply cicd build create-package-version --ci-commit-ref-name <value> --ci-pipeline-id <value> --ci-project-path <value>
    --project-access-token <value> --ci-commit-sha <value> --ci-pipeline-url <value> --packaging-devhub <value> [--json]
    [--flags-dir <value>] [--vcs-host <value>] [--vcs-provider github|gitlab] [--debug] [--disabled]
    [--ci-pipeline-source <value>] [--always-create-package] [--code-coverage-minimum <value>]
    [--package-release-branch-prefix <value>]

FLAGS
  --always-create-package                  Create a package version even when this isn't a release-branch build.
  --ci-commit-ref-name=<value>             (required) [env: SIMPLY_CICD_CI_COMMIT_REF_NAME] Git branch or ref name being
                                           built.
  --ci-commit-sha=<value>                  (required) [env: SIMPLY_CICD_CI_COMMIT_SHA] Commit SHA to tag as the package
                                           version's source.
  --ci-pipeline-id=<value>                 (required) [env: SIMPLY_CICD_CI_PIPELINE_ID] CI pipeline ID, used to name the
                                           temporary authenticated git remote.
  --ci-pipeline-source=<value>             [env: SIMPLY_CICD_CI_PIPELINE_SOURCE] Source trigger of the CI pipeline (e.g.
                                           merge_request_event). When set to merge_request_event, package creation is
                                           skipped.
  --ci-pipeline-url=<value>                (required) [env: SIMPLY_CICD_CI_PIPELINE_URL] URL of the CI pipeline, used as
                                           the package version's description.
  --ci-project-path=<value>                (required) [env: SIMPLY_CICD_CI_PROJECT_PATH] CI project's git path (e.g.
                                           group/project), used to build the authenticated git remote URL.
  --code-coverage-minimum=<value>          [default: 75] Minimum Apex code coverage percentage required for the new
                                           package version.
  --debug                                  [env: SIMPLY_CICD_DEBUG] Enable verbose debug logging.
  --disabled                               [env: SIMPLY_CICD_DISABLED] Skip this job entirely, logging a warning instead
                                           of running it.
  --package-release-branch-prefix=<value>  Prefix identifying release branches. Determines whether this build creates a
                                           package version and how the resulting git tag is named.
  --packaging-devhub=<value>               (required) [env: SIMPLY_CICD_PACKAGING_DEVHUB] Alias of the Dev Hub used for
                                           packaging operations like package version creation. Must already be
                                           authenticated.
  --project-access-token=<value>           (required) [env: SIMPLY_CICD_PROJECT_ACCESS_TOKEN] Access token used to
                                           authenticate git remote operations (tagging, pushing).
  --vcs-host=<value>                       [env: SIMPLY_CICD_VCS_HOST] Hostname of the VCS instance hosting this
                                           project.
  --vcs-provider=<option>                  [default: gitlab, env: SIMPLY_CICD_VCS_PROVIDER] The VCS platform hosting
                                           this project.
                                           <options: github|gitlab>

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Create a new package version, verify minimum code coverage, and create/push a version-tracking git tag.

  Skips entirely (without error) when the pipeline was triggered by a merge request, or when this isn't a release-branch
  build and `--always-create-package` wasn't passed. Otherwise, creates a new version of the default package directory's
  package, polls until creation finishes, verifies the resulting version's Apex code coverage meets
  `--code-coverage-minimum` (or the project's own `plugins.simply.coverageRequirement.minimumCoverageRequired`, if
  declared in `sfdx-project.json`), and creates/pushes a git tag annotated with the new package version's `04t` ID.

  Skipped automatically when `PACKAGE_CHANGED=FALSE` is set in the environment (see `build determine-package-changes`).

EXAMPLES
  $ sf simply cicd build create-package-version --ci-commit-ref-name main --ci-commit-sha a1b2c3d --ci-pipeline-id 123 --ci-pipeline-url https://gitlab.example.com/pipelines/123 --ci-project-path group/project --project-access-token glpat-... --packaging-devhub my-packaging-devhub

See code: lib/commands/simply/cicd/build/create-package-version.js

sf simply cicd build create-scratch

Create a scratch org, trying each configured Dev Hub in order.

USAGE
  $ sf simply cicd build create-scratch --dev-hub <value>... [--json] [--flags-dir <value>] [--debug] [--disabled]
    [--scratch-definition-file <value>] [--scratch-duration-days <value>]

FLAGS
  --debug                            [env: SIMPLY_CICD_DEBUG] Enable verbose debug logging.
  --dev-hub=<value>...               (required) Alias of a Dev Hub. Must already be authenticated. Repeat this flag for
                                     each Dev Hub to try, in order.
  --disabled                         [env: SIMPLY_CICD_DISABLED] Skip this job entirely, logging a warning instead of
                                     running it.
  --scratch-definition-file=<value>  Definition file used to create the scratch org, if not specified in
                                     sfdx-project.json.
  --scratch-duration-days=<value>    [default: 1] Duration of the scratch org in days.

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Create a scratch org, trying each configured Dev Hub in order.

  Reads the default package directory's `definitionFile` from `sfdx-project.json` (falling back to
  `--scratch-definition-file`), and attempts creation against each `--dev-hub` alias in order (each must already be
  authenticated). A Dev Hub that has hit its daily scratch org limit is skipped in favor of the next one. Writes the
  resulting org's auth fields to `SCRATCH_ORG_INFO.json` for later build steps, best-effort sets a default
  `CountryCode`, and assigns any permission sets/licenses declared under the default package directory's
  `packageMetadataAccess`.

  Skipped automatically when `PACKAGE_CHANGED=FALSE` is set in the environment (see `build determine-package-changes`).

EXAMPLES
  $ sf simply cicd build create-scratch --dev-hub my-devhub

See code: lib/commands/simply/cicd/build/create-scratch.js

sf simply cicd build delete-scratch

Delete the scratch org created by build create-scratch.

USAGE
  $ sf simply cicd build delete-scratch --dev-hub <value> [--json] [--flags-dir <value>] [--jwt-key-file <value>] [--debug]
    [--disabled]

FLAGS
  --debug                 [env: SIMPLY_CICD_DEBUG] Enable verbose debug logging.
  --dev-hub=<value>       (required) Alias of a Dev Hub. Must already be authenticated. Repeat this flag for each Dev
                          Hub to try, in order.
  --disabled              [env: SIMPLY_CICD_DISABLED] Skip this job entirely, logging a warning instead of running it.
  --jwt-key-file=<value>  [env: SIMPLY_CICD_JWT_KEY_FILE] Path to the JWT private key file used to re-authenticate the
                          scratch org (or its Dev Hub) when it was JWT-authenticated. Not needed when the Dev Hub was
                          authenticated via web login or an SFDX auth URL — the scratch org's own refresh token is used
                          instead.

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Delete the scratch org created by `build create-scratch`.

  Reads `SCRATCH_ORG_INFO.json` (written by `build create-scratch`) to confirm `--dev-hub` is the Dev Hub that owns the
  scratch org, re-authenticates to it and the scratch org as needed, and deletes it. Deletion failures are logged rather
  than thrown, since a scratch org left behind after a failed deletion just needs manual cleanup and shouldn't fail an
  otherwise-successful pipeline run.

  Skipped automatically when `PACKAGE_CHANGED=FALSE` is set in the environment (see `build determine-package-changes`).

EXAMPLES
  $ sf simply cicd build delete-scratch --dev-hub my-devhub

See code: lib/commands/simply/cicd/build/delete-scratch.js

sf simply cicd build determine-package-changes

Determine if any package-relevant files have changed since the last release tag.

USAGE
  $ sf simply cicd build determine-package-changes [--json] [--flags-dir <value>] [--debug] [--disabled] [--out <value>]

FLAGS
  --debug        [env: SIMPLY_CICD_DEBUG] Enable verbose debug logging.
  --disabled     [env: SIMPLY_CICD_DISABLED] Skip this job entirely, logging a warning instead of running it.
  --out=<value>  [default: changes.env] Output dotenv file path.

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Determine if any package-relevant files have changed since the last release tag.

  Reads the default package directory from `sfdx-project.json`, finds the closest reachable git tag matching its version
  prefix, and diffs that tag against `HEAD` for the package directory and `sfdx-project.json` itself. Writes
  `PACKAGE_CHANGED=TRUE|FALSE` and `LAST_TAG=<tag>` to the output file. Any failure during detection (missing/invalid
  sfdx-project.json, git errors) defaults to `PACKAGE_CHANGED=TRUE`, so a build never silently skips work it should have
  done.

EXAMPLES
  $ sf simply cicd build determine-package-changes --out changes.env

See code: lib/commands/simply/cicd/build/determine-package-changes.js

sf simply cicd build generate-flexipage-diff

Generate a Flexipage delta between two commits and post the results to the change request.

USAGE
  $ sf simply cicd build generate-flexipage-diff --from <value> --to <value> --project-access-token <value> [--json] [--flags-dir <value>]
    [--vcs-host <value>] [--vcs-provider github|gitlab] [--ci-project-id <value>] [--ci-merge-request-iid <value>]
    [--ci-repository <value>] [--ci-pull-request-number <value>] [--ci-run-id <value>] [--ci-server-url <value>]
    [--ci-commit-sha <value>] [--out <value>] [--debug] [--disabled]

FLAGS
  --ci-commit-sha=<value>           [env: SIMPLY_CICD_CI_COMMIT_SHA] Commit SHA to attribute the posted diff to.
  --ci-merge-request-iid=<value>    [env: SIMPLY_CICD_CI_MERGE_REQUEST_IID] GitLab only: internal ID of the merge
                                    request to post the diff to.
  --ci-project-id=<value>           [env: SIMPLY_CICD_CI_PROJECT_ID] GitLab only: numeric CI project ID of the project
                                    to post the diff to.
  --ci-pull-request-number=<value>  [env: SIMPLY_CICD_CI_PULL_REQUEST_NUMBER] GitHub only: number of the pull request to
                                    post the diff to.
  --ci-repository=<value>           [env: SIMPLY_CICD_CI_REPOSITORY] GitHub only: repository to post the diff to, as
                                    owner/repo.
  --ci-run-id=<value>               [env: SIMPLY_CICD_CI_RUN_ID] GitHub only: Actions run ID, used to build links back
                                    to the run's artifacts.
  --ci-server-url=<value>           [env: SIMPLY_CICD_CI_SERVER_URL] GitHub only: server URL, for instances other than
                                    github.com.
  --debug                           [env: SIMPLY_CICD_DEBUG] Enable verbose debug logging.
  --disabled                        [env: SIMPLY_CICD_DISABLED] Skip this job entirely, logging a warning instead of
                                    running it.
  --from=<value>                    (required) Base commit SHA to diff from.
  --out=<value>                     Output directory or file path for the delta results.
  --project-access-token=<value>    (required) [env: SIMPLY_CICD_PROJECT_ACCESS_TOKEN] Project access token used to post
                                    the diff results back to the merge request.
  --to=<value>                      (required) Head commit SHA to diff to.
  --vcs-host=<value>                [env: SIMPLY_CICD_VCS_HOST] Hostname of the VCS instance hosting this project.
  --vcs-provider=<option>           [default: gitlab, env: SIMPLY_CICD_VCS_PROVIDER] The VCS platform hosting this
                                    project.
                                    <options: github|gitlab>

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Generate a Flexipage delta between two commits and post the results to the change request.

  Runs the upstream `flexipage-delta` binary to diff `**/*.flexipage-meta.xml` files between `--from` and `--to`, then
  the reporter binary for the platform `--vcs-provider` selects — `flexipage-delta-gitlab` or `flexipage-delta-github` —
  to post the results back to the merge or pull request. Failures are logged, not thrown — a diff-posting step shouldn't
  fail the build.

EXAMPLES
  $ sf simply cicd build generate-flexipage-diff --ci-project-id 123 --ci-merge-request-iid 45 --from abc123 --to def456 --project-access-token glpat-...

  $ sf simply cicd build generate-flexipage-diff --vcs-provider github --ci-repository my-org/my-repo --ci-pull-request-number 45 --ci-run-id 987 --from abc123 --to def456 --project-access-token ghp-...

See code: lib/commands/simply/cicd/build/generate-flexipage-diff.js

sf simply cicd build generate-flow-diff

Generate a Flow delta between two commits and post the results to the change request.

USAGE
  $ sf simply cicd build generate-flow-diff --from <value> --to <value> --project-access-token <value> [--json] [--flags-dir <value>]
    [--vcs-host <value>] [--vcs-provider github|gitlab] [--ci-project-id <value>] [--ci-merge-request-iid <value>]
    [--ci-repository <value>] [--ci-pull-request-number <value>] [--ci-run-id <value>] [--ci-server-url <value>]
    [--ci-commit-sha <value>] [--out <value>] [--debug] [--disabled]

FLAGS
  --ci-commit-sha=<value>           [env: SIMPLY_CICD_CI_COMMIT_SHA] Commit SHA to attribute the posted diff to.
  --ci-merge-request-iid=<value>    [env: SIMPLY_CICD_CI_MERGE_REQUEST_IID] GitLab only: internal ID of the merge
                                    request to post the diff to.
  --ci-project-id=<value>           [env: SIMPLY_CICD_CI_PROJECT_ID] GitLab only: numeric CI project ID of the project
                                    to post the diff to.
  --ci-pull-request-number=<value>  [env: SIMPLY_CICD_CI_PULL_REQUEST_NUMBER] GitHub only: number of the pull request to
                                    post the diff to.
  --ci-repository=<value>           [env: SIMPLY_CICD_CI_REPOSITORY] GitHub only: repository to post the diff to, as
                                    owner/repo.
  --ci-run-id=<value>               [env: SIMPLY_CICD_CI_RUN_ID] GitHub only: Actions run ID, used to build links back
                                    to the run's artifacts.
  --ci-server-url=<value>           [env: SIMPLY_CICD_CI_SERVER_URL] GitHub only: server URL, for instances other than
                                    github.com.
  --debug                           [env: SIMPLY_CICD_DEBUG] Enable verbose debug logging.
  --disabled                        [env: SIMPLY_CICD_DISABLED] Skip this job entirely, logging a warning instead of
                                    running it.
  --from=<value>                    (required) Base commit SHA to diff from.
  --out=<value>                     Output directory or file path for the delta results.
  --project-access-token=<value>    (required) [env: SIMPLY_CICD_PROJECT_ACCESS_TOKEN] Project access token used to post
                                    the diff results back to the merge request.
  --to=<value>                      (required) Head commit SHA to diff to.
  --vcs-host=<value>                [env: SIMPLY_CICD_VCS_HOST] Hostname of the VCS instance hosting this project.
  --vcs-provider=<option>           [default: gitlab, env: SIMPLY_CICD_VCS_PROVIDER] The VCS platform hosting this
                                    project.
                                    <options: github|gitlab>

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Generate a Flow delta between two commits and post the results to the change request.

  Runs the upstream `flow-delta` binary to diff `**/*.flow-meta.xml` files between `--from` and `--to`, then the
  reporter binary for the platform `--vcs-provider` selects — `flow-delta-gitlab` or `flow-delta-github` — to post the
  results back to the merge or pull request. Failures are logged, not thrown — a diff-posting step shouldn't fail the
  build.

EXAMPLES
  $ sf simply cicd build generate-flow-diff --ci-project-id 123 --ci-merge-request-iid 45 --from abc123 --to def456 --project-access-token glpat-...

  $ sf simply cicd build generate-flow-diff --vcs-provider github --ci-repository my-org/my-repo --ci-pull-request-number 45 --ci-run-id 987 --from abc123 --to def456 --project-access-token ghp-...

See code: lib/commands/simply/cicd/build/generate-flow-diff.js

sf simply cicd build install-dependencies

Install packaged dependencies into the scratch org created by build create-scratch.

USAGE
  $ sf simply cicd build install-dependencies [--json] [--flags-dir <value>] [--jwt-key-file <value>] [--debug] [--disabled] [--install-type
    All|Delta|Upgrade]

FLAGS
  --debug                  [env: SIMPLY_CICD_DEBUG] Enable verbose debug logging.
  --disabled               [env: SIMPLY_CICD_DISABLED] Skip this job entirely, logging a warning instead of running it.
  --install-type=<option>  [default: Upgrade] The type of dependency installation to perform.
                           <options: All|Delta|Upgrade>
  --jwt-key-file=<value>   [env: SIMPLY_CICD_JWT_KEY_FILE] Path to the JWT private key file used to re-authenticate the
                           scratch org (or its Dev Hub) when it was JWT-authenticated. Not needed when the Dev Hub was
                           authenticated via web login or an SFDX auth URL — the scratch org's own refresh token is used
                           instead.

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Install packaged dependencies into the scratch org created by `build create-scratch`.

  Reads `SCRATCH_ORG_INFO.json` (written by `build create-scratch`), authenticates as that scratch org, and installs its
  packaged dependencies.

  Skipped automatically when `PACKAGE_CHANGED=FALSE` is set in the environment (see `build determine-package-changes`).

EXAMPLES
  $ sf simply cicd build install-dependencies --jwt-key-file ./server.key

See code: lib/commands/simply/cicd/build/install-dependencies.js

sf simply cicd build lwc-jest

Install the LWC Jest test libraries and run the project's LWC Jest tests with coverage.

USAGE
  $ sf simply cicd build lwc-jest [--json] [--flags-dir <value>] [--debug] [--disabled]

FLAGS
  --debug     [env: SIMPLY_CICD_DEBUG] Enable verbose debug logging.
  --disabled  [env: SIMPLY_CICD_DISABLED] Skip this job entirely, logging a warning instead of running it.

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Install the LWC Jest test libraries and run the project's LWC Jest tests with coverage.

  Installs `@salesforce/sfdx-lwc-jest` and `@sa11y/jest`, then runs `sfdx-lwc-jest --coverage -- --passWithNoTests`.
  Failures are logged, not thrown.

EXAMPLES
  $ sf simply cicd build lwc-jest

See code: lib/commands/simply/cicd/build/lwc-jest.js

sf simply cicd build publish-utam-page-objects

Compile the project's UTAM page objects for a package version and publish them to an npm registry.

USAGE
  $ sf simply cicd build publish-utam-page-objects --packaging-devhub <value> [--json] [--flags-dir <value>] [--debug] [--disabled]
    [--subscriber-package-version-id <value>] [--npm-package-name <value>] [--npm-registry <value>] [--npm-token
    <value>] [--npm-access public|restricted] [--npm-dist-tag <value>] [--ci-commit-ref-name <value>]
    [--package-release-branch-prefix <value>] [--utam-version <value>] [--dry-run] [--out <value>] [--env-file <value>]

FLAGS
  --ci-commit-ref-name=<value>             [env: SIMPLY_CICD_CI_COMMIT_REF_NAME] Git branch or ref name being built.
                                           With --package-release-branch-prefix, reproduces the suffix
                                           `create-package-version` put on the git tag, so the npm version mirrors it.
  --debug                                  [env: SIMPLY_CICD_DEBUG] Enable verbose debug logging.
  --disabled                               [env: SIMPLY_CICD_DISABLED] Skip this job entirely, logging a warning instead
                                           of running it.
  --dry-run                                Compile and pack the package without publishing it, copying the tarball into
                                           the project directory.
  --env-file=<value>                       [default: subscriberPackageVersionId.env] Dotenv file to read
                                           SUBSCRIBER_PACKAGE_VERSION_ID from when it isn't passed as a flag or set in
                                           the environment.
  --npm-access=<option>                    [env: SIMPLY_CICD_NPM_ACCESS] Passed through to npm publish --access. Needed
                                           on npmjs.com to publish a scoped package publicly.
                                           <options: public|restricted>
  --npm-dist-tag=<value>                   Dist-tag to publish under, overriding the one derived from the git tag's
                                           suffix.
  --npm-package-name=<value>               [env: SIMPLY_CICD_NPM_PACKAGE_NAME] npm package name to publish the page
                                           objects under. Required unless `plugins.simply.utam.packageName` is set in
                                           sfdx-project.json; the flag wins when both are present.
  --npm-registry=<value>                   [env: SIMPLY_CICD_NPM_REGISTRY] Registry to publish to. Defaults to whatever
                                           npm itself is configured to use.
  --npm-token=<value>                      [env: SIMPLY_CICD_NPM_TOKEN] Auth token for the registry. Written to an
                                           .npmrc inside the staging directory only — the repo's own .npmrc is never
                                           touched.
  --out=<value>                            [default: subscriberPackageVersionId.env] Dotenv file to append the published
                                           package name and version to.
  --package-release-branch-prefix=<value>  Prefix identifying release branches. Determines whether the npm version and
                                           dist-tag carry a branch suffix.
  --packaging-devhub=<value>               (required) [env: SIMPLY_CICD_PACKAGING_DEVHUB] Alias of the Dev Hub that owns
                                           the package version. Must already be authenticated.
  --subscriber-package-version-id=<value>  Subscriber package version ID (04t) to publish page objects for. Falls back
                                           to SUBSCRIBER_PACKAGE_VERSION_ID in the environment, then to the same key in
                                           --env-file.
  --utam-version=<value>                   [default: ^3, env: SIMPLY_CICD_UTAM_VERSION] npm version spec of the UTAM
                                           compiler to install and compile with.

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Compile the project's UTAM page objects for a package version and publish them to an npm registry.

  Gives every Salesforce Unlocked Package version a matching npm package of compiled UTAM page objects, so a UI-test
  suite can install exactly the page objects that describe the package version it is testing against.

  Runs after `build create-package-version`, whose `04t` it takes as input — from `--subscriber-package-version-id`,
  from `SUBSCRIBER_PACKAGE_VERSION_ID` in the environment (how a separate job receives that command's dotenv report), or
  from the dotenv file itself (how a later step in the same job sees it). It compiles every `**/__utam__/**/*.utam.json`
  under the default package directory with the UTAM compiler, in a staging directory outside the repo, and publishes the
  result.

  The npm version is derived from the Salesforce version number the same way `sfdx-project.json` writes a dependency
  pin: `1.2.3.4` becomes `1.2.3-4`, with the git tag's suffix carried as a second prerelease identifier and as the
  dist-tag, so `1.2.3.4` built from a `beta` package branch is `1.2.3-4.beta` at `beta`, and a release build is
  `1.2.3-4` at `latest`.

  The compiler is installed at run time rather than shipped with this plugin, so nothing is downloaded unless the
  command actually runs.

  Skips (without failing) when `PACKAGE_CHANGED=FALSE` is set in the environment (see `build
  determine-package-changes`), when `--disabled` is passed, when no package version ID can be found, when the project
  authors no page objects, or when this exact version is already on the registry — which is what makes retrying a job
  that died after publishing succeed rather than fail on a version conflict. Any other failure fails the job: a missing
  page-object package would silently break every UI test pinned to that version.

  On success, appends `UTAM_PAGE_OBJECTS_PACKAGE` and `UTAM_PAGE_OBJECTS_VERSION` to `--out`, so a downstream job can
  install the package without knowing the mapping rule.

  Configure the package name, the compiler's type aliases, extra peer dependencies, and a project-owned compiler config
  under `plugins.simply.utam` in `sfdx-project.json`.

EXAMPLES
  Publish page objects for the version this pipeline just created, reading its ID from the dotenv file:

    $ sf simply cicd build publish-utam-page-objects --packaging-devhub my-packaging-devhub

  Publish to a GitLab project registry on a release-branch build:

    $ sf simply cicd build publish-utam-page-objects --packaging-devhub my-packaging-devhub --ci-commit-ref-name ^
      release/1.2 --package-release-branch-prefix release/ --npm-registry ^
      https://gitlab.example.com/api/v4/projects/42/packages/npm/ --npm-token $CI_JOB_TOKEN

  Compile and pack without publishing, to inspect what would be produced:

    $ sf simply cicd build publish-utam-page-objects --packaging-devhub my-packaging-devhub ^
      --subscriber-package-version-id 04tXXXXXXXXXXXXXXX --dry-run

See code: lib/commands/simply/cicd/build/publish-utam-page-objects.js

sf simply cicd build push-scratch

Push source to the scratch org created by build create-scratch.

USAGE
  $ sf simply cicd build push-scratch [--json] [--flags-dir <value>] [--jwt-key-file <value>] [--debug] [--disabled]
    [--ignore-warnings] [--scratch-org-source-dir <value>]

FLAGS
  --debug                           [env: SIMPLY_CICD_DEBUG] Enable verbose debug logging.
  --disabled                        [env: SIMPLY_CICD_DISABLED] Skip this job entirely, logging a warning instead of
                                    running it.
  --ignore-warnings                 Append --ignore-warnings to the underlying sf project deploy start call.
  --jwt-key-file=<value>            [env: SIMPLY_CICD_JWT_KEY_FILE] Path to the JWT private key file used to
                                    re-authenticate the scratch org (or its Dev Hub) when it was JWT-authenticated. Not
                                    needed when the Dev Hub was authenticated via web login or an SFDX auth URL — the
                                    scratch org's own refresh token is used instead.
  --scratch-org-source-dir=<value>  Source directory to push to the scratch org, in addition to the default package
                                    directory.

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Push source to the scratch org created by `build create-scratch`.

  Reads `SCRATCH_ORG_INFO.json` (written by `build create-scratch`), authenticates as that scratch org, strips metadata
  types the scratch org push doesn't support (Einstein Conversation Agent file types), and runs `sf project deploy
  start`. When `--scratch-org-source-dir` is given, also deploys the default package directory's `seedMetadata.path`, if
  declared in `sfdx-project.json`.

  Skipped automatically when `PACKAGE_CHANGED=FALSE` is set in the environment (see `build determine-package-changes`).

EXAMPLES
  $ sf simply cicd build push-scratch --jwt-key-file ./server.key

See code: lib/commands/simply/cicd/build/push-scratch.js

sf simply cicd build test-scratch

Run Apex tests against the scratch org created by build create-scratch.

USAGE
  $ sf simply cicd build test-scratch [--json] [--flags-dir <value>] [--jwt-key-file <value>] [--debug] [--disabled]
    [--disable-apex-tests]

FLAGS
  --debug                 [env: SIMPLY_CICD_DEBUG] Enable verbose debug logging.
  --disable-apex-tests    Skip running Apex tests, without skipping the rest of the job.
  --disabled              [env: SIMPLY_CICD_DISABLED] Skip this job entirely, logging a warning instead of running it.
  --jwt-key-file=<value>  [env: SIMPLY_CICD_JWT_KEY_FILE] Path to the JWT private key file used to re-authenticate the
                          scratch org (or its Dev Hub) when it was JWT-authenticated. Not needed when the Dev Hub was
                          authenticated via web login or an SFDX auth URL — the scratch org's own refresh token is used
                          instead.

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Run Apex tests against the scratch org created by `build create-scratch`.

  Reads `SCRATCH_ORG_INFO.json` (written by `build create-scratch`), authenticates as that scratch org, and runs its
  Apex tests with `RunLocalTests`.

  Skipped automatically when `PACKAGE_CHANGED=FALSE` is set in the environment (see `build determine-package-changes`).

EXAMPLES
  $ sf simply cicd build test-scratch --jwt-key-file ./server.key

See code: lib/commands/simply/cicd/build/test-scratch.js

sf simply cicd deploy happy-soup deploy-unpackaged

Run the deploy-unpackaged stage of a happy-soup deployment.

USAGE
  $ sf simply cicd deploy happy-soup deploy-unpackaged --ci-job-token <value> --alias <value> [--json] [--flags-dir <value>] [--debug]
    [--deploy-config-file <value>] [--deploy-progress-file <value>] [--deploy-rules-file <value>] [--source-branch-name
    <value>] [--start-from <value>] [--test-level <value>] [--test-suite <value>] [--tests <value>] [--vcs-host <value>]
    [--vcs-provider github|gitlab]

FLAGS
  --alias=<value>                 (required) [env: SIMPLY_CICD_ALIAS] Salesforce org alias.
  --ci-job-token=<value>          (required) [env: SIMPLY_CICD_CI_JOB_TOKEN] The CI job token used to authenticate
                                  read-only repository clones.
  --debug                         [env: SIMPLY_CICD_DEBUG] Enable verbose debug logging.
  --deploy-config-file=<value>    [env: SIMPLY_CICD_DEPLOY_CONFIG_FILE] Path to the deployment configuration file. If
                                  not provided, derived from --source-branch-name.
  --deploy-progress-file=<value>  [default: DEPLOY_PROGRESS.json, env: SIMPLY_CICD_DEPLOY_PROGRESS_FILE] Path to the
                                  deployment progress file.
  --deploy-rules-file=<value>     [default: config/deploy-rules.json, env: SIMPLY_CICD_DEPLOY_RULES_FILE] Path to the
                                  deployment rules file.
  --source-branch-name=<value>    [env: SIMPLY_CICD_SOURCE_BRANCH_NAME] The source branch name for the deployment, used
                                  to derive the deployment config file path if --deploy-config-file is not provided.
  --start-from=<value>            Start (or resume) the deployment from a specific job name, overriding the progress
                                  file.
  --test-level=<value>            [default: RunLocalTests, env: SIMPLY_CICD_TEST_LEVEL] The Apex test level to run.
  --test-suite=<value>            [env: SIMPLY_CICD_TEST_SUITE] The Apex test suite to run. If specified, overrides
                                  --test-level.
  --tests=<value>                 [env: SIMPLY_CICD_TESTS] Specific Apex tests to run.
  --vcs-host=<value>              [env: SIMPLY_CICD_VCS_HOST] The source-control host to talk to (e.g. gitlab.com).
  --vcs-provider=<option>         [default: gitlab, env: SIMPLY_CICD_VCS_PROVIDER] The source-control-hosting platform
                                  to talk to.
                                  <options: github|gitlab>

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Run the deploy-unpackaged stage of a happy-soup deployment.

  Runs the `bin/unpackagedDeploy.sh` script (if present) for each configured deployment that participates in this stage,
  cloning each repo fresh and resuming from the deployment progress file unless --start-from is given.

EXAMPLES
  $ sf simply cicd deploy happy-soup deploy-unpackaged --ci-job-token $CI_JOB_TOKEN --alias my-org --source-branch-name release/uat

See code: lib/commands/simply/cicd/deploy/happy-soup/deploy-unpackaged.js

sf simply cicd deploy happy-soup deployment-close-out

Archive the deployment config file used for a happy-soup deployment.

USAGE
  $ sf simply cicd deploy happy-soup deployment-close-out --ci-commit-ref-name <value> --ci-pipeline-id <value> --ci-project-path <value>
    --project-access-token <value> [--json] [--flags-dir <value>] [--debug] [--deploy-config-file <value>]
    [--deploy-progress-file <value>] [--deploy-rules-file <value>] [--deploy-release-date <value>] [--source-branch-name
    <value>] [--vcs-host <value>] [--vcs-provider github|gitlab]

FLAGS
  --ci-commit-ref-name=<value>    (required) [env: SIMPLY_CICD_CI_COMMIT_REF_NAME] The commit ref (branch) to fetch and
                                  switch to before archiving.
  --ci-pipeline-id=<value>        (required) [env: SIMPLY_CICD_CI_PIPELINE_ID] The CI pipeline ID, used to build the
                                  authenticated push remote.
  --ci-project-path=<value>       (required) [env: SIMPLY_CICD_CI_PROJECT_PATH] The project path (e.g. group/project),
                                  used to build the authenticated push remote.
  --debug                         [env: SIMPLY_CICD_DEBUG] Enable verbose debug logging.
  --deploy-config-file=<value>    [env: SIMPLY_CICD_DEPLOY_CONFIG_FILE] Path to the deployment configuration file to
                                  archive, if --deploy-release-date is not provided.
  --deploy-progress-file=<value>  [default: DEPLOY_PROGRESS.json, env: SIMPLY_CICD_DEPLOY_PROGRESS_FILE] Path to the
                                  deployment progress file.
  --deploy-release-date=<value>   The release date (e.g. 2026-01-15) used to resolve the source file as
                                  `deployment-configs/<date>.json`, taking priority over --deploy-config-file.
  --deploy-rules-file=<value>     [default: config/deploy-rules.json, env: SIMPLY_CICD_DEPLOY_RULES_FILE] Path to the
                                  deployment rules file.
  --project-access-token=<value>  (required) [env: SIMPLY_CICD_PROJECT_ACCESS_TOKEN] A project access token with write
                                  access, used to push the archive commit.
  --source-branch-name=<value>    [env: SIMPLY_CICD_SOURCE_BRANCH_NAME] The source branch name for the deployment, used
                                  to derive the deployment config file path if --deploy-config-file is not provided.
  --vcs-host=<value>              [env: SIMPLY_CICD_VCS_HOST] The source-control host to talk to (e.g. gitlab.com).
  --vcs-provider=<option>         [default: gitlab, env: SIMPLY_CICD_VCS_PROVIDER] The source-control-hosting platform
                                  to talk to.
                                  <options: github|gitlab>

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Archive the deployment config file used for a happy-soup deployment.

  Fetches and switches to the commit ref, then copies the deployment config file that was used (either
  --deploy-release-date resolved to `deployment-configs/<date>.json`, or the explicit/derived deploy config file) to
  `config/deploy.json` and commits it. If no source file can be found, an existing obsolete `config/deploy.json` is
  removed instead. Both cases push the change with a `[skip ci]` commit message.

EXAMPLES
  $ sf simply cicd deploy happy-soup deployment-close-out --ci-commit-ref-name main --ci-pipeline-id 123 --ci-project-path group/project --project-access-token $PROJECT_ACCESS_TOKEN --deploy-release-date 2026-01-15

See code: lib/commands/simply/cicd/deploy/happy-soup/deployment-close-out.js

sf simply cicd deploy happy-soup install-packaged

Install packaged dependencies into the target org for a happy-soup deployment.

USAGE
  $ sf simply cicd deploy happy-soup install-packaged --alias <value> [--json] [--flags-dir <value>] [--vcs-host <value>] [--vcs-provider
    github|gitlab] [--debug] [--deploy-progress-file <value>] [--deploy-rules-file <value>] [--install-type
    All|Delta|Upgrade] [--packaging-devhub <value>]

FLAGS
  --alias=<value>                 (required) [env: SIMPLY_CICD_ALIAS] Salesforce org alias.
  --debug                         [env: SIMPLY_CICD_DEBUG] Enable verbose debug logging.
  --deploy-progress-file=<value>  [default: DEPLOY_PROGRESS.json, env: SIMPLY_CICD_DEPLOY_PROGRESS_FILE] Path to the
                                  deployment progress file.
  --deploy-rules-file=<value>     [default: config/deploy-rules.json, env: SIMPLY_CICD_DEPLOY_RULES_FILE] Path to the
                                  deployment rules file.
  --install-type=<option>         [default: Upgrade] The type of dependency installation to perform.
                                  <options: All|Delta|Upgrade>
  --packaging-devhub=<value>      [env: SIMPLY_CICD_PACKAGING_DEVHUB] Alias of the Dev Hub used to look up package
                                  version information for upgraded packages. Must already be authenticated. Omitted
                                  entirely (with a warning) when not provided, skipping origin lookup for upgraded
                                  packages.
  --vcs-host=<value>              [env: SIMPLY_CICD_VCS_HOST] The source-control host to talk to (e.g. gitlab.com).
  --vcs-provider=<option>         [default: gitlab, env: SIMPLY_CICD_VCS_PROVIDER] The source-control-hosting platform
                                  to talk to.
                                  <options: github|gitlab>

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Install packaged dependencies into the target org for a happy-soup deployment.

  Installs the packaged dependencies declared in `sfdx-project.json` into the target org (`--alias`), which must already
  be authenticated. For every dependency that upgrades an already-installed package, records the previous/target version
  and origin commit information to the deploy progress file, for `notify happy-soup` to look up related stories from
  later.

EXAMPLES
  $ sf simply cicd deploy happy-soup install-packaged --alias my-org

See code: lib/commands/simply/cicd/deploy/happy-soup/install-packaged.js

sf simply cicd deploy happy-soup post-deploy

Run the post-deploy stage of a happy-soup deployment.

USAGE
  $ sf simply cicd deploy happy-soup post-deploy --ci-job-token <value> --alias <value> [--json] [--flags-dir <value>] [--debug]
    [--deploy-config-file <value>] [--deploy-progress-file <value>] [--deploy-rules-file <value>] [--source-branch-name
    <value>] [--start-from <value>] [--test-level <value>] [--test-suite <value>] [--tests <value>] [--vcs-host <value>]
    [--vcs-provider github|gitlab]

FLAGS
  --alias=<value>                 (required) [env: SIMPLY_CICD_ALIAS] Salesforce org alias.
  --ci-job-token=<value>          (required) [env: SIMPLY_CICD_CI_JOB_TOKEN] The CI job token used to authenticate
                                  read-only repository clones.
  --debug                         [env: SIMPLY_CICD_DEBUG] Enable verbose debug logging.
  --deploy-config-file=<value>    [env: SIMPLY_CICD_DEPLOY_CONFIG_FILE] Path to the deployment configuration file. If
                                  not provided, derived from --source-branch-name.
  --deploy-progress-file=<value>  [default: DEPLOY_PROGRESS.json, env: SIMPLY_CICD_DEPLOY_PROGRESS_FILE] Path to the
                                  deployment progress file.
  --deploy-rules-file=<value>     [default: config/deploy-rules.json, env: SIMPLY_CICD_DEPLOY_RULES_FILE] Path to the
                                  deployment rules file.
  --source-branch-name=<value>    [env: SIMPLY_CICD_SOURCE_BRANCH_NAME] The source branch name for the deployment, used
                                  to derive the deployment config file path if --deploy-config-file is not provided.
  --start-from=<value>            Start (or resume) the deployment from a specific job name, overriding the progress
                                  file.
  --test-level=<value>            [default: RunLocalTests, env: SIMPLY_CICD_TEST_LEVEL] The Apex test level to run.
  --test-suite=<value>            [env: SIMPLY_CICD_TEST_SUITE] The Apex test suite to run. If specified, overrides
                                  --test-level.
  --tests=<value>                 [env: SIMPLY_CICD_TESTS] Specific Apex tests to run.
  --vcs-host=<value>              [env: SIMPLY_CICD_VCS_HOST] The source-control host to talk to (e.g. gitlab.com).
  --vcs-provider=<option>         [default: gitlab, env: SIMPLY_CICD_VCS_PROVIDER] The source-control-hosting platform
                                  to talk to.
                                  <options: github|gitlab>

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Run the post-deploy stage of a happy-soup deployment.

  Runs the `bin/postDeploy.sh` script (if present) for each configured deployment that participates in this stage,
  cloning each repo fresh and resuming from the deployment progress file unless --start-from is given.

EXAMPLES
  $ sf simply cicd deploy happy-soup post-deploy --ci-job-token $CI_JOB_TOKEN --alias my-org --source-branch-name release/uat

See code: lib/commands/simply/cicd/deploy/happy-soup/post-deploy.js

sf simply cicd deploy happy-soup post-destructive

Run the post-destructive stage of a happy-soup deployment.

USAGE
  $ sf simply cicd deploy happy-soup post-destructive --ci-job-token <value> --alias <value> [--json] [--flags-dir <value>] [--debug]
    [--deploy-config-file <value>] [--deploy-progress-file <value>] [--deploy-rules-file <value>] [--source-branch-name
    <value>] [--start-from <value>] [--test-level <value>] [--test-suite <value>] [--tests <value>] [--vcs-host <value>]
    [--vcs-provider github|gitlab]

FLAGS
  --alias=<value>                 (required) [env: SIMPLY_CICD_ALIAS] Salesforce org alias.
  --ci-job-token=<value>          (required) [env: SIMPLY_CICD_CI_JOB_TOKEN] The CI job token used to authenticate
                                  read-only repository clones.
  --debug                         [env: SIMPLY_CICD_DEBUG] Enable verbose debug logging.
  --deploy-config-file=<value>    [env: SIMPLY_CICD_DEPLOY_CONFIG_FILE] Path to the deployment configuration file. If
                                  not provided, derived from --source-branch-name.
  --deploy-progress-file=<value>  [default: DEPLOY_PROGRESS.json, env: SIMPLY_CICD_DEPLOY_PROGRESS_FILE] Path to the
                                  deployment progress file.
  --deploy-rules-file=<value>     [default: config/deploy-rules.json, env: SIMPLY_CICD_DEPLOY_RULES_FILE] Path to the
                                  deployment rules file.
  --source-branch-name=<value>    [env: SIMPLY_CICD_SOURCE_BRANCH_NAME] The source branch name for the deployment, used
                                  to derive the deployment config file path if --deploy-config-file is not provided.
  --start-from=<value>            Start (or resume) the deployment from a specific job name, overriding the progress
                                  file.
  --test-level=<value>            [default: RunLocalTests, env: SIMPLY_CICD_TEST_LEVEL] The Apex test level to run.
  --test-suite=<value>            [env: SIMPLY_CICD_TEST_SUITE] The Apex test suite to run. If specified, overrides
                                  --test-level.
  --tests=<value>                 [env: SIMPLY_CICD_TESTS] Specific Apex tests to run.
  --vcs-host=<value>              [env: SIMPLY_CICD_VCS_HOST] The source-control host to talk to (e.g. gitlab.com).
  --vcs-provider=<option>         [default: gitlab, env: SIMPLY_CICD_VCS_PROVIDER] The source-control-hosting platform
                                  to talk to.
                                  <options: github|gitlab>

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Run the post-destructive stage of a happy-soup deployment.

  Runs the `bin/postDestructive.sh` script (if present) for each configured deployment that participates in this stage,
  cloning each repo fresh and resuming from the deployment progress file unless --start-from is given.

EXAMPLES
  $ sf simply cicd deploy happy-soup post-destructive --ci-job-token $CI_JOB_TOKEN --alias my-org --source-branch-name release/uat

See code: lib/commands/simply/cicd/deploy/happy-soup/post-destructive.js

sf simply cicd deploy happy-soup pre-destructive

Run the pre-destructive stage of a happy-soup deployment.

USAGE
  $ sf simply cicd deploy happy-soup pre-destructive --ci-job-token <value> --alias <value> [--json] [--flags-dir <value>] [--debug]
    [--deploy-config-file <value>] [--deploy-progress-file <value>] [--deploy-rules-file <value>] [--source-branch-name
    <value>] [--start-from <value>] [--test-level <value>] [--test-suite <value>] [--tests <value>] [--vcs-host <value>]
    [--vcs-provider github|gitlab]

FLAGS
  --alias=<value>                 (required) [env: SIMPLY_CICD_ALIAS] Salesforce org alias.
  --ci-job-token=<value>          (required) [env: SIMPLY_CICD_CI_JOB_TOKEN] The CI job token used to authenticate
                                  read-only repository clones.
  --debug                         [env: SIMPLY_CICD_DEBUG] Enable verbose debug logging.
  --deploy-config-file=<value>    [env: SIMPLY_CICD_DEPLOY_CONFIG_FILE] Path to the deployment configuration file. If
                                  not provided, derived from --source-branch-name.
  --deploy-progress-file=<value>  [default: DEPLOY_PROGRESS.json, env: SIMPLY_CICD_DEPLOY_PROGRESS_FILE] Path to the
                                  deployment progress file.
  --deploy-rules-file=<value>     [default: config/deploy-rules.json, env: SIMPLY_CICD_DEPLOY_RULES_FILE] Path to the
                                  deployment rules file.
  --source-branch-name=<value>    [env: SIMPLY_CICD_SOURCE_BRANCH_NAME] The source branch name for the deployment, used
                                  to derive the deployment config file path if --deploy-config-file is not provided.
  --start-from=<value>            Start (or resume) the deployment from a specific job name, overriding the progress
                                  file.
  --test-level=<value>            [default: RunLocalTests, env: SIMPLY_CICD_TEST_LEVEL] The Apex test level to run.
  --test-suite=<value>            [env: SIMPLY_CICD_TEST_SUITE] The Apex test suite to run. If specified, overrides
                                  --test-level.
  --tests=<value>                 [env: SIMPLY_CICD_TESTS] Specific Apex tests to run.
  --vcs-host=<value>              [env: SIMPLY_CICD_VCS_HOST] The source-control host to talk to (e.g. gitlab.com).
  --vcs-provider=<option>         [default: gitlab, env: SIMPLY_CICD_VCS_PROVIDER] The source-control-hosting platform
                                  to talk to.
                                  <options: github|gitlab>

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Run the pre-destructive stage of a happy-soup deployment.

  Runs the `bin/preDestructive.sh` script (if present) for each configured deployment that participates in this stage,
  cloning each repo fresh and resuming from the deployment progress file unless --start-from is given.

EXAMPLES
  $ sf simply cicd deploy happy-soup pre-destructive --ci-job-token $CI_JOB_TOKEN --alias my-org --source-branch-name release/uat

See code: lib/commands/simply/cicd/deploy/happy-soup/pre-destructive.js

sf simply cicd deploy happy-soup tag-deployment

Tag the current commit with details about a happy-soup deployment.

USAGE
  $ sf simply cicd deploy happy-soup tag-deployment --ci-merge-request-iid <value> --ci-merge-request-project-url <value> --ci-pipeline-id <value>
    --ci-pipeline-url <value> --ci-project-path <value> --project-access-token <value> --alias <value> [--json]
    [--flags-dir <value>] [--debug] [--deploy-progress-file <value>] [--deploy-rules-file <value>] [--vcs-host <value>]
    [--vcs-provider github|gitlab]

FLAGS
  --alias=<value>                         (required) [env: SIMPLY_CICD_ALIAS] Salesforce org alias.
  --ci-merge-request-iid=<value>          (required) [env: SIMPLY_CICD_CI_MERGE_REQUEST_IID] The merge request's
                                          internal ID (IID), used to build the merge request link in the tag message.
  --ci-merge-request-project-url=<value>  (required) [env: SIMPLY_CICD_CI_MERGE_REQUEST_PROJECT_URL] The project's URL,
                                          used to build the merge request link in the tag message.
  --ci-pipeline-id=<value>                (required) [env: SIMPLY_CICD_CI_PIPELINE_ID] The CI pipeline ID.
  --ci-pipeline-url=<value>               (required) [env: SIMPLY_CICD_CI_PIPELINE_URL] The CI pipeline URL, included in
                                          the tag message if provided.
  --ci-project-path=<value>               (required) [env: SIMPLY_CICD_CI_PROJECT_PATH] The project path (e.g.
                                          group/project), used to build the authenticated push remote.
  --debug                                 [env: SIMPLY_CICD_DEBUG] Enable verbose debug logging.
  --deploy-progress-file=<value>          [default: DEPLOY_PROGRESS.json, env: SIMPLY_CICD_DEPLOY_PROGRESS_FILE] Path to
                                          the deployment progress file.
  --deploy-rules-file=<value>             [default: config/deploy-rules.json, env: SIMPLY_CICD_DEPLOY_RULES_FILE] Path
                                          to the deployment rules file.
  --project-access-token=<value>          (required) [env: SIMPLY_CICD_PROJECT_ACCESS_TOKEN] A project access token with
                                          write access, used to push the tag.
  --vcs-host=<value>                      [env: SIMPLY_CICD_VCS_HOST] The source-control host to talk to (e.g.
                                          gitlab.com).
  --vcs-provider=<option>                 [default: gitlab, env: SIMPLY_CICD_VCS_PROVIDER] The source-control-hosting
                                          platform to talk to.
                                          <options: github|gitlab>

GLOBAL FLAGS
  --flags-dir=<value>  Import flag values from a directory.
  --json               Format output as json.

DESCRIPTION
  Tag the current commit with details about a happy-soup deployment.

  Authenticates to the target org, derives an org domain prefix from its instance URL, and creates an annotated git tag
  (`deployed--<org-domain-prefix>-<timestamp>`) recording the deployment time (America/New_York) and, if provided, the
  associated pipeline and merge request links. The tag is pushed to the source repository.

EXAMPLES
  $ sf simply cicd deploy happy-soup tag-deployment --