@@ -11,11 +11,18 @@ import DGitHelper from "./lib/dgit.js";
1111import LineHelper from "./lib/line.js" ;
1212import Arweave from "arweave" ;
1313import {
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
2027const _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