Click To Cloud DevOps Toolbox
This DevOps toolbox provides some of our daily used scripts, most of which are Salesforce platform related, typically wrappers of some sfdx commands.
For example, instead of
sfdx force:apex:execute -u myOrgAlias -f ~/test.apexWe simply do
dev execute ~/test.apexNo need to worry about the long usernames or alias. It automatically uses the name of the git repository as an alias.
For example, dev alias ^TAB will list all user name or alias you have saved.
$ dev alias admin@my-dev.com.au henry@my-dev.com.test The toolbox runs on a Unix shell. The usual sh or bash is sufficient.
Many of the commands require sfdx, which can be downloaded from the Salesforce official site: https://developer.salesforce.com/tools/sfdxcli
The optional bash auto completion requires the package bash-completion, which can be downloaded from some package managers, for example brew or apt-get.
brew install bash-completion A recommended way of installation is cloning this repository, and including the repository in your shell environment path. In this example, we are using ~/.bashrc as the shell startup script, though some shell may use other startup script, e.g. ~/.profile or ~/.bash_profile.
git clone https://github.com/Click-to-Cloud/DevOps.git echo "PATH+=:$PWD/DevOps" >> ~/.bashrc Then restarting your bash, or running source ~/.bashrc, will get things ready.
To include the bash completion feature, append this code to your bashrc.
echo "source $PWD/DevOps/bash_completion.d/dev" >> ~/.bashrc Suppose you are working on a git repository, run dev login if you haven't done so. After connecting to a Salesforce org, everything command you use inside the git repository will be against the org you just logged in.
When you want to switch to another org for the same repository, you can do another dev login. Alternatively, if a username has been used to log in previously, you can run dev alias yourusername@domain.com. You can check all available usernames by auto completing the third argument of dev alias ^TAB.
Do OAuth login and associate the login information with the current repository.
An optional third argument url is available, which can be only either 'test.salesforce.com' or 'login.salesforce.com'. If this argument is ommitted, the login will go to 'test.salesforce.com' by default.
The third argument can be auto completed.
dev login login.salesforce.comdev loginOpen the org in the default browser without using password. If the alias or username is provided, it would open the org according to the provided login information, otherwise, it would choose the alias on the repository to open.
The alias or the username must have been used in the dev login at least once. More specifically, after running dev login on the repository 'Query' using the username 'sam@example.com', the OAuth information of 'sam@example.com' will be saved, and 'Query' will be linked to the username 'sam@example.com'. In this case we can use dev open Query or dev open sam@example.com to open the org on the browser. Alternatively, if we have already navigated ourselves inside the 'Query' repository , we can omit the third argument, running dev open only.
If the username is not provided, the command will list all alias with its associated username.
If a username is given, the command will replace the associated username of the project with the given username.
The third argument can be auto completed.
Compile the class/page/trigger files and deploy it to the associated org.
A file can be any of these types: Apex Class, Apex Page, Apex Trigger.
dev compile Query.cls TriggerOnAccount.trigger HomePage.page By default, it will look for the files using the relative pathname. If not found it will look for the files in the src/classes, src/pages or the src/triggers directories.
It is required that the related meta XML files are located in the same directory.
For example, calling dev compile Query.cls, the script will try to find Query.cls in the current directory. If not found, it will look for Query.cls in the directory src/classes. If, for example, finding the Query.cls in the current path, the script will use the Query.cls-meta.xml file in the same directory for the deployment. If the Query.cls-meta.xml file is missing, the deployment will fail.
The arguments can be auto completed.
Execute unit tests. If test_classes is provided, it will execute all test code within those classes. Otherwise, it will execute all test code in all classes.
The arguments can be auto completed.
Execute an SOQL query and print the result to standard output.
To avoid some of the characters, e.g. single quote, less than sign, being parsed as bash operators, it is recommended that the soql_expression is surrounded by double quotes.
dev query select id from account dev query "select id from account where name = 'Jack' and createddate >= today" Some keywords in SOQL can be auto completed, e.g. select, from, etc.
Execute anonymous apex code from the standard input.
If the command is dev execute, it reads the user terminal input as the standard input. In this case, we can type multiple lines of apex codes, then type CTRL-D indicating the end of file to finish.
Alternatively, we can write the apex code in a file, then pass the file name as an argument.
dev execute test.apex Print detail of a record to standard output.
Print the fields of an object to standard output.
Print the full schema information of an object to standard output.
Print the return value of an apex expression to standard output.
dev debug "UserInfo.getUserId()" If directory is not provided, it will use ./src as the directory.
Deploy the all the files in the directory to the Org. It is required that the package.xml file is located in the directory.
If directory is not provided, it will use ./src as the directory.
Retrive all the files from the Org using the package.xml in the directory.