@@ -431,10 +431,9 @@ grunt.registerMultiTask('docmeta', '增加 Title、文档修改日期、设置
431
431
var cheerio = require ( 'cheerio' ) ;
432
432
var crypto = require ( 'crypto' ) ;
433
433
var _ = require ( 'underscore' ) ;
434
- var AV = require ( 'avoscloud-sdk' ) . AV ;
435
- AV . initialize ( "749rqx18p5866h0ajv0etnq4kbadodokp9t0apusq98oedbb" , "axxq0621v6pxkya9qm74lspo00ef2gq204m5egn7askjcbib" ) ;
436
- // test project
437
- //AV.initialize("0siycem2w0l2zem2z5crxl7602zkf1r2a8qsooigq2my1al1", "4ipiwns1939nw2cgist4s49li89dvadrlrgthfvqmgzcaax5");
434
+ var Promise = require ( 'bluebird' ) ;
435
+ var AV = require ( 'leancloud-storage' ) ;
436
+ AV . init ( { appId : "749rqx18p5866h0ajv0etnq4kbadodokp9t0apusq98oedbb" , appKey : "axxq0621v6pxkya9qm74lspo00ef2gq204m5egn7askjcbib" } ) ;
438
437
var Doc = AV . Object . extend ( 'Doc' ) ;
439
438
var Snippet = AV . Object . extend ( 'Snippet' ) ;
440
439
var commentDoms = [ 'p' , 'pre' ] ;
@@ -447,14 +446,13 @@ grunt.registerMultiTask('docmeta', '增加 Title、文档修改日期、设置
447
446
var docVersion = crypto . createHash ( 'md5' ) . update ( $ ( '#content' ) . text ( ) ) . digest ( 'hex' ) ;
448
447
// console.log(docVersion)
449
448
$ ( 'html' ) . first ( ) . attr ( 'version' , docVersion ) ;
450
-
451
449
//以 docversion 为唯一标识,当文档内容发生变化,docversion 相应变化,
452
450
var query = new AV . Query ( Doc ) ;
453
451
query . equalTo ( 'version' , docVersion ) ;
454
452
return query . first ( ) . then ( function ( doc ) {
455
453
if ( doc ) {
456
454
// 如果 doc 已经存在,则直接返回
457
- return AV . Promise . as ( ) ;
455
+ return doc ;
458
456
}
459
457
doc = new Doc ( ) ;
460
458
doc . set ( 'version' , docVersion ) ;
@@ -472,7 +470,7 @@ grunt.registerMultiTask('docmeta', '增加 Title、文档修改日期、设置
472
470
doc . set ( 'file' , file . split ( '/' ) . pop ( ) ) ;
473
471
grunt . log . writeln ( 'save new Doc: %s' , file ) ;
474
472
return doc . save ( ) ;
475
- } ) . then ( function ( ) {
473
+ } ) . then ( function ( doc ) {
476
474
// 在文档中添加 version 标记
477
475
commentDoms . forEach ( function ( dom ) {
478
476
$ ( '#content ' + dom ) . each ( function ( ) {
@@ -484,52 +482,71 @@ grunt.registerMultiTask('docmeta', '增加 Title、文档修改日期、设置
484
482
} ) ;
485
483
} ) ;
486
484
grunt . file . write ( filepath , $ . html ( ) ) ;
487
- return AV . Promise . as ( ) ;
488
- } ) . then ( function ( ) {
489
- var promises = [ ] ;
485
+
490
486
// 保存 snippet version 和 content 的关联
491
- commentDoms . forEach ( function ( dom ) {
492
- $ ( '#content ' + dom ) . each ( function ( ) {
493
- var version = crypto . createHash ( 'md5' ) . update ( $ ( this ) . text ( ) ) . digest ( 'hex' ) ;
487
+ return Promise . each ( commentDoms , function ( dom ) {
488
+ var promises = [ ] ;
489
+ $ ( '#content ' + dom ) . each ( function ( i , elem ) {
490
+ promises . push ( Promise . resolve ( elem ) )
491
+ } )
492
+ return Promise . map ( promises , function ( elem ) {
493
+ var version = crypto . createHash ( 'md5' ) . update ( $ ( elem ) . text ( ) ) . digest ( 'hex' ) ;
494
494
if ( _ . contains ( allSnippetsVersion , version ) ) {
495
495
return ;
496
496
}
497
- if ( $ ( this ) . text ( ) . trim ( ) . length === 0 ) {
497
+ if ( $ ( elem ) . text ( ) . trim ( ) . length === 0 ) {
498
498
return ;
499
499
}
500
- grunt . log . writeln ( 'save new Snippet: %s' , $ ( this ) . text ( ) . substr ( 0 , 20 ) + '...' ) ;
501
- promises . push ( new Snippet ( ) . save ( {
500
+ grunt . log . writeln ( 'save new Snippet: %s' , $ ( elem ) . text ( ) . substr ( 0 , 20 ) + '...' ) ;
501
+ return new Snippet ( ) . save ( {
502
502
snippetVersion : version ,
503
- content : $ ( this ) . text ( ) ,
503
+ content : $ ( elem ) . text ( ) ,
504
504
file : filepath . split ( '/' ) . pop ( )
505
- } ) ) ;
506
- } ) ;
505
+ } ) ;
506
+ } , { concurrency : 3 } ) ;
507
+ } ) . then ( function ( ) {
508
+ return doc ;
507
509
} ) ;
508
- return AV . Promise . all ( promises ) ;
509
510
} ) ;
510
511
}
511
512
var self = this ;
512
513
// 查询所有已存在的 snippet version,
513
514
// 用来判断哪些是新的 snippet,然后将其 version 和 content 添加到数据库
514
515
var snippetsVersion = [ ] ;
515
- var getSnippetsVersion = function ( skip ) {
516
- return AV . Query . doCloudQuery ( 'select snippetVersion from Snippet limit ?, ?' , [ skip , 1000 ] ) . then ( function ( result ) {
517
- if ( result . results . length === 0 ) {
518
- return AV . Promise . as ( ) ;
516
+ var getSnippetsVersion = function ( createdAt ) {
517
+ return new AV . Query ( 'Snippet' )
518
+ . select ( 'snippetVersion' )
519
+ . greaterThan ( 'createdAt' , createdAt )
520
+ . limit ( 1000 )
521
+ . ascending ( 'createdAt' )
522
+ . find ( )
523
+ . then ( function ( result ) {
524
+ if ( result . length === 0 ) {
525
+ return [ ] ;
519
526
}
520
- _ . each ( result . results , function ( snippet ) {
527
+ _ . each ( result , function ( snippet ) {
521
528
snippetsVersion . push ( snippet . get ( 'snippetVersion' ) ) ;
522
529
} ) ;
523
- return getSnippetsVersion ( snippetsVersion . length ) ;
530
+ return getSnippetsVersion ( _ . last ( result ) . get ( 'createdAt' ) ) ;
524
531
} ) ;
525
532
} ;
526
- getSnippetsVersion ( 0 ) . then ( function ( ) {
533
+ var docEnv = process . env . DOC_ENV || 'default' ;
534
+ grunt . log . writeln ( 'Doc ENV: ' , docEnv ) ;
535
+ getSnippetsVersion ( new Date ( 0 ) ) . then ( function ( ) {
527
536
grunt . log . writeln ( 'current snippets count:' , snippetsVersion . length ) ;
528
- var allPromise = [ ] ;
529
- self . filesSrc . forEach ( function ( filepath ) {
530
- allPromise . push ( initDocVersion ( filepath , snippetsVersion ) ) ;
531
- } ) ;
532
- return AV . Promise . all ( allPromise ) ;
537
+ return Promise . map ( self . filesSrc , function ( filepath ) {
538
+ return initDocVersion ( filepath , snippetsVersion ) ;
539
+ } , { concurrency : 1 } )
540
+ } ) . then ( function ( docs ) {
541
+ return new AV . Object ( 'Release' ) . save ( {
542
+ env : docEnv ,
543
+ } ) . then ( function ( release ) {
544
+ return AV . Object . saveAll ( docs . map ( function ( doc ) {
545
+ return new AV . Object ( 'Release_Doc' )
546
+ . set ( 'release' , release )
547
+ . set ( 'doc' , doc )
548
+ } ) )
549
+ } )
533
550
} ) . then ( function ( ) {
534
551
//保证所有文档都处理完再进行任务完成回调
535
552
grunt . log . writeln ( 'version build allcompleted' ) ;
0 commit comments