///|
fn main {
  let args = @env.args()

  if args.length() < 5 {
    print_usage()
    return
  }

  let mut rule_file = ""
  let mut target_file = ""

  let mut i = 1
  while i < args.length() {
    if args[i] == "-r" && i + 1 < args.length() {
      rule_file = args[i + 1]
      i += 2
    } else if args[i] == "-f" && i + 1 < args.length() {
      target_file = args[i + 1]
      i += 2
    } else {
      i += 1
    }
  }

  if rule_file == "" || target_file == "" {
    print_usage()
    return
  }

  try {
    println("Loading YARA rules from: " + rule_file)
    let rules_content = @fs.read_file_to_string(rule_file)
    let compiled = @src.compile_rules(rules_content)

    println("Scanning target file: " + target_file)
    let target_bytes = @fs.read_file_to_bytes(target_file)
    let matches = @src.scan_bytes(compiled, target_bytes)

    if matches.length() == 0 {
      println("Verdict: [CLEAN] No malicious signatures found.")
    } else {
      println("Verdict: [ALERT] Malicious signatures found!")
      for m in matches {
        println("  Rule matched: " + m.rule_name)
        for detail in m.matches {
          let (var_name, offset) = detail
          println("    Match: " + var_name + " at offset " + offset.to_string())
        }
      }
    }
  } catch {
    e => println("Error during scanning: " + e.to_string())
  }
}

///|
fn print_usage() -> Unit {
  println("MoonYara CLI — Threat Signature Matching Engine")
  println("Usage:")
  println("  moon run cmd/main -- -r  -f ")
}