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

com.google.sitebricks.cloud.Init Maven / Gradle / Ivy

The newest version!
package com.google.sitebricks.cloud;


import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author [email protected] (Dhanji R. Prasanna)
 */
public class Init implements Command {

  @Override
  public void run(List commands, Config config) throws Exception {
    Logger log = LoggerFactory.getLogger("init");

    if (commands.size() < 2) {
      Cloud.quit("Usage: sitebricks init ");
    }

    File pomXml = new File("pom.xml");
    if (pomXml.exists() && !config.force()) {
      log.info("pom.xml already exists. cannot proceed");
      System.exit(1);
    }

    Map properties = new HashMap();
    properties.put("packaging", "jar");
    properties.put("javaVersion", "1.6");
    properties.put("useMavenPaths", false);

    String projectName = commands.get(1);
    String group;
    if (projectName.contains(":")) {
      String[] split = projectName.split(":");
      if (split.length < 3)
        Cloud.quit("Malformed project id (must be groupId:artifactId:version): " + projectName);

      group = split[0];
      properties.put("projectGroup", group);
      properties.put("projectName", projectName = split[1]);
      properties.put("projectVersion", split[2]);
    } else {
      properties.put("projectGroup", group = "org.sitebricks");
      properties.put("projectName", projectName);
      properties.put("projectVersion", "1.0");
    }

    String cleanedProjectName = projectName.replaceAll("[\\-.:]", "");
    properties.put("cleanedProjectName", cleanedProjectName);

    log.info("creating project structure");
    Cloud.mkdir("config");
    Cloud.mkdir("src");
    Cloud.mkdir("test");
    Cloud.mkdir("resources");
    String packagePath = group.replace(".", "/") + '/' + cleanedProjectName;
    Cloud.mkdir("src/" + packagePath);
    Cloud.mkdir("test/" + packagePath);

    properties.put("packagePath", packagePath);
    properties.put("projectPackage", group + '.' + cleanedProjectName);

    properties.put("deps", new Mixin().run(commands, properties));
    // Write new pom.xml
    Cloud.writeTemplate("pom.xml", properties);
    Cloud.writeTemplate("logback.xml", "resources/logback.xml", properties);
    log.info("project initialized. Next, run 'sitebricks'");
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy