go-task / task

A task runner / simpler Make alternative written in Go
https://taskfile.dev
MIT License
11.28k stars 599 forks source link

Preconditions should have "platforms" for ease of use #1373

Open uded opened 1 year ago

uded commented 1 year ago

For all preconditions right now there is an sh (for command) and msg.

My suggestion is to add platforms to the preconditions, as this would greatly simplify creating different, sometimes somewhat complex commands to test for them. Yes, I am aware that I can achieve the same using some if-else template or by including external OS-specific taskfile, but in my case that grow into something like 500 character line to achieve a goal of creating different precondition script for different platform. When I realized that it would be so much simpler with a simple platforms clause...

How I would like to see it? Example (commands are just provides as is, doesn't matter if they would work or not):

  build:
    desc: Build a project
    silent: true
    preconditions:
      - sh: command -v /usr/local/bin/go-enum
        platforms: [linux]
        msg: missing go-enum executable (https://github.com/abice/go-enum)
      - sh: Get-Command "go-enum.exe"
        platforms: [windows]
        msg: missing go-enum executable (https://github.com/abice/go-enum)   
KimKellerRasmussen commented 2 days ago

It looks like you can do something like this:

build:
  cmds:
    - echo "All is good!"
  preconditions: 
    - sh: task check
      msg: missing go-enum executable (https://github.com/abice/go-enum)
check:
  cmds:
    - cmd: command -v /usr/local/bin/go-enum
      platforms: [linux]
    - cmd: Get-Command "go-enum.exe"
      platforms: [windows]