Shelved!
pipe is a command util which has a set of useful builtin functions, and you could use or combine these functions in the way using a unix pipe. For example, print "Hello, world!" in terminal: pipe run in.text('Hello, world!')=out
, to avoid conflicts with terminal special character, I use = instead of | or >.
Maybe you are thinking it's much more complex to print "Hello, world!" using pipe than echo? That's ture, but pipe can do mush more that echo!
Download here: Pipe!.
This project will be maintained for a long time, and I am looking forward for your suggestions or pull-request about new functions or new features :P.
Usage:
pipe [OPTIONS] <command>
Help Options:
/? Show this help message
/h, /help Show this help message
Available commands:
install install pipe script as extension (no impl for now)
run run pipe script in command line
usage Display function usages
version Display the version
usages:
in -> in(): read input from stdin
file -> in.file(name: string): read input from file
text -> in.text(value: string): use text value as input
out -> out(): output pipe data to stdout
file -> out.file(name: string): output pipe data to file
base64
encode -> base64.encode()
decode -> base64.decode()
filter
line
match -> filter.line.match(pattern: string): filter input lines those match provided regexp pattern
contains -> filter.line.contains(substr: string): filter input lines those contain provided string pattern
gzip
compress -> gzip.compress()
decompress -> gzip.decompress()
color
json -> color.json(): colorize input in json syntax
json
pretty -> json.pretty(): pretty json input
get -> json.get(path: string): get value from json input by path
regexp
test -> regexp.test(pattern: string): test input with regexp pattern
replace -> regexp.replace(pattern: string, repl: string)
http
get -> http.get(url: string, headers?: dict, outputMode?: 'body' | 'raw'): create http get request
url
encode -> url.encode()
decode -> url.decode()
text
cut -> text.cut(start: int, end?: int): extract substring
replace -> text.replace(old: string, new: string): replace substring
repeat -> text.repeat(n: int): repeat input n times
join -> text.join(elems: []string, sep: string)
html
pretty -> html.pretty()
example: pipe run in.text('Hello, world!')=out
or like: pipe run i.t('Hello, world!')=o
examples:
- read from stdin and output to stdout:
echo asd | pipe in=out
- read from file and output to file:
pipe in.file('./test.txt')=out.file('./test1.txt')
- use text as input:
pipe in.text('hello world')=out
- use labeled parameters:
echo asd | pipe in=out.file(name:'./test1.txt')
examples:
- encode:
echo asd | pipe in=base64.encode=out
- decode:
echo asd | pipe in=base64.decode=out
examples:
- compress:
echo asd | pipe in=gzip.compress=out.file('./test.gzip')
- decompress:
pipe in.file('./test.gzip')=gzip.decompress=out
examples:
- pretty:
pipe in.file('./test.json')=json.pretty=out
- get: need one parameter to indicate json path, more details see gjson
echo "{"name":{"first":[-999]}}" | pipe in=json.get('name.fisrt.0')=out
examples:
- test:
pipe in('text', '192.168.1.1')=regexp.test(pattern: '^([0-9]{1,3})(\.([0-9]{1,3})){3}$')=out
For now, pipe supports three kinds of command parameter:
- number: including integer and float
- string: wrapped by single quote '
- bool: true or false
NOTE: Most terminal will recogonize space as a separator of two arguments and split them into a string array, so space in a string parameter will be removed. For examples: pipe in('text', 'hello world')=out
will output helloworld
finally.
Solution: Wrap the string literal with double quote ". E.g: "'hello world'"
.