---
name: "Prophet::CLIContext"
section: "3pm"
platform: "linux"
package: "libprophet-perl"
version: "0.743-1"
release: "Debian 7 (Wheezy)"
platforms: ["linux"]
url: "https://new.carta.tech/Prophet::CLIContext"
---

# Prophet::CLIContext(3pm)

### mutate\_attributes ( args =\> $hashref, props =\> $hashref, type =\> 'str' )

A hook for running a second command from within a command without having to use the commandline argument parsing.

If `"type"`, `"uuid"`, or `"primary_commands"` are not passed in, the values from the previous command run are used.

### cmp\_regex

The regex to use for matching property key/value separators.

### $ID\_REGEX

The regex to use for matching the id argument (luid / uuid).

### setup\_from\_args

Sets up this context object's arguments and key/value pairs from an array that looks like an `@ARGV`.

### parse\_args @args

This routine pulls arguments (specified by --key=value or --key value or -k value) and properties (specified by --props key=value or -- key=value) as passed on the command line out of ARGV (or something else emulating ARGV) and sticks them in "args" or "props" and "prop\_set" as necessary. Argument keys have leading "--" or "-" stripped.

If a key is not given a value on the command line, its value is set to undef.

More complicated separators such as =~ (for regexes) are also handled (see "cmp\_regex" for details).

### set\_type\_and\_uuid

When working with individual records, it is often the case that we'll be expecting a --type argument and then a mess of other key-value pairs.

This routine figures out and sets `"type"` and `"uuid"` from the arguments given on the command-line, if possible. Being unable to figure out a uuid is fatal.
