Skip to content

New Feature: A Compromise Solution For Reusing common Taskfiles In Different Projects #770

@hhstore

Description

@hhstore

Background:

  • There are many issues being discussed about reusing common Taskfiles.
  • It can be seen that this demand is very strong.
  • Given that the remote include solution doesn't work. I think of a compromise solution.

A Compromise Solution:

like this:

includes:
  sre:
    taskfile:  "https://github.com/better-sre/config"
    type: git+local         # or git+global
    dir: ./.task/xxx        # or ~/.local/.task/xxx
    sync: auto              # sync github: daily check
  • When include contains type option is git.
  • It will automatically check if the .task/ (or ~/.local/.task/) path has the same name path.
  • If it exists, use the local path directly.
  • If not, automatically git clone to .task/ ( or ~/.local/.task/) path.
  • In addition, task adds a new command. task sync, which automatically detects the include section of Taskfile.yml and synchronizes updates manually.
# automatically detects the include section of `Taskfile.yml` and synchronizes updates `manually`.
task sync
  • This solution is still based on the local path. There is no difficulty in implementation.
  • But it solves the problem of convenience.

Reference:

My current solution:

  • https://github.com/better-sre/config#usage
    • This repo can also be used as an example directory structure, my Taskfile here is multi-level nested.
  • About reusing Taskfile in different projects. Here, I gave 3 feasible solutions.
  • This is my current practice of reusing public Taskfiles. It can solve the problem, but it is not convenient enough.
  • I'm wondering if go-task can support option 2 or option 3.

image

Similar issues:

A collection of taskfiles:

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions