View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    * or more contributor license agreements.  See the NOTICE file
4    * distributed with this work for additional information
5    * regarding copyright ownership.  The ASF licenses this file
6    * to you under the Apache License, Version 2.0 (the
7    * "License"); you may not use this file except in compliance
8    * with the License.  You may obtain a copy of the License at
9    *
10   *   http://www.apache.org/licenses/LICENSE-2.0
11   *
12   * Unless required by applicable law or agreed to in writing,
13   * software distributed under the License is distributed on an
14   * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   * KIND, either express or implied.  See the License for the
16   * specific language governing permissions and limitations
17   * under the License.
18   */
19  package org.apache.maven.scm.provider.git.gitexe.command.info;
20  
21  import java.util.ArrayList;
22  import java.util.List;
23  
24  import org.apache.commons.lang3.StringUtils;
25  import org.apache.maven.scm.ScmFileSet;
26  import org.apache.maven.scm.command.info.InfoItem;
27  import org.apache.maven.scm.util.AbstractConsumer;
28  
29  /**
30   * @author Olivier Lamy
31   * @since 1.5
32   */
33  public class GitInfoConsumer extends AbstractConsumer {
34  
35      // $ git show
36      // commit cd3c0dfacb65955e6fbb35c56cc5b1bf8ce4f767
37  
38      private final List<InfoItem> infoItems = new ArrayList<>(1);
39  
40      private final ScmFileSet scmFileSet;
41  
42      public GitInfoConsumer(ScmFileSet scmFileSet) {
43          this.scmFileSet = scmFileSet;
44      }
45  
46      /**
47       * @see org.codehaus.plexus.util.cli.StreamConsumer#consumeLine(java.lang.String)
48       */
49      public void consumeLine(String line) {
50          if (logger.isDebugEnabled()) {
51              logger.debug("consume line " + line);
52          }
53  
54          if (infoItems.isEmpty()) {
55              if (!(line == null || line.isEmpty())) {
56                  InfoItem infoItem = new InfoItem();
57                  infoItem.setRevision(StringUtils.trim(line));
58                  infoItem.setURL(scmFileSet.getBasedir().toPath().toUri().toASCIIString());
59                  infoItems.add(infoItem);
60              }
61          }
62      }
63  
64      public List<InfoItem> getInfoItems() {
65          return infoItems;
66      }
67  }