///|
/// describe(jumbit 扩展):为已记录条目设置/清除/显示人工标注。
/// 路径对齐 remove 的双重尝试:先原串,未中再按 cwd 规范化
async fn run_describe(
  dopts : @cli.DescribeOptions,
  getenv : (String) -> String?,
  errs : Array[String],
) -> Int {
  let data_dir = match cfg(@config.data_dir(getenv), errs) {
    Some(data_dir) => data_dir
    None => return 1
  }
  let store = match open_store(data_dir, errs) {
    Some(s) => s
    None => return 1
  }
  let cwd = match @env.current_dir() {
    Some(d) => d
    None => "/"
  }
  let db = store.database()
  match dopts.note {
    Some(text) => {
      // 空串即清除
      let note = if text == "" { None } else { Some(text) }
      let ok = try_twice(db, dopts.path, cwd, fn(db, p) { db.set_note(p, note) })
      if !ok {
        err_line(errs, "path not found in database: \{dopts.path}")
        return 1
      }
    }
    None => {
      let i = match find_twice(db, dopts.path, cwd) {
        Some(i) => i
        None => {
          err_line(errs, "path not found in database: \{dopts.path}")
          return 1
        }
      }
      match db.all()[i].note {
        Some(text) => println(text)
        None => {
          err_line(errs, "jumbit: no note found for \{dopts.path}")
          return 1
        }
      }
    }
  }
  finish(store, errs, 0)
}