11
11
import picocli .CommandLine ;
12
12
13
13
import java .io .File ;
14
+ import java .io .IOException ;
14
15
import java .nio .charset .StandardCharsets ;
16
+ import java .nio .file .Files ;
17
+ import java .nio .file .Paths ;
15
18
import java .util .List ;
16
19
17
20
/**
@@ -34,21 +37,46 @@ public class Add implements Runnable{
34
37
35
38
@ Override
36
39
public void run () {
37
- add (files );
40
+ addFiles (files );
38
41
}
39
42
40
- private void add (List <String > files ) {
43
+ private void addFiles (List <String > files ) {
41
44
final String indexContent = FileUtil .getFileAsString (ConstantVal .INDEX , ConstantVal .NONE );
42
45
final JsonElement jsonElement = new Gson ().fromJson (indexContent , JsonElement .class );
43
46
final JsonObject asJsonObject = jsonElement .getAsJsonObject ();
44
47
45
48
files .forEach (file -> {
46
- HashObject hashObject = new HashObject ();
47
- hashObject .setFile (new File (file ));
48
- hashObject .setType (ConstantVal .BLOB );
49
- final String objectId = hashObject .call ();
50
- asJsonObject .addProperty (file , objectId );
49
+ final boolean isFile = !FileUtil .isFile (file );
50
+ if (isFile ) {
51
+ addFile (asJsonObject , file );
52
+ } else { // is directory
53
+ addDirectory (asJsonObject , file );
54
+ }
51
55
});
52
56
FileUtil .createFile (asJsonObject .toString (), ConstantVal .INDEX );
53
57
}
58
+
59
+ private void addFile (JsonObject asJsonObject , String file ) {
60
+ HashObject hashObject = new HashObject ();
61
+ hashObject .setFile (new File (file ));
62
+ hashObject .setType (ConstantVal .BLOB );
63
+ final String objectId = hashObject .call ();
64
+ asJsonObject .addProperty (file , objectId );
65
+ }
66
+
67
+
68
+ private void addDirectory (JsonObject asJsonObject , String file ) {
69
+ try {
70
+ Files .walk (Paths .get (file ), Integer .MAX_VALUE )
71
+ .filter (Files ::isRegularFile )
72
+ .forEach (regularFile -> addFile (asJsonObject , regularFile .toString ()));
73
+ } catch (IOException e ) {
74
+ log .error (e .toString ());
75
+ }
76
+ }
77
+
78
+
79
+
80
+
81
+
54
82
}
0 commit comments