Skip to content

Mrfiregem/shell-piper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

shell-piper

Shell-piper is a commandline program made to write to a temporary file with your editor and pass that file's contents to an external program through various methods.

Installation

The recommended way to install shell-piper is through pipx (pipx install shell-piper). Arch users can also install shell-piper from the AUR.

You can also clone this repository and build shell-piper manually:

git clone 'https://github.com/Mrfiregem/shell-piper.git'
cd shell-piper
flit install

Quickstart

Stdin Mode

Copy and paste text into your editor and modify it with awk:

shellpiper -- awk -F $'\t' '{ print $2 }'

Argument Mode

Convert pasted html into markdown with pandoc:

shellpiper --type argument -- pandoc '{piper:file}' --from html -o converted.md

The argument {piper:file} will be expanded by shell-piper to the full path of the temporary file. If this argument is not present, the file path will be appended as the last argument.

Expand Mode

Pass a list of urls to download with youtube-dl, with each line as an argument:

shellpiper -t x youtube-dl

Usage

usage: shellpiper [-h] [-v] [-V] [-t TYPE] [-k] program [args ...]

Write a temporary file and pass it to a program

positional arguments:
  program               The program to pass your file to
  args                  Arguments to pass to the program

options:
  -h, --help            show this help message and exit
  -v, --version         show program's version number and exit
  -V, --verbose         Show debug messages
  -t TYPE, --type TYPE  How the file will be given to the program
  -k, --keep-empty      Don't remove empty lines when using '--type expand'

Use '--' to prevent command flags to the right of it being parsed by piper.

The '--type' flag can take values 'stdin' (default), 'argument', or 'expand',
or the letters 's', 'a', or 'x', respectively. This determines how the file is
passed to your program by shellpiper.