-
Notifications
You must be signed in to change notification settings - Fork 256
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
Add magefiles directory support #405
Add magefiles directory support #405
Conversation
If no directory was passed by the user as an explicit option and there is a folder named "magefolder" use that. Workdir is kept as it is likely still "."
Also correct os.Stat error checking to expect no error
I think it would be beneficial to remove the build tag, since that requires setting it in the language server config. Ideally we'd support it being there or not, so that if you wanted, you could just pop your magefile from your root directory into a subfolder and not need to change anything. Re: the name, I think |
Magefolder was renamed to magefiles We now accept files that are not tagged too when using a magefiles directory
When using magefiles directory, if there are mixed tagging files assume tagging is used for mage files
I proposed a change then. This version accepts non-tagged files when inside a Caveats
The change also calls this |
I'm already storing files in a subfolder. Is the main point of this to eliminate any need for an outer mage.go style file that imports from the subdirectory. That would mean just run mage in the project root and it automatically would pull the magefiles packages? I currently use:
Would it support this scenario? |
Indeed, the main motivation here is that many go tools and editors dislike finding two packages in the same directory (as is often the case when one has a magefile in the main directory along with a different go file). This ends up leading to obscure editor configurations so mage files are treated as go files along with other files.
It is not recursive (I think) but you could put your There is more discussion about how we reached this point in this issue. |
This is great. Here are some experimentation results based on the conversation so far. IDE support and no build tag
Neovim LSP works correctly like a regular Go file. Finding targets from multiple files without build tag
This was experienced as well. Remove tag from all and all found/usable. No recursive lookups in
Correct.
This was experienced and is per the test.
|
We support building for older go versions so error formatting should use %v
I think we're going to update it so that we use build tags in the magefiles directory as per normal. i.e., they're additive. So, we'll get the list of files by using the "mage" build tag, and just include all files both with and without it, as it works with normal go code. This way, it won't matter if you used tags or not. The only thing it'll hinder is having two different packages in the same folder, which is one of the problems we're trying to fix with this change anyway. |
When mixed tagging is found within a magefiles folder, opt to use all files
Done, when mixed tagging is found now it will just use all the files. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks great! Needs docs on the website, but otherwise, it's awesome.
Add a temporary preference for mage files over magefiles directories and warn users this is a temporary functionality leading to a change where directory will be preferred.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This looks great!
….0 (#6) [![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/magefile/mage](https://github.com/magefile/mage) | require | minor | `v1.11.0` -> `v1.14.0` | --- ### Release Notes <details> <summary>magefile/mage</summary> ### [`v1.14.0`](https://github.com/magefile/mage/releases/tag/v1.14.0): - Faster Than Ever [Compare Source](https://github.com/magefile/mage/compare/v1.13.0...v1.14.0) #### What's Changed - give props to netlify on the main page by [@​natefinch](https://github.com/natefinch) in [https://github.com/magefile/mage/pull/410](https://github.com/magefile/mage/pull/410) - Update site to build with newer hugo by [@​perrito666](https://github.com/perrito666) in [https://github.com/magefile/mage/pull/411](https://github.com/magefile/mage/pull/411) - bring docs for use of directives up to date by [@​efd6](https://github.com/efd6) in [https://github.com/magefile/mage/pull/407](https://github.com/magefile/mage/pull/407) - add blog post about v1.13 by [@​natefinch](https://github.com/natefinch) in [https://github.com/magefile/mage/pull/412](https://github.com/magefile/mage/pull/412) - fix author links by [@​natefinch](https://github.com/natefinch) in [https://github.com/magefile/mage/pull/413](https://github.com/magefile/mage/pull/413) - Add variadic support to mg.F by [@​perj](https://github.com/perj) in [https://github.com/magefile/mage/pull/402](https://github.com/magefile/mage/pull/402) - feat: rename templated imports to avoid collisions by [@​ladydascalie](https://github.com/ladydascalie) in [https://github.com/magefile/mage/pull/421](https://github.com/magefile/mage/pull/421) - Website: fixing typos by [@​deining](https://github.com/deining) in [https://github.com/magefile/mage/pull/429](https://github.com/magefile/mage/pull/429) - refactor(listGoFiles): remove go list dependency by [@​jaredallard](https://github.com/jaredallard) in [https://github.com/magefile/mage/pull/440](https://github.com/magefile/mage/pull/440) - doc: add MacPorts install info by [@​herbygillot](https://github.com/herbygillot) in [https://github.com/magefile/mage/pull/419](https://github.com/magefile/mage/pull/419) #### New Contributors - [@​efd6](https://github.com/efd6) made their first contribution in [https://github.com/magefile/mage/pull/407](https://github.com/magefile/mage/pull/407) - [@​perj](https://github.com/perj) made their first contribution in [https://github.com/magefile/mage/pull/402](https://github.com/magefile/mage/pull/402) - [@​ladydascalie](https://github.com/ladydascalie) made their first contribution in [https://github.com/magefile/mage/pull/421](https://github.com/magefile/mage/pull/421) - [@​deining](https://github.com/deining) made their first contribution in [https://github.com/magefile/mage/pull/429](https://github.com/magefile/mage/pull/429) - [@​jaredallard](https://github.com/jaredallard) made their first contribution in [https://github.com/magefile/mage/pull/440](https://github.com/magefile/mage/pull/440) - [@​herbygillot](https://github.com/herbygillot) made their first contribution in [https://github.com/magefile/mage/pull/419](https://github.com/magefile/mage/pull/419) **Full Changelog**: magefile/mage@v1.13.0...v1.14.0 ### [`v1.13.0`](https://github.com/magefile/mage/releases/tag/v1.13.0): - Magefiles Directory and more! [Compare Source](https://github.com/magefile/mage/compare/v1.12.1...v1.13.0) #### What's Changed - feat: allow mage:import alias to be defined for multiple imports by [@​viktorvoltaire](https://github.com/viktorvoltaire) in [https://github.com/magefile/mage/pull/398](https://github.com/magefile/mage/pull/398) - chore: wrap log.Println in cmd with verbose check by [@​viktorvoltaire](https://github.com/viktorvoltaire) in [https://github.com/magefile/mage/pull/399](https://github.com/magefile/mage/pull/399) - Detect deps that have already been invoked by [@​carolynvs](https://github.com/carolynvs) in [https://github.com/magefile/mage/pull/346](https://github.com/magefile/mage/pull/346) - Replace godoc.org URLs by [@​JamieEdge](https://github.com/JamieEdge) in [https://github.com/magefile/mage/pull/342](https://github.com/magefile/mage/pull/342) - Add magefiles directory support by [@​perrito666](https://github.com/perrito666) in [https://github.com/magefile/mage/pull/405](https://github.com/magefile/mage/pull/405) #### New Contributors - [@​viktorvoltaire](https://github.com/viktorvoltaire) made their first contribution in [https://github.com/magefile/mage/pull/398](https://github.com/magefile/mage/pull/398) - [@​carolynvs](https://github.com/carolynvs) made their first contribution in [https://github.com/magefile/mage/pull/346](https://github.com/magefile/mage/pull/346) - [@​JamieEdge](https://github.com/JamieEdge) made their first contribution in [https://github.com/magefile/mage/pull/342](https://github.com/magefile/mage/pull/342) - [@​perrito666](https://github.com/perrito666) made their first contribution in [https://github.com/magefile/mage/pull/405](https://github.com/magefile/mage/pull/405) **Full Changelog**: magefile/mage@v1.12.1...v1.13.0 ### [`v1.12.1`](https://github.com/magefile/mage/releases/tag/v1.12.1): - Second Verse, Same as the First [Compare Source](https://github.com/magefile/mage/compare/v1.12.0...v1.12.1) This is a copy of v1.12.0 ... nothing has changed. However, there was an initial v1.12.0 that was created accidentally, and then deleted, and it's causing some go proxies to complain. So hopefully this will fix that. #### Changelog - [`2f1ec40`](https://github.com/magefile/mage/commit/2f1ec40) ci: migrate from travis to github action ([#​391](https://github.com/magefile/mage/issues/391)) - [`fe9f942`](https://github.com/magefile/mage/commit/fe9f942) evidently goreleaseer has changed in the last 4 years :) ([#​394](https://github.com/magefile/mage/issues/394)) - [`fd5011e`](https://github.com/magefile/mage/commit/fd5011e) Fix the rollback mechanism for tags during a release ([#​392](https://github.com/magefile/mage/issues/392)) - [`404c119`](https://github.com/magefile/mage/commit/404c119) sh.run(): quoted strings before join ([#​306](https://github.com/magefile/mage/issues/306)) - [`0c5affe`](https://github.com/magefile/mage/commit/0c5affe) Add asdf installation instructions to docs ([#​383](https://github.com/magefile/mage/issues/383)) - [`e84bbc1`](https://github.com/magefile/mage/commit/e84bbc1) [#​288](https://github.com/magefile/mage/issues/288) add brew and scoop install to docs ([#​376](https://github.com/magefile/mage/issues/376)) - [`80953f7`](https://github.com/magefile/mage/commit/80953f7) [#​378](https://github.com/magefile/mage/issues/378) bump travisci go16 ([#​379](https://github.com/magefile/mage/issues/379)) - [`dd94424`](https://github.com/magefile/mage/commit/dd94424) Create issue templates ([#​374](https://github.com/magefile/mage/issues/374)) - [`d9e2e41`](https://github.com/magefile/mage/commit/d9e2e41) fix: deterministic compiled mainfile ([#​348](https://github.com/magefile/mage/issues/348)) - [`4cf3cfc`](https://github.com/magefile/mage/commit/4cf3cfc) make -h work with imported targets ([#​335](https://github.com/magefile/mage/issues/335)) - [`de7ca6c`](https://github.com/magefile/mage/commit/de7ca6c) fix test for go 1.16 ([#​330](https://github.com/magefile/mage/issues/330)) ### [`v1.12.0`](https://github.com/magefile/mage/releases/tag/v1.12.0): - Small Fixes [Compare Source](https://github.com/magefile/mage/compare/v1.11.0...v1.12.0) This is our first release in a while, and nothing major is added, but some small fixes have gone out, like making the mainfile deterministic and making sure we can use -h with imported targets. #### Changelog - [`2f1ec40`](https://github.com/magefile/mage/commit/2f1ec40) ci: migrate from travis to github action ([#​391](https://github.com/magefile/mage/issues/391)) - [`fe9f942`](https://github.com/magefile/mage/commit/fe9f942) evidently goreleaseer has changed in the last 4 years :) ([#​394](https://github.com/magefile/mage/issues/394)) - [`fd5011e`](https://github.com/magefile/mage/commit/fd5011e) Fix the rollback mechanism for tags during a release ([#​392](https://github.com/magefile/mage/issues/392)) - [`404c119`](https://github.com/magefile/mage/commit/404c119) sh.run(): quoted strings before join ([#​306](https://github.com/magefile/mage/issues/306)) - [`0c5affe`](https://github.com/magefile/mage/commit/0c5affe) Add asdf installation instructions to docs ([#​383](https://github.com/magefile/mage/issues/383)) - [`e84bbc1`](https://github.com/magefile/mage/commit/e84bbc1) [#​288](https://github.com/magefile/mage/issues/288) add brew and scoop install to docs ([#​376](https://github.com/magefile/mage/issues/376)) - [`80953f7`](https://github.com/magefile/mage/commit/80953f7) [#​378](https://github.com/magefile/mage/issues/378) bump travisci go16 ([#​379](https://github.com/magefile/mage/issues/379)) - [`dd94424`](https://github.com/magefile/mage/commit/dd94424) Create issue templates ([#​374](https://github.com/magefile/mage/issues/374)) - [`d9e2e41`](https://github.com/magefile/mage/commit/d9e2e41) fix: deterministic compiled mainfile ([#​348](https://github.com/magefile/mage/issues/348)) - [`4cf3cfc`](https://github.com/magefile/mage/commit/4cf3cfc) make -h work with imported targets ([#​335](https://github.com/magefile/mage/issues/335)) - [`de7ca6c`](https://github.com/magefile/mage/commit/de7ca6c) fix test for go 1.16 ([#​330](https://github.com/magefile/mage/issues/330)) </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/scottames/cmder). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS41Ny4wIiwidXBkYXRlZEluVmVyIjoiMzUuNTcuMCJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
If no
-d
option is passed tomage
and there is a folder namedmagefolder
then use that as-d
.The name was arbitrarily chosen and is up for debate.
I did not add this to the
-init
option because I assumed-d magefolder
was not such a big pain to do in an infrequent task (unlike running mage targets which happen a lot).This is a first attempt at addressing #395 and one that is not really invasive but I am willing to grow this into a more complex feature.
I did not consider using non build tagged files as it is somehow useful to have the mage build tag to be able to exclude these. (As I understand the problem mostly arises from mage files living with other package files.)