Skip to main content

start_command/
mod.rs

1//! start-command library
2//!
3//! Provides command execution with isolation, substitution, and failure handling.
4
5pub mod args_parser;
6pub(crate) mod docker_cleanup;
7mod docker_network_lifecycle;
8pub mod execution_control;
9pub mod execution_store;
10pub mod failure_handler;
11pub mod isolation;
12pub mod isolation_metadata;
13pub mod log_uploader;
14pub mod output_blocks;
15pub mod sequence_parser;
16pub mod signal_handler;
17pub mod status_formatter;
18pub mod substitution;
19pub mod usage;
20pub mod user_manager;
21
22mod lino_value_json;
23mod local_hostname;
24
25// Re-export commonly used items
26pub use args_parser::{
27    generate_session_name, generate_uuid, get_effective_mode, has_isolation, is_valid_uuid,
28    parse_args, validate_options, ParsedArgs, WrapperOptions, VALID_BACKENDS, VALID_OUTPUT_FORMATS,
29    VALID_SHELLS,
30};
31pub use execution_control::{
32    collect_descendant_pids, collect_descendant_pids_with_runner, collect_process_ids,
33    collect_process_ids_with_runner, control_execution, control_execution_with_runner,
34    format_control_result_as_links_notation, get_control_command, parse_screen_pid,
35    CommandRunOutput, CommandRunner, ControlAction, ControlCommand, ExecutionControlResult,
36    SystemCommandRunner,
37};
38pub use execution_store::{
39    is_clink_installed, CleanupOptions, CleanupResult, ExecutionRecord, ExecutionRecordOptions,
40    ExecutionStats, ExecutionStatus, ExecutionStore, ExecutionStoreOptions,
41};
42pub use failure_handler::{handle_failure, Config as FailureConfig};
43pub use isolation::{
44    append_log_file, build_shell_with_args_cmd_args, create_log_footer, create_log_header,
45    create_log_path, create_log_path_for_execution, docker_image_exists, docker_pull_image,
46    get_default_docker_image, get_timestamp, is_command_available, is_interactive_shell_command,
47    is_shell_invocation_with_args, run_as_isolated_user, run_isolated, write_log_file,
48    IsolationOptions, IsolationResult, LogHeaderParams,
49};
50pub use isolation_metadata::{
51    build_isolation_options_map, docker_runtime_metadata, docker_runtime_status_lines,
52    docker_runtime_status_lines_for_options,
53};
54pub use log_uploader::upload_execution_log;
55#[allow(deprecated)]
56pub use output_blocks::{
57    // Timeline format API (formerly "status spine")
58    create_command_line,
59    create_empty_spine_line, // deprecated, use create_empty_timeline_line
60    create_empty_timeline_line,
61    create_finish_block,
62    create_spine_line, // deprecated, use create_timeline_line
63    create_start_block,
64    create_timeline_line,
65    create_timeline_separator,
66    create_virtual_command_block,
67    create_virtual_command_result,
68    escape_for_links_notation,
69    format_duration,
70    format_value_for_links_notation,
71    generate_isolation_lines,
72    get_result_marker,
73    parse_isolation_metadata,
74    FinishBlockOptions,
75    IsolationMetadata,
76    StartBlockOptions,
77    FAILURE_MARKER,
78    SPINE, // deprecated, use TIMELINE_MARKER
79    SUCCESS_MARKER,
80    TIMELINE_MARKER,
81};
82pub use signal_handler::{
83    clear_current_execution, get_signal_exit_code, set_current_execution, setup_signal_handlers,
84    was_signal_received,
85};
86pub use status_formatter::{
87    attach_current_time, enrich_detached_status, format_record, format_record_as_links_notation,
88    format_record_as_links_notation_with_current_time, format_record_as_text,
89    format_record_as_text_with_current_time, format_record_list,
90    format_record_list_as_links_notation, format_record_list_as_text,
91    format_record_with_current_time, is_detached_session_alive, list_executions, query_status,
92    read_exit_code_from_log, StatusQueryResult,
93};
94pub use substitution::{process_command, ProcessOptions, SubstitutionResult};
95pub use usage::print_usage;
96pub use user_manager::{
97    create_isolated_user, delete_user, get_current_user, get_current_user_groups, has_sudo_access,
98    CreateIsolatedUserOptions, DeleteUserOptions, UserOperationResult,
99};