alajmo / mani

:robot: CLI tool to help you manage repositories
https://manicli.com
MIT License
436 stars 23 forks source link

Exclude projects by tag during sync #83

Open aayushsrivastava opened 3 weeks ago

aayushsrivastava commented 3 weeks ago

Is your feature request related to a problem? Please describe

I have a use case where I want to clone all projects except a few.

I thought of a few ways out like tagging all the other projects besides the excluded ones with a particular tag and using this tag during sync. It makes it difficult to maintain the config though since the excluded projects are fewer in number and will remain static in count. Whereas this new tag has to be now added for any new project.

Describe the solution you'd like

A new flag --exclude-tags which ignores the projects with such tags while cloning repositories.

Additional context

N/A

alajmo commented 3 weeks ago

There's a field you can set on individual projects, named sync, which if set to false, will not sync the project.

projects:
  pinto:
    path: frontend/pinto
    url: git@github.com:alajmo/pinto
    tags: [dev]
    sync: false

There's no dynamic flag for this though, but feel free to open up a PR implementing it (I'm bottlenecked at the moment, but can check PRs), it shouldn't require too much work, the function for filtering is FilterProjects.

aayushsrivastava commented 3 weeks ago

I missed this field somehow! Thanks for pointing it out. This does solve my problem.

aayushsrivastava commented 3 weeks ago

We think it will be helpful to have an additional CLI override to sync projects with sync: false. Something like mani sync --all syncs all projects irrespective of the sync flag's value.

Willing to contribute a PR for the same. Would you be interested in such an addition?

alajmo commented 3 weeks ago

I thought about it, sounds like a good idea. Feel free to open a PR!