A tasty tool that lets you save, load and share postgres snapshots with ease.
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]
flan available
flan delete DELETEFILE
flan fetch FILE
flan help [COMMAND]
flan init
flan list
flan load INPUT
flan publish FILE
flan save OUTPUT
flan unpublish FILE
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
EXAMPLE
$ flan load 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