This is a general issue to track proposals with small or big breaking changes, that could be released in the next major version.
This list is a work in progress and can change at any time.
Development is happening on the v3 branch.
github.com/go-task/task/v2 to v3Taskvars.yml and Taskfile_{{OS}}.yml. This was done before we had a generic inclusion of Taskfiles implemented. We should add options tovendor directory? (#214)method: option. Default changed from timestamp to checksum (#246).TIMESTAMP and .CHECKSUM to status: (#216)method: (shouldn't also check the main guide)There are more issues and feature request that could be added to this release.
/cc @smyrman @sheerun @jamestenglish @jaxxstorm @Evertras
As you may have noticed, I've being very slow on implementing new stuff for this project. So don't expect this release to happen soon. This is mostly to grab feedback.
Just a big +1 to the 'run a dependency with the same input only once' by default. That's my only pain point right now, so I'm a little biased. :)
It's a great list, agree to all points; take your time:-)
It would be great if there was a way of making variables part of the environment, as suggested on https://github.com/go-task/task/issues/181.
Some things that are on our wish list.
sh cmds to export their results to the Templater Env or to a environment variable available in subsequent commands.cmds:
- sh: uname
export: UNAME
- sh: echo $UNAME
{{.CHECKSUM}} and {{.TIMESTAMP}} in status to check remote artifacts (I have this done as well and will make a PR after pre-conditions.)cmds:
- python: |
import os
print(os.getcwd())
We'll probably add some or all of these things as it becomes necessary to support our automation tasks.
Hi @stephenprater,
Expose {{.CHECKSUM}} and {{.TIMESTAMP}} in status to check remote artifacts (I have this done as well and will make a PR after pre-conditions.)
馃檪
Allocate a TTY to cmds on demand. (For interactive commands)
We recently had some issues on running interactive commends that should have been fixed after #200. Are you still experiencing issues? If so, let me know.
Pluggable interpreters besides "sh" like you could do
cmds: - python: | import os print(os.getcwd())
This is an interesting idea. On the other hand, there are reasons why it isn't available today:
sh: python your_script.pyYou can already call it by having sh: python your_script.py
This isn't _quite_ the same thing because you need to interpolate your task variables into the command line, plus you have a script that _also_ does project automation so not all of your automation lives in one spot anymore.
This is definitely our lowest priority item - and it's mostly because things like:
service_status=$(nomad deployment status $deployment | grep "^services")
service_complete=$(echo -e "$service_status" | awk '{if($4==$7){print "1"}else{print "0"}}')
if [ $service_complete == "1" ]; then
echo $green
fi
echo -e "$service_status $(tput sgr0)"
are harder to read (and write!) than the python equivalent.
while True:
deployment = nomad.client.deployment("adf3ec3")
if (
deployment["TaskGroup"]["services"]["DesiredCanaries"]
== deployment["TaskGroup"]["services"]["HealthyCanaries"]
):
break
print("Services Deployed!")
We tend to use Task as an automation tool and for scripting complex CI/CD workflows more than as a pure build dependency tool, so the scenario where people have different versions of an interpreter installed isn't really a concern for us, as it's handled by the language tooling for Python / Ruby.
One of the things that's left out of my one-sentence description there is that the Taskfile itself would need to specify the interpreter.
So at the top you'd do something like:
interpreters:
python: /usr/bin/env python
ruby: bundle exec ruby
Anyway - that's definitely pie-in-the-sky kind of stuff - we haven't even looked seriously at this as a feature yet - it's just that every time our devs have to write sh and then remember it's not bash they complain about it. 馃槈
One of the things that's left out of my one-sentence description there is that the Taskfile itself would need to specify the interpreter.
So at the top you'd do something like:
interpreters: python: /usr/bin/env python ruby: bundle exec ruby
This makes me like it better, since it's generic and customizable. 馃檪
Implementation-wise, it can be challenging to make YAML accept python: or ruby: attrs if we don't know beforehand which interpreters the user will implement. Not that we won't find a solution, though.
Allocate a TTY to cmds on demand. (For interactive commands)
This is definitely not fixed for me on today's master. Filed an issue - #217.
Things have been progressing slowly.
From now on, I'll ask PR authors to target non-small new features to the v3 branch (bug fixes should target master).
I'll make preview releases once in a while for people to use the new features and report bugs. This is the first one: v3.0.0-preview1.
Any chance remote includes (https://github.com/go-task/task/issues/98) can be considered for this?
Any chance remote includes (#98) can be considered for this?
@zx8 Sorry, but that's on hold and it won't be on v3.
I'm not happy with the complixity it'd brings as it's proposed (regarding caching, versioning, etc).
Rather than a syntax like this:
interpreters:
python: /usr/bin/env python
ruby: bundle exec ruby
Why not just use shebangs at the top of the tasks like the just tool does?
@brandonkal That sounds like something worth considering. Thanks for the idea!
Hey everybody,
We just reached a great milestone for v3 which is refactoring variables, which will now be evaluated in the sequence of declaration. This means that Taskfiles like this will just work 鈩笍 without having to set expansions or similar workarounds:
This is not yet released, not even to the preview channel, so you need to manually build the v3 for now, but I'd really like feedback on whether it's working as expected and it's bug free. (Remember that to test this you need to change your Taskfile version to 3).
Completing this means we're now close to finally shipping v3. Since this issue is opened for more than a year already, I'll probably postpone some of the bulled points above to v3.1+, specially those who aren't breaking changes, so we can ship this sooner.
Opinions are welcome!
Would definitely prefer a V3 with the current set of (great) features, then subsequent fixes of whatever bugs has snug in.
And maybe then go so far as to ping all the issues that are then scheduled for a V3.1 and evaluate whether they are still relevant? :)
v3.0.0 is finally released! 馃帀
As I said, it was not possible to address everything at once, but this release is already big enough, and I plan to add features in smaller releases from now on...
If the feature you asked for doesn't have a an open issue, please open so it isn't forgotten.
Thanks for everyone that helped in one way or another!
Just wanted to 馃帀 ! Thanks! :-)
Yes, a thousand times 馃帀 Thank for all the hard work!
Most helpful comment
Hey everybody,
We just reached a great milestone for v3 which is refactoring variables, which will now be evaluated in the sequence of declaration. This means that Taskfiles like this will just work 鈩笍 without having to set
expansionsor similar workarounds:https://github.com/go-task/task/blob/4b027722b191eeef9e2f87421e6d214506d7397c/testdata/vars/v3/Taskfile.yml#L1-L46
This is not yet released, not even to the preview channel, so you need to manually build the v3 for now, but I'd really like feedback on whether it's working as expected and it's bug free. (Remember that to test this you need to change your Taskfile version to
3).Completing this means we're now close to finally shipping v3. Since this issue is opened for more than a year already, I'll probably postpone some of the bulled points above to v3.1+, specially those who aren't breaking changes, so we can ship this sooner.
Opinions are welcome!