When I start working on a scratch org in a DX project, I’d like to be able to push a button in Illuminated Cloud, and then forget about it until I get a notification later telling me that the scratch org and IDE are ready to go.
To me, this would mean starting the process by picking a scratch org definition file and then the rest being fully automated until a desktop notification tells me it’s done. In that time, I’d like to be able to use other IDE windows to work on something else.
My current process for this is to use the IDE, shell scripts, and manual steps to do the following:
- Create a scratch org and set it in the IDE module config
- Set the default dev hub and default username in DX
- Use a DX plugin to install all the dependency packages (I use https://github.com/ImJohnMDaniel/sfdx-toolbox-package-utils many others are available)
- Push the local source
- Rebuild the OST
- Maybe run some Apex script to do extra initialisation
- Maybe run sfdx force:dataimport to create some data
- Maybe run force:apex:test:run
Some specific problems with this:
- I can’t fully automate the IDE steps
- Illuminated Cloud wants to build the OST after I first create the scratch org, which I almost never want to do (I know, I can cancel it)
- Reloading the project after building the OST throws up an interrupting dialog when I’m doing something else. If I miss confirming that dialog, then project isn’t going to be ready for me when I come back
- When I get to the indexing operation later on, this stops all IDE windows from working
Essentially, I’d like to view the whole thing as a background operation that can run uninterrupted until it’s done, or let me know if a step failed. I’m not sure if all of that is possible with IntelliJ (e.g. not having indexing interrupt all windows) but even solving most of the above would be a big step forwards.