initial commit

Signed-off-by: dzdidi <deniszalessky@gmail.com>
This commit is contained in:
dzdidi
2023-08-07 18:19:41 +02:00
commit 2b709e0b55
16 changed files with 1000 additions and 0 deletions

32
src/state.js Normal file
View File

@@ -0,0 +1,32 @@
const Hyperdrive = require('hyperdrive')
const git = require('./git.js')
const appHome = require('./appHome.js')
module.exports = async function setState (store, drives = {}) {
const repos = appHome.list(true)
const announcedRefs = {}
const repositories = {}
for (const repo of repos) {
if (!drives[repo]) {
drives[repo] = new Hyperdrive(store.namespace(repo))
await drives[repo].ready()
}
const ls = await git.lsPromise(appHome.getCodePath(repo))
repositories[repo] = {}
for (const ref in ls) {
repositories[repo][ref] = ls[ref]
announcedRefs[ls[ref]] = repo
const localPackStream = git.uploadPack(appHome.getCodePath(repo), ls[ref])
const driveStream = drives[repo].createWriteStream(`/packs/${ls[ref]}.pack`)
localPackStream.on('ready', () => localPackStream.stdout.pipe(driveStream))
}
}
return { announcedRefs, repositories, drives }
}