1 package org.apache.maven.scm.provider.git.gitexe.command.remove;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.scm.ScmFile;
23 import org.apache.maven.scm.ScmFileStatus;
24 import org.apache.maven.scm.provider.git.gitexe.command.status.GitStatusConsumer;
25 import org.apache.maven.scm.util.AbstractConsumer;
26
27 import java.net.URI;
28 import java.util.ArrayList;
29 import java.util.List;
30 import java.util.regex.Matcher;
31 import java.util.regex.Pattern;
32
33
34
35
36
37
38 public class GitRemoveConsumer
39 extends AbstractConsumer
40 {
41
42
43
44 private static final Pattern REMOVED_PATTERN = Pattern.compile( "^rm\\s'(.*)'" );
45
46 private final List<ScmFile> removedFiles = new ArrayList<>();
47
48 private final URI relativeRepositoryPath;
49
50
51
52
53
54 public GitRemoveConsumer()
55 {
56 this( null );
57 }
58
59 public GitRemoveConsumer( URI relativeRepositoryPath )
60 {
61 this.relativeRepositoryPath = relativeRepositoryPath;
62 }
63
64
65
66
67 public void consumeLine( String line )
68 {
69 if ( line.length() <= 2 )
70 {
71 return;
72 }
73
74 Matcher matcher = REMOVED_PATTERN.matcher( line );
75 if ( matcher.matches() )
76 {
77 String file = GitStatusConsumer.resolvePath( matcher.group( 1 ), relativeRepositoryPath );
78 removedFiles.add( new ScmFile( file, ScmFileStatus.DELETED ) );
79 }
80 else
81 {
82 if ( logger.isInfoEnabled() )
83 {
84 logger.info( "could not parse line: " + line );
85 }
86
87 return;
88 }
89 }
90
91 public List<ScmFile> getRemovedFiles()
92 {
93 return removedFiles;
94 }
95
96 }