this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

cmdliner 2

+78 -74
+2 -1
.devcontainer/setup-ocaml.sh
··· 42 42 alcotest \ 43 43 ctypes \ 44 44 ctypes-foreign \ 45 - lambdasoup 45 + lambdasoup \ 46 + cmarkit 46 47 47 48 echo "Setting up shell environment..." 48 49 echo 'eval $(opam env)' >> ~/.bashrc
+2
CLAUDE.md
··· 1 + This is a monorepo of a collection of OCaml libraries that should all work together, but they are in different stages of porting. Ultimately, the goal is to use Eio for everything and move away from Lwt entirely. For HTTP(S) requests the idea is to use River as the main high evel 'http requests' API, so anything using Cohttp or other HTTP fetchers will need to be ported. 2 +
+1 -1
stack/bushel/bushel.opam
··· 24 24 "peertube" 25 25 "karakeep" 26 26 "typesense-client" 27 - "cmdliner" 27 + "cmdliner" {>= "2.0.0"} 28 28 "odoc" {with-doc} 29 29 ] 30 30 build: [
+1 -1
stack/bushel/dune-project
··· 28 28 peertube 29 29 karakeep 30 30 typesense-client 31 - cmdliner)) 31 + (cmdliner (>= 2.0.0)))) 32 32 33 33 (package 34 34 (name peertube)
+1 -1
stack/cacheio/cacheio.opam
··· 14 14 "ocaml" 15 15 "dune" {>= "3.16"} 16 16 "eio" 17 - "cmdliner" {>= "1.3.0"} 17 + "cmdliner" {>= "2.0.0"} 18 18 "yojson" 19 19 "ptime" 20 20 "logs"
+1 -1
stack/cacheio/dune-project
··· 23 23 ocaml 24 24 dune 25 25 eio 26 - (cmdliner (>= 1.3.0)) 26 + (cmdliner (>= 2.0.0)) 27 27 yojson 28 28 ptime 29 29 logs
+1 -1
stack/crockford/crockford.opam
··· 13 13 "ocaml" {>= "4.14.1"} 14 14 "odoc" {with-doc} 15 15 "alcotest" {with-test & >= "1.9.0"} 16 - "cmdliner" {>= "1.1.0"} 16 + "cmdliner" {>= "2.0.0"} 17 17 ] 18 18 build: [ 19 19 ["dune" "subst"] {dev}
+1 -1
stack/crockford/dune-project
··· 23 23 (ocaml (>= 4.14.1)) 24 24 (odoc :with-doc) 25 25 (alcotest (and :with-test (>= 1.9.0))) 26 - (cmdliner (>= 1.1.0)))) 26 + (cmdliner (>= 2.0.0))))
+1 -1
stack/mltessera/dune-project
··· 14 14 dune 15 15 toru 16 16 lonlat 17 - cmdliner 17 + (cmdliner (>= 2.0.0)) 18 18 eio 19 19 eio_main 20 20 yojson
+1 -1
stack/mltessera/mltessera.opam
··· 11 11 "dune" {>= "3.0"} 12 12 "toru" 13 13 "lonlat" 14 - "cmdliner" 14 + "cmdliner" {>= "2.0.0"} 15 15 "eio" 16 16 "eio_main" 17 17 "yojson"
+4 -4
stack/requests/bin/ocurl.ml
··· 13 13 ("PATCH", `PATCH); 14 14 ] in 15 15 let doc = "HTTP method to use" in 16 - let env = Cmd.Env.info "OCURL_METHOD" in 17 - Arg.(value & opt (enum methods) `GET & info ["X"; "request"] ~env ~docv:"METHOD" ~doc) 16 + let env_info = Cmdliner.Cmd.Env.info "OCURL_METHOD" in 17 + Arg.(value & opt (enum methods) `GET & info ["X"; "request"] ~env:env_info ~docv:"METHOD" ~doc) 18 18 19 19 let urls = 20 20 let doc = "URL(s) to fetch" in ··· 53 53 54 54 let enable_cache = 55 55 let doc = "Enable HTTP response caching for GET and HEAD requests" in 56 - let env = Cmd.Env.info "OCURL_ENABLE_CACHE" in 57 - Arg.(value & flag & info ["enable-cache"] ~env ~doc) 56 + let env_info = Cmdliner.Cmd.Env.info "OCURL_ENABLE_CACHE" in 57 + Arg.(value & flag & info ["enable-cache"] ~env:env_info ~doc) 58 58 59 59 (* Logging setup *) 60 60 (* Setup logging using Logs_cli for standard logging options *)
+19 -19
stack/requests/lib/requests.ml
··· 332 332 let persist_cookies_term app_name = 333 333 let doc = "Persist cookies to disk between sessions" in 334 334 let env_name = String.uppercase_ascii app_name ^ "_PERSIST_COOKIES" in 335 - let env = Cmd.Env.info env_name in 336 - Arg.(value & flag & info ["persist-cookies"] ~env ~doc) 335 + let env_info = Cmdliner.Cmd.Env.info env_name in 336 + Arg.(value & flag & info ["persist-cookies"] ~env:env_info ~doc) 337 337 338 338 let verify_tls_term app_name = 339 339 let doc = "Skip TLS certificate verification (insecure)" in 340 340 let env_name = String.uppercase_ascii app_name ^ "_NO_VERIFY_TLS" in 341 - let env = Cmd.Env.info env_name in 341 + let env_info = Cmdliner.Cmd.Env.info env_name in 342 342 Term.(const (fun no_verify -> not no_verify) $ 343 - Arg.(value & flag & info ["no-verify-tls"] ~env ~doc)) 343 + Arg.(value & flag & info ["no-verify-tls"] ~env:env_info ~doc)) 344 344 345 345 let timeout_term app_name = 346 346 let doc = "Request timeout in seconds" in 347 347 let env_name = String.uppercase_ascii app_name ^ "_TIMEOUT" in 348 - let env = Cmd.Env.info env_name in 349 - Arg.(value & opt (some float) None & info ["timeout"] ~env ~docv:"SECONDS" ~doc) 348 + let env_info = Cmdliner.Cmd.Env.info env_name in 349 + Arg.(value & opt (some float) None & info ["timeout"] ~env:env_info ~docv:"SECONDS" ~doc) 350 350 351 351 let retries_term app_name = 352 352 let doc = "Maximum number of request retries" in 353 353 let env_name = String.uppercase_ascii app_name ^ "_MAX_RETRIES" in 354 - let env = Cmd.Env.info env_name in 355 - Arg.(value & opt int 3 & info ["max-retries"] ~env ~docv:"N" ~doc) 354 + let env_info = Cmdliner.Cmd.Env.info env_name in 355 + Arg.(value & opt int 3 & info ["max-retries"] ~env:env_info ~docv:"N" ~doc) 356 356 357 357 let retry_backoff_term app_name = 358 358 let doc = "Retry backoff factor for exponential delay" in 359 359 let env_name = String.uppercase_ascii app_name ^ "_RETRY_BACKOFF" in 360 - let env = Cmd.Env.info env_name in 361 - Arg.(value & opt float 0.3 & info ["retry-backoff"] ~env ~docv:"FACTOR" ~doc) 360 + let env_info = Cmdliner.Cmd.Env.info env_name in 361 + Arg.(value & opt float 0.3 & info ["retry-backoff"] ~env:env_info ~docv:"FACTOR" ~doc) 362 362 363 363 let follow_redirects_term app_name = 364 364 let doc = "Don't follow HTTP redirects" in 365 365 let env_name = String.uppercase_ascii app_name ^ "_NO_FOLLOW_REDIRECTS" in 366 - let env = Cmd.Env.info env_name in 366 + let env_info = Cmdliner.Cmd.Env.info env_name in 367 367 Term.(const (fun no_follow -> not no_follow) $ 368 - Arg.(value & flag & info ["no-follow-redirects"] ~env ~doc)) 368 + Arg.(value & flag & info ["no-follow-redirects"] ~env:env_info ~doc)) 369 369 370 370 let max_redirects_term app_name = 371 371 let doc = "Maximum number of redirects to follow" in 372 372 let env_name = String.uppercase_ascii app_name ^ "_MAX_REDIRECTS" in 373 - let env = Cmd.Env.info env_name in 374 - Arg.(value & opt int 10 & info ["max-redirects"] ~env ~docv:"N" ~doc) 373 + let env_info = Cmdliner.Cmd.Env.info env_name in 374 + Arg.(value & opt int 10 & info ["max-redirects"] ~env:env_info ~docv:"N" ~doc) 375 375 376 376 let user_agent_term app_name = 377 377 let doc = "User-Agent header to send with requests" in 378 378 let env_name = String.uppercase_ascii app_name ^ "_USER_AGENT" in 379 - let env = Cmd.Env.info env_name in 380 - Arg.(value & opt (some string) None & info ["user-agent"] ~env ~docv:"STRING" ~doc) 379 + let env_info = Cmdliner.Cmd.Env.info env_name in 380 + Arg.(value & opt (some string) None & info ["user-agent"] ~env:env_info ~docv:"STRING" ~doc) 381 381 382 382 (* Combined terms *) 383 383 ··· 399 399 $ max_redirects_term app_name 400 400 $ user_agent_term app_name) 401 401 402 - let requests_term app_name env sw = 403 - let config_t = config_term app_name env#fs in 404 - Term.(const (fun config -> create config env sw) $ config_t) 402 + let requests_term app_name eio_env sw = 403 + let config_t = config_term app_name eio_env#fs in 404 + Term.(const (fun config -> create config eio_env sw) $ config_t) 405 405 406 406 let minimal_term app_name fs = 407 407 let xdg_term = Xdge.Cmd.term app_name fs
+1 -1
stack/river/dune-project
··· 34 34 ptime 35 35 lambdasoup 36 36 uri 37 - cmdliner 37 + (cmdliner (>= 2.0.0)) 38 38 yojson 39 39 fmt 40 40 xdge
+1 -1
stack/river/river.opam
··· 19 19 "ptime" 20 20 "lambdasoup" 21 21 "uri" 22 - "cmdliner" 22 + "cmdliner" {>= "2.0.0"} 23 23 "yojson" 24 24 "fmt" 25 25 "xdge"
+19 -18
stack/toru/bin/toru_cache.ml
··· 498 498 0 499 499 500 500 (* Command definitions *) 501 - let info_cmd_def env sw = 501 + let info_cmd_def eio_env sw = 502 502 let doc = "Show cache statistics and location" in 503 - let term = Term.(const (info_cmd env sw) $ global_opts_term) in 503 + let term = Term.(const (info_cmd eio_env sw) $ global_opts_term) in 504 504 Cmd.v (Cmd.info "info" ~doc) term 505 505 506 - let list_cmd_def env sw = 506 + let list_cmd_def eio_env sw = 507 507 let sort_by = 508 508 let doc = "Sort files by size, age, or name" in 509 509 Arg.(value & opt (enum [("size", `Size); ("age", `Age); ("name", `Name)]) `Name & ··· 519 519 Arg.(value & opt (some int) None & info ["limit"; "n"] ~docv:"N" ~doc) 520 520 in 521 521 let doc = "List cached files with details" in 522 - let term = Term.(const (list_cmd env sw) $ global_opts_term $ sort_by $ format $ limit) in 522 + let term = Term.(const (list_cmd eio_env sw) $ global_opts_term $ sort_by $ format $ limit) in 523 523 Cmd.v (Cmd.info "list" ~doc) term 524 524 525 - let size_cmd_def env sw = 525 + let size_cmd_def eio_env sw = 526 526 let breakdown = 527 527 let doc = "Show size breakdown by file type and age" in 528 528 Arg.(value & flag & info ["breakdown"; "b"] ~doc) ··· 532 532 Arg.(value & flag & info ["human-readable"; "h"] ~doc) 533 533 in 534 534 let doc = "Show cache size information" in 535 - let term = Term.(const (size_cmd env sw) $ global_opts_term $ breakdown $ human_readable) in 535 + let term = Term.(const (size_cmd eio_env sw) $ global_opts_term $ breakdown $ human_readable) in 536 536 Cmd.v (Cmd.info "size" ~doc) term 537 537 538 - let clean_cmd_def env sw = 538 + let clean_cmd_def eio_env sw = 539 539 let max_size = 540 540 let doc = "Remove files to get cache under this size (e.g., 1GB, 500MB)" in 541 541 let parse_size s = 542 542 let s = String.uppercase_ascii s in 543 543 let len = String.length s in 544 - if len < 2 then `Error "Invalid size format" 544 + if len < 2 then Error "Invalid size format" 545 545 else 546 - let (num_str, unit) = 546 + let (num_str, unit) = 547 547 if String.sub s (len-2) 2 = "GB" then 548 548 (String.sub s 0 (len-2), Int64.(mul 1024L (mul 1024L 1024L))) 549 549 else if String.sub s (len-2) 2 = "MB" then ··· 557 557 in 558 558 try 559 559 let num = Float.of_string num_str in 560 - `Ok (Int64.of_float (num *. Int64.to_float unit)) 560 + Ok (Int64.of_float (num *. Int64.to_float unit)) 561 561 with 562 - | _ -> `Error "Invalid number in size" 562 + | _ -> Error "Invalid number in size" 563 563 in 564 - Arg.(value & opt (some (parse_size, fun fmt size -> 565 - Format.fprintf fmt "%Ld" size)) None & info ["max-size"] ~docv:"SIZE" ~doc) 564 + let size_conv = Arg.conv' (parse_size, fun fmt size -> 565 + Format.fprintf fmt "%Ld" size) in 566 + Arg.(value & opt (some size_conv) None & info ["max-size"] ~docv:"SIZE" ~doc) 566 567 in 567 568 let max_age = 568 569 let doc = "Remove files older than this many days" in ··· 573 574 Arg.(value & flag & info ["dry-run"; "n"] ~doc) 574 575 in 575 576 let doc = "Clean cache with various options" in 576 - let term = Term.(const (clean_cmd env sw) $ global_opts_term $ max_size $ max_age $ dry_run) in 577 + let term = Term.(const (clean_cmd eio_env sw) $ global_opts_term $ max_size $ max_age $ dry_run) in 577 578 Cmd.v (Cmd.info "clean" ~doc) term 578 579 579 - let vacuum_cmd_def env sw = 580 + let vacuum_cmd_def eio_env sw = 580 581 let dry_run = 581 582 let doc = "Show what would be removed without actually removing" in 582 583 Arg.(value & flag & info ["dry-run"; "n"] ~doc) 583 584 in 584 585 let doc = "Remove empty directories and broken links" in 585 - let term = Term.(const (vacuum_cmd env sw) $ global_opts_term $ dry_run) in 586 + let term = Term.(const (vacuum_cmd eio_env sw) $ global_opts_term $ dry_run) in 586 587 Cmd.v (Cmd.info "vacuum" ~doc) term 587 588 588 - let main_cmd env sw = 589 + let main_cmd eio_env sw = 589 590 let doc = "Toru cache management tool" in 590 591 let sdocs = Manpage.s_common_options in 591 592 let man = [ ··· 605 606 ] in 606 607 let default = Term.(const 0) in 607 608 Cmd.group ~default (Cmd.info "toru-cache" ~version:"0.1.0" ~doc ~sdocs ~man) 608 - [info_cmd_def env sw; list_cmd_def env sw; size_cmd_def env sw; clean_cmd_def env sw; vacuum_cmd_def env sw] 609 + [info_cmd_def eio_env sw; list_cmd_def eio_env sw; size_cmd_def eio_env sw; clean_cmd_def eio_env sw; vacuum_cmd_def eio_env sw] 609 610 610 611 let () = 611 612 Eio_main.run @@ fun env ->
+13 -13
stack/toru/bin/toru_main.ml
··· 37 37 let resolved_cache_dir = resolve_cache_dir app_name cache_dir in 38 38 { app_name; cache_dir = Some resolved_cache_dir; version; verbose_level; env } 39 39 40 - let global_opts_t env = 40 + let global_opts_t eio_env = 41 41 let app_name = 42 42 let doc = "Application name for cache and config directories" in 43 43 Arg.(value & opt string "toru" & info ["app-name"; "a"] ~doc) ··· 55 55 Arg.(value & flag_all & info ["verbose"; "v"] ~doc) 56 56 in 57 57 Term.(const (fun app_name cache_dir version verbose_flags -> 58 - create_global_opts app_name cache_dir version (List.length verbose_flags) env 58 + create_global_opts app_name cache_dir version (List.length verbose_flags) eio_env 59 59 ) $ app_name $ cache_dir $ version $ verbose_count) 60 60 61 61 (** Registry inspect command *) 62 - let inspect_cmd env = 62 + let inspect_cmd eio_env = 63 63 let registry_source = 64 64 let doc = "Registry file path or URL to inspect" in 65 65 Arg.(required & pos 0 (some string) None & info [] ~docv:"REGISTRY" ~doc) ··· 187 187 | exn -> `Error (false, "Failed to inspect registry: " ^ (Printexc.to_string exn)) 188 188 in 189 189 190 - let term env = Term.(ret (const inspect $ global_opts_t env $ registry_source $ show_stats $ list_files $ search_pattern)) in 190 + let term eio_env = Term.(ret (const inspect $ global_opts_t eio_env $ registry_source $ show_stats $ list_files $ search_pattern)) in 191 191 let info = Cmd.info "inspect" ~doc:"Inspect a registry file or URL" in 192 - Cmd.v info (term env) 192 + Cmd.v info (term eio_env) 193 193 194 194 (** Registry validate command *) 195 - let validate_cmd env = 195 + let validate_cmd eio_env = 196 196 let registry_source = 197 197 let doc = "Registry file path or URL to validate" in 198 198 Arg.(required & pos 0 (some string) None & info [] ~docv:"REGISTRY" ~doc) 199 199 in 200 - 200 + 201 201 let check_hashes = 202 202 let doc = "Check if all hash formats are valid" in 203 203 Arg.(value & flag & info ["check-hashes"] ~doc) 204 204 in 205 - 205 + 206 206 let validate global_opts registry_source check_hashes = 207 207 try 208 208 Toru.Logging.Cli.info (fun m -> m "Validating registry: %s" registry_source); ··· 257 257 | exn -> `Error (false, "Registry validation failed: " ^ (Printexc.to_string exn)) 258 258 in 259 259 260 - let term env = Term.(ret (const validate $ global_opts_t env $ registry_source $ check_hashes)) in 260 + let term eio_env = Term.(ret (const validate $ global_opts_t eio_env $ registry_source $ check_hashes)) in 261 261 let info = Cmd.info "validate" ~doc:"Validate a registry file format and integrity" in 262 - Cmd.v info (term env) 262 + Cmd.v info (term eio_env) 263 263 264 264 (** Registry convert command *) 265 - let convert_cmd env = 265 + let convert_cmd eio_env = 266 266 let input_registry = 267 267 let doc = "Input registry file path or URL" in 268 268 Arg.(required & pos 0 (some string) None & info [] ~docv:"INPUT" ~doc) ··· 301 301 | exn -> `Error (false, "Conversion failed: " ^ (Printexc.to_string exn)) 302 302 in 303 303 304 - let term env = Term.(ret (const convert $ global_opts_t env $ input_registry $ output_file)) in 304 + let term eio_env = Term.(ret (const convert $ global_opts_t eio_env $ input_registry $ output_file)) in 305 305 let info = Cmd.info "convert" ~doc:"Convert registry between different formats or sources" in 306 - Cmd.v info (term env) 306 + Cmd.v info (term eio_env) 307 307 308 308 (** Main command *) 309 309 let main_cmd env =
+2 -2
stack/toru/bin/toru_make_registry_simple.ml
··· 73 73 exit 1 74 74 75 75 (* Command definition *) 76 - let cmd env sw = 76 + let cmd eio_env sw = 77 77 let doc = "Generate Pooch-compatible registry files from directories (simple version)" in 78 78 let info = Cmd.info "toru-make-registry-simple" ~version:"1.0" ~doc in 79 79 80 - Cmd.v info Term.(const (make_registry_main env sw) 80 + Cmd.v info Term.(const (make_registry_main eio_env sw) 81 81 $ directory_arg $ output_arg $ recursive_arg 82 82 $ algorithm_arg $ progress_arg $ const ()) 83 83
+1 -1
stack/toru/dune-project
··· 12 12 (eio (>= 1.0)) 13 13 digestif 14 14 yojson 15 - cmdliner 15 + (cmdliner (>= 2.0.0)) 16 16 progress 17 17 re 18 18 fmt
+4 -4
stack/toru/lib/toru/cmd.ml
··· 73 73 let parse s = 74 74 match String.split_on_char ':' s with 75 75 | [user; pass] -> Ok (user, pass) 76 - | _ -> Error (`Msg "Auth must be username:password") 76 + | _ -> Error "Auth must be username:password" 77 77 in 78 78 let pp fmt (u, p) = Format.fprintf fmt "%s:%s" u p in 79 - let auth_conv = Arg.conv (parse, pp) in 79 + let auth_conv = Arg.conv' (parse, pp) in 80 80 Arg.(value & opt (some auth_conv) None 81 81 & info ["auth"] ~docv:"USER:PASS" ~doc) 82 82 ··· 101 101 | "gunzip" -> Ok `Gunzip 102 102 | "bunzip2" -> Ok `Bunzip2 103 103 | "none" -> Ok `None 104 - | s -> Error (`Msg ("Unknown processor: " ^ s)) 104 + | s -> Error ("Unknown processor: " ^ s) 105 105 in 106 106 let pp fmt = function 107 107 | `Auto -> Format.pp_print_string fmt "auto" ··· 112 112 | `Bunzip2 -> Format.pp_print_string fmt "bunzip2" 113 113 | `None -> Format.pp_print_string fmt "none" 114 114 in 115 - let proc_conv = Arg.conv (parse, pp) in 115 + let proc_conv = Arg.conv' (parse, pp) in 116 116 Arg.(value & opt proc_conv `Auto 117 117 & info ["p"; "processor"] ~docv:"PROC" ~doc) 118 118
+2 -2
stack/zulip/examples/echo_bot.ml
··· 309 309 let verbosity_term = 310 310 Term.(const List.length $ verbosity) 311 311 312 - let bot_cmd env = 312 + let bot_cmd eio_env = 313 313 let doc = "Zulip Echo Bot with verbose logging" in 314 314 let man = [ 315 315 `S Manpage.s_description; ··· 351 351 `P "zulip(1), zulip-bot(1)"; 352 352 ] in 353 353 let info = Cmd.info "echo_bot" ~version:"1.0.0" ~doc ~man in 354 - Cmd.v info Term.(const (run_echo_bot) $ config_file $ verbosity_term $ const env) 354 + Cmd.v info Term.(const (run_echo_bot) $ config_file $ verbosity_term $ const eio_env) 355 355 356 356 let () = 357 357 (* Initialize the cryptographic RNG for the application *)