-
-
Notifications
You must be signed in to change notification settings - Fork 640
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
dirname of current Taskfile #215
Comments
Hi @fj, You should actually be fine using Otherwise, yeah, I think it makes sense to a have variable with the Taskfile location. |
Actually, could be handy for when Taskfiles are imported as well. |
Example use-case: root/Taskfile.yaml: version: "2.X"
includes:
sub: sub/Tasks.yaml
tasks:
default:
cmds:
- sub:test root/sub/Tasks.yaml: version: "2.X"
tasks:
test:
dir: "{{.TASKFILE_DIR}}"
cmds:
- ./bin/executable root/sub/bin/executable #!/bin/sh
echo "Hello World" |
Just stumbled upon this exact issue. I guess a workaround for now is manually setting the |
Is there a way of getting the current working directory when a taskfile in another dir is invoked with e.g. a variable that would return $ pwd
/home/foo
$ task -t /home/foo/bar/Taskfile-baz.yml
# assuming task is `echo {{ .PWD }}`
/home/foo/bar
# how could we get /home/foo ? |
If directory name and task name are identical, then the following works for included Taskfiles:
To handle this, I use the following default task in the included Taskfile:
|
I'm curious as to why this isn't the default behavior. If I had a setup like # Taskfile.yml
version: '3'
includes:
db: ./db
# db/Taskfile.yml
version: '3'
tasks:
something: do_something_with ./file.sql I would expect to be able to do both |
@SEAPUNK It seems to be that you just forgot to specify the dir of the Taskfile: includes:
db:
taskfile: ./db
dir: ./db To the others: I know that this issue has been opened for a long time (I have been having less than enough time to maintain this), but I'll try to give this some priority. |
@andreynering no, that's what I mean - why should I have to do that? It doesn't feel very intuitive to me (especially considering the quote from the usage page: "By default, tasks will be executed in the directory where the Taskfile is located."), and I end up having to manually set the dir for every taskfile that I import. |
Thanks for the update, Andrey.
As the person who opened the issue, I do want to acknowledge that as this
is a free and open-source project, I don't have any expectation that you
have a timetable for fulfilling requests or fixing issues, and that any
time you devote at all is appreciated.
best,
~ jf
…On Sun, Mar 28, 2021, 09:40 Andrey Nering ***@***.***> wrote:
@SEAPUNK <https://github.com/SEAPUNK> It seems to be that you just forgot
to specify the dir of the Taskfile:
includes:
db:
taskfile: ./db
dir: ./db
To the others: I know that this issue has been opened for a long time (I
have been having less than enough time to maintain this), but I'll try to
give this some priority.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
<#215 (comment)>, or
unsubscribe
<https://github.com/notifications/unsubscribe-auth/AAAODVJPOWOYFJKQKC7K423TF4WTVANCNFSM4HYRSAKQ>
.
|
@fj Thanks for the words! 😉 @SEAPUNK There's some historical reasons for why it works as is today. Originally, including other taskfiles was a simpler feature, and it was impossible to make it directory aware. When it was added (the ability to set a "dir" for a taskfile import), it was made in a backward compatible way. Changing it now would break many taskfiles in the wild, because I do know many store common taskfiles in a given directory (I've seen a few |
@andreynering gotcha, thanks for the explanation. I thought this wasn't something that showed up in the docs, but it looks like I skipped over it. |
Hi @max-sixty, have you found a solution to the problem? |
I found another way of doing what I needed, sorry not to be helpful. |
Hi, is it OK to close this issue with the provided workarounds? |
@tylermmorton I think the need for a variable that allows getting the directory of the Taskfile is still open and relevant despite the workarounds |
Anything involving PWD would not count as safe, IMHO. @andreynering Sorry to nag you about this but is there any chance to close this before this bug reaches the 2nd year anniversary? At least if there is a valid workaround we should document it, especially as the need to have such a variable is quite common. I personally do not care about the effective taskfile location as at this moment I do not use inclusion but I do need a "project_dir" variable, one that would not change even if I call task from a subdirectory. |
I agree, task should be able to report directory in which the Taskfile it's operating on is located, though this brings into question, should it always be the parent Taskfile directory, and never the directory of the Taskfiles that are in |
@ghostsquad I believe we could have two variables: Sorry for taking so long to work on this, we just have too many opened issues to triage. This seems to be easy and requested enough that will just put at the top of my priority list. But if in the meantime, if someone else would like to contribute with this, just let me know. |
I was thinking about |
Ah, of course, I missed the My point was about having two variables. 👍 for |
This was just implemented as part of #857. I plan to do a release still today. |
I often want to use the directory of where the Taskfile is located as an input to other commands (not the current working directory), but it seems like
sprig
really locks down access to the filesystem.Is this possible to do with
Task
as a first-class idea?For example, something like:
Note that this isn't the same as just using
$PWD
or-d
because the working directory might be different; Task should probably provide this as a first-class feature if it doesn't already.The text was updated successfully, but these errors were encountered: