Introduction

Have you ever wondered why we have so many pages in the main distribution? Mostly because we do not have a format to deliver the help pages in one file. Or why installing a theme is not easy because you do not always know where to put the files?

AlexanderSchremmer has written a scripting framework for MoinMoin which simplifies installing extensions for MoinMoin very much. It is already available in the DesktopEdition and will be available in MoinMoin 1.5.

There is an action which automatically creates packages. See ActionMarket/PackagePages.

It works as following: you create a zip file which contains your files and a special file MOIN_PACKAGE, the installation script. The script contains one command (sounds complicated but is not really, look at the examples below) per line and gets executed from top to bottom.

Some superuser (i.e. a user name contained in cfg.superuser list in the configuration) of the wiki will download your package file from somewhere, upload it to the wiki and then click install in the attached files view. Additionally, he could install the package using the command line (MoinMoin/packages.py i package.zip).

Example script:

MoinMoinPackage|1
ReplaceUnderlay|mypage.txt|HelpContents
AddRevision|mypage2.txt|FrontPage
InstallPlugin|myparser.py|global|parser|myparser.py

You could use this system to bundle specific templates which e.g. enhance your MoinMoin to be a CRM system. Or you could make your plugins/themes easier installable. Hopefully we will be able to separate the system pages depending on their languages and just offer the languages you like.

Implemented commands

Note that the commands are not case-sensitive.

Suggested commands

...

Discussion

I like it :-) -- AlexanderSchremmer DateTime(2005-05-27T15:14:24Z)

Nir sees several problems:

  1. Why do we need a script to install stuff? Simply merge install tree with existing tree, e.g.
    • Plugin tree:
      plugin
          theme
              NewTheme.py
      htdocs
          newtheme
              css
                  ....
              img
                  ....
    If more than merging is needed, the installer can handle it automatically, e.g, if you merge new page revision, the installer can create it as new revision or by replacing the existing page.
    • Has various problems:
      • ZIP does not support unicode
      • How do unpack different plugins for different MoinMoin versions?

      • How do you delete pages?
      • How do you store comments, creators, the trivial flag?
      • How do you add many revisions of a single page at once?
  2. If more than merging is needed, then we need some kind of meta data for each installed item - like type of install: replace/new revision etc.
    • Your point being?
  3. If some kind of script is needed, then the delimiter used here is wired.
    • Yeah, your opinion. I love weird delimiters.
  4. Why not use existing installer framework like distutils?
    • ROTFL, why do you think that it would help?

Generally, I think this is a quick solution to a problem which was not defined yet. First describe the problem, then we can discuss what kind of solution is needed, what if should do, what it should not do, etc. -- NirSoffer DateTime(2005-05-27T19:25:19Z)

How about using tgz instead of zip? -- ThomasWaldmann DateTime(2005-05-28T09:41:46Z)

It does not set a log entry at the moment or is it supressed for RecentChanges? Probably it would be fine to see who has updated when something. -- ReimarBauer DateTime(2005-05-29T22:01:30Z)

PackagePages.py (see ActionMarket) makes it very easy to take a page from one wiki to another. So you could proceed your editings at home in a standalone wiki and afterwards you could add it to the regular wiki. Sometimes it would be fine to set an editor lock to the regular wikis page till the changes are checked in. Probably this could be done by setting an acl checkbox into the dialog to set the acl for all to read only these pages. -- ReimarBauer DateTime(2005-08-13T20:37:07Z)

Files

AttachList