///|

///|
fn is_moon_run_program(arg : String) -> Bool {
  arg == "cmd/main" ||
  arg.has_suffix("cmd/main/main.js") ||
  arg.has_suffix("\\cmd\\main\\main.js")
}

///|
fn cli_query(args : Array[String]) -> (String, String)? {
  let moon_run_offset = if args.length() >= 2 && is_moon_run_program(args[1]) {
    1
  } else {
    0
  }
  let pattern_index = 1 + moon_run_offset
  if args.length() <= pattern_index {
    None
  } else {
    let dir_index = pattern_index + 1
    let dir = if args.length() > dir_index { args[dir_index] } else { "." }
    Some((args[pattern_index], dir))
  }
}

///|
fn main {
  let args = @env.args()
  match cli_query(args) {
    None => println("Usage: moon run cmd/main  [directory]")
    Some((pattern, dir)) =>
      match @glob.glob(dir, pattern) {
        Ok(paths) =>
          if paths.is_empty() {
            println("No matching files found.")
          } else {
            paths.sort()
            for path in paths {
              println(path)
            }
          }
        Err(err) => println("Error: \{err}")
      }
  }
}