#!/opt/local/var/macports/build/janet-spork-71056fe1/work/destroot/opt/local/bin/janet
#!/usr/bin/env janet
(put root-env :syspath "/opt/local/var/macports/build/janet-spork-71056fe1/work/destroot/opt/local/lib/jpm")

(import spork/fmt)
(import spork/argparse)

(defn- main
  [&]

  (def ap
   (argparse/argparse
    "Format Janet source code in files and write output to those files."

    :default
    {:kind :accumulate
     :help "Files to format"}

    "files"
    {:short "f"
     :help "Format a list of source files."
     :kind :flag}

    "output"
    {:short "o"
     :kind :option
     :help "Where to direct output to. By default, output goes to stdout."}

    "input"
    {:short "i"
     :kind :option
     :help "Read from an input file"}))

  # Break on help text
  (unless ap (break))

  (if (or (ap "files") (ap :default))
    (each file (ap :default)
      (eprint "formatting " file "...")
      (fmt/format-file file))
    (if-let [ofile (ap "output")]
      (with [output (file/open ofile :wb)]
        (if-let [ifile (ap "input")]
          (xprin output (fmt/format (slurp ifile)))
          (xprin output (fmt/format (file/read stdin :all)))))
      (if-let [ifile (ap "input")]
        (prin (fmt/format (slurp ifile)))
        (prin (fmt/format (file/read stdin :all)))))))
