package TeXLive
// TLCockpit
// Copyright 2017-2018 Norbert Preining
// Licensed according to GPLv3+
//
// Front end for tlmgr

import scala.concurrent.Future
import scala.concurrent.ExecutionContext.Implicits.global
import sys.process._

object OsTools {
 val OS: String = System.getProperty("os.name").map(_.toLower)
 val CygwinRootIsSet: Boolean =
   sys.env.get("CYGWIN_ROOT") match {
     case Some(_) => true
     case None => false
   }
 def isWindows: Boolean = {
   OS.startsWith("windows") && !CygwinRootIsSet
 }
 def isCygwin: Boolean = {
   OS.startsWith("windows") && CygwinRootIsSet
 }
 def isApple: Boolean = {
   OS.startsWith("mac os")
 }
 def isUnix: Boolean = {
   !(isWindows || isApple || isCygwin)
 }

 def openFileCmd(f: String): Seq[String] = {
   val absf = new java.io.File(f).getCanonicalPath
   if (isWindows) {
     Seq("cmd", "/c", "start", absf)
   } else if (isCygwin) {
     Seq("cygstart", absf)
   } else if (isApple) {
     Seq("open", absf)
   } else {
     Seq("xdg-open", absf)
   }
 }

 def openFile(f: String): Unit = {
   val cmd = openFileCmd(f)
   val bar = Future {
     try {
       cmd.!
     } catch {
       case e: Exception => println("Cannot run command: " + cmd + " -- " + e + "\n")
     }
   }
 }
}