Skip to content

Commit ebcbded

Browse files
authored
Merge pull request #6 from TheTechTrap/bundled-data
Bundled data
2 parents 36de0ad + 4393328 commit ebcbded

File tree

6 files changed

+348
-152
lines changed

6 files changed

+348
-152
lines changed

bin/helper.js

Lines changed: 68 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -11,11 +11,18 @@ import DGitHelper from "./lib/dgit.js";
1111
import LineHelper from "./lib/line.js";
1212
import Arweave from "arweave";
1313
import {
14-
getRefsOnArweave,
1514
pushGitObject,
16-
updateRef,
15+
makeDataItem,
16+
makeUpdateRefDataItem,
1717
parseArgitRemoteURI,
18+
postBundledTransaction,
1819
} from "./lib/arweave.js";
20+
import { getAllRefs } from "./lib/graphql.js";
21+
22+
import * as deepHash from "arweave/node/lib/deepHash.js";
23+
import ArweaveData from "arweave-data/pkg/dist-node/index.js";
24+
import pkg from "cli-progress";
25+
const { SingleBar, Presets } = pkg;
1926

2027
const _timeout = async (duration) => {
2128
return new Promise((resolve, reject) => {
@@ -73,6 +80,12 @@ export default class Helper {
7380
port: 443,
7481
protocol: "https",
7582
});
83+
const deps = {
84+
utils: Arweave.utils,
85+
crypto: Arweave.crypto,
86+
deepHash: deepHash.default.default,
87+
};
88+
this.ArData = ArweaveData.default(deps);
7689
}
7790

7891
// OK
@@ -120,7 +133,7 @@ export default class Helper {
120133
forPush ? this.debug("cmd", "list", "for-push") : this.debug("cmd, list");
121134

122135
const refs = await this._fetchRefs();
123-
136+
console.error("refs", refs);
124137
// tslint:disable-next-line:forin
125138
for (const ref in refs) {
126139
this._send(refs[ref] + " " + ref);
@@ -188,10 +201,10 @@ export default class Helper {
188201
const spinner = ora("Fetching remote refs from arweave").start();
189202

190203
try {
191-
const refs = await getRefsOnArweave(this._arweave, this.url);
204+
const refs = await getAllRefs(this._arweave, this.url);
192205

193206
spinner.succeed("Remote refs fetched from arweave");
194-
return Object.fromEntries(refs);
207+
return refs;
195208
} catch (err) {
196209
spinner.fail("Failed to fetch remote refs from arweave");
197210
throw err;
@@ -235,7 +248,6 @@ export default class Helper {
235248

236249
return (async (resolve, reject) => {
237250
let spinner;
238-
let head;
239251
let txHash;
240252
let mapping = {};
241253
const puts = [];
@@ -250,7 +262,7 @@ export default class Helper {
250262

251263
const revListCmd = remote
252264
? `git rev-list --objects --left-only ${srcBranch}...${this.name}/${dstBranch}`
253-
: "git rev-list --objects --all";
265+
: `git rev-list --objects ${srcBranch}`;
254266

255267
const objects = shell
256268
.exec(revListCmd, { silent: true })
@@ -280,21 +292,45 @@ export default class Helper {
280292
this._die();
281293
}
282294

295+
// update ref
296+
puts.push(
297+
makeUpdateRefDataItem(
298+
this.ArData,
299+
this.wallet,
300+
this.url,
301+
dst,
302+
objects[0]
303+
)
304+
);
305+
283306
// collect git objects
284-
try {
285-
spinner = ora(
286-
"Collecting git objects [this may take a while]"
287-
).start();
307+
spinner = ora("Collecting git objects [this may take a while]").start();
288308

289-
for (const oid of objects) {
290-
const object = await this.git.load(oid);
291-
// Check object already exists on arweave before pushing
292-
puts.push(
293-
pushGitObject(this._arweave, this.wallet, this.url, oid, object)
294-
);
295-
}
309+
const bar1 = new SingleBar(
310+
{ stream: process.stderr },
311+
Presets.shades_classic
312+
);
313+
314+
bar1.start(objects.length, 0);
296315

297-
head = objects[0];
316+
try {
317+
objects.map((oid) =>
318+
puts.push(
319+
(async (bar) => {
320+
bar.increment();
321+
322+
const object = await this.git.load(oid);
323+
const dataItem = await makeDataItem(
324+
this.ArData,
325+
this.wallet,
326+
this.url,
327+
oid,
328+
object
329+
);
330+
return dataItem;
331+
})(bar1)
332+
)
333+
);
298334

299335
spinner.succeed("Git objects collected");
300336
} catch (err) {
@@ -305,7 +341,15 @@ export default class Helper {
305341
// upload git objects
306342
try {
307343
spinner = ora("Uploading git objects to arweave").start();
308-
await Promise.all(puts);
344+
const dataItems = await Promise.all(puts);
345+
bar1.stop();
346+
await postBundledTransaction(
347+
this._arweave,
348+
this.ArData,
349+
this.wallet,
350+
this.url,
351+
dataItems
352+
);
309353
spinner.succeed("Git objects uploaded to arweave");
310354
} catch (err) {
311355
spinner.fail(
@@ -316,11 +360,12 @@ export default class Helper {
316360

317361
// register on chain
318362
try {
319-
spinner = ora(`Updating ref ${dst} ${head} on arweave`).start();
320-
await updateRef(this._arweave, this.wallet, this.url, dst, head);
363+
spinner = ora(`Updating ref ${dst} ${objects[0]} on arweave`).start();
364+
spinner.succeed(`Updated ref ${dst} ${objects[0]} successfully`);
321365
} catch (err) {
322366
spinner.fail(
323-
`Failed to update ref ${dst} ${head} on arweave: ` + err.message
367+
`Failed to update ref ${dst} ${objects[0]} on arweave: ` +
368+
err.message
324369
);
325370
this._die();
326371
}

0 commit comments

Comments
 (0)