///|
fn collect_input(args : ArrayView[String]) -> String {
  let output = StringBuilder::new()
  for i in 0.. 0 {
      output.write_char(' ')
    }
    output.write_string(args[i])
  }
  output.to_string()
}

///|
fn main {
  let args = @env.args()
  let check_only = args.length() > 1 && args[1] == "--check"
  let input_args = if check_only { args[2:] } else { args[1:] }
  if input_args.is_empty() {
    println("用法: moon run cmd/format -- [--check] ")
    return
  }
  let input = collect_input(input_args)
  let document = @parser.parse(input) catch {
    error => {
      println("解析失败: \{error}")
      return
    }
  }
  let formatted = @printer.print(document)
  if check_only {
    if formatted == input {
      println("格式检查通过")
    } else {
      println("格式检查失败,格式化结果如下:")
      println(formatted)
    }
  } else {
    println(formatted)
  }
}