An 0x0.st uploader helper.
Go to file
grym 214e139163 handle token_dir in all subcommands 2023-02-13 12:15:49 -05:00
tests Simplify project layout, re-add support for python 3.7 2022-12-01 12:08:16 -05:00
.gitignore Drop poetry 2022-02-18 10:20:56 -05:00
.pre-commit-config.yaml Simplify project layout, re-add support for python 3.7 2022-12-01 12:08:16 -05:00
LICENSE Add license 2022-12-02 17:23:47 -05:00
Makefile Simplify project layout, re-add support for python 3.7 2022-12-01 12:08:16 -05:00
README.org Update help text for new release 2023-02-10 21:01:00 -05:00
oxo.py handle token_dir in all subcommands 2023-02-13 12:15:49 -05:00
pyproject.toml add secret= function 2023-02-10 20:43:15 -05:00

README.org

0x0 uploader

This is a very lightweight front-end to the 0x0 pastebin service for slightly easier command line use.

Use

oxo --help
 Usage: oxo [OPTIONS] COMMAND [ARGS]...

 A command line utility for 0x0.st compliant pastebins.
 To use a different 0x0 site, set `OXO_BASE_URL` in your environment, or
 specify it in the relevant subcommand.

╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --version                     Show the version and exit.                     │
│ --install-completion          Install completion for the current shell.      │
│ --show-completion             Show completion for the current shell, to copy │
│                               it or customize the installation.              │
│ --help                        Show this message and exit.                    │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ───────────────────────────────────────────────────────────────────╮
│ delete   Delete uploaded files if tokens are found on disk at                │
│          `token_cache_dir`.                                                  │
│ files    Upload one or more files.  If one is provided by the 0x0 site used  │
│          on a successful upload, a management token will be printed to       │
│          stderr along with instructions on how to use it to delete or adjust │
│          the expiration time on the uploaded file(s).  If                    │
│          `--token-cache-dir` is passed or `OXO_TOKEN_CACHE_DIR` is set, the  │
│          management token will also be cached as a json file in that         │
│          directory.  The cache directory will be created on first use.       │
│ repost   Repost one or more urls.                                            │
│ shorten  Shorten one or more urls.                                           │
╰──────────────────────────────────────────────────────────────────────────────╯
oxo files --help
 Usage: oxo files [OPTIONS] FILES...

 Upload one or more files.  If one is provided by the 0x0 site used on a
 successful upload, a management token will be printed to stderr along with
 instructions on how to use it to delete or adjust the expiration time on the
 uploaded file(s).  If `--token-cache-dir` is passed or `OXO_TOKEN_CACHE_DIR`
 is set, the management token will also be cached as a json file in that
 directory.  The cache directory will be created on first use.

╭─ Arguments ──────────────────────────────────────────────────────────────────╮
│ *    files      FILES...  [default: None] [required]                         │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --use-long-name      --no-use-long-name             If true, create a harder │
│                                                     to guess name.           │
│                                                     [default:                │
│                                                     no-use-long-name]        │
│ --base-url                                 TEXT     [env var: OXO_BASE_URL]  │
│                                                     [default:                │
│                                                     https://0x0.st]          │
│ --expires                                  INTEGER  Expiration time, in      │
│                                                     hours or epoch           │
│                                                     milliseconds             │
│                                                     [default: None]          │
│ --token-cache-dir                          TEXT     [env var:                │
│                                                     OXO_TOKEN_CACHE_DIR]     │
│                                                     [default: None]          │
│ --help                                              Show this message and    │
│                                                     exit.                    │
╰──────────────────────────────────────────────────────────────────────────────╯
oxo repost --help
 Usage: oxo repost [OPTIONS] URLS...

 Repost one or more urls.

╭─ Arguments ──────────────────────────────────────────────────────────────────╮
│ *    urls      URLS...  [default: None] [required]                           │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --use-long-name      --no-use-long-name             If true, create a harder │
│                                                     to guess name.           │
│                                                     [default:                │
│                                                     no-use-long-name]        │
│ --base-url                                 TEXT     [env var: OXO_BASE_URL]  │
│                                                     [default:                │
│                                                     https://0x0.st]          │
│ --expires                                  INTEGER  Expiration time, in      │
│                                                     hours or epoch           │
│                                                     milliseconds             │
│                                                     [default: None]          │
│ --token-cache-dir                          TEXT     [env var:                │
│                                                     OXO_TOKEN_CACHE_DIR]     │
│                                                     [default: None]          │
│ --help                                              Show this message and    │
│                                                     exit.                    │
╰──────────────────────────────────────────────────────────────────────────────╯
oxo shorten --help
 Usage: oxo shorten [OPTIONS] URLS...

 Shorten one or more urls.

╭─ Arguments ──────────────────────────────────────────────────────────────────╮
│ *    urls      URLS...  [default: None] [required]                           │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --base-url               TEXT     [env var: OXO_BASE_URL]                    │
│                                   [default: https://0x0.st]                  │
│ --expires                INTEGER  Expiration time, in hours or epoch         │
│                                   milliseconds                               │
│                                   [default: None]                            │
│ --token-cache-dir        TEXT     [env var: OXO_TOKEN_CACHE_DIR]             │
│                                   [default: None]                            │
│ --help                            Show this message and exit.                │
╰──────────────────────────────────────────────────────────────────────────────╯
oxo delete --help
 Usage: oxo delete [OPTIONS] [TOKEN_CACHE_DIR]

 Delete uploaded files if tokens are found on disk at `token_cache_dir`.

╭─ Arguments ──────────────────────────────────────────────────────────────────╮
│   token_cache_dir      [TOKEN_CACHE_DIR]  [env var: OXO_TOKEN_CACHE_DIR]     │
╰──────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────╮
│ --interactive    --no-interactive      If True, prompt for each token found. │
│                                        [default: no-interactive]             │
│ --help                                 Show this message and exit.           │
╰──────────────────────────────────────────────────────────────────────────────╯

Installation

pipx

pipx automates the creation of isolated runtimes for python CLI utilities like oxo. Once pipx is installed, install oxo like so, and it'll be on your $PATH

pipx install git+https://tildegit.org/grym/oxo@master  # or @tag-of-your-choice

pip + venv

If you'd prefer to create or manage your own isolated runtime for oxo, create a venv and install oxo into it:

  python3 -m venv oxovenv #or wherever you want the venv to go
  oxovenv/bin/pip install git+https://tildegit.org/grym/oxo@master  # or @tag-of-your-choice
  ln -s oxovenv/bin/oxo ${HOME}/.local/bin # optionally add to here, or anywhere else on your $PATH

development

If you'd like to set up a development install to edit oxo on your own (to prepare a PR, for example):

  git clone https://tildegit.org/grym/oxo
  cd oxo
  make install