Skip to content

dotenv file path not using var from command line #658

Closed as duplicate
Closed as duplicate

Description

@mkyc
  • Task version: v3.10.0 (h1:vOAyD9Etsz9ibedBGf1Mu0DpD6V0T1u3VG6Nwh89lDY=)
  • Operating System: macOS Monterey 12.1

Taskfile.yml:

version: '3'

vars:
  ACCOUNT: test

dotenv: [ ".env.{{.ACCOUNT}}" ]

tasks:
  print:
    cmds:
      - echo $TEST_VAR

.env.test:

TEST_VAR=lilili

.env.other:

TEST_VAR=lalala
~ task print                                
task: [print] echo $TEST_VAR
lilili
~task print ACCOUNT=other
task: [print] echo $TEST_VAR
lilili

should be lalala.

I guess dotenv is evaluated before command line args.

Activity

  1. matthijsdewit111 commented on Jul 2, 2024

    @matthijsdewit111

    Hope this will be fixed soon, but right now I found 2 possible workarounds.

    The first one is that you can define the dotenv: part on task level, and this works as expected. The drawback is however that you need to duplicate it throughout the taskfile in each task that needs then environment variables. For example:

    version: '3'
    
    vars:
      ACCOUNT: test
    
    tasks:
      print:
        dotenv: [ ".env.{{.ACCOUNT}}" ]
        cmds:
          - echo $TEST_VAR
    

    The other method is the use the strange fact that using variables seems to work ok with in the env: and sh: part. You can read and parse the .env file manually here. Which is very ugly/verbose, but that you only need to do it once in the taskfile. For example:

    version: '3'
    
    vars:
      ACCOUNT: test
    
    env:
      TEST_VAR:
        sh: cat .env.{{.ACCOUNT}} | grep -i "TEST_VAR=" | sed -e "s/TEST_VAR=//"
    
    tasks:
      print:
        cmds:
          - echo $TEST_VAR
    

    (This will also print a warning: cat: .env.: No such file or directory, but it still works. Pretty sure the command gets evaluated twice, once on general setup, and once again for the setup of the task.)

  2. trulede commented on Dec 7, 2025

    @trulede
    Contributor

    Fixed by #2288

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    No fields configured for bug.

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions