Just curious how you decide the line between what is handled by ShutIt and what's handled in the shell?<p>For example, from the example on the home page:<p><pre><code> # Ensure git is installed. This handles different distros gracefully.
shutit.install('git')
</code></pre>
Awesome and very powerful abstraction! Vs the next lines...<p><pre><code> # If the directory does not exist, we create it
if not shutit.file_exists('/opt/shutit',directory=True):
shutit.send('mkdir /opt/shutit')
</code></pre>
Why not just:<p><pre><code> shutit.send('mkdir -p /opt/shutit')
</code></pre>
There are a few other examples where I was wondering how you decided to do some operations in ShutIt vs delegating to shell. In fact, some entire examples look simpler to me in shell that you could just send. Does using the ShutIt native commands make things more testable?