You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

76 lines
1.9 KiB
TypeScript

2 years ago
import GitRemoteHelper from './git/git-remote-helper'
import { ApiBaseParams } from './git/git-remote-helper'
import Git from './git/git'
import { log } from './git/log'
import { ETHStorage } from './storage/ETHStorage'
2 years ago
let git: Git
2 years ago
GitRemoteHelper({
env: process.env,
stdin: process.stdin,
stdout: process.stdout,
api: {
/**
* This will always be invoked when the remote helper is invoked
*/
init: async (p: ApiBaseParams) => {
git = new Git(p, new ETHStorage(p.remoteUrl))
2 years ago
return
},
/**
* This needs to return a list of git refs.
*/
list: async (p: {
gitdir: string
remoteName: string
remoteUrl: string
forPush: boolean
2 years ago
}) => {
2 years ago
log('list', p)
2 years ago
2 years ago
let out = await git.do_list(p.forPush)
log("list out:\n", out)
return out
2 years ago
},
/**
* This should put the requested objects into the `.git`
*/
handleFetch: async (p: {
gitdir: string
remoteName: string
remoteUrl: string
refs: { ref: string, oid: string }[]
2 years ago
}) => {
2 years ago
log("fetch", p)
let out = await git.do_fetch(p.refs)
log("fetch out:\n", out)
return out
2 years ago
},
/**
* This should copy objects from `.git`
*/
handlePush: async (p: {
gitdir: string
remoteName: string
remoteUrl: string
2 years ago
refs: {
src: string
dst: string
force: boolean
}[]
2 years ago
}) => {
log("push", p)
2 years ago
let out = await git.do_push(p.refs)
log("push out:\n", out)
return out
2 years ago
},
},
}).catch((error: any) => {
console.error("wtf")
console.error(error)
})