Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/sdelements/flan

A tasty tool that lets you save, load and share postgres snapshots with ease
https://github.com/sdelements/flan

cli command-line git postgres postgresql sql

Last synced: about 2 hours ago
JSON representation

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

Awesome Lists containing this project

README

        


flan


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


oclif
Version
Downloads/week
License

# Usage

```sh-session
$ npm install -g @sdelements/flan

$ flan init
running setup...

$ flan save [email protected]
saving...

$ flan load [email protected]
loading...

$ flan publish [email protected]
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: **WARNING**: Please don't use flan in situations where you can't afford data loss.

# Commands

- [`flan autocomplete [SHELL]`](#flan-autocomplete-shell)
- [`flan available`](#flan-available)
- [`flan delete DELETEFILE`](#flan-delete-deletefile)
- [`flan fetch FILE`](#flan-fetch-file)
- [`flan help [COMMAND]`](#flan-help-command)
- [`flan init`](#flan-init)
- [`flan list`](#flan-list)
- [`flan load INPUT`](#flan-load-input)
- [`flan publish FILE`](#flan-publish-file)
- [`flan save OUTPUT`](#flan-save-output)
- [`flan unpublish FILE`](#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](https://github.com/oclif/plugin-autocomplete/blob/v0.3.0/src/commands/autocomplete/index.ts)_

## `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](https://github.com/sdelements/flan/blob/v0.1.0-alpha.10/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 [email protected]
```

_See code: [src/commands/delete.ts](https://github.com/sdelements/flan/blob/v0.1.0-alpha.10/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](https://github.com/sdelements/flan/blob/v0.1.0-alpha.10/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](https://github.com/oclif/plugin-help/blob/v3.2.2/src/commands/help.ts)_

## `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](https://github.com/sdelements/flan/blob/v0.1.0-alpha.10/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](https://github.com/sdelements/flan/blob/v0.1.0-alpha.10/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](https://github.com/sdelements/flan/blob/v0.1.0-alpha.10/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](https://github.com/sdelements/flan/blob/v0.1.0-alpha.10/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](https://github.com/sdelements/flan/blob/v0.1.0-alpha.10/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 [email protected]
```

_See code: [src/commands/unpublish.ts](https://github.com/sdelements/flan/blob/v0.1.0-alpha.10/src/commands/unpublish.ts)_



From Toronto with love ❤️


👩‍🍳 :pie: 👨‍🍳 :pie: 👩‍🍳 :pie: 👨‍🍳 :pie: 👨‍🍳


Built by Team Pie


Special thanks to @revangel for the logo