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}