CLI for publishing a new change to your hyperdrive and syncing it with remote peers
AGPL-3.0 License
CLI for publishing a new change to your hyperdrive and syncing it with remote peers
npm i -g hyperdrive-publisher
hyperdrive-publisher create
dat-store
instance or whatever backups you usehyperdrive-publisher sync <seed> [fsPath] [drivePath]
hyperdrive-publisher sync f1c681ad2caf09aac2d38adc6a1cc213e7880a9bdfbbc94d81537f3768bc9728 ./example /somewhere
./public
folder on your filesystem to the /website
folder in the hyperdrivetag
hyperdrive-publisher getURL <seed>
hyperdrive-publisher getURL f1c681ad2caf09aac2d38adc6a1cc213e7880a9bdfbbc94d81537f3768bc9728
npm i --save hyperdrive-publisher
const {create, sync, getURL} = require('hyperdrive-publisher')
// You can generate a seed yourself
const seed = require('crypto').randomBytes(32)
// Before creating or syncing, make sure to add this URL to a dat-store
const url = await getURL({seed})
// You can do this via the dat-storage-client API
// https://github.com/RangerMauve/dat-storage-client
const DatStorageClient = require('dat-storage-client')
const client = new DatStorageClient(SERVICE_URL)
await client.login(username, password)
await client.add({url})
// This is how you create a hyperdrive
// The URL gets returned in case you need it
const {url} = await create({seed})
// You can run a sync programmatically, too
// The returned diff is an array of changes
const {diff, url} = await sync({
seed,
fsPath: './',
drivePath: '/'
})
const {url} = await getURL({seed, verbose=false})
seed
must be provided and should be a Buffer with 32 bytes.url
will be the hyper://
URL of the hyperdrive that got generated for this seedverbose
controls whether there will be console output. By default it's false so that you don't have junk in your logsconst {seed, url} = await create({seed = crypto.randomBytes(32), title, verbose=false})
Creates a Hyperdrive and waits for the initial sync with a peer.
You'll need to use getURL
and add it to a dat-store
beforehand otherwise it'll get stuck on waiting to get a peer.
seed
is the seed used to generate the Hyperdrive, this will be auto-generated if you don't provide it, the seed will also be in the return value so you can save iturl
will be the hyper://
URL of the hyperdrive that got generated for this seedtitle
will be set to the title inside the generated index.json
which is used by tools like dat-store to show human readable titles for dirves.verbose
controls whether there will be console output. By default it's false so that you don't have junk in your logsconst {diff, url} = await sync({seed, fsPath='./', drivePath='/', tag=undefined, ignore=['.git/**'], verbose=false})
seed
is the seed used to generate the Hyperdrive, ths must be provided.url
will be the hyper://
URL of the hyperdrive that got generated for this seedfsPath
is the file path (relative to the current working directory) to sync files fromdrivePath
is the folder inside the hyperdrive you'd like files to be synced totag
is an optional name to tag the drive with so that you can get back to it in the history.ignore
is an optional array of strings for files and folders to ignore. Uses anymatch syntax.verbose
controls whether there will be console output. By default it's false so that you don't have junk in your logsYou can place [./publish.yml] in your .github/workflows/
folder and add your seed as a secret key called PUBLISHER_KEY
in order to publish changes on every push.
Make sure you have the appropriate branch set in the config, the default is default
.