1.3.0 • Published 1 year ago

@mavens/sfdx-commands v1.3.0

Weekly downloads
129
License
MIT
Repository
github
Last release
1 year ago

Getting Started

$ sfdx plugins:install @mavens/sfdx-commands

Usage

mavens:ci:lcov

Generating an lcov.info file based on sfdx test results, consumeable by tools like Coveralls.

$ sfdx mavens:ci:lcov --rootdir="." --targetusername rene-levesque@example.com
Generating the lcov.info file... done

Here's a sample .travis.yaml configuration file, when used alongside Travis CI:

node_js: "7"

before_script:
  # [insert here sfdx installation & login]
  - npm install coveralls -g
  - echo y | sfdx plugins:install @mavens/sfdx-commands

script:
  - sfdx force:org:create --setdefaultusername --definitionfile scratchdef.json --setalias ci
  - sfdx force:source:push
  - mkdir coverage
  - sfdx force:apex:test:run --codecoverage --testlevel=RunLocalTests --resultformat=json --outputdir=coverage
  - sfdx mavens:ci:lcov
  - sfdx force:org:delete --noprompt
  - cat ./coverage/lcov.info | coveralls

mavens:ci:replace

Used to find and replace files within a directory and sub directories, using pre-defined environment variables.

These can be exported from your resource file, a .env file (refer to dotenv documentation), via your CI configuration...

$ sfdx mavens:ci:replace --rootdir=packages --targetusername celine-dion@example.com
1 files updated... done

You must have a .mavens.yaml configuration file, with the replace key defined:

replace:
  - VAULT_ENDPOINT
  - VAULT_USERNANE
  - VAULT_PASSWORD

Any metadata containing (such as this sample packages/force-app/main/default/namedCredentials/Vault_MVN.namedCredential-meta.xml) containing ${VAULT_ENDPOINT}:

<?xml version="1.0" encoding="UTF-8"?>
<NamedCredential xmlns="http://soap.sforce.com/2006/04/metadata">
    <allowMergeFieldsInBody>true</allowMergeFieldsInBody>
    <allowMergeFieldsInHeader>true</allowMergeFieldsInHeader>
    <endpoint>${VAULT_ENDPOINT}</endpoint>
    <generateAuthorizationHeader>false</generateAuthorizationHeader>
    <label>Vault</label>
    <principalType>NamedUser</principalType>
    <protocol>Password</protocol>
    <username>${VAULT_USERNANE}</username>
    <password>${VAULT_PASSWORD}</password>
</NamedCredential>

Will be replaced to look like the following:

<?xml version="1.0" encoding="UTF-8"?>
<NamedCredential xmlns="http://soap.sforce.com/2006/04/metadata">
    <allowMergeFieldsInBody>true</allowMergeFieldsInBody>
    <allowMergeFieldsInHeader>true</allowMergeFieldsInHeader>
    <endpoint>https://sb-customer-medcomms.veevavault.com</endpoint>
    <generateAuthorizationHeader>false</generateAuthorizationHeader>
    <label>Vault</label>
    <principalType>NamedUser</principalType>
    <protocol>Password</protocol>
    <username>integration@mavens.com</username>
    <password>[placeholder]</password>
</NamedCredential>

mavens:manifest:generate

$ sfdx mavens:manifest:generate --targetusername celine-dion@example.com

Describing metadata types... 103 types retrieved.
Listing metadata members... done

Metadata Type               | Count
─────────────────────────── | ─────
ActionLinkGroupTemplate     | 0
AnalyticSnapshot            | 0
AnimationRule               | 0
ApexClass                   | 1076
...
TopicsForObjects            | 338
Translations                | 30
Workflow                    | 32

Generating package.xml... done

mavens:schema:dictionaries

Generates field dictionaries from Salesforce objects, using the Metadata API.

$ sfdx mavens:schema:dictionaries --outputdir=packages --targetusername celine-dion@example.com
=== Retrieving Salesforce Object fields from Metadata API
Querying objects from 4/4... done
=== Salesforce Object Fields Retrieved
OBJECT                            FIELD COUNT
────────────────────────────────  ───────────
Account                           66
Case                              125
Congres_MVN__c                    10
PersonAccount                     0
User                              10
=== Salesforce Object Fields Retrieved
Generating Field Dictionaries... 4 files written.

You must have a .mavens.yaml configuration file, with the schema.dictionaries.sobjects key defined:

schema:
  dictionaries:
    sobjects:
      - Account
      - Case
      - Congress_MVN__c
      - PersonAccount
      - User
    file_format: split # options: split | unique (default: split)

CSV files will be created in your --outputdir.

dictionaries
├── Account.csv
├── Case.csv
├── Congress_MVN__c.csv
├── PersonAccount.csv
└── User.md
.mavens.yaml

Here's an example Account.csv:

LabelField API NameData TypePicklist ValuesRequiredDescription
CompanyMED_Company__cPicklistServierfalseThe company associated with the Employee Account.
CountryMED_Country__cPicklistGlobalValueSet (MED_Country)falseThe primary country for the account.
CredentialsMED_Credentials__cPicklistDOMDPharmDRNNPPHARHBPPAPHTPHARMPVNSWMANAMD-SPSYODPHDfalsePicklist of the professional's (Person Account) credentials. Edit the picklist to change the available credentials.
..................

mavens:typings:generate

$ sfdx mavens:typings:generate --targetusername celine-dion@example.com --outputdir=.typescript

Querying Custom Labels... done
Writing 641 labels to .typescript/salesforce/customlabels.d.ts... done
Querying Custom Permissions... done
Writing 10 custom permissions to .typescript/salesforce/custom-permissions.d.ts... done