1 package org.apache.maven.scm.provider.bazaar.command.diff;
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.ScmFileSet;
24 import org.apache.maven.scm.ScmResult;
25 import org.apache.maven.scm.ScmVersion;
26 import org.apache.maven.scm.command.Command;
27 import org.apache.maven.scm.command.diff.AbstractDiffCommand;
28 import org.apache.maven.scm.command.diff.DiffScmResult;
29 import org.apache.maven.scm.provider.ScmProviderRepository;
30 import org.apache.maven.scm.provider.bazaar.BazaarUtils;
31 import org.apache.maven.scm.provider.bazaar.command.BazaarConstants;
32 import org.codehaus.plexus.util.StringUtils;
33
34
35
36
37
38 public class BazaarDiffCommand
39 extends AbstractDiffCommand
40 implements Command
41 {
42
43 protected DiffScmResult executeDiffCommand( ScmProviderRepository repo, ScmFileSet fileSet,
44 ScmVersion startRevision, ScmVersion endRevision )
45 throws ScmException
46 {
47
48 String[] diffCmd;
49 if ( startRevision != null && StringUtils.isNotEmpty( startRevision.getName() ) )
50 {
51 String revArg = startRevision.getName();
52 if ( endRevision != null && StringUtils.isNotEmpty( endRevision.getName() ) )
53 {
54 revArg += ".." + endRevision.getName();
55 }
56 diffCmd = new String[]{BazaarConstants.DIFF_CMD, BazaarConstants.REVISION_OPTION, revArg};
57 }
58 else
59 {
60 diffCmd = new String[]{BazaarConstants.DIFF_CMD};
61 }
62
63 diffCmd = BazaarUtils.expandCommandLine( diffCmd, fileSet );
64 BazaarDiffConsumer consumer = new BazaarDiffConsumer( getLogger(), fileSet.getBasedir() );
65
66 ScmResult result = BazaarUtils.execute( consumer, getLogger(), fileSet.getBasedir(), diffCmd );
67
68 return new DiffScmResult( consumer.getChangedFiles(), consumer.getDifferences(), consumer.getPatch(), result );
69 }
70 }