fakr reads a Jinja2 Template from stdin
, renders it using a vocabulary and writes the result to stdout
. It's as simple as that...
$ pip install fakr
$ fakr --help
Generate a simple csv file with 100k rows
$ echo "{{row}},{{row%100}},{{firstname}},{{lastname}},{{email}}" \ | fakr --count 100000``
Use a file for complex template
$ cat examples/templates/vcard.tpl \ | fakr --count 1000
Make a http request using curl:
$ echo "company={{company|urlencode}}&city={{city|urlencode}}" \ | fakr -c1 \ | curl httpbin.org/post -d @-
Write data to a redis server:
$ echo 'firstname \"{{firstname}}\" lastname \"{{lastname}}\" email \"{{email}}\"' \ | fakr \ | xargs -i redis-cli HMSET {}``
The templates you use for data generation are plain Jinja2 Templates. See their reference for detailed information.
There are a few custom filters, functions and variables for use with fakr:
Custom filters:
ascii
: Converts the value to ascii (using Unidecode) (i. e.{{lastname|ascii}}
)shuffle
: Shuffles the value randomly (i. e.{{lastname|shuffle}}
)chance
: Gives the value a chance from 0.0 to 1.0 to be returned (i. e.{{firstname|chance(0.9)}}
- firstname will be 90% returned, 10% empty)rjust
: Right-justifies the value to the given with (i. e.{{company|rjust(40)}}
)ljust
: Left-justifies the value to the given with (i. e.{{company|ljust(40)}}
)center
: Centers the value in width (i. e.{{company|center(40)}}
)hash
: Calculates the hash with a given hashing algo (i. e. {{email|hash('md5')}})
Custom functions:
translate
uuid4
: Returns a new UUIDv4 on every call (i. e.{{uuid4()}}
)unixtime
: Returns a the current unixtime as float in seconds, (i. e.{{unixtime()}}
)
Fixed (vocabulary independent) variables:
row
: The row (starting from 0) of the current datasetid
: The id or sequence number of the current datasetguid
: The representation of theid
in a uuid-like fashion