Tags:
create new tag
view all tags

A standard config file per plugin

It occurred to me whilst unpicking a hardcoded path in a plugin, that plugins should ship with an overridable config file that it automatically loaded by the plugins system.

e.g.

lib/TWiki/Plugins/DirectedGraphPlugin/Setup.pm

Which would be overridden by the presence of:

lib/TWiki/Plugins/DirectedGraphPlugin/Setup.local.pm

With a bit of careful design, these Setup.local.pm files can be kept with the site and thus continue to override the supplied Setup.pm files.

We could equally use YAML or the suchlike.

-- MartinCleaver - 19 Apr 2005

I did some experimentation a while ago with PublishAddOn, making the install script prompt for values and adding the config directly to LocalSite.cfg. Try installing PublishAddOn on a DEVELOP checout to see how it works.

$cfg{PublishAddOn}{PublishDir} = '/full/path';
$cfg{PublishAddOn}{PublishUrl} = 'http://full/url';
The {PublishAddOn} part uniquely identifies this configuration as being associated with that plugin (c.f. $cfg{RCS} which configures the Store module). This approach has a number of significant advantages:
  • Simple solution
  • Familiar perl syntax
  • Full power of perl to express configuration
  • Configuration paradigm familiar to TWiki admins
  • No need for a YAML parser
  • Easy to separate plugin configuration from other config vars
  • Keeps all config in one place
  • Config appears in testenv
  • Config is trivial to upgrade
I was planning to add support for this to the BuildContrib based on the POSTINSTALL I wrote for the PublishAddOn.

-- CrawfordCurrie - 19 Apr 2005

I like the idea. I assume you are referring to

    require "TWiki/Contrib/PublishAddOn/PublishAddOn.cfg";

(I could not see where this file was generated - I can't actually install it from where I am currently located.)

If so, that is a little different to your idea of extending the Cfg hash as described above (and I prefer the Cfg hash idea).

We could have a standard method in the plugins that initialises the variables, but call it from Plugins.pm in such a way that the Cfg variables override those specified in the method.

-- MartinCleaver - 19 Apr 2005

No. What is implemented in the BuildContrib is support for adding settings to LocalSite.cfg. First level keys in the config hash indicate the plugin e.g. $cfg{ElectricPlugin}. Second level and below is for the plugin to use as it sees fit. This avoids any complex jiggery-pokery and ultimately will lead to the settings being editable from the configuration screen (testenv).

-- CrawfordCurrie - 06 Jun 2005

Nice. I like it. How does a plugin enquire about its settings?

-- MartinCleaver - 06 Jun 2005

It references $TWiki::cfg{MyFirstPlugin}{MySetting}

The BuildContrib installer creates these values for Cairo and earlier as well, by appending them to TWiki.cfg.

-- CrawfordCurrie - 07 Jun 2005

Edit | Attach | Watch | Print version | History: r8 < r7 < r6 < r5 < r4 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r8 - 2005-06-07 - CrawfordCurrie
 
  • Learn about TWiki  
  • Download TWiki
This site is powered by the TWiki collaboration platform Powered by Perl Hosted by OICcam.com Ideas, requests, problems regarding TWiki? Send feedback. Ask community in the support forum.
Copyright © 1999-2026 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.