package com.neverwinterdp.scribengin;

import com.neverwinterdp.registry.Registry;
import com.neverwinterdp.registry.RegistryConfig;
import com.neverwinterdp.registry.zk.RegistryImpl;
import com.neverwinterdp.scribengin.shell.ScribenginShell;
import com.neverwinterdp.vm.HadoopProperties;
import com.neverwinterdp.vm.VMConfig;
import com.neverwinterdp.vm.client.VMClient;
import com.neverwinterdp.vm.client.YarnVMClient;

public class ShellMain {
  static public void main(String[] args) throws Exception {
    System.setProperty("HADOOP_USER_NAME", "neverwinterdp"); 
    if((args.length > 0 && args[0].equals("help")) || args.length < 1){
      if(args.length < 1){
        args = new String[]{"help"};
      }
      Registry registry = new RegistryImpl();
      VMClient vmClient = new VMClient(registry);
      ScribenginShell shell = new ScribenginShell(vmClient) ;
      shell.execute(args);
      return;
    }
    String zkConnect = System.getProperty("shell.zk-connect");
    RegistryConfig registryConfig = RegistryConfig.getDefault();
    registryConfig.setConnect(zkConnect);
    Registry registry = null;
    try{
      registry = new RegistryImpl(registryConfig).connect();
    } catch(Exception e){
      System.err.println("Could not connect to the registry at: "+ registryConfig.getConnect()+"\n"+e.getMessage());
      return;
    }
    
    String hadoopMaster = System.getProperty("shell.hadoop-master");
    HadoopProperties hadoopProps = new HadoopProperties() ;
    hadoopProps.put("yarn.resourcemanager.address", hadoopMaster + ":8032");
    hadoopProps.put("fs.defaultFS", "hdfs://" + hadoopMaster +":9000");
    
    YarnVMClient vmClient = new YarnVMClient(registry, VMConfig.ClusterEnvironment.YARN, hadoopProps) ;
    ScribenginShell shell = new ScribenginShell(vmClient) ;
    shell.attribute(HadoopProperties.class, hadoopProps);
    shell.execute(args);
  }
}
Implement V2