enable starting hx with a working directory (#8223)

* added working path arg to cli and help menu

* improve working path cli arg handling

* enable hx to set the working path

* applied cargo formatting

* improved code from cargo clippy suggestion

* improved code from follow up review

* fix for -w <path> is set but args.files is empty

* improved formatting of --help output
pull/8473/head
Lloyd Bond 1 year ago committed by GitHub
parent 1756ba4436
commit 75c0a5ceb3
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -156,6 +156,9 @@ impl Application {
let editor_view = Box::new(ui::EditorView::new(Keymaps::new(keys))); let editor_view = Box::new(ui::EditorView::new(Keymaps::new(keys)));
compositor.push(editor_view); compositor.push(editor_view);
if let Some(path) = args.working_directory {
helix_loader::set_current_working_dir(path)?
}
if args.load_tutor { if args.load_tutor {
let path = helix_loader::runtime_file(Path::new("tutor")); let path = helix_loader::runtime_file(Path::new("tutor"));
editor.open(&path, Action::VerticalSplit)?; editor.open(&path, Action::VerticalSplit)?;

@ -17,6 +17,7 @@ pub struct Args {
pub log_file: Option<PathBuf>, pub log_file: Option<PathBuf>,
pub config_file: Option<PathBuf>, pub config_file: Option<PathBuf>,
pub files: Vec<(PathBuf, Position)>, pub files: Vec<(PathBuf, Position)>,
pub working_directory: Option<PathBuf>,
} }
impl Args { impl Args {
@ -59,6 +60,20 @@ impl Args {
Some(path) => args.log_file = Some(path.into()), Some(path) => args.log_file = Some(path.into()),
None => anyhow::bail!("--log must specify a path to write"), None => anyhow::bail!("--log must specify a path to write"),
}, },
"-w" | "--working-dir" => match argv.next().as_deref() {
Some(path) => {
args.working_directory = if Path::new(path).is_dir() {
Some(PathBuf::from(path))
} else {
anyhow::bail!(
"--working-dir specified does not exist or is not a directory"
)
}
}
None => {
anyhow::bail!("--working-dir must specify an initial working directory")
}
},
arg if arg.starts_with("--") => { arg if arg.starts_with("--") => {
anyhow::bail!("unexpected double dash argument: {}", arg) anyhow::bail!("unexpected double dash argument: {}", arg)
} }

@ -66,6 +66,7 @@ FLAGS:
-V, --version Prints version information -V, --version Prints version information
--vsplit Splits all given files vertically into different windows --vsplit Splits all given files vertically into different windows
--hsplit Splits all given files horizontally into different windows --hsplit Splits all given files horizontally into different windows
-w, --working-dir <path> Specify an initial working directory
", ",
env!("CARGO_PKG_NAME"), env!("CARGO_PKG_NAME"),
VERSION_AND_GIT_HASH, VERSION_AND_GIT_HASH,

Loading…
Cancel
Save