package pdsh // TODO: This... doesn't really have much usefulness, does it? /* type ( HostLister interface { // Hosts returns ALL hsots (where applicable) that are considered/generated for a Lister. Hosts() (hosts []string, err error) } ) */ type ( /* DshGroupLister behaves like the host list generator for pdsh(1)'s "dshgroup module options" (the `misc/dshgroup` module for pdsh). */ DshGroupLister struct { /* NoEnv, if true, will *not* use DSHGROUP_PATH (force-defaulting to /etc/dsh/group/, but see NoDefault). */ NoEnv bool /* NoDefault, if true, will *not* add the default path `/etc/dsh/group/` to the search paths. If NoDefault is false, this path is only added if DSHGROUP_PATH is not defined (or, if it IS defined, if NoEnv is true). */ NoDefault bool // NoHome, if true, will *not* add the `~/.dsh/group/` path to the search paths. NoHome bool /* ForceLegacy, if true, will disable the PDSH `#include ` modification -- treating the source as a traditional DSH group file instead (e.g. `#include ...` is treated as just a comment). */ ForceLegacy bool } ) type ( dshGrpGenerator struct { /* tokens are interleaved with tokenized and indexed *after*; in other words, str = ... */ tokens []dshGrpToken // tokenized holds the split original text with tokens removed and split where the tokens occur. tokenized []string // text holds the original pattern. text string } dshGrpToken struct { /* token contains the original range specifier. Tokens may be e.g.: * 3: str3 * 3-5: str3, str4, str5 * 3,5: str3, str5 */ token string // subtokens hold a split of the individual range specifiers. subtokens []dshGrpSubtoken } dshGrpSubtoken struct { // start indicates either the single value or the start of the range. start uint // end, if 0 or less than start, indicates a single-value range. end uint // pad, if non-empty, is a string to add to the beginning of each of the generated substrings for this subtoken. pad string } ) type ( PtrnParseErr struct { pos uint ptrn string r rune err error } )