PoC
This commit is contained in:
parent
34a9c3f864
commit
551e5a7851
4 changed files with 163 additions and 33 deletions
32
src/main.rs
32
src/main.rs
|
|
@ -1,8 +1,7 @@
|
|||
use std::{error::Error as StdError, sync::Arc};
|
||||
use std::io::{self, IsTerminal};
|
||||
use std::path::Path;
|
||||
use std::process::ExitCode;
|
||||
|
||||
use std::{error::Error as StdError, sync::Arc};
|
||||
|
||||
use append_override::source::SourceFile;
|
||||
use clap::{ColorChoice, Parser as _};
|
||||
|
|
@ -28,31 +27,28 @@ fn main_wrapped() -> Result<(), Box<dyn StdError + Send + Sync + 'static>> {
|
|||
let def_path = append_override::get_where(&args.name, filepath)?;
|
||||
let def_path = Arc::from(def_path);
|
||||
let mut opts = File::options();
|
||||
opts
|
||||
.read(true)
|
||||
opts.read(true)
|
||||
.write(true)
|
||||
.create(false)
|
||||
.custom_flags(libc::O_CLOEXEC);
|
||||
let source_file = SourceFile::open_from(Arc::clone(&def_path), opts)?;
|
||||
|
||||
let last_def_line = append_override::get_highest_prio(&args.name, source_file.clone())?;
|
||||
let pri: i64 = {
|
||||
let text = last_def_line.text();
|
||||
let pat = "lib.mkOverride (";
|
||||
let start = text.find(pat).unwrap();
|
||||
let substr = &text[start..];
|
||||
let substr = substr.strip_prefix(pat).unwrap();
|
||||
let end_paren = substr.find(")").unwrap();
|
||||
let final_num = &substr[..end_paren];
|
||||
|
||||
final_num.parse().unwrap()
|
||||
};
|
||||
let (pri, last_def_line) = append_override::get_highest_prio(&args.name, source_file.clone())?;
|
||||
let new_pri = pri - 1;
|
||||
|
||||
eprintln!("{last_def_line}");
|
||||
|
||||
dbg!(&pri);
|
||||
let new_pri_line = append_override::get_next_prio_line(
|
||||
source_file.clone(),
|
||||
args.name.into(),
|
||||
last_def_line.clone(),
|
||||
new_pri,
|
||||
args.value.into(),
|
||||
)?;
|
||||
|
||||
append_override::write_next_prio(source_file, last_def_line, pri, pri - 1)?;
|
||||
eprintln!("new_pri_line={new_pri_line}");
|
||||
|
||||
append_override::write_next_prio(source_file, last_def_line, new_pri_line.text())?;
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue