54 lines
2.6 KiB
Markdown
54 lines
2.6 KiB
Markdown
Steps to reproduce:
|
|
|
|
1. Make a new post via web interface.
|
|
2. Use a directive that generates extra files (say, teximg).
|
|
3. Click cancel.
|
|
|
|
What I expect:
|
|
|
|
The files that teximg created should (eventually) be removed, along with the whole directory of the non-existant new post.
|
|
|
|
What I got:
|
|
|
|
I refresh and rebuild a few times, and the files are still dangling there. If I then try to create a post with the same name and same content, I get a "file independently created, not overwriting" error.
|
|
|
|
> This is specific to previewing when creating a new page. If the page
|
|
> previously existed, the next update to the page will remove the stale
|
|
> preview files.
|
|
>
|
|
> Problem is that ikiwiki doesn't store state about files rendered by a
|
|
> page if the page doesn't exist yet.
|
|
>
|
|
> However, just storing that state wouldn't entirely solve the problem,
|
|
> since it would still not delete the leftovers until the page is updated,
|
|
> which it never is if it's previewed and then canceled. And requiring the
|
|
> cancel button be hit doesn't solve this, because people won't.
|
|
>
|
|
> Also, it's not really ideal that an existing page has to be updated to
|
|
> remove stale files, because if the edit is aborted, the page might not be
|
|
> updated for a long time.
|
|
>
|
|
> One fix would be to stash a copy of `%renderedfiles` before generating
|
|
> the preview, then compare it afterwards to see how it changed and
|
|
> determine what files were added, and record those someplace, and delete
|
|
> them on a future refresh (after some reasonable time period). [[done]]
|
|
>
|
|
> Another approach would be to make previewing always render files with
|
|
> some well-known temporary name. Then all such temp files could be removed
|
|
> periodically. This would need changes to all plugins that write files
|
|
> during preview though. For example, `will_render` might be changed to
|
|
> return the actual filename to write to. --[[Joey]]
|
|
|
|
For teximg, I think this can be fixed by using data url like graphviz, but
|
|
I think plugins in general should be allowed to create files during preview
|
|
and have them be cleaned up when the user presses cancel. This segues into
|
|
what my actual problem is: I wrote a htmlize plugin to format .tex files as
|
|
page images (following hnb and teximg, since I was completely unfamiliar
|
|
with perl until yesterday (and ikiwiki until a few days ago)), and there is
|
|
no way to tell if I'm in preview mode (so I can use data url and not leave
|
|
files dangling) or commit mode (so I can use real images and not have
|
|
bloated html).
|
|
|
|
> It seems too ugly to thread an indicator to preview mode through to
|
|
> htmlize, so I'd prefer to not deal with the problem that way.
|