<commit_before>puppet_mutex
============

Do-nothing define to implement clearly express and enforce mutal exclusivity
between classes or defines.

Sometimes one has classes which while otherwise unrelated should never both
be declared for the same host. For example, one generally cannot manage local
accounts while LDAP is configured for managing accounts. There is no obvious
error that this should be so, except that the `useradd` provider for the
`user` type will fail with some incomprehensible message. Pretty much
everything else will work, however, so noticing the error requires looking
for it.

With the same `puppet_mutex` resource declared in both classes, the catalog
will fail to compile and moreover the intention that the two classes should
never both be declared is clearly expressed.

Attempting to use the `defined` function is unreliable, as it is parse-order
dependent.

Parameters
----------

None.

Variables
---------

None.

Examples
--------

To ensure that `account::ldap` and `account::local` cannot be both declared
at the same time, declare the same puppet_mutex in both classes.

    class account::ldap {
      puppet_mutex { 'user-account': }
    }

    class account::local {
      puppet_mutex { 'user-account': }
    }

Author
------

<NAME> <wcooley&#64;nakedape.cc>

Copyright
---------

Copyright 2014 <NAME>
<commit_msg>Fix typos and tired/drunken English<commit_after>puppet_mutex
============

Do-nothing define to clearly express and enforce mutal exclusivity between
classes or defines.

Sometimes one has classes which, while otherwise unrelated, should never both
be declared for the same host. For example, one generally cannot manage local
accounts while LDAP is configured for managing accounts. There is no obvious
error that this should be so, except that the `useradd` provider for the
`user` type will fail with some incomprehensible message. Pretty much
everything else will work, however, so noticing the error requires looking
for it.

With a `puppet_mutex` with the same name declared in both classes, the catalog
will fail to compile so mistakes are easier to notice.Moreover, a declaration
with this define clearly expresses the intention that the two classes should
never both be declare.

Attempting to use the `defined` function to enforce exclusivity is unreliable,
as it is parse-order dependent and generally suggested against.

Parameters
----------

None.

Variables
---------

None.

Examples
--------

To ensure that `account::ldap` and `account::local` cannot be both declared
at the same time, declare the same puppet_mutex in both classes.

    class account::ldap {
      puppet_mutex { 'user-account': }
    }

    class account::local {
      puppet_mutex { 'user-account': }
    }

Author
------

<NAME> <wcooley&#64;nakedape.cc>

Copyright
---------

Copyright 2014 <NAME>

{'fraction_non_alphanumeric': 0.08733777621887057, 'fraction_numerical': 0.004209049456331112, 'mean_word_length': 3.7772194304857623, 'pattern_counts': {'":': 0, '<': 9, '<?xml version=': 0, '>': 9, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6899827', 'n_tokens_mistral': 762, 'n_tokens_neox': 721, 'n_words': 368}