Skip to content

A tasty tool that lets you save, load and share postgres snapshots with ease

License

Notifications You must be signed in to change notification settings

sdelements/flan

Repository files navigation

flan

A tasty tool that lets you save, load and share postgres snapshots with ease.

oclif Version Downloads/week License

Usage

$ npm install -g @sdelements/flan

$ flan init
running setup...

$ flan save mydb@1.0.0
saving...

$ flan load mydb@1.0.0
loading...

$ flan publish mydb@1.0.0
publishing...

$ flan available
available snapshots...

$ flan (-v|--version|version)
@sdelements/flan/0.1.0-alpha.0 darwin-x64 node-v14.16.1

$ flan --help [COMMAND]
USAGE
  $ flan COMMAND
...

How it works

Under the hood flan is a convenient wrapper for pgdump and pgrestore. It uses parallel jobs by default to ensure dumping/restoring your database is quick.

Sharing database dumps is achieved by leveraging git. Essentially you push a tag to a repository of your choosing (defined in flan.config.js) and others can then pull it with flan fetch. We chose to use git because it fits well with our internal tooling and process but we understand it may not be the best solution for you. Pull requests are welcome if you're interested in using S3/Azure/etc as a store 🙂

⚠️ WARNING: Please don't use flan in situations where you can't afford data loss.

Commands

flan autocomplete [SHELL]

display autocomplete installation instructions

USAGE
  $ flan autocomplete [SHELL]

ARGUMENTS
  SHELL  shell type

OPTIONS
  -r, --refresh-cache  Refresh cache (ignores displaying instructions)

EXAMPLES
  $ flan autocomplete
  $ flan autocomplete bash
  $ flan autocomplete zsh
  $ flan autocomplete --refresh-cache

See code: @oclif/plugin-autocomplete

flan available

lists available dumps

USAGE
  $ flan available

OPTIONS
  -c, --config=config     [default: ./flan.config.json] Path to configuration file
  -x, --extended          show extra columns
  --columns=columns       only show provided columns (comma-separated)
  --csv                   output is csv format [alias: --output=csv]
  --filter=filter         filter property by partial string matching, ex: name=foo
  --no-header             hide table header from output
  --no-truncate           do not truncate output to fit screen
  --output=csv|json|yaml  output in a more machine friendly format
  --sort=sort             [default: tag] property to sort by (prepend '-' for descending)

EXAMPLE
  $ flan available

See code: src/commands/available.ts

flan delete DELETEFILE

delete a local database dump

USAGE
  $ flan delete DELETEFILE

ARGUMENTS
  DELETEFILE  name of file to delete

OPTIONS
  -c, --config=config  [default: ./flan.config.json] Path to configuration file

EXAMPLES
  $ flan delete myDB
  $ flan delete myDB@1.0.0

See code: src/commands/delete.ts

flan fetch FILE

fetch specified dump file from a remote repository

USAGE
  $ flan fetch FILE

ARGUMENTS
  FILE  name of the file

OPTIONS
  -c, --config=config  [default: ./flan.config.json] Path to configuration file

EXAMPLE
  $ flan fetch filename

See code: src/commands/fetch.ts

flan help [COMMAND]

display help for flan

USAGE
  $ flan help [COMMAND]

ARGUMENTS
  COMMAND  command to show help for

OPTIONS
  --all  see all commands in CLI

See code: @oclif/plugin-help

flan init

Initializes flan for this project

USAGE
  $ flan init

OPTIONS
  -c, --config=config  [default: ./flan.config.json] Path to configuration file
  -y, --yes            Auto confirm directory creating questions

EXAMPLES
  $ flan init
  Config file found at home/flan.config.js

  $ flan init
  A config file will be created, continue? [y/n]

  $ flan init -c /some-folder/flan.config.json
  Config file found at home/flan/some-folder/flan.config.json

  $ flan init -y -c /some-folder/flan.config.json
  Config file found at /home/flan/some-folder/flan.config.json
  The base directory has been created successfully at /home/flan/some-folder/.flan
  The save directory has been created successfully at /home/flan/some-folder/.flan/local
  Git repository initialized at /home/flan/some-folder/.flan/repo

See code: src/commands/init.ts

flan list

lists available dumps

USAGE
  $ flan list

OPTIONS
  -c, --config=config  [default: ./flan.config.json] Path to configuration file

EXAMPLE
  $ flan list

See code: src/commands/list.ts

flan load INPUT

load database from dump

USAGE
  $ flan load INPUT

ARGUMENTS
  INPUT  name of input file

OPTIONS
  -c, --config=config  [default: ./flan.config.json] Path to configuration file
  --drop-db            Drops and re-creates the DB before restoring it's data
  --quiet              Supress errors from pg_restore

EXAMPLES
  $ flan load myDB
  $ flan load --drop-db --quiet myDB

See code: src/commands/load.ts

flan publish FILE

publish specified dump file to a remote repository

USAGE
  $ flan publish FILE

ARGUMENTS
  FILE  name of the file

OPTIONS
  -c, --config=config  [default: ./flan.config.json] Path to configuration file

EXAMPLE
  $ flan publish filename

See code: src/commands/publish.ts

flan save OUTPUT

save current database to dump

USAGE
  $ flan save OUTPUT

ARGUMENTS
  OUTPUT  name of output file

OPTIONS
  -c, --config=config  [default: ./flan.config.json] Path to configuration file

EXAMPLE
  $ flan save myDB

See code: src/commands/save.ts

flan unpublish FILE

unpublish specified database dump from a remote repository

USAGE
  $ flan unpublish FILE

ARGUMENTS
  FILE  name of the file

OPTIONS
  -c, --config=config  [default: ./flan.config.json] Path to configuration file

EXAMPLE
  $ flan unpublish myDB@1.0.0

See code: src/commands/unpublish.ts


From Toronto with love ❤️

👩‍🍳 🥧 👨‍🍳 🥧 👩‍🍳 🥧 👨‍🍳 🥧 👨‍🍳
Built by Team Pie
Special thanks to @revangel for the logo

About

A tasty tool that lets you save, load and share postgres snapshots with ease

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages