1 package org.apache.maven.scm.provider.git.gitexe.command.remoteinfo;
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.command.remoteinfo.RemoteInfoScmResult;
23 import org.apache.maven.scm.util.AbstractConsumer;
24
25 import java.util.HashMap;
26 import java.util.regex.Matcher;
27 import java.util.regex.Pattern;
28
29
30
31
32 public class GitRemoteInfoConsumer
33 extends AbstractConsumer
34 {
35
36
37
38
39 private static final Pattern BRANCH_PATTERN = Pattern.compile( "^(.*)\\s+refs/heads/(.*)" );
40
41
42
43
44 private static final Pattern TAGS_PATTERN = Pattern.compile( "^(.*)\\s+refs/tags/(.*)" );
45
46 private final RemoteInfoScmResult remoteInfoScmResult;
47
48
49
50
51
52 public GitRemoteInfoConsumer( String commandLine )
53 {
54 this.remoteInfoScmResult =
55 new RemoteInfoScmResult( commandLine, new HashMap<>(), new HashMap<>() );
56 }
57
58
59
60
61
62
63
64
65 public void consumeLine( String line )
66 {
67 if ( logger.isDebugEnabled() )
68 {
69 logger.debug( line );
70 }
71
72 Matcher matcher = BRANCH_PATTERN.matcher( line );
73 if ( matcher.matches() )
74 {
75 remoteInfoScmResult.getBranches().put( matcher.group( 2 ), matcher.group( 1 ) );
76 }
77
78 matcher = TAGS_PATTERN.matcher( line );
79 if ( matcher.matches() )
80 {
81 remoteInfoScmResult.getTags().put( matcher.group( 2 ), matcher.group( 1 ) );
82 }
83
84 }
85
86 public RemoteInfoScmResult getRemoteInfoScmResult()
87 {
88 return remoteInfoScmResult;
89 }
90
91 }