code wiki / (root) / nx_code_index_cli.nx

nx_code_index_cli.nx source

↩ module page · 66 lines · 2170 B

1// nx_code_index_cli.nx -- CLI for the e3 semantic organ index (core = nx_code_index.nx). 2// usage: nx_code_index_cli build <listfile> <store> <port> 3// nx_code_index_cli query <store> <port> "<text>" 4// license_tier: ORIGINAL expect_exit: 0 5import "nx_code_index.nx" 6 7func main(argc: i64, argv: *i64) -> i64 { 8 if argc < 4 { 9 ci_ws("usage: nx_code_index_cli build <listfile> <store> <port> | query <store> <port> <text>\n" as *u8) 10 sys_exit(2) 11 return 2 12 } 13 let a1: i64 = argv[1] 14 let mode: *u8 = a1 as *u8 15 if std_streq(mode, "build" as *u8) == 1 { 16 if argc < 5 { 17 ci_ws("build needs <listfile> <store> <port>\n" as *u8) 18 sys_exit(2) 19 return 2 20 } 21 let a2: i64 = argv[2] 22 let a3: i64 = argv[3] 23 let a4: i64 = argv[4] 24 let port: i64 = std_atoi(a4 as *u8) 25 let added: i64 = ci_index_list(port, a3 as *u8, a2 as *u8) 26 let total: i64 = ci_store_count(a3 as *u8) 27 ci_ws("[ci] build done " as *u8) 28 ci_kv("added" as *u8, added) 29 ci_kv("total" as *u8, total) 30 ci_ws("\n" as *u8) 31 if added < 0 { sys_exit(1); return 1 } 32 sys_exit(0) 33 return 0 34 } 35 if std_streq(mode, "query" as *u8) == 1 { 36 if argc < 5 { 37 ci_ws("query needs <store> <port> <text>\n" as *u8) 38 sys_exit(2) 39 return 2 40 } 41 let a2: i64 = argv[2] 42 let a3: i64 = argv[3] 43 let a4: i64 = argv[4] 44 let port: i64 = std_atoi(a3 as *u8) 45 let nameb: *u8 = sys_mmap(CI_NAMECAP) as *u8 46 let pmo: *i64 = sys_mmap(8) as *i64 47 let cnt: i64 = ci_query_top1(port, a2 as *u8, a4 as *u8, nameb, pmo) 48 if cnt < 1 { 49 ci_ws("[ci] query FAILED " as *u8) 50 ci_kv("rc" as *u8, cnt) 51 ci_ws("\n" as *u8) 52 sys_exit(1) 53 return 1 54 } 55 ci_ws("[ci] TOP1 " as *u8) 56 ci_ws(nameb) 57 ci_kv(" pm" as *u8, pmo[0]) 58 ci_kv("of" as *u8, cnt) 59 ci_ws("\n" as *u8) 60 sys_exit(0) 61 return 0 62 } 63 ci_ws("unknown mode\n" as *u8) 64 sys_exit(2) 65 return 2 66}