Opened 5 years ago
Closed 4 years ago
#32309 closed New feature (fixed)
Allow including hidden directories for startproject/startapp --template
| Reported by: | Sage Abdullah | Owned by: | Sage Abdullah |
|---|---|---|---|
| Component: | Core (Management commands) | Version: | dev |
| Severity: | Normal | Keywords: | |
| Cc: | Triage Stage: | Ready for checkin | |
| Has patch: | yes | Needs documentation: | no |
| Needs tests: | no | Patch needs improvement: | no |
| Easy pickings: | no | UI/UX: | no |
Description
The startproject/startapp --template command ignores hidden directories. This makes it impossible to render the files in "hidden" directories of a project/app template, even if the file names are explicitly specified using --name. One common use case is to render a GitHub Actions configuration inside the .github directory, which is "hidden" because it starts with a dot (.). A workaround is to move the files out of the hidden directories (or rename the directories) and moving them back after the template is rendered.
I've written some possible approaches in the mailing list discussion.
Change History (12)
comment:1 by , 5 years ago
comment:2 by , 5 years ago
Personally I find it counter-intuitive to add --extension/--file/--directory to properly render a template. Imo it would make more sense if templates could provide a .json/.ini (whatever) file which would tell Django what to render…
comment:3 by , 5 years ago
| Triage Stage: | Unreviewed → Accepted |
|---|
This was part of the original patch in a9a0f0b03f9a02deb03617bf7e9773a307d1328f for #17042. That was a while ago. Having . dirs/files perhaps wasn't so common then as now.
René on the list:
I think I prefer explicit exclusion by the user (except for obvious
cases like .git and pycache) because it's less surprising.
I think we could take that as a smaller (quicker?) way to address this issue, allowing a follow-up if someone wants it with Florian's suggest to add a config file to encode options.
comment:4 by , 5 years ago
I think we could take that as a smaller (quicker?) way to address this issue,
allowing a follow-up if someone wants it with Florian's suggest
to add a config file to encode options.
I've changed the PR to add an --exclude (-x) option instead, with .git and __pycache__ always excluded.
I can add docs and tests if the approach is good to go.
I know it's probably too late to hit the feature freeze for 3.2... but if there's still time to push this in and I'm not around, feel free to pick this up =)
comment:5 by , 4 years ago
| Has patch: | set |
|---|---|
| Needs documentation: | set |
| Needs tests: | set |
Thanks for this, I think with positive reactions from Carlton and René this is ready for a review once some docs and tests are included, so yes, good to go.
comment:6 by , 4 years ago
| Needs documentation: | unset |
|---|---|
| Needs tests: | unset |
follow-up: 8 comment:7 by , 4 years ago
Should including hidden directories be opt-in for backwards compatibility reasons, since they're currently excluded? If the change automatically includes them, it seems like there should be some kind of release note letting users know. It seems like a safer change might be to keep the current default the same.
comment:8 by , 4 years ago
| Patch needs improvement: | set |
|---|
Replying to Chris Jerdonek:
Should including hidden directories be opt-in for backwards compatibility reasons, since they're currently excluded? If the change automatically includes them, it seems like there should be some kind of release note letting users know. It seems like a safer change might be to keep the current default the same.
Agreed. We could keep the current behavior if the exclude argument is not passed.
comment:9 by , 4 years ago
| Patch needs improvement: | unset |
|---|
comment:10 by , 4 years ago
| Triage Stage: | Accepted → Ready for checkin |
|---|
POC with a new --directory option. I chose this one because the implementation is pretty similar to
--name. Suggestions welcome.