If you want to keep the description "intuitive" (for the users of it, who have enough domain knowledge I assume), I think you will have to put "sensible" logic into your program.

For example, you should do away with the user-configurable listing of ftp_instances and dynamically generate it from each ftpXX section - if there are three ftpXX sections, you set ftp_instances to 01 02 03.

I can't recommend YAML as a configuration file format, as it is very sensitive to whitespace at the end of the file.

You could look at how fetchmail "structures" its config file format, but an .ini-style format isn't too bad either. Also consider the possible errors the users can/will make, when you phone in the changes they need to make - whitespace (except maybe newlines) shouldn't matter too much, and the script should output very good diagnostic messages when it encounters stuff it doesn't understand (and also output a log file for post mortem analysis). It should have a facility to comment out a single line. Putting whole sections into comments is an interesting thing but unnecessary in my opinion, and it creates too many nonobvious problems, if for example both, the comment begin and the comment end are outside of the displayed area.


In reply to Re: Configuration file design by Corion
in thread Configuration file design by castaway

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.