Package org.sonatype.maven.polyglot.cli

Source Code of org.sonatype.maven.polyglot.cli.TeslaTranslatorCli

/**
* Copyright (c) 2012 to original author or authors
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*/
package org.sonatype.maven.polyglot.cli;

import java.io.File;
import java.io.IOException;
import java.net.URL;

import org.codehaus.plexus.ContainerConfiguration;
import org.codehaus.plexus.DefaultContainerConfiguration;
import org.codehaus.plexus.DefaultPlexusContainer;
import org.codehaus.plexus.classworlds.ClassWorld;
import org.sonatype.maven.polyglot.TeslaModelTranslator;

public class TeslaTranslatorCli {
  private final DefaultPlexusContainer container;

  private final TeslaModelTranslator translator;

  public TeslaTranslatorCli(ClassWorld classWorld) throws Exception {
    if (classWorld == null) {
      classWorld = new ClassWorld("plexus.core", Thread.currentThread().getContextClassLoader());
    }

    ContainerConfiguration cc = new DefaultContainerConfiguration()
      .setClassWorld(classWorld)
      .setName("translator");

    container = new DefaultPlexusContainer(cc);
    translator = container.lookup(TeslaModelTranslator.class);
  }

  public TeslaTranslatorCli() throws Exception {
    this(null);
  }

  public int run(final String[] args) throws Exception {
    if (args == null || args.length != 2) {
      System.out.println("usage: translate <input-file> <output-file>");
      return -1;
    }

    File input = new File(args[0]).getCanonicalFile();
    File output = new File(args[1]).getCanonicalFile();

    System.out.println("Translating " + input + " -> " + output);

    translate(input, output);

    return 0;
  }

  public void translate(final File input, final File output) throws IOException {
    assert input != null;
    assert output != null;

    translate(input.toURI().toURL(), output.toURI().toURL());
  }

  public void translate(final URL input, final URL output) throws IOException {
    assert input != null;
    assert output != null;

    translator.translate(input, output);
  }

  public static void main(final String[] args) throws Exception {
    int result = main(args, null);
    System.exit(result);
  }

  public static int main(final String[] args, final ClassWorld classWorld) throws Exception {
    assert classWorld != null;
    return new TeslaTranslatorCli(classWorld).run(args);
  }
}
TOP

Related Classes of org.sonatype.maven.polyglot.cli.TeslaTranslatorCli

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.