@@ -30,6 +30,12 @@ var cmd = {
30
30
type : 'boolean' ,
31
31
default : false ,
32
32
describe : 'Provide extra problem details in submission file'
33
+ } ,
34
+ lang : {
35
+ alias : 'l' ,
36
+ type : 'string' ,
37
+ default : 'all' ,
38
+ describe : 'Programming language used for previous submission'
33
39
}
34
40
}
35
41
} ;
@@ -68,21 +74,28 @@ function exportSubmission(argv, problem, cb) {
68
74
if ( e ) return cb ( e ) ;
69
75
if ( submissions . length === 0 ) return cb ( 'no submissions?' ) ;
70
76
71
- // find the latest accepted one
72
- var submission = _ . find ( submissions , function ( x ) {
73
- // TODO: select by lang?
77
+ // get obj list contain required filetype
78
+ var submissionInTargetType = _ . filter ( submissions , function ( x ) {
79
+ return argv . lang === 'all' || argv . lang === x . lang ;
80
+ } ) ;
81
+ if ( submissionInTargetType . length === 0 ) {
82
+ return cb ( "No previous submission in required language." ) ;
83
+ }
84
+ var submission = _ . find ( submissionInTargetType , function ( x ) {
74
85
return x . status_display === 'Accepted' ;
75
86
} ) ;
76
87
88
+ var submissionState = submission === undefined ? 'notac' : 'ac' ;
89
+
77
90
// if no accepted, use the latest non-accepted one
78
- submission = submission || submissions [ 0 ] ;
91
+ submission = submission || submissionInTargetType [ 0 ] ;
79
92
80
93
var filename = sprintf ( '%s/%d.%s.%s.%s%s' ,
81
94
argv . outdir ,
82
95
problem . id ,
83
96
problem . key ,
84
97
submission . id ,
85
- problem . state ,
98
+ submissionState ,
86
99
h . langToExt ( submission . lang ) ) ;
87
100
88
101
// skip the existing cached submissions
0 commit comments