@salesforce/plugin-deploy-retrieve 3.21.1 → 3.21.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +17 -17
  2. package/oclif.manifest.json +550 -550
  3. package/package.json +9 -9
@@ -1495,20 +1495,16 @@
1495
1495
  "validate:deploy:project"
1496
1496
  ]
1497
1497
  },
1498
- "project:generate:manifest": {
1498
+ "project:convert:mdapi": {
1499
1499
  "aliases": [
1500
- "force:source:manifest:create"
1500
+ "force:mdapi:convert"
1501
1501
  ],
1502
1502
  "args": {},
1503
1503
  "deprecateAliases": true,
1504
- "description": "Create a manifest from a list of metadata components (--metadata) or from one or more local directories that contain source files (--source-dir). You can specify either of these flags, not both.\n\nUse --type to specify the type of manifest you want to create. The resulting manifest files have specific names, such as the standard package.xml or destructiveChanges.xml to delete metadata. Valid values for this flag, and their respective file names, are:\n\n * package : package.xml (default)\n * pre : destructiveChangesPre.xml\n * post : destructiveChangesPost.xml\n * destroy : destructiveChanges.xml\n\nSee https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_deploy_deleting_files.htm for information about these destructive manifest files.\n\nUse --name to specify a custom name for the generated manifest if the pre-defined ones don’t suit your needs. You can specify either --type or --name, but not both.\n\nTo include multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --include-packages and --source-dir.\n\nTo build a manifest from the metadata in an org, use the --from-org flag. You can combine --from-org with the --metadata flag to include only certain metadata types, or with the --excluded-metadata flag to exclude certain metadata types. When building a manifest from an org, the command makes many concurrent API calls to discover the metadata that exists in the org. To limit the number of concurrent requests, use the SF_LIST_METADATA_BATCH_SIZE environment variable and set it to a size that works best for your org and environment. If you experience timeouts or inconsistent manifest contents, then setting this environment variable can improve accuracy. However, the command takes longer to run because it sends fewer requests at a time.",
1504
+ "description": "To use Salesforce CLI to work with components that you retrieved via Metadata API, first convert your files from the metadata format to the source format using this command.\n\nTo convert files from the source format back to the metadata format, run \"sf project convert source\".\n\nTo convert multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.",
1505
1505
  "examples": [
1506
- "Create a manifest for deploying or retrieving all Apex classes and custom objects:\n$ <%= config.bin %> <%= command.id %> --metadata ApexClass --metadata CustomObject",
1507
- "Create a manifest for deleting the specified Apex class:\n$ <%= config.bin %> <%= command.id %> --metadata ApexClass:MyApexClass --type destroy",
1508
- "Create a manifest for deploying or retrieving all the metadata components in the specified local directory; name the file myNewManifest.xml:\n$ <%= config.bin %> <%= command.id %> --source-dir force-app --name myNewManifest",
1509
- "Create a manifest from the metadata components in the specified org and include metadata in any unlocked packages:\n$ <%= config.bin %> <%= command.id %> --from-org test@myorg.com --include-packages unlocked",
1510
- "Create a manifest from specific metadata types in an org:\n$ <%= config.bin %> <%= command.id %> --from-org test@myorg.com --metadata ApexClass,CustomObject,CustomLabels",
1511
- "Create a manifest from all metadata components in an org excluding specific metadata types:\n$ <%= config.bin %> <%= command.id %> --from-org test@myorg.com --excluded-metadata StandardValueSet"
1506
+ "Convert metadata formatted files in the specified directory into source formatted files; writes converted files to your default package directory:\n$ <%= config.bin %> <%= command.id %> --root-dir path/to/metadata",
1507
+ "Similar to previous example, but writes converted files to the specified output directory:\n$ <%= config.bin %> <%= command.id %> --root-dir path/to/metadata --output-dir path/to/outputdir"
1512
1508
  ],
1513
1509
  "flags": {
1514
1510
  "json": {
@@ -1547,137 +1543,80 @@
1547
1543
  "multiple": false,
1548
1544
  "type": "option"
1549
1545
  },
1550
- "metadata": {
1551
- "char": "m",
1552
- "name": "metadata",
1553
- "summary": "Names of metadata components to include in the manifest.",
1554
- "delimiter": ",",
1555
- "hasDynamicHelp": false,
1556
- "multiple": true,
1557
- "type": "option"
1558
- },
1559
- "source-dir": {
1546
+ "root-dir": {
1560
1547
  "aliases": [
1561
- "sourcepath"
1548
+ "rootdir"
1562
1549
  ],
1563
- "char": "p",
1550
+ "char": "r",
1564
1551
  "deprecateAliases": true,
1565
- "name": "source-dir",
1566
- "summary": "Paths to the local source files to include in the manifest.",
1567
- "delimiter": ",",
1552
+ "name": "root-dir",
1553
+ "required": true,
1554
+ "summary": "Root directory that contains the Metadata API–formatted metadata.",
1568
1555
  "hasDynamicHelp": false,
1569
- "multiple": true,
1556
+ "multiple": false,
1570
1557
  "type": "option"
1571
1558
  },
1572
- "name": {
1559
+ "output-dir": {
1573
1560
  "aliases": [
1574
- "manifestname"
1561
+ "outputdir"
1575
1562
  ],
1576
- "char": "n",
1563
+ "char": "d",
1577
1564
  "deprecateAliases": true,
1578
- "exclusive": [
1579
- "type"
1580
- ],
1581
- "name": "name",
1582
- "summary": "Name of a custom manifest file to create.",
1565
+ "name": "output-dir",
1566
+ "summary": "Directory to store your files in after they’re converted to source format; can be an absolute or relative path.",
1583
1567
  "hasDynamicHelp": false,
1584
1568
  "multiple": false,
1585
1569
  "type": "option"
1586
1570
  },
1587
- "type": {
1588
- "aliases": [
1589
- "manifesttype"
1590
- ],
1591
- "char": "t",
1592
- "deprecateAliases": true,
1593
- "exclusive": [
1594
- "name"
1595
- ],
1596
- "name": "type",
1597
- "summary": "Type of manifest to create; the type determines the name of the created file.",
1571
+ "manifest": {
1572
+ "char": "x",
1573
+ "description": "If you specify this flag, don’t specify --metadata or --source-dir.",
1574
+ "name": "manifest",
1575
+ "summary": "File path to manifest (package.xml) of metadata types to convert.",
1598
1576
  "hasDynamicHelp": false,
1599
1577
  "multiple": false,
1600
- "options": [
1601
- "pre",
1602
- "post",
1603
- "destroy",
1604
- "package"
1605
- ],
1606
1578
  "type": "option"
1607
1579
  },
1608
- "include-packages": {
1580
+ "metadata-dir": {
1609
1581
  "aliases": [
1610
- "includepackages"
1611
- ],
1612
- "char": "c",
1613
- "dependsOn": [
1614
- "from-org"
1582
+ "metadatapath"
1615
1583
  ],
1584
+ "char": "p",
1616
1585
  "deprecateAliases": true,
1617
- "name": "include-packages",
1618
- "summary": "Package types (managed, unlocked) whose metadata is included in the manifest; by default, metadata in managed and unlocked packages is excluded. Metadata in unmanaged packages is always included.",
1619
- "delimiter": ",",
1620
- "hasDynamicHelp": false,
1621
- "multiple": true,
1622
- "options": [
1623
- "managed",
1624
- "unlocked"
1625
- ],
1626
- "type": "option"
1627
- },
1628
- "excluded-metadata": {
1629
- "name": "excluded-metadata",
1630
- "relationships": [
1631
- {
1632
- "type": "some",
1633
- "flags": [
1634
- "from-org",
1635
- "source-dir"
1636
- ]
1637
- }
1586
+ "description": "The supplied paths can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its sub-directories).\n\nIf you specify this flag, don’t specify --manifest or --metadata. If the comma-separated list you’re supplying contains spaces, enclose the entire comma-separated list in one set of double quotes.",
1587
+ "exclusive": [
1588
+ "manifest",
1589
+ "metadata"
1638
1590
  ],
1639
- "summary": "Metadata types to exclude when building a manifest from an org. Specify the name of the type, not the name of a specific component.",
1591
+ "name": "metadata-dir",
1592
+ "summary": "Root of directory or zip file of metadata formatted files to convert.",
1640
1593
  "delimiter": ",",
1641
1594
  "hasDynamicHelp": false,
1642
1595
  "multiple": true,
1643
1596
  "type": "option"
1644
1597
  },
1645
- "from-org": {
1646
- "aliases": [
1647
- "fromorg"
1648
- ],
1649
- "deprecateAliases": true,
1598
+ "metadata": {
1599
+ "char": "m",
1650
1600
  "exclusive": [
1651
- "source-dir"
1652
- ],
1653
- "name": "from-org",
1654
- "summary": "Username or alias of the org that contains the metadata components from which to build a manifest.",
1655
- "hasDynamicHelp": false,
1656
- "multiple": false,
1657
- "type": "option"
1658
- },
1659
- "output-dir": {
1660
- "aliases": [
1661
- "outputdir",
1662
- "o"
1601
+ "manifest",
1602
+ "metadatapath"
1663
1603
  ],
1664
- "char": "d",
1665
- "deprecateAliases": true,
1666
- "name": "output-dir",
1667
- "summary": "Directory to save the created manifest.",
1604
+ "name": "metadata",
1605
+ "summary": "Metadata component names to convert.",
1606
+ "delimiter": ",",
1668
1607
  "hasDynamicHelp": false,
1669
- "multiple": false,
1608
+ "multiple": true,
1670
1609
  "type": "option"
1671
1610
  }
1672
1611
  },
1673
1612
  "hasDynamicHelp": false,
1674
1613
  "hiddenAliases": [],
1675
- "id": "project:generate:manifest",
1614
+ "id": "project:convert:mdapi",
1676
1615
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1677
1616
  "pluginName": "@salesforce/plugin-deploy-retrieve",
1678
1617
  "pluginType": "core",
1679
1618
  "strict": true,
1680
- "summary": "Create a project manifest that lists the metadata components you want to deploy or retrieve.",
1619
+ "summary": "Convert metadata retrieved via Metadata API into the source format used in Salesforce DX projects.",
1681
1620
  "enableJsonFlag": true,
1682
1621
  "requiresProject": true,
1683
1622
  "isESM": true,
@@ -1685,56 +1624,34 @@
1685
1624
  "lib",
1686
1625
  "commands",
1687
1626
  "project",
1688
- "generate",
1689
- "manifest.js"
1627
+ "convert",
1628
+ "mdapi.js"
1690
1629
  ],
1691
1630
  "aliasPermutations": [
1692
- "force:source:manifest:create",
1693
- "source:force:manifest:create",
1694
- "source:manifest:force:create",
1695
- "source:manifest:create:force",
1696
- "force:manifest:source:create",
1697
- "manifest:force:source:create",
1698
- "manifest:source:force:create",
1699
- "manifest:source:create:force",
1700
- "force:manifest:create:source",
1701
- "manifest:force:create:source",
1702
- "manifest:create:force:source",
1703
- "manifest:create:source:force",
1704
- "force:source:create:manifest",
1705
- "source:force:create:manifest",
1706
- "source:create:force:manifest",
1707
- "source:create:manifest:force",
1708
- "force:create:source:manifest",
1709
- "create:force:source:manifest",
1710
- "create:source:force:manifest",
1711
- "create:source:manifest:force",
1712
- "force:create:manifest:source",
1713
- "create:force:manifest:source",
1714
- "create:manifest:force:source",
1715
- "create:manifest:source:force"
1631
+ "force:mdapi:convert",
1632
+ "mdapi:force:convert",
1633
+ "mdapi:convert:force",
1634
+ "force:convert:mdapi",
1635
+ "convert:force:mdapi",
1636
+ "convert:mdapi:force"
1716
1637
  ],
1717
1638
  "permutations": [
1718
- "project:generate:manifest",
1719
- "generate:project:manifest",
1720
- "generate:manifest:project",
1721
- "project:manifest:generate",
1722
- "manifest:project:generate",
1723
- "manifest:generate:project"
1639
+ "project:convert:mdapi",
1640
+ "convert:project:mdapi",
1641
+ "convert:mdapi:project",
1642
+ "project:mdapi:convert",
1643
+ "mdapi:project:convert",
1644
+ "mdapi:convert:project"
1724
1645
  ]
1725
1646
  },
1726
- "project:delete:source": {
1727
- "aliases": [
1728
- "force:source:delete"
1729
- ],
1647
+ "project:convert:source-behavior": {
1648
+ "aliases": [],
1730
1649
  "args": {},
1731
- "deprecateAliases": true,
1732
- "description": "Use this command to delete components from orgs that don’t have source tracking. To remove deleted items from orgs that have source tracking enabled, \"<%= config.bin %> project deploy start\".\n\nWhen you run this command, both the local source file and the metadata component in the org are deleted.\n\nTo delete multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.",
1650
+ "description": "Specifically, this command updates the \"sourceBehaviorOption\" option in the \"sfdx-project.json\" file and then converts the associated local source files in your project as needed.\n\nFor example, run this command with the \"--behavior decomposePermissionSetBeta\" flag to start decomposing permission sets when you deploy or retrieve them. Decomposing means breaking up the monolithic metadata API format XML file that corresponds to a metadata component into smaller XML files and directories based on its subtypes. Permission sets are not decomposed by default; you must opt-in to start decomposing them by using this command. When the command finishes, your \"sfdx-project.json\" file is updated to always decompose permission sets, and the existing permission set files in your local package directories are converted into the new decomposed format. You run this command only once for a given behavior change.\n\nFor more information about the possible values for the --behavior flag, see the \"sourceBehaviorOptions\" section in the https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_ws_config.htm topic.",
1733
1651
  "examples": [
1734
- "Delete all local Apex source files and all Apex classes from the org with alias \"my-scratch\":\n<%= config.bin %> <%= command.id %> --metadata ApexClass --target-org my-scratch",
1735
- "Delete a specific Apex class and a Profile that has a space in it from your default org; don't prompt for confirmation:\n<%= config.bin %> <%= command.id %> --metadata ApexClass:MyFabulousApexClass --metadata \"Profile: My Profile\" --no-prompt",
1736
- "Run the tests that aren’t in any managed packages as part of the deletion; if the delete succeeds, and the org has source-tracking enabled, update the source tracking information:\n<%= config.bin %> <%= command.id %> --metadata ApexClass --test-level RunLocalTests --track-source",
1737
- "Delete the Apex source files in a directory and the corresponding components from your default org:\n<%= config.bin %> <%= command.id %> --source-dir force-app/main/default/classes"
1652
+ "Update your Salesforce DX project to decompose custom permission sets:\n<%= config.bin %> <%= command.id %> --behavior decomposePermissionSetBeta",
1653
+ "Display what the command would do, but don't change any existing files:\n<%= config.bin %> <%= command.id %> --behavior decomposePermissionSetBeta --dry-run",
1654
+ "Keep the temporary directory that contains the interim metadata API formatted files:\n<%= config.bin %> <%= command.id %> --behavior decomposePermissionSetBeta --dry-run --preserve-temp-dir"
1738
1655
  ],
1739
1656
  "flags": {
1740
1657
  "json": {
@@ -1752,111 +1669,168 @@
1752
1669
  "multiple": false,
1753
1670
  "type": "option"
1754
1671
  },
1755
- "api-version": {
1756
- "aliases": [
1757
- "apiversion"
1758
- ],
1759
- "deprecateAliases": true,
1760
- "description": "Override the api version used for api requests made by this command",
1761
- "name": "api-version",
1672
+ "behavior": {
1673
+ "char": "b",
1674
+ "name": "behavior",
1675
+ "required": true,
1676
+ "summary": "Behavior to enable; the values correspond to the possible values of the \"sourceBehaviorOption\" option in the \"sfdx-project.json\" file.",
1762
1677
  "hasDynamicHelp": false,
1763
1678
  "multiple": false,
1679
+ "options": [
1680
+ "decomposeCustomLabelsBeta2",
1681
+ "decomposeCustomLabelsBeta",
1682
+ "decomposePermissionSetBeta",
1683
+ "decomposePermissionSetBeta2",
1684
+ "decomposeSharingRulesBeta",
1685
+ "decomposeWorkflowBeta",
1686
+ "decomposeExternalServiceRegistrationBeta"
1687
+ ],
1764
1688
  "type": "option"
1765
1689
  },
1766
- "loglevel": {
1767
- "deprecated": {
1768
- "message": "The loglevel flag is no longer in use on this command. You may use it without error, but it will be ignored.\nSet the log level using the `SFDX_LOG_LEVEL` environment variable."
1769
- },
1770
- "hidden": true,
1771
- "name": "loglevel",
1772
- "hasDynamicHelp": false,
1773
- "multiple": false,
1774
- "type": "option"
1690
+ "dry-run": {
1691
+ "name": "dry-run",
1692
+ "summary": "Display what the command would do, but don't make any actual changes.",
1693
+ "allowNo": false,
1694
+ "type": "boolean"
1695
+ },
1696
+ "preserve-temp-dir": {
1697
+ "name": "preserve-temp-dir",
1698
+ "summary": "Don't delete the metadata API format temporary directory that this command creates. Useful for debugging.",
1699
+ "allowNo": false,
1700
+ "type": "boolean"
1775
1701
  },
1776
1702
  "target-org": {
1777
- "aliases": [
1778
- "targetusername",
1779
- "u"
1780
- ],
1781
1703
  "char": "o",
1782
- "deprecateAliases": true,
1783
1704
  "name": "target-org",
1784
1705
  "noCacheDefault": true,
1785
- "required": true,
1786
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
1706
+ "summary": "Username or alias of the target org.",
1787
1707
  "hasDynamicHelp": true,
1788
1708
  "multiple": false,
1789
1709
  "type": "option"
1790
- },
1791
- "check-only": {
1792
- "aliases": [
1793
- "checkonly"
1794
- ],
1795
- "char": "c",
1796
- "deprecateAliases": true,
1797
- "description": "IMPORTANT: Where possible, we changed noninclusive terms to align with our company value of Equality. We maintained certain terms to avoid any effect on customer implementations.\n\nValidates the deleted metadata and runs all Apex tests, but prevents the deletion from being saved to the org.\n\nIf you change a field type from Master-Detail to Lookup or vice versa, that change isn’t supported when using the --check-only flag to test a deletion (validation). This kind of change isn’t supported for test deletions to avoid the risk of data loss or corruption. If a change that isn’t supported for test deletions is included in a deletion package, the test deletion fails and issues an error.\n\nIf your deletion package changes a field type from Master-Detail to Lookup or vice versa, you can still validate the changes prior to deploying to Production by performing a full deletion to another test Sandbox. A full deletion includes a validation of the changes as part of the deletion process.\n\nNote: A Metadata API deletion that includes Master-Detail relationships deletes all detail records in the Recycle Bin in the following cases.\n\n 1. For a deletion with a new Master-Detail field, soft delete (send to the Recycle Bin) all detail records before proceeding to delete the Master-Detail field, or the deletion fails. During the deletion, detail records are permanently deleted from the Recycle Bin and cannot be recovered.\n\n 2. For a deletion that converts a Lookup field relationship to a Master-Detail relationship, detail records must reference a master record or be soft-deleted (sent to the Recycle Bin) for the deletion to succeed. However, a successful deletion permanently deletes any detail records in the Recycle Bin.",
1798
- "name": "check-only",
1799
- "summary": "Validate delete command but don't delete anything from the org or the local project.",
1710
+ }
1711
+ },
1712
+ "hasDynamicHelp": true,
1713
+ "hiddenAliases": [],
1714
+ "id": "project:convert:source-behavior",
1715
+ "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1716
+ "pluginName": "@salesforce/plugin-deploy-retrieve",
1717
+ "pluginType": "core",
1718
+ "state": "beta",
1719
+ "strict": true,
1720
+ "summary": "Enable a behavior of your project source files, and then update your Salesforce DX project to implement the behavior.",
1721
+ "enableJsonFlag": true,
1722
+ "requiresProject": true,
1723
+ "isESM": true,
1724
+ "relativePath": [
1725
+ "lib",
1726
+ "commands",
1727
+ "project",
1728
+ "convert",
1729
+ "source-behavior.js"
1730
+ ],
1731
+ "aliasPermutations": [],
1732
+ "permutations": [
1733
+ "project:convert:source-behavior",
1734
+ "convert:project:source-behavior",
1735
+ "convert:source-behavior:project",
1736
+ "project:source-behavior:convert",
1737
+ "source-behavior:project:convert",
1738
+ "source-behavior:convert:project"
1739
+ ]
1740
+ },
1741
+ "project:convert:source": {
1742
+ "aliases": [
1743
+ "force:source:convert"
1744
+ ],
1745
+ "args": {},
1746
+ "deprecateAliases": true,
1747
+ "description": "To convert source-formatted files into the metadata format, so that you can deploy them using Metadata API, run this command. Then deploy the metadata using \"<%= config.bin %> project deploy\".\n\nTo convert Metadata API–formatted files into the source format, run \"<%= config.bin %> project convert mdapi\".\n\nTo specify a package name that includes spaces, enclose the name in single quotes.\n\nTo convert multiple components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.",
1748
+ "examples": [
1749
+ "Convert source-formatted files in the specified directory into metadata-formatted files; writes converted files into a new directory:\n$ <%= config.bin %> <%= command.id %> --root-dir path/to/source",
1750
+ "Similar to previous example, but writes converted files to the specified output directory and associates the files with the specified package:\n$ <%= config.bin %> <%= command.id %> --root-dir path/to/source --output-dir path/to/outputdir --package-name 'My Package'"
1751
+ ],
1752
+ "flags": {
1753
+ "json": {
1754
+ "description": "Format output as json.",
1755
+ "helpGroup": "GLOBAL",
1756
+ "name": "json",
1800
1757
  "allowNo": false,
1801
1758
  "type": "boolean"
1802
1759
  },
1803
- "wait": {
1804
- "char": "w",
1805
- "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you.",
1806
- "name": "wait",
1807
- "summary": "Number of minutes to wait for the command to finish.",
1808
- "hasDynamicHelp": true,
1760
+ "flags-dir": {
1761
+ "helpGroup": "GLOBAL",
1762
+ "name": "flags-dir",
1763
+ "summary": "Import flag values from a directory.",
1764
+ "hasDynamicHelp": false,
1809
1765
  "multiple": false,
1810
1766
  "type": "option"
1811
1767
  },
1812
- "tests": {
1813
- "description": "If a test name contains a space, enclose it in double quotes.\nFor multiple test names, use one of the following formats:\n\n- Repeat the flag for multiple test names: --tests Test1 --tests Test2 --tests \"Test With Space\"\n- Separate the test names with spaces: --tests Test1 Test2 \"Test With Space\"",
1814
- "helpGroup": "Test",
1815
- "name": "tests",
1816
- "summary": "Apex tests to run when --test-level is RunSpecifiedTests.",
1768
+ "api-version": {
1769
+ "aliases": [
1770
+ "apiversion"
1771
+ ],
1772
+ "deprecateAliases": true,
1773
+ "description": "Override the api version used for api requests made by this command",
1774
+ "name": "api-version",
1775
+ "summary": "API Version to use in the generated project's manifest. By default, will use the version from sfdx-project.json",
1817
1776
  "hasDynamicHelp": false,
1818
- "multiple": true,
1777
+ "multiple": false,
1819
1778
  "type": "option"
1820
1779
  },
1821
- "test-level": {
1780
+ "loglevel": {
1781
+ "deprecated": {
1782
+ "message": "The loglevel flag is no longer in use on this command. You may use it without error, but it will be ignored.\nSet the log level using the `SFDX_LOG_LEVEL` environment variable."
1783
+ },
1784
+ "hidden": true,
1785
+ "name": "loglevel",
1786
+ "hasDynamicHelp": false,
1787
+ "multiple": false,
1788
+ "type": "option"
1789
+ },
1790
+ "root-dir": {
1822
1791
  "aliases": [
1823
- "testlevel"
1792
+ "rootdir"
1824
1793
  ],
1825
- "char": "l",
1794
+ "char": "r",
1826
1795
  "deprecateAliases": true,
1827
- "description": "Valid values are:\n\n- NoTestRun — No tests are run. This test level applies only to deployments to development environments, such as sandbox, Developer Edition, or trial orgs. This test level is the default for development environments.\n\n- RunSpecifiedTests — Runs only the tests that you specify with the --tests flag. Code coverage requirements differ from the default coverage requirements when using this test level. Executed tests must comprise a minimum of 75% code coverage for each class and trigger in the deployment package. This coverage is computed for each class and trigger individually and is different than the overall coverage percentage.\n\n- RunLocalTests — All tests in your org are run, except the ones that originate from installed managed and unlocked packages. This test level is the default for production deployments that include Apex classes or triggers.\n\n- RunAllTestsInOrg — All tests in your org are run, including tests of managed packages.\n\nIf you don’t specify a test level, the default behavior depends on the contents of your deployment package and target org. For more information, see “Running Tests in a Deployment” in the Metadata API Developer Guide.",
1828
- "helpGroup": "Test",
1829
- "name": "test-level",
1830
- "summary": "Deployment Apex testing level.",
1796
+ "name": "root-dir",
1797
+ "summary": "Source directory other than the default package to convert.",
1831
1798
  "hasDynamicHelp": false,
1832
1799
  "multiple": false,
1833
- "options": [
1834
- "NoTestRun",
1835
- "RunSpecifiedTests",
1836
- "RunLocalTests",
1837
- "RunAllTestsInOrg"
1800
+ "type": "option"
1801
+ },
1802
+ "output-dir": {
1803
+ "aliases": [
1804
+ "outputdir"
1838
1805
  ],
1806
+ "char": "d",
1807
+ "deprecateAliases": true,
1808
+ "name": "output-dir",
1809
+ "summary": "Output directory to store the Metadata API–formatted files in.",
1810
+ "default": "metadataPackage_>timestamp<",
1811
+ "hasDynamicHelp": true,
1812
+ "multiple": false,
1839
1813
  "type": "option"
1840
1814
  },
1841
- "no-prompt": {
1815
+ "package-name": {
1842
1816
  "aliases": [
1843
- "noprompt"
1817
+ "packagename"
1844
1818
  ],
1845
- "char": "r",
1819
+ "char": "n",
1846
1820
  "deprecateAliases": true,
1847
- "name": "no-prompt",
1848
- "summary": "Don't prompt for delete confirmation.",
1849
- "allowNo": false,
1850
- "type": "boolean"
1821
+ "name": "package-name",
1822
+ "summary": "Name of the package to associate with the metadata-formatted files.",
1823
+ "hasDynamicHelp": false,
1824
+ "multiple": false,
1825
+ "type": "option"
1851
1826
  },
1852
- "metadata": {
1853
- "char": "m",
1854
- "description": "If you specify this flag, don’t specify --source-dir.",
1855
- "name": "metadata",
1856
- "summary": "Metadata components to delete.",
1857
- "delimiter": ",",
1827
+ "manifest": {
1828
+ "char": "x",
1829
+ "description": "If you specify this flag, don’t specify --metadata or --source-dir.",
1830
+ "name": "manifest",
1831
+ "summary": "Path to the manifest (package.xml) file that specifies the metadata types to convert.",
1858
1832
  "hasDynamicHelp": false,
1859
- "multiple": true,
1833
+ "multiple": false,
1860
1834
  "type": "option"
1861
1835
  },
1862
1836
  "source-dir": {
@@ -1865,57 +1839,40 @@
1865
1839
  ],
1866
1840
  "char": "p",
1867
1841
  "deprecateAliases": true,
1868
- "description": "The supplied paths can be a single file (in which case the operation is applied to only one file) or a folder (in which case the operation is applied to all metadata types in the directory and its sub-directories).\n\nIf you specify this flag, don’t specify --metadata.",
1842
+ "description": "The supplied paths can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its sub-directories).\n\nIf you specify this flag, don’t specify --manifest or --metadata.",
1843
+ "exclusive": [
1844
+ "manifest",
1845
+ "metadata"
1846
+ ],
1869
1847
  "name": "source-dir",
1870
- "summary": "Source file paths to delete.",
1848
+ "summary": "Paths to the local source files to convert.",
1871
1849
  "delimiter": ",",
1872
1850
  "hasDynamicHelp": false,
1873
1851
  "multiple": true,
1874
1852
  "type": "option"
1875
1853
  },
1876
- "track-source": {
1877
- "aliases": [
1878
- "tracksource"
1879
- ],
1880
- "char": "t",
1881
- "deprecateAliases": true,
1854
+ "metadata": {
1855
+ "char": "m",
1882
1856
  "exclusive": [
1883
- "check-only"
1884
- ],
1885
- "name": "track-source",
1886
- "summary": "If the delete succeeds, update the source tracking information.",
1887
- "allowNo": false,
1888
- "type": "boolean"
1889
- },
1890
- "force-overwrite": {
1891
- "aliases": [
1892
- "forceoverwrite"
1893
- ],
1894
- "char": "f",
1895
- "dependsOn": [
1896
- "track-source"
1857
+ "manifest",
1858
+ "sourcepath"
1897
1859
  ],
1898
- "deprecateAliases": true,
1899
- "name": "force-overwrite",
1900
- "summary": "Ignore conflict warnings and overwrite changes to the org.",
1901
- "allowNo": false,
1902
- "type": "boolean"
1903
- },
1904
- "verbose": {
1905
- "name": "verbose",
1906
- "summary": "Verbose output of the delete result.",
1907
- "allowNo": false,
1908
- "type": "boolean"
1860
+ "name": "metadata",
1861
+ "summary": "Metadata component names to convert.",
1862
+ "delimiter": ",",
1863
+ "hasDynamicHelp": false,
1864
+ "multiple": true,
1865
+ "type": "option"
1909
1866
  }
1910
1867
  },
1911
1868
  "hasDynamicHelp": true,
1912
1869
  "hiddenAliases": [],
1913
- "id": "project:delete:source",
1870
+ "id": "project:convert:source",
1914
1871
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
1915
1872
  "pluginName": "@salesforce/plugin-deploy-retrieve",
1916
1873
  "pluginType": "core",
1917
1874
  "strict": true,
1918
- "summary": "Delete source from your project and from a non-source-tracked org.",
1875
+ "summary": "Convert source-formatted files into metadata that you can deploy using Metadata API.",
1919
1876
  "enableJsonFlag": true,
1920
1877
  "requiresProject": true,
1921
1878
  "isESM": true,
@@ -1923,35 +1880,40 @@
1923
1880
  "lib",
1924
1881
  "commands",
1925
1882
  "project",
1926
- "delete",
1883
+ "convert",
1927
1884
  "source.js"
1928
1885
  ],
1929
1886
  "aliasPermutations": [
1930
- "force:source:delete",
1931
- "source:force:delete",
1932
- "source:delete:force",
1933
- "force:delete:source",
1934
- "delete:force:source",
1935
- "delete:source:force"
1887
+ "force:source:convert",
1888
+ "source:force:convert",
1889
+ "source:convert:force",
1890
+ "force:convert:source",
1891
+ "convert:force:source",
1892
+ "convert:source:force"
1936
1893
  ],
1937
1894
  "permutations": [
1938
- "project:delete:source",
1939
- "delete:project:source",
1940
- "delete:source:project",
1941
- "project:source:delete",
1942
- "source:project:delete",
1943
- "source:delete:project"
1895
+ "project:convert:source",
1896
+ "convert:project:source",
1897
+ "convert:source:project",
1898
+ "project:source:convert",
1899
+ "source:project:convert",
1900
+ "source:convert:project"
1944
1901
  ]
1945
1902
  },
1946
- "project:delete:tracking": {
1903
+ "project:generate:manifest": {
1947
1904
  "aliases": [
1948
- "force:source:tracking:clear"
1905
+ "force:source:manifest:create"
1949
1906
  ],
1950
1907
  "args": {},
1951
1908
  "deprecateAliases": true,
1952
- "description": "WARNING: This command deletes or overwrites all existing source tracking files. Use with extreme caution.\n\nDeletes all local source tracking information. When you next run 'project deploy preview', Salesforce CLI displays all local and remote files as changed, and any files with the same name are listed as conflicts.",
1909
+ "description": "Create a manifest from a list of metadata components (--metadata) or from one or more local directories that contain source files (--source-dir). You can specify either of these flags, not both.\n\nUse --type to specify the type of manifest you want to create. The resulting manifest files have specific names, such as the standard package.xml or destructiveChanges.xml to delete metadata. Valid values for this flag, and their respective file names, are:\n\n * package : package.xml (default)\n * pre : destructiveChangesPre.xml\n * post : destructiveChangesPost.xml\n * destroy : destructiveChanges.xml\n\nSee https://developer.salesforce.com/docs/atlas.en-us.api_meta.meta/api_meta/meta_deploy_deleting_files.htm for information about these destructive manifest files.\n\nUse --name to specify a custom name for the generated manifest if the pre-defined ones don’t suit your needs. You can specify either --type or --name, but not both.\n\nTo include multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --include-packages and --source-dir.\n\nTo build a manifest from the metadata in an org, use the --from-org flag. You can combine --from-org with the --metadata flag to include only certain metadata types, or with the --excluded-metadata flag to exclude certain metadata types. When building a manifest from an org, the command makes many concurrent API calls to discover the metadata that exists in the org. To limit the number of concurrent requests, use the SF_LIST_METADATA_BATCH_SIZE environment variable and set it to a size that works best for your org and environment. If you experience timeouts or inconsistent manifest contents, then setting this environment variable can improve accuracy. However, the command takes longer to run because it sends fewer requests at a time.",
1953
1910
  "examples": [
1954
- "Delete local source tracking for the org with alias \"my-scratch\":\n$ <%= config.bin %> <%= command.id %> --target-org my-scratch"
1911
+ "Create a manifest for deploying or retrieving all Apex classes and custom objects:\n$ <%= config.bin %> <%= command.id %> --metadata ApexClass --metadata CustomObject",
1912
+ "Create a manifest for deleting the specified Apex class:\n$ <%= config.bin %> <%= command.id %> --metadata ApexClass:MyApexClass --type destroy",
1913
+ "Create a manifest for deploying or retrieving all the metadata components in the specified local directory; name the file myNewManifest.xml:\n$ <%= config.bin %> <%= command.id %> --source-dir force-app --name myNewManifest",
1914
+ "Create a manifest from the metadata components in the specified org and include metadata in any unlocked packages:\n$ <%= config.bin %> <%= command.id %> --from-org test@myorg.com --include-packages unlocked",
1915
+ "Create a manifest from specific metadata types in an org:\n$ <%= config.bin %> <%= command.id %> --from-org test@myorg.com --metadata ApexClass,CustomObject,CustomLabels",
1916
+ "Create a manifest from all metadata components in an org excluding specific metadata types:\n$ <%= config.bin %> <%= command.id %> --from-org test@myorg.com --excluded-metadata StandardValueSet"
1955
1917
  ],
1956
1918
  "flags": {
1957
1919
  "json": {
@@ -1990,41 +1952,137 @@
1990
1952
  "multiple": false,
1991
1953
  "type": "option"
1992
1954
  },
1993
- "target-org": {
1955
+ "metadata": {
1956
+ "char": "m",
1957
+ "name": "metadata",
1958
+ "summary": "Names of metadata components to include in the manifest.",
1959
+ "delimiter": ",",
1960
+ "hasDynamicHelp": false,
1961
+ "multiple": true,
1962
+ "type": "option"
1963
+ },
1964
+ "source-dir": {
1994
1965
  "aliases": [
1995
- "targetusername",
1996
- "u"
1966
+ "sourcepath"
1997
1967
  ],
1998
- "char": "o",
1968
+ "char": "p",
1999
1969
  "deprecateAliases": true,
2000
- "name": "target-org",
2001
- "noCacheDefault": true,
2002
- "required": true,
2003
- "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
2004
- "hasDynamicHelp": true,
1970
+ "name": "source-dir",
1971
+ "summary": "Paths to the local source files to include in the manifest.",
1972
+ "delimiter": ",",
1973
+ "hasDynamicHelp": false,
1974
+ "multiple": true,
1975
+ "type": "option"
1976
+ },
1977
+ "name": {
1978
+ "aliases": [
1979
+ "manifestname"
1980
+ ],
1981
+ "char": "n",
1982
+ "deprecateAliases": true,
1983
+ "exclusive": [
1984
+ "type"
1985
+ ],
1986
+ "name": "name",
1987
+ "summary": "Name of a custom manifest file to create.",
1988
+ "hasDynamicHelp": false,
2005
1989
  "multiple": false,
2006
1990
  "type": "option"
2007
1991
  },
2008
- "no-prompt": {
1992
+ "type": {
2009
1993
  "aliases": [
2010
- "noprompt"
1994
+ "manifesttype"
2011
1995
  ],
2012
- "char": "p",
1996
+ "char": "t",
2013
1997
  "deprecateAliases": true,
2014
- "name": "no-prompt",
2015
- "summary": "Don't prompt for source tracking override confirmation.",
2016
- "allowNo": false,
2017
- "type": "boolean"
1998
+ "exclusive": [
1999
+ "name"
2000
+ ],
2001
+ "name": "type",
2002
+ "summary": "Type of manifest to create; the type determines the name of the created file.",
2003
+ "hasDynamicHelp": false,
2004
+ "multiple": false,
2005
+ "options": [
2006
+ "pre",
2007
+ "post",
2008
+ "destroy",
2009
+ "package"
2010
+ ],
2011
+ "type": "option"
2012
+ },
2013
+ "include-packages": {
2014
+ "aliases": [
2015
+ "includepackages"
2016
+ ],
2017
+ "char": "c",
2018
+ "dependsOn": [
2019
+ "from-org"
2020
+ ],
2021
+ "deprecateAliases": true,
2022
+ "name": "include-packages",
2023
+ "summary": "Package types (managed, unlocked) whose metadata is included in the manifest; by default, metadata in managed and unlocked packages is excluded. Metadata in unmanaged packages is always included.",
2024
+ "delimiter": ",",
2025
+ "hasDynamicHelp": false,
2026
+ "multiple": true,
2027
+ "options": [
2028
+ "managed",
2029
+ "unlocked"
2030
+ ],
2031
+ "type": "option"
2032
+ },
2033
+ "excluded-metadata": {
2034
+ "name": "excluded-metadata",
2035
+ "relationships": [
2036
+ {
2037
+ "type": "some",
2038
+ "flags": [
2039
+ "from-org",
2040
+ "source-dir"
2041
+ ]
2042
+ }
2043
+ ],
2044
+ "summary": "Metadata types to exclude when building a manifest from an org. Specify the name of the type, not the name of a specific component.",
2045
+ "delimiter": ",",
2046
+ "hasDynamicHelp": false,
2047
+ "multiple": true,
2048
+ "type": "option"
2049
+ },
2050
+ "from-org": {
2051
+ "aliases": [
2052
+ "fromorg"
2053
+ ],
2054
+ "deprecateAliases": true,
2055
+ "exclusive": [
2056
+ "source-dir"
2057
+ ],
2058
+ "name": "from-org",
2059
+ "summary": "Username or alias of the org that contains the metadata components from which to build a manifest.",
2060
+ "hasDynamicHelp": false,
2061
+ "multiple": false,
2062
+ "type": "option"
2063
+ },
2064
+ "output-dir": {
2065
+ "aliases": [
2066
+ "outputdir",
2067
+ "o"
2068
+ ],
2069
+ "char": "d",
2070
+ "deprecateAliases": true,
2071
+ "name": "output-dir",
2072
+ "summary": "Directory to save the created manifest.",
2073
+ "hasDynamicHelp": false,
2074
+ "multiple": false,
2075
+ "type": "option"
2018
2076
  }
2019
2077
  },
2020
- "hasDynamicHelp": true,
2078
+ "hasDynamicHelp": false,
2021
2079
  "hiddenAliases": [],
2022
- "id": "project:delete:tracking",
2080
+ "id": "project:generate:manifest",
2023
2081
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2024
2082
  "pluginName": "@salesforce/plugin-deploy-retrieve",
2025
2083
  "pluginType": "core",
2026
2084
  "strict": true,
2027
- "summary": "Delete all local source tracking information.",
2085
+ "summary": "Create a project manifest that lists the metadata components you want to deploy or retrieve.",
2028
2086
  "enableJsonFlag": true,
2029
2087
  "requiresProject": true,
2030
2088
  "isESM": true,
@@ -2032,54 +2090,56 @@
2032
2090
  "lib",
2033
2091
  "commands",
2034
2092
  "project",
2035
- "delete",
2036
- "tracking.js"
2093
+ "generate",
2094
+ "manifest.js"
2037
2095
  ],
2038
2096
  "aliasPermutations": [
2039
- "force:source:tracking:clear",
2040
- "source:force:tracking:clear",
2041
- "source:tracking:force:clear",
2042
- "source:tracking:clear:force",
2043
- "force:tracking:source:clear",
2044
- "tracking:force:source:clear",
2045
- "tracking:source:force:clear",
2046
- "tracking:source:clear:force",
2047
- "force:tracking:clear:source",
2048
- "tracking:force:clear:source",
2049
- "tracking:clear:force:source",
2050
- "tracking:clear:source:force",
2051
- "force:source:clear:tracking",
2052
- "source:force:clear:tracking",
2053
- "source:clear:force:tracking",
2054
- "source:clear:tracking:force",
2055
- "force:clear:source:tracking",
2056
- "clear:force:source:tracking",
2057
- "clear:source:force:tracking",
2058
- "clear:source:tracking:force",
2059
- "force:clear:tracking:source",
2060
- "clear:force:tracking:source",
2061
- "clear:tracking:force:source",
2062
- "clear:tracking:source:force"
2097
+ "force:source:manifest:create",
2098
+ "source:force:manifest:create",
2099
+ "source:manifest:force:create",
2100
+ "source:manifest:create:force",
2101
+ "force:manifest:source:create",
2102
+ "manifest:force:source:create",
2103
+ "manifest:source:force:create",
2104
+ "manifest:source:create:force",
2105
+ "force:manifest:create:source",
2106
+ "manifest:force:create:source",
2107
+ "manifest:create:force:source",
2108
+ "manifest:create:source:force",
2109
+ "force:source:create:manifest",
2110
+ "source:force:create:manifest",
2111
+ "source:create:force:manifest",
2112
+ "source:create:manifest:force",
2113
+ "force:create:source:manifest",
2114
+ "create:force:source:manifest",
2115
+ "create:source:force:manifest",
2116
+ "create:source:manifest:force",
2117
+ "force:create:manifest:source",
2118
+ "create:force:manifest:source",
2119
+ "create:manifest:force:source",
2120
+ "create:manifest:source:force"
2063
2121
  ],
2064
2122
  "permutations": [
2065
- "project:delete:tracking",
2066
- "delete:project:tracking",
2067
- "delete:tracking:project",
2068
- "project:tracking:delete",
2069
- "tracking:project:delete",
2070
- "tracking:delete:project"
2123
+ "project:generate:manifest",
2124
+ "generate:project:manifest",
2125
+ "generate:manifest:project",
2126
+ "project:manifest:generate",
2127
+ "manifest:project:generate",
2128
+ "manifest:generate:project"
2071
2129
  ]
2072
2130
  },
2073
- "project:convert:mdapi": {
2131
+ "project:delete:source": {
2074
2132
  "aliases": [
2075
- "force:mdapi:convert"
2133
+ "force:source:delete"
2076
2134
  ],
2077
2135
  "args": {},
2078
2136
  "deprecateAliases": true,
2079
- "description": "To use Salesforce CLI to work with components that you retrieved via Metadata API, first convert your files from the metadata format to the source format using this command.\n\nTo convert files from the source format back to the metadata format, run \"sf project convert source\".\n\nTo convert multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.",
2137
+ "description": "Use this command to delete components from orgs that don’t have source tracking. To remove deleted items from orgs that have source tracking enabled, \"<%= config.bin %> project deploy start\".\n\nWhen you run this command, both the local source file and the metadata component in the org are deleted.\n\nTo delete multiple metadata components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.",
2080
2138
  "examples": [
2081
- "Convert metadata formatted files in the specified directory into source formatted files; writes converted files to your default package directory:\n$ <%= config.bin %> <%= command.id %> --root-dir path/to/metadata",
2082
- "Similar to previous example, but writes converted files to the specified output directory:\n$ <%= config.bin %> <%= command.id %> --root-dir path/to/metadata --output-dir path/to/outputdir"
2139
+ "Delete all local Apex source files and all Apex classes from the org with alias \"my-scratch\":\n<%= config.bin %> <%= command.id %> --metadata ApexClass --target-org my-scratch",
2140
+ "Delete a specific Apex class and a Profile that has a space in it from your default org; don't prompt for confirmation:\n<%= config.bin %> <%= command.id %> --metadata ApexClass:MyFabulousApexClass --metadata \"Profile: My Profile\" --no-prompt",
2141
+ "Run the tests that aren’t in any managed packages as part of the deletion; if the delete succeeds, and the org has source-tracking enabled, update the source tracking information:\n<%= config.bin %> <%= command.id %> --metadata ApexClass --test-level RunLocalTests --track-source",
2142
+ "Delete the Apex source files in a directory and the corresponding components from your default org:\n<%= config.bin %> <%= command.id %> --source-dir force-app/main/default/classes"
2083
2143
  ],
2084
2144
  "flags": {
2085
2145
  "json": {
@@ -2118,181 +2178,149 @@
2118
2178
  "multiple": false,
2119
2179
  "type": "option"
2120
2180
  },
2121
- "root-dir": {
2181
+ "target-org": {
2122
2182
  "aliases": [
2123
- "rootdir"
2183
+ "targetusername",
2184
+ "u"
2124
2185
  ],
2125
- "char": "r",
2186
+ "char": "o",
2126
2187
  "deprecateAliases": true,
2127
- "name": "root-dir",
2188
+ "name": "target-org",
2189
+ "noCacheDefault": true,
2128
2190
  "required": true,
2129
- "summary": "Root directory that contains the Metadata API–formatted metadata.",
2130
- "hasDynamicHelp": false,
2191
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
2192
+ "hasDynamicHelp": true,
2131
2193
  "multiple": false,
2132
2194
  "type": "option"
2133
2195
  },
2134
- "output-dir": {
2196
+ "check-only": {
2135
2197
  "aliases": [
2136
- "outputdir"
2198
+ "checkonly"
2137
2199
  ],
2138
- "char": "d",
2200
+ "char": "c",
2139
2201
  "deprecateAliases": true,
2140
- "name": "output-dir",
2141
- "summary": "Directory to store your files in after they’re converted to source format; can be an absolute or relative path.",
2142
- "hasDynamicHelp": false,
2202
+ "description": "IMPORTANT: Where possible, we changed noninclusive terms to align with our company value of Equality. We maintained certain terms to avoid any effect on customer implementations.\n\nValidates the deleted metadata and runs all Apex tests, but prevents the deletion from being saved to the org.\n\nIf you change a field type from Master-Detail to Lookup or vice versa, that change isn’t supported when using the --check-only flag to test a deletion (validation). This kind of change isn’t supported for test deletions to avoid the risk of data loss or corruption. If a change that isn’t supported for test deletions is included in a deletion package, the test deletion fails and issues an error.\n\nIf your deletion package changes a field type from Master-Detail to Lookup or vice versa, you can still validate the changes prior to deploying to Production by performing a full deletion to another test Sandbox. A full deletion includes a validation of the changes as part of the deletion process.\n\nNote: A Metadata API deletion that includes Master-Detail relationships deletes all detail records in the Recycle Bin in the following cases.\n\n 1. For a deletion with a new Master-Detail field, soft delete (send to the Recycle Bin) all detail records before proceeding to delete the Master-Detail field, or the deletion fails. During the deletion, detail records are permanently deleted from the Recycle Bin and cannot be recovered.\n\n 2. For a deletion that converts a Lookup field relationship to a Master-Detail relationship, detail records must reference a master record or be soft-deleted (sent to the Recycle Bin) for the deletion to succeed. However, a successful deletion permanently deletes any detail records in the Recycle Bin.",
2203
+ "name": "check-only",
2204
+ "summary": "Validate delete command but don't delete anything from the org or the local project.",
2205
+ "allowNo": false,
2206
+ "type": "boolean"
2207
+ },
2208
+ "wait": {
2209
+ "char": "w",
2210
+ "description": "If the command continues to run after the wait period, the CLI returns control of the terminal window to you.",
2211
+ "name": "wait",
2212
+ "summary": "Number of minutes to wait for the command to finish.",
2213
+ "hasDynamicHelp": true,
2143
2214
  "multiple": false,
2144
2215
  "type": "option"
2145
2216
  },
2146
- "manifest": {
2147
- "char": "x",
2148
- "description": "If you specify this flag, don’t specify --metadata or --source-dir.",
2149
- "name": "manifest",
2150
- "summary": "File path to manifest (package.xml) of metadata types to convert.",
2217
+ "tests": {
2218
+ "description": "If a test name contains a space, enclose it in double quotes.\nFor multiple test names, use one of the following formats:\n\n- Repeat the flag for multiple test names: --tests Test1 --tests Test2 --tests \"Test With Space\"\n- Separate the test names with spaces: --tests Test1 Test2 \"Test With Space\"",
2219
+ "helpGroup": "Test",
2220
+ "name": "tests",
2221
+ "summary": "Apex tests to run when --test-level is RunSpecifiedTests.",
2151
2222
  "hasDynamicHelp": false,
2152
- "multiple": false,
2223
+ "multiple": true,
2153
2224
  "type": "option"
2154
2225
  },
2155
- "metadata-dir": {
2226
+ "test-level": {
2156
2227
  "aliases": [
2157
- "metadatapath"
2228
+ "testlevel"
2158
2229
  ],
2159
- "char": "p",
2230
+ "char": "l",
2160
2231
  "deprecateAliases": true,
2161
- "description": "The supplied paths can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its sub-directories).\n\nIf you specify this flag, don’t specify --manifest or --metadata. If the comma-separated list you’re supplying contains spaces, enclose the entire comma-separated list in one set of double quotes.",
2162
- "exclusive": [
2163
- "manifest",
2164
- "metadata"
2165
- ],
2166
- "name": "metadata-dir",
2167
- "summary": "Root of directory or zip file of metadata formatted files to convert.",
2168
- "delimiter": ",",
2232
+ "description": "Valid values are:\n\n- NoTestRun No tests are run. This test level applies only to deployments to development environments, such as sandbox, Developer Edition, or trial orgs. This test level is the default for development environments.\n\n- RunSpecifiedTests — Runs only the tests that you specify with the --tests flag. Code coverage requirements differ from the default coverage requirements when using this test level. Executed tests must comprise a minimum of 75% code coverage for each class and trigger in the deployment package. This coverage is computed for each class and trigger individually and is different than the overall coverage percentage.\n\n- RunLocalTests — All tests in your org are run, except the ones that originate from installed managed and unlocked packages. This test level is the default for production deployments that include Apex classes or triggers.\n\n- RunAllTestsInOrg All tests in your org are run, including tests of managed packages.\n\nIf you don’t specify a test level, the default behavior depends on the contents of your deployment package and target org. For more information, see “Running Tests in a Deployment” in the Metadata API Developer Guide.",
2233
+ "helpGroup": "Test",
2234
+ "name": "test-level",
2235
+ "summary": "Deployment Apex testing level.",
2169
2236
  "hasDynamicHelp": false,
2170
- "multiple": true,
2171
- "type": "option"
2172
- },
2173
- "metadata": {
2174
- "char": "m",
2175
- "exclusive": [
2176
- "manifest",
2177
- "metadatapath"
2237
+ "multiple": false,
2238
+ "options": [
2239
+ "NoTestRun",
2240
+ "RunSpecifiedTests",
2241
+ "RunLocalTests",
2242
+ "RunAllTestsInOrg"
2178
2243
  ],
2179
- "name": "metadata",
2180
- "summary": "Metadata component names to convert.",
2181
- "delimiter": ",",
2182
- "hasDynamicHelp": false,
2183
- "multiple": true,
2184
2244
  "type": "option"
2185
- }
2186
- },
2187
- "hasDynamicHelp": false,
2188
- "hiddenAliases": [],
2189
- "id": "project:convert:mdapi",
2190
- "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2191
- "pluginName": "@salesforce/plugin-deploy-retrieve",
2192
- "pluginType": "core",
2193
- "strict": true,
2194
- "summary": "Convert metadata retrieved via Metadata API into the source format used in Salesforce DX projects.",
2195
- "enableJsonFlag": true,
2196
- "requiresProject": true,
2197
- "isESM": true,
2198
- "relativePath": [
2199
- "lib",
2200
- "commands",
2201
- "project",
2202
- "convert",
2203
- "mdapi.js"
2204
- ],
2205
- "aliasPermutations": [
2206
- "force:mdapi:convert",
2207
- "mdapi:force:convert",
2208
- "mdapi:convert:force",
2209
- "force:convert:mdapi",
2210
- "convert:force:mdapi",
2211
- "convert:mdapi:force"
2212
- ],
2213
- "permutations": [
2214
- "project:convert:mdapi",
2215
- "convert:project:mdapi",
2216
- "convert:mdapi:project",
2217
- "project:mdapi:convert",
2218
- "mdapi:project:convert",
2219
- "mdapi:convert:project"
2220
- ]
2221
- },
2222
- "project:convert:source-behavior": {
2223
- "aliases": [],
2224
- "args": {},
2225
- "description": "Specifically, this command updates the \"sourceBehaviorOption\" option in the \"sfdx-project.json\" file and then converts the associated local source files in your project as needed.\n\nFor example, run this command with the \"--behavior decomposePermissionSetBeta\" flag to start decomposing permission sets when you deploy or retrieve them. Decomposing means breaking up the monolithic metadata API format XML file that corresponds to a metadata component into smaller XML files and directories based on its subtypes. Permission sets are not decomposed by default; you must opt-in to start decomposing them by using this command. When the command finishes, your \"sfdx-project.json\" file is updated to always decompose permission sets, and the existing permission set files in your local package directories are converted into the new decomposed format. You run this command only once for a given behavior change.\n\nFor more information about the possible values for the --behavior flag, see the \"sourceBehaviorOptions\" section in the https://developer.salesforce.com/docs/atlas.en-us.sfdx_dev.meta/sfdx_dev/sfdx_dev_ws_config.htm topic.",
2226
- "examples": [
2227
- "Update your Salesforce DX project to decompose custom permission sets:\n<%= config.bin %> <%= command.id %> --behavior decomposePermissionSetBeta",
2228
- "Display what the command would do, but don't change any existing files:\n<%= config.bin %> <%= command.id %> --behavior decomposePermissionSetBeta --dry-run",
2229
- "Keep the temporary directory that contains the interim metadata API formatted files:\n<%= config.bin %> <%= command.id %> --behavior decomposePermissionSetBeta --dry-run --preserve-temp-dir"
2230
- ],
2231
- "flags": {
2232
- "json": {
2233
- "description": "Format output as json.",
2234
- "helpGroup": "GLOBAL",
2235
- "name": "json",
2245
+ },
2246
+ "no-prompt": {
2247
+ "aliases": [
2248
+ "noprompt"
2249
+ ],
2250
+ "char": "r",
2251
+ "deprecateAliases": true,
2252
+ "name": "no-prompt",
2253
+ "summary": "Don't prompt for delete confirmation.",
2236
2254
  "allowNo": false,
2237
2255
  "type": "boolean"
2238
2256
  },
2239
- "flags-dir": {
2240
- "helpGroup": "GLOBAL",
2241
- "name": "flags-dir",
2242
- "summary": "Import flag values from a directory.",
2257
+ "metadata": {
2258
+ "char": "m",
2259
+ "description": "If you specify this flag, don’t specify --source-dir.",
2260
+ "name": "metadata",
2261
+ "summary": "Metadata components to delete.",
2262
+ "delimiter": ",",
2243
2263
  "hasDynamicHelp": false,
2244
- "multiple": false,
2264
+ "multiple": true,
2245
2265
  "type": "option"
2246
2266
  },
2247
- "behavior": {
2248
- "char": "b",
2249
- "name": "behavior",
2250
- "required": true,
2251
- "summary": "Behavior to enable; the values correspond to the possible values of the \"sourceBehaviorOption\" option in the \"sfdx-project.json\" file.",
2252
- "hasDynamicHelp": false,
2253
- "multiple": false,
2254
- "options": [
2255
- "decomposeCustomLabelsBeta2",
2256
- "decomposeCustomLabelsBeta",
2257
- "decomposePermissionSetBeta",
2258
- "decomposePermissionSetBeta2",
2259
- "decomposeSharingRulesBeta",
2260
- "decomposeWorkflowBeta",
2261
- "decomposeExternalServiceRegistrationBeta"
2267
+ "source-dir": {
2268
+ "aliases": [
2269
+ "sourcepath"
2262
2270
  ],
2271
+ "char": "p",
2272
+ "deprecateAliases": true,
2273
+ "description": "The supplied paths can be a single file (in which case the operation is applied to only one file) or a folder (in which case the operation is applied to all metadata types in the directory and its sub-directories).\n\nIf you specify this flag, don’t specify --metadata.",
2274
+ "name": "source-dir",
2275
+ "summary": "Source file paths to delete.",
2276
+ "delimiter": ",",
2277
+ "hasDynamicHelp": false,
2278
+ "multiple": true,
2263
2279
  "type": "option"
2264
2280
  },
2265
- "dry-run": {
2266
- "name": "dry-run",
2267
- "summary": "Display what the command would do, but don't make any actual changes.",
2281
+ "track-source": {
2282
+ "aliases": [
2283
+ "tracksource"
2284
+ ],
2285
+ "char": "t",
2286
+ "deprecateAliases": true,
2287
+ "exclusive": [
2288
+ "check-only"
2289
+ ],
2290
+ "name": "track-source",
2291
+ "summary": "If the delete succeeds, update the source tracking information.",
2268
2292
  "allowNo": false,
2269
2293
  "type": "boolean"
2270
2294
  },
2271
- "preserve-temp-dir": {
2272
- "name": "preserve-temp-dir",
2273
- "summary": "Don't delete the metadata API format temporary directory that this command creates. Useful for debugging.",
2295
+ "force-overwrite": {
2296
+ "aliases": [
2297
+ "forceoverwrite"
2298
+ ],
2299
+ "char": "f",
2300
+ "dependsOn": [
2301
+ "track-source"
2302
+ ],
2303
+ "deprecateAliases": true,
2304
+ "name": "force-overwrite",
2305
+ "summary": "Ignore conflict warnings and overwrite changes to the org.",
2274
2306
  "allowNo": false,
2275
2307
  "type": "boolean"
2276
2308
  },
2277
- "target-org": {
2278
- "char": "o",
2279
- "name": "target-org",
2280
- "noCacheDefault": true,
2281
- "summary": "Username or alias of the target org.",
2282
- "hasDynamicHelp": true,
2283
- "multiple": false,
2284
- "type": "option"
2309
+ "verbose": {
2310
+ "name": "verbose",
2311
+ "summary": "Verbose output of the delete result.",
2312
+ "allowNo": false,
2313
+ "type": "boolean"
2285
2314
  }
2286
2315
  },
2287
2316
  "hasDynamicHelp": true,
2288
2317
  "hiddenAliases": [],
2289
- "id": "project:convert:source-behavior",
2318
+ "id": "project:delete:source",
2290
2319
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2291
2320
  "pluginName": "@salesforce/plugin-deploy-retrieve",
2292
2321
  "pluginType": "core",
2293
- "state": "beta",
2294
2322
  "strict": true,
2295
- "summary": "Enable a behavior of your project source files, and then update your Salesforce DX project to implement the behavior.",
2323
+ "summary": "Delete source from your project and from a non-source-tracked org.",
2296
2324
  "enableJsonFlag": true,
2297
2325
  "requiresProject": true,
2298
2326
  "isESM": true,
@@ -2300,29 +2328,35 @@
2300
2328
  "lib",
2301
2329
  "commands",
2302
2330
  "project",
2303
- "convert",
2304
- "source-behavior.js"
2331
+ "delete",
2332
+ "source.js"
2333
+ ],
2334
+ "aliasPermutations": [
2335
+ "force:source:delete",
2336
+ "source:force:delete",
2337
+ "source:delete:force",
2338
+ "force:delete:source",
2339
+ "delete:force:source",
2340
+ "delete:source:force"
2305
2341
  ],
2306
- "aliasPermutations": [],
2307
2342
  "permutations": [
2308
- "project:convert:source-behavior",
2309
- "convert:project:source-behavior",
2310
- "convert:source-behavior:project",
2311
- "project:source-behavior:convert",
2312
- "source-behavior:project:convert",
2313
- "source-behavior:convert:project"
2343
+ "project:delete:source",
2344
+ "delete:project:source",
2345
+ "delete:source:project",
2346
+ "project:source:delete",
2347
+ "source:project:delete",
2348
+ "source:delete:project"
2314
2349
  ]
2315
2350
  },
2316
- "project:convert:source": {
2351
+ "project:delete:tracking": {
2317
2352
  "aliases": [
2318
- "force:source:convert"
2353
+ "force:source:tracking:clear"
2319
2354
  ],
2320
2355
  "args": {},
2321
2356
  "deprecateAliases": true,
2322
- "description": "To convert source-formatted files into the metadata format, so that you can deploy them using Metadata API, run this command. Then deploy the metadata using \"<%= config.bin %> project deploy\".\n\nTo convert Metadata API–formatted files into the source format, run \"<%= config.bin %> project convert mdapi\".\n\nTo specify a package name that includes spaces, enclose the name in single quotes.\n\nTo convert multiple components, either set multiple --metadata <name> flags or a single --metadata flag with multiple names separated by spaces. Enclose names that contain spaces in one set of double quotes. The same syntax applies to --source-dir.",
2357
+ "description": "WARNING: This command deletes or overwrites all existing source tracking files. Use with extreme caution.\n\nDeletes all local source tracking information. When you next run 'project deploy preview', Salesforce CLI displays all local and remote files as changed, and any files with the same name are listed as conflicts.",
2323
2358
  "examples": [
2324
- "Convert source-formatted files in the specified directory into metadata-formatted files; writes converted files into a new directory:\n$ <%= config.bin %> <%= command.id %> --root-dir path/to/source",
2325
- "Similar to previous example, but writes converted files to the specified output directory and associates the files with the specified package:\n$ <%= config.bin %> <%= command.id %> --root-dir path/to/source --output-dir path/to/outputdir --package-name 'My Package'"
2359
+ "Delete local source tracking for the org with alias \"my-scratch\":\n$ <%= config.bin %> <%= command.id %> --target-org my-scratch"
2326
2360
  ],
2327
2361
  "flags": {
2328
2362
  "json": {
@@ -2347,7 +2381,6 @@
2347
2381
  "deprecateAliases": true,
2348
2382
  "description": "Override the api version used for api requests made by this command",
2349
2383
  "name": "api-version",
2350
- "summary": "API Version to use in the generated project's manifest. By default, will use the version from sfdx-project.json",
2351
2384
  "hasDynamicHelp": false,
2352
2385
  "multiple": false,
2353
2386
  "type": "option"
@@ -2362,92 +2395,41 @@
2362
2395
  "multiple": false,
2363
2396
  "type": "option"
2364
2397
  },
2365
- "root-dir": {
2366
- "aliases": [
2367
- "rootdir"
2368
- ],
2369
- "char": "r",
2370
- "deprecateAliases": true,
2371
- "name": "root-dir",
2372
- "summary": "Source directory other than the default package to convert.",
2373
- "hasDynamicHelp": false,
2374
- "multiple": false,
2375
- "type": "option"
2376
- },
2377
- "output-dir": {
2398
+ "target-org": {
2378
2399
  "aliases": [
2379
- "outputdir"
2400
+ "targetusername",
2401
+ "u"
2380
2402
  ],
2381
- "char": "d",
2403
+ "char": "o",
2382
2404
  "deprecateAliases": true,
2383
- "name": "output-dir",
2384
- "summary": "Output directory to store the Metadata API–formatted files in.",
2385
- "default": "metadataPackage_>timestamp<",
2405
+ "name": "target-org",
2406
+ "noCacheDefault": true,
2407
+ "required": true,
2408
+ "summary": "Username or alias of the target org. Not required if the `target-org` configuration variable is already set.",
2386
2409
  "hasDynamicHelp": true,
2387
2410
  "multiple": false,
2388
2411
  "type": "option"
2389
2412
  },
2390
- "package-name": {
2391
- "aliases": [
2392
- "packagename"
2393
- ],
2394
- "char": "n",
2395
- "deprecateAliases": true,
2396
- "name": "package-name",
2397
- "summary": "Name of the package to associate with the metadata-formatted files.",
2398
- "hasDynamicHelp": false,
2399
- "multiple": false,
2400
- "type": "option"
2401
- },
2402
- "manifest": {
2403
- "char": "x",
2404
- "description": "If you specify this flag, don’t specify --metadata or --source-dir.",
2405
- "name": "manifest",
2406
- "summary": "Path to the manifest (package.xml) file that specifies the metadata types to convert.",
2407
- "hasDynamicHelp": false,
2408
- "multiple": false,
2409
- "type": "option"
2410
- },
2411
- "source-dir": {
2413
+ "no-prompt": {
2412
2414
  "aliases": [
2413
- "sourcepath"
2415
+ "noprompt"
2414
2416
  ],
2415
2417
  "char": "p",
2416
2418
  "deprecateAliases": true,
2417
- "description": "The supplied paths can be to a single file (in which case the operation is applied to only one file) or to a folder (in which case the operation is applied to all metadata types in the directory and its sub-directories).\n\nIf you specify this flag, don’t specify --manifest or --metadata.",
2418
- "exclusive": [
2419
- "manifest",
2420
- "metadata"
2421
- ],
2422
- "name": "source-dir",
2423
- "summary": "Paths to the local source files to convert.",
2424
- "delimiter": ",",
2425
- "hasDynamicHelp": false,
2426
- "multiple": true,
2427
- "type": "option"
2428
- },
2429
- "metadata": {
2430
- "char": "m",
2431
- "exclusive": [
2432
- "manifest",
2433
- "sourcepath"
2434
- ],
2435
- "name": "metadata",
2436
- "summary": "Metadata component names to convert.",
2437
- "delimiter": ",",
2438
- "hasDynamicHelp": false,
2439
- "multiple": true,
2440
- "type": "option"
2419
+ "name": "no-prompt",
2420
+ "summary": "Don't prompt for source tracking override confirmation.",
2421
+ "allowNo": false,
2422
+ "type": "boolean"
2441
2423
  }
2442
2424
  },
2443
2425
  "hasDynamicHelp": true,
2444
2426
  "hiddenAliases": [],
2445
- "id": "project:convert:source",
2427
+ "id": "project:delete:tracking",
2446
2428
  "pluginAlias": "@salesforce/plugin-deploy-retrieve",
2447
2429
  "pluginName": "@salesforce/plugin-deploy-retrieve",
2448
2430
  "pluginType": "core",
2449
2431
  "strict": true,
2450
- "summary": "Convert source-formatted files into metadata that you can deploy using Metadata API.",
2432
+ "summary": "Delete all local source tracking information.",
2451
2433
  "enableJsonFlag": true,
2452
2434
  "requiresProject": true,
2453
2435
  "isESM": true,
@@ -2455,24 +2437,42 @@
2455
2437
  "lib",
2456
2438
  "commands",
2457
2439
  "project",
2458
- "convert",
2459
- "source.js"
2440
+ "delete",
2441
+ "tracking.js"
2460
2442
  ],
2461
2443
  "aliasPermutations": [
2462
- "force:source:convert",
2463
- "source:force:convert",
2464
- "source:convert:force",
2465
- "force:convert:source",
2466
- "convert:force:source",
2467
- "convert:source:force"
2444
+ "force:source:tracking:clear",
2445
+ "source:force:tracking:clear",
2446
+ "source:tracking:force:clear",
2447
+ "source:tracking:clear:force",
2448
+ "force:tracking:source:clear",
2449
+ "tracking:force:source:clear",
2450
+ "tracking:source:force:clear",
2451
+ "tracking:source:clear:force",
2452
+ "force:tracking:clear:source",
2453
+ "tracking:force:clear:source",
2454
+ "tracking:clear:force:source",
2455
+ "tracking:clear:source:force",
2456
+ "force:source:clear:tracking",
2457
+ "source:force:clear:tracking",
2458
+ "source:clear:force:tracking",
2459
+ "source:clear:tracking:force",
2460
+ "force:clear:source:tracking",
2461
+ "clear:force:source:tracking",
2462
+ "clear:source:force:tracking",
2463
+ "clear:source:tracking:force",
2464
+ "force:clear:tracking:source",
2465
+ "clear:force:tracking:source",
2466
+ "clear:tracking:force:source",
2467
+ "clear:tracking:source:force"
2468
2468
  ],
2469
2469
  "permutations": [
2470
- "project:convert:source",
2471
- "convert:project:source",
2472
- "convert:source:project",
2473
- "project:source:convert",
2474
- "source:project:convert",
2475
- "source:convert:project"
2470
+ "project:delete:tracking",
2471
+ "delete:project:tracking",
2472
+ "delete:tracking:project",
2473
+ "project:tracking:delete",
2474
+ "tracking:project:delete",
2475
+ "tracking:delete:project"
2476
2476
  ]
2477
2477
  },
2478
2478
  "project:list:ignored": {
@@ -3050,5 +3050,5 @@
3050
3050
  ]
3051
3051
  }
3052
3052
  },
3053
- "version": "3.21.1"
3053
+ "version": "3.21.3"
3054
3054
  }