feat(cli): add source directory support to config loading and decryption functions
This commit is contained in:
parent
8808a7fc89
commit
a7548dc356
5 changed files with 18 additions and 16 deletions
|
|
@ -436,7 +436,12 @@ pub fn run(config_path: Option<PathBuf>, dry_run: bool, prune: bool) -> anyhow::
|
||||||
.collect();
|
.collect();
|
||||||
|
|
||||||
let mut template_vars = evaluator.get_template_variables();
|
let mut template_vars = evaluator.get_template_variables();
|
||||||
super::decrypt_encrypted_vars(&result, &config, &mut template_vars)?;
|
super::decrypt_encrypted_vars_with_source_dir(
|
||||||
|
&result,
|
||||||
|
&config,
|
||||||
|
&mut template_vars,
|
||||||
|
Some(&source_dir),
|
||||||
|
)?;
|
||||||
let deployer = Deployer::new(config, result.sandbox, Some(&template_vars));
|
let deployer = Deployer::new(config, result.sandbox, Some(&template_vars));
|
||||||
|
|
||||||
let progress = if !dry_run {
|
let progress = if !dry_run {
|
||||||
|
|
|
||||||
|
|
@ -28,9 +28,14 @@ pub fn run(
|
||||||
let mut evaluator = Evaluator::new().with_source_dir(source_dir.clone());
|
let mut evaluator = Evaluator::new().with_source_dir(source_dir.clone());
|
||||||
let result = evaluator.eval_sync(&program)?;
|
let result = evaluator.eval_sync(&program)?;
|
||||||
let mut template_vars = evaluator.get_template_variables();
|
let mut template_vars = evaluator.get_template_variables();
|
||||||
let config = Config::default();
|
let config = Config::new(source_dir.clone());
|
||||||
|
|
||||||
super::decrypt_encrypted_vars(&result, &config, &mut template_vars)?;
|
super::decrypt_encrypted_vars_with_source_dir(
|
||||||
|
&result,
|
||||||
|
&config,
|
||||||
|
&mut template_vars,
|
||||||
|
Some(&source_dir),
|
||||||
|
)?;
|
||||||
let state = StateStore::new(&config.state_file);
|
let state = StateStore::new(&config.state_file);
|
||||||
|
|
||||||
let target_path = expand_tilde(&target);
|
let target_path = expand_tilde(&target);
|
||||||
|
|
|
||||||
|
|
@ -108,16 +108,6 @@ pub fn type_check(
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Decrypts encrypted vars and files from `EvalResult` and inserts them into template variables
|
|
||||||
/// as `Value::Struct("encrypted", { KEY: "plaintext", ... })`.
|
|
||||||
pub fn decrypt_encrypted_vars(
|
|
||||||
result: &EvalResult,
|
|
||||||
config: &Config,
|
|
||||||
template_vars: &mut HashMap<String, Value>,
|
|
||||||
) -> anyhow::Result<()> {
|
|
||||||
decrypt_encrypted_vars_with_source_dir(result, config, template_vars, None)
|
|
||||||
}
|
|
||||||
|
|
||||||
/// Decrypts encrypted vars and files, resolving file paths relative to `source_dir`.
|
/// Decrypts encrypted vars and files, resolving file paths relative to `source_dir`.
|
||||||
pub fn decrypt_encrypted_vars_with_source_dir(
|
pub fn decrypt_encrypted_vars_with_source_dir(
|
||||||
result: &EvalResult,
|
result: &EvalResult,
|
||||||
|
|
|
||||||
|
|
@ -122,7 +122,7 @@ impl App {
|
||||||
let mut evaluator = Evaluator::new().with_source_dir(source_dir.clone());
|
let mut evaluator = Evaluator::new().with_source_dir(source_dir.clone());
|
||||||
let result = evaluator.eval_sync(&program)?;
|
let result = evaluator.eval_sync(&program)?;
|
||||||
|
|
||||||
let config = Config::default();
|
let config = Config::new(source_dir.clone());
|
||||||
let state = StateStore::new(&config.state_file);
|
let state = StateStore::new(&config.state_file);
|
||||||
|
|
||||||
let dotfiles: Vec<DotfileItem> = result
|
let dotfiles: Vec<DotfileItem> = result
|
||||||
|
|
@ -440,7 +440,7 @@ impl App {
|
||||||
self.apply_progress = 0;
|
self.apply_progress = 0;
|
||||||
|
|
||||||
// Apply dotfiles
|
// Apply dotfiles
|
||||||
let config = Config::default();
|
let config = Config::new(self.source_dir.clone());
|
||||||
let linker = Linker::new(config.clone());
|
let linker = Linker::new(config.clone());
|
||||||
let mut state = StateStore::new(&config.state_file);
|
let mut state = StateStore::new(&config.state_file);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1067,7 +1067,9 @@ impl Evaluator {
|
||||||
// available, so patterns like "config" / "*" expand relative to the
|
// available, so patterns like "config" / "*" expand relative to the
|
||||||
// config file rather than the current working directory.
|
// config file rather than the current working directory.
|
||||||
let resolve_glob_base = |p: &std::path::Path| -> std::path::PathBuf {
|
let resolve_glob_base = |p: &std::path::Path| -> std::path::PathBuf {
|
||||||
if p.is_relative() && let Some(ref sd) = self.source_dir {
|
if p.is_relative()
|
||||||
|
&& let Some(ref sd) = self.source_dir
|
||||||
|
{
|
||||||
return sd.join(p);
|
return sd.join(p);
|
||||||
}
|
}
|
||||||
p.to_path_buf()
|
p.to_path_buf()
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue