git.delta.rocks / jrsonnet / refs/commits / 44b319515dd1

difftreelog

feat add ability to change OS stack size

Лач2020-07-01parent: #230dbe5.patch.diff
in: master

1 file changed

modifiedcmds/jrsonnet/src/main.rsdiffbeforeafterboth
99 )]99 )]
100 max_trace: usize,100 max_trace: usize,
101
102 #[clap(
103 long,
104 about = "Required os stack size, probally you shouldn't change it"
105 )]
106 thread_stack_size: Option<usize>,
101107
102 #[clap(long, short = "J", about = "Library search dir")]108 #[clap(long, short = "J", about = "Library search dir")]
103 jpath: Vec<PathBuf>,109 jpath: Vec<PathBuf>,
113 input: String,119 input: String,
114}120}
121
122fn main() {
123 let opts: Opts = Opts::parse();
124 if let Some(size) = opts.thread_stack_size {
125 std::thread::Builder::new()
126 .stack_size(size * 1024 * 1024)
127 .spawn(|| main_real(opts))
128 .unwrap()
129 .join()
130 .unwrap();
131 } else {
132 main_real(opts)
133 }
134}
115135
116fn main() {136fn main_real(opts: Opts) {
117 let opts: Opts = Opts::parse();
118 let evaluator = jrsonnet_evaluator::EvaluationState::default();137 let evaluator = jrsonnet_evaluator::EvaluationState::default();
119 evaluator.set_max_trace(opts.max_trace);138 evaluator.set_max_trace(opts.max_trace);
120 evaluator.set_max_stack(opts.max_stack);139 evaluator.set_max_stack(opts.max_stack);
198 std::process::exit(1);217 std::process::exit(1);
199 }218 }
200 }219 }
201}220}
202221
203fn print_error(err: &LocError, evaluator: EvaluationState, opts: &Opts) {222fn print_error(err: &LocError, evaluator: EvaluationState, opts: &Opts) {
204 println!("Error: {:?}", err.0);223 println!("Error: {:?}", err.0);