parent
038c63e362
commit
01433bae4f
@ -0,0 +1,19 @@ |
|||||||
|
import { ElectronPlugin } from '@remixproject/engine-electron'; |
||||||
|
|
||||||
|
export class isoGitPlugin extends ElectronPlugin { |
||||||
|
constructor() { |
||||||
|
super({ |
||||||
|
displayName: 'isogit', |
||||||
|
name: 'isogit', |
||||||
|
description: 'isogit', |
||||||
|
}) |
||||||
|
this.methods = [] |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
onActivation(): void { |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
} |
@ -0,0 +1,241 @@ |
|||||||
|
import { PluginClient } from "@remixproject/plugin"; |
||||||
|
import { Profile } from "@remixproject/plugin-utils"; |
||||||
|
import { ElectronBasePlugin, ElectronBasePluginClient } from "@remixproject/plugin-electron" |
||||||
|
import fs from 'fs/promises' |
||||||
|
import git from 'isomorphic-git' |
||||||
|
|
||||||
|
const profile: Profile = { |
||||||
|
name: 'isogit', |
||||||
|
displayName: 'isogit', |
||||||
|
description: 'isogit plugin', |
||||||
|
} |
||||||
|
|
||||||
|
export class IsoGitPlugin extends ElectronBasePlugin { |
||||||
|
client: PluginClient |
||||||
|
constructor() { |
||||||
|
super(profile, clientProfile, IsoGitPluginClient) |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
const clientProfile: Profile = { |
||||||
|
name: 'isogit', |
||||||
|
displayName: 'isogit', |
||||||
|
description: 'isogit plugin', |
||||||
|
methods: ['init', 'localStorageUsed', 'addremote', 'delremote', 'remotes', 'fetch', 'clone', 'export', 'import', 'status', 'log', 'commit', 'add', 'remove', 'rm', 'lsfiles', 'readblob', 'resolveref', 'branches', 'branch', 'checkout', 'currentbranch', 'push', 'pin', 'pull', 'pinList', 'unPin', 'setIpfsConfig', 'zip', 'setItem', 'getItem'] |
||||||
|
} |
||||||
|
|
||||||
|
class IsoGitPluginClient extends ElectronBasePluginClient { |
||||||
|
workingDir: string = '/Volumes/bunsen/code/empty/' |
||||||
|
constructor(webContentsId: number, profile: Profile) { |
||||||
|
super(webContentsId, profile) |
||||||
|
this.onload(() => { |
||||||
|
console.log('IsoGit client onload') |
||||||
|
this.on('fs' as any, 'workingDirChanged', async (path: string) => { |
||||||
|
console.log('workingDirChanged', path) |
||||||
|
this.workingDir = path |
||||||
|
await this.status({ |
||||||
|
|
||||||
|
}) |
||||||
|
}) |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
async getGitConfig () { |
||||||
|
return { |
||||||
|
fs, |
||||||
|
dir: this.workingDir, |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
async status (cmd: any) { |
||||||
|
console.log('status') |
||||||
|
const status = await git.statusMatrix({ |
||||||
|
...await this.getGitConfig(), |
||||||
|
...cmd |
||||||
|
}) |
||||||
|
console.log('STATUS', status, await this.getGitConfig()) |
||||||
|
return status |
||||||
|
} |
||||||
|
|
||||||
|
async log (cmd: any) { |
||||||
|
console.log('log') |
||||||
|
const log = await git.log({ |
||||||
|
...await this.getGitConfig(), |
||||||
|
...cmd |
||||||
|
}) |
||||||
|
console.log('LOG', log) |
||||||
|
return log |
||||||
|
} |
||||||
|
|
||||||
|
async add (cmd: any) { |
||||||
|
console.log('add') |
||||||
|
const add = await git.add({ |
||||||
|
...await this.getGitConfig(), |
||||||
|
...cmd |
||||||
|
}) |
||||||
|
console.log('ADD', add) |
||||||
|
return add |
||||||
|
} |
||||||
|
|
||||||
|
async rm(cmd: any) { |
||||||
|
console.log('rm') |
||||||
|
const rm = await git.remove({ |
||||||
|
...await this.getGitConfig(), |
||||||
|
...cmd |
||||||
|
}) |
||||||
|
console.log('RM', rm) |
||||||
|
return rm |
||||||
|
} |
||||||
|
|
||||||
|
async commit (cmd: any) { |
||||||
|
console.log('commit') |
||||||
|
const commit = await git.commit({ |
||||||
|
...await this.getGitConfig(), |
||||||
|
...cmd |
||||||
|
}) |
||||||
|
console.log('COMMIT', commit) |
||||||
|
return commit |
||||||
|
} |
||||||
|
|
||||||
|
async init (input: any) { |
||||||
|
await git.init({ |
||||||
|
...await this.getGitConfig(), |
||||||
|
defaultBranch: (input && input.branch) || 'main' |
||||||
|
}) |
||||||
|
} |
||||||
|
|
||||||
|
async branch (cmd: any) { |
||||||
|
console.log('branch') |
||||||
|
const branch = await git.branch({ |
||||||
|
...await this.getGitConfig(), |
||||||
|
...cmd |
||||||
|
}) |
||||||
|
console.log('BRANCH', branch) |
||||||
|
return branch |
||||||
|
} |
||||||
|
|
||||||
|
async lsfiles (cmd: any) { |
||||||
|
console.log('lsfiles') |
||||||
|
const lsfiles = await git.listFiles({ |
||||||
|
...await this.getGitConfig(), |
||||||
|
...cmd |
||||||
|
}) |
||||||
|
console.log('LSFILES', lsfiles) |
||||||
|
return lsfiles |
||||||
|
} |
||||||
|
|
||||||
|
async resolveref (cmd: any) { |
||||||
|
console.log('resolveref') |
||||||
|
const resolveref = await git.resolveRef({ |
||||||
|
...await this.getGitConfig(), |
||||||
|
...cmd |
||||||
|
}) |
||||||
|
console.log('RESOLVEREF', resolveref) |
||||||
|
return resolveref |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
async readblob (cmd: any) { |
||||||
|
console.log('readblob') |
||||||
|
const readblob = await git.readBlob({ |
||||||
|
...await this.getGitConfig(), |
||||||
|
...cmd |
||||||
|
}) |
||||||
|
console.log('READBLOB', readblob) |
||||||
|
return readblob |
||||||
|
} |
||||||
|
|
||||||
|
async checkout (cmd: any) { |
||||||
|
console.log('checkout') |
||||||
|
const checkout = await git.checkout({ |
||||||
|
...await this.getGitConfig(), |
||||||
|
...cmd |
||||||
|
}) |
||||||
|
console.log('CHECKOUT', checkout) |
||||||
|
return checkout |
||||||
|
} |
||||||
|
|
||||||
|
async push (cmd: any) { |
||||||
|
console.log('push') |
||||||
|
const push = await git.push({ |
||||||
|
...await this.getGitConfig(), |
||||||
|
...cmd |
||||||
|
}) |
||||||
|
console.log('PUSH', push) |
||||||
|
return push |
||||||
|
} |
||||||
|
|
||||||
|
async pull (cmd: any) { |
||||||
|
console.log('pull') |
||||||
|
const pull = await git.pull({ |
||||||
|
...await this.getGitConfig(), |
||||||
|
...cmd |
||||||
|
}) |
||||||
|
console.log('PULL', pull) |
||||||
|
return pull |
||||||
|
} |
||||||
|
|
||||||
|
async fetch(cmd: any) { |
||||||
|
console.log('fetch') |
||||||
|
const fetch = await git.fetch({ |
||||||
|
...await this.getGitConfig(), |
||||||
|
...cmd |
||||||
|
}) |
||||||
|
console.log('FETCH', fetch) |
||||||
|
return fetch |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
remotes = async () => { |
||||||
|
let remotes = [] |
||||||
|
remotes = await git.listRemotes({...await this.getGitConfig() }) |
||||||
|
console.log('remotes', remotes) |
||||||
|
return remotes |
||||||
|
} |
||||||
|
|
||||||
|
async currentbranch() { |
||||||
|
try { |
||||||
|
const defaultConfig = await this.getGitConfig() |
||||||
|
const name = await git.currentBranch(defaultConfig) |
||||||
|
console.log('currentbranch', name) |
||||||
|
return name |
||||||
|
} catch (e) { |
||||||
|
return '' |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
async branches() { |
||||||
|
try { |
||||||
|
let cmd: any = {...await this.getGitConfig()} |
||||||
|
const remotes = await this.remotes() |
||||||
|
let branches = [] |
||||||
|
branches = (await git.listBranches(cmd)).map((branch) => { return { remote: undefined, name: branch } }) |
||||||
|
for (const remote of remotes) { |
||||||
|
cmd = { |
||||||
|
...cmd, |
||||||
|
remote: remote.remote |
||||||
|
} |
||||||
|
|
||||||
|
const remotebranches = (await git.listBranches(cmd)).map((branch) => { return { remote: remote.remote, name: branch } }) |
||||||
|
branches = [...branches, ...remotebranches] |
||||||
|
|
||||||
|
} |
||||||
|
console.log('branches', branches) |
||||||
|
return branches |
||||||
|
} catch (e) { |
||||||
|
return [] |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in new issue