packages feed

hsc3-utils-0.15: hs/scsyndef-to-dot.hs

import Control.Monad {- base -}
import System.Environment {- base -}
import System.FilePath {- filepath -}
import System.Process {- process -}

import qualified Sound.SC3.Server.Graphdef as R {- hsc3 -}
import qualified Sound.SC3.Server.Graphdef.Read as R {- hsc3 -}

import Sound.SC3.UGen.Dot {- hsc3-dot -}
import qualified Sound.SC3.UGen.Dot.Internal as D

scsyndef_to_dot :: Bool -> FilePath -> IO ()
scsyndef_to_dot opt sy_nm = do
  gr <- R.read_graphdef_file sy_nm
  let dot_nm = replaceExtension sy_nm "dot"
      svg_nm = replaceExtension sy_nm "svg"
      (_,gr') = R.graphdef_to_graph gr
      dr = D.dotGraph svg_options gr'
  writeFile dot_nm dr
  when opt (void (rawSystem "dot" ["-T","svg",dot_nm,"-o",svg_nm]))
  return ()

main :: IO ()
main = do
  arg <- getArgs
  case arg of
    [] -> putStrLn "scsyndef-to-dot [-svg] file..."
    "-svg":nm -> mapM_ (scsyndef_to_dot True) nm
    nm -> mapM_ (scsyndef_to_dot False) nm