I've set up a couple of sites where the users use ikiwiki in fairly standard mode as a CMS and I then set up another ikiwiki setup file that's got the edit options turned off, but is pointing at the same git repository in the background. I then make the post-update hook for each be post-update-hook.ikiwiki and post-update-hook.ikiwiki-public and have the post-update hook itself be a script like:
#!/bin/sh
$0.ikiwiki "$@"
$0.ikiwiki-public "$@"
obviously this results in duplication of most of the ikiwiki.setup, a spare working directory that (perhaps) isn't needed, and an extra post-update hook plus wrapper script that is really needless extra complication.
If instead there was a way of specifying additional destdir's, or perhaps more generally a way of specifying that there should be multiple passes through the build process using alternative values for some of the variables, then one could have both the private wiki view, and the public static view generated with minimal additional configuration.
One idea that occurs to me is an additional_configs list where one would specify files containing just the settings you want to override compared with the main setup file.
Alternatively, one might invent a new way of specifying alternative settings. i.e.:
additionalsites:
- public
destdir: /home/wiki/wiki-view
destdir[public]: /home/wiki/public_html
disable_plugins: []
disable_plugins[public]:
- recentchanges
- editpage
url: https://example.com/editors/
url[public]: http://www.example.com/
...
where the existance of the additionalsites list provokes additional runs through using the settings with matching extra bits to be used to override the defaults found in the rest of the file.
Just brainstorming a bit after [[liw]]'s comment about this being useful on IRC, and thought I'd write the idea up while I was thinking about it. -[[fil]]
> I don't think you can avoid ikiwiki needing to store a different
> `.ikiwiki` directory with state for each site. Differences in
> configuration can affect the state it stores in arbitrary ways,
> ranging from which pages are even built to what plugins are enabled and
> store state. This also means that it doesn't make sense to try and
> share state amoung rebuilds of the same site.
>
> There is a hidden, and undocumented configuration setting `wikistatedir`
> that can actually be pointed at a different directory than `.ikiwiki`.
> Then you can rebuild multiple configurations from one working directory.
>
> Another handy trick is to use the old perl-format (not yaml) setup file,
> and parameterize it using `$ENV{FOO}`, then you can build two different
> setups from the same setup file.
> --[[Joey]]