go-task / task

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

define random strings #1346

Open Sopka opened 1 year ago

Sopka commented 1 year ago

I need a constant random string available during the execution of one task. For example to append a suffix to a resource name.

My current workaround is to assign a dynamic variable and process the output further with a golang template:

tasks:
  add-suffix:
    vars:
      SUFFIX: 
        sh: uuidgen
    cmds:
      # Select the first part of a uuid for a short random string number:
      # Outputs e.g. e01136af instead of e01136af-30d6-4b6b-9c68-f52fcaaaf313
      - echo {{index (.SUFFIX | splitList "-") 0}}

I do this, because you cannot just export a shell variable at one command and re-use it in subsequent commands.

But this workaround is not OS independent and cumbersome.

Is there an easier way?

pd93 commented 11 months ago

Hi @Sopka, there is currently no built-in way to do this in Task. Unfortunately, the rand functions were removed from our templater to make it slimmer (since they rely on the rather large crypto/rand package), so you are left to call an external program like uuidgen for this task as you have suggested.

I will leave this issue open for now so that we can track it as a feature request. If others find themselves needing this functionality, please feel free to add a comment or 👍 the OP to let us know.