1 package org.apache.maven.scm.provider.cvslib.cvsjava.command.tag;
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.ScmException;
23 import org.apache.maven.scm.command.tag.TagScmResult;
24 import org.apache.maven.scm.provider.cvslib.command.tag.AbstractCvsTagCommand;
25 import org.apache.maven.scm.provider.cvslib.command.tag.CvsTagConsumer;
26 import org.apache.maven.scm.provider.cvslib.cvsjava.util.CvsConnection;
27 import org.apache.maven.scm.provider.cvslib.cvsjava.util.CvsLogListener;
28 import org.codehaus.plexus.util.cli.Commandline;
29
30 import java.io.BufferedReader;
31 import java.io.ByteArrayInputStream;
32 import java.io.InputStreamReader;
33
34
35
36
37
38 public class CvsJavaTagCommand
39 extends AbstractCvsTagCommand
40 {
41
42 protected TagScmResult executeCvsCommand( Commandline cl )
43 throws ScmException
44 {
45 CvsLogListener logListener = new CvsLogListener();
46
47 CvsTagConsumer consumer = new CvsTagConsumer( getLogger() );
48
49 try
50 {
51 boolean isSuccess = CvsConnection.processCommand( cl.getArguments(),
52 cl.getWorkingDirectory().getAbsolutePath(), logListener,
53 getLogger() );
54
55 if ( !isSuccess )
56 {
57 return new TagScmResult( cl.toString(), "The cvs tag command failed.",
58 logListener.getStderr().toString(), false );
59 }
60 BufferedReader stream = new BufferedReader(
61 new InputStreamReader( new ByteArrayInputStream( logListener.getStdout().toString().getBytes() ) ) );
62
63 String line;
64
65 while ( ( line = stream.readLine() ) != null )
66 {
67 consumer.consumeLine( line );
68 }
69 }
70 catch ( Exception e )
71 {
72 e.printStackTrace();
73 return new TagScmResult( cl.toString(), "The cvs tag command failed.", logListener.getStderr().toString(),
74 false );
75 }
76
77 return new TagScmResult( cl.toString(), consumer.getTaggedFiles() );
78 }
79 }