All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.devonfw.cobigen.cli.utils.CobiGenVersionProvider Maven / Gradle / Ivy

package com.devonfw.cobigen.cli.utils;

import java.io.File;
import java.io.FileReader;
import java.util.ArrayList;
import java.util.List;

import org.apache.maven.model.Dependency;
import org.apache.maven.model.Model;
import org.apache.maven.model.io.xpp3.MavenXpp3Reader;

import com.devonfw.cobigen.impl.config.constant.MavenMetadata;

import picocli.CommandLine.IVersionProvider;

/**
 * This class implement getVersion() and this method returns the version of plug-ins
 */
public class CobiGenVersionProvider implements IVersionProvider {

  @Override
  public String[] getVersion() throws Exception {

    Model model = null;
    List versionProvider = new ArrayList<>();
    MavenXpp3Reader reader = new MavenXpp3Reader();

    File pomFile = CobiGenUtils.extractArtificialPom();

    if (pomFile.exists()) {
      try (FileReader pomReader = new FileReader(pomFile)) {
        model = reader.read(pomReader);
        versionProvider.add("CobiGen CLI " + model.getVersion());
        versionProvider.add("");
      }
    } else {
      versionProvider.add("Error while retrieving CLI version. Pom.xml was not found on your PC. This is a bug");
      return versionProvider.toArray(new String[versionProvider.size()]);
    }

    List modelDependencies = model.getDependencies();

    for (int i = 0; i < modelDependencies.size(); i++) {
      String artifactId = modelDependencies.get(i).getArtifactId();
      String version = modelDependencies.get(i).getVersion();

      if (dependencyShouldBePrinted(modelDependencies.get(i).getGroupId())) {
        versionProvider.add("Plugin: " + artifactId + " " + version);
      }
    }
    return versionProvider.toArray(new String[versionProvider.size()]);
  }

  /**
   * This method checks which artifacts are related to CobiGen. If so, returns true. This is useful for just printing
   * CobiGen related plug-ins to user
   *
   * @param groupId group id to check whether it is CobiGen related
   * @return true if group id is related to CobiGen
   *
   */
  private Boolean dependencyShouldBePrinted(String groupId) {

    if (MavenMetadata.GROUPID.equals(groupId)) {
      return true;
    }
    return false;
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy