@@ -279,18 +279,23 @@ func walk(p, url string, generator *clientGenerator, parent *clientType) {
279
279
log .Fatalf ("failed to get package: %+v" , err )
280
280
}
281
281
282
+ classesDir := filepath .Join (generator .OutputDir , "./classes/" )
283
+
282
284
if len (pkgParser .structs ) != 0 {
283
- if err = os .MkdirAll ("./classes/" + url , 0774 ); err != nil {
285
+ if err = os .MkdirAll (classesDir + url , 0774 ); err != nil {
284
286
log .Fatalf ("failed to MkdirAll: %+v" , err )
285
287
}
286
288
}
287
289
288
290
var b []byte
289
291
for i := range pkgParser .structs {
292
+ structFilePath := filepath .Join (classesDir ,
293
+ fmt .Sprintf ("/%s/" , url ),
294
+ fmt .Sprintf ("/%s.ts" , pkgParser .structs [i ]))
290
295
b , err = exec .Command (
291
296
"struct2ts" ,
292
297
"-o" ,
293
- "./classes/" + url + "/" + pkgParser . structs [ i ] + ".ts" ,
298
+ structFilePath ,
294
299
goPkg + "." + pkgParser .structs [i ],
295
300
).CombinedOutput ()
296
301
@@ -336,6 +341,7 @@ func main() {
336
341
}
337
342
338
343
versionFlag := flag .Bool ("v" , false , "print version" )
344
+ outputDir := flag .String ("o" , "./" , "output directory of generated codes" )
339
345
340
346
flag .Parse ()
341
347
@@ -344,18 +350,36 @@ func main() {
344
350
return
345
351
}
346
352
347
- if err := os .RemoveAll ("./classes" ); err != nil {
353
+ outputFullPath , err := filepath .Abs (* outputDir )
354
+ if err != nil {
355
+ log .Fatalf ("failed to run filepath.Abs: %+v" , err )
356
+ }
357
+
358
+ var stat os.FileInfo
359
+ if stat , err = os .Stat (outputFullPath ); err != nil {
360
+ if err = os .MkdirAll (outputFullPath , 0774 ); err != nil {
361
+ log .Fatalf ("failed to MkdirAll: %+v" , err )
362
+ }
363
+ } else if ! stat .IsDir () {
364
+ log .Fatalf ("-o specified is not a directory" )
365
+ }
366
+
367
+ log .Printf ("output dir: %s" , outputFullPath )
368
+ classesDir := filepath .Join (outputFullPath , "./classes" )
369
+
370
+ if err = os .RemoveAll (classesDir ); err != nil {
348
371
log .Fatalf ("failed to run RemoveAll: %+v" , err )
349
372
}
350
- if err : = os .MkdirAll ("./classes" , 0774 ); err != nil {
373
+ if err = os .MkdirAll (classesDir , 0774 ); err != nil {
351
374
log .Fatalf ("failed to run MkdirAll: %+v" , err )
352
375
}
353
376
354
377
generator := & clientGenerator {
355
378
AppVersion : common .AppVersion ,
379
+ OutputDir : outputFullPath ,
356
380
}
357
381
358
- fullPath , err := filepath .Abs (os . Args [ 1 ] )
382
+ fullPath , err := filepath .Abs (flag . Arg ( 0 ) )
359
383
if err != nil {
360
384
log .Fatalf ("failed to run filepath.Abs: %+v" , err )
361
385
}
0 commit comments