babashka / process

Clojure library for shelling out / spawning sub-processes
Eclipse Public License 1.0
219 stars 29 forks source link

New feat req for echoing shell commands #103

Open ikappaki opened 1 year ago

ikappaki commented 1 year ago

Hi,

it is considered a useful aid in shell scripting to echo the commands being executed.

This is a request to include such an :echo true option in shell or/and process (defaults to false).

e.g.

(babashka.process/shell {:echo true} "ls" "-al")
;; => /usr/bin/ls -al
...

This should work well with the babashka.process/*defaults* for echoing all commands in a block, e.g.

(binding [p/*defaults* (assoc p/*defaults* :echo true)]
  (p/shell "ls" "-al"))

would it be also possible to expose babashka.tasks/*defaults* in babashka please, it seems to be missing (babashka.process/*defaults* though is working fine).

Another idea discussed in slack is whether it will also be a good idea to include convenience fn such as

(babashka.process/set-default :echo true)

Thanks

borkdude commented 1 year ago

Yes to both.

Also:

(babashka.process/shell {:echo true} "ls" "-al)
;; => /usr/bin/ls -al

Should we print ls as the user has written it, or the resolved program, like process finds it?

ikappaki commented 1 year ago

Perhaps we could support both? I find the full path command useful but it could be too much for some users. Would it be a good idea to have :echo false :echo true :echo :verbose as options?

ikappaki commented 1 year ago

(:verbose/full/resolve whatever word is most appropriate)