This is somewhat evil, but if the setting appears in multiple sections, we only update it in the first setting we find:

<pre>
0 ~/work/puppet (pr/2158)  $ cat ~/.puppet/puppet.conf
[main]
parser=current
[master]
[main]
parser=current
0 ~/work/puppet (pr/2158)  $ be puppet config print parser
current
0 ~/work/puppet (pr/2158)  $ be puppet config set parser future --section main
0 ~/work/puppet (pr/2158)  $ be puppet config print parser
future
0 ~/work/puppet (pr/2158)  $ cat ~/.puppet/puppet.conf
[main]
parser=future
[master]
[main]
parser=current
</pre>

Fortunately, the `print` action also prints the first one -- the one that we set, otherwise we could get into a loop.