parent
522d92fbe2
commit
6e64628858
1 changed files with 17 additions and 8 deletions
|
@ -42,9 +42,13 @@ enum Command {
|
||||||
}
|
}
|
||||||
|
|
||||||
impl VsCodeTaskDefinition {
|
impl VsCodeTaskDefinition {
|
||||||
fn into_zed_format(self, replacer: &EnvVariableReplacer) -> anyhow::Result<TaskTemplate> {
|
fn into_zed_format(
|
||||||
|
self,
|
||||||
|
replacer: &EnvVariableReplacer,
|
||||||
|
) -> anyhow::Result<Option<TaskTemplate>> {
|
||||||
if self.other_attributes.contains_key("dependsOn") {
|
if self.other_attributes.contains_key("dependsOn") {
|
||||||
bail!("Encountered unsupported `dependsOn` key during deserialization");
|
log::warn!("Skipping deserializing of a task with the unsupported `dependsOn` key");
|
||||||
|
return Ok(None);
|
||||||
}
|
}
|
||||||
// `type` might not be set in e.g. tasks that use `dependsOn`; we still want to deserialize the whole object though (hence command is an Option),
|
// `type` might not be set in e.g. tasks that use `dependsOn`; we still want to deserialize the whole object though (hence command is an Option),
|
||||||
// as that way we can provide more specific description of why deserialization failed.
|
// as that way we can provide more specific description of why deserialization failed.
|
||||||
|
@ -62,17 +66,17 @@ impl VsCodeTaskDefinition {
|
||||||
// Per VSC docs, only `command`, `args` and `options` support variable substitution.
|
// Per VSC docs, only `command`, `args` and `options` support variable substitution.
|
||||||
let command = replacer.replace(&command);
|
let command = replacer.replace(&command);
|
||||||
let args = args.into_iter().map(|arg| replacer.replace(&arg)).collect();
|
let args = args.into_iter().map(|arg| replacer.replace(&arg)).collect();
|
||||||
let mut ret = TaskTemplate {
|
let mut template = TaskTemplate {
|
||||||
label: self.label,
|
label: self.label,
|
||||||
command,
|
command,
|
||||||
args,
|
args,
|
||||||
..Default::default()
|
..TaskTemplate::default()
|
||||||
};
|
};
|
||||||
if let Some(options) = self.options {
|
if let Some(options) = self.options {
|
||||||
ret.cwd = options.cwd.map(|cwd| replacer.replace(&cwd));
|
template.cwd = options.cwd.map(|cwd| replacer.replace(&cwd));
|
||||||
ret.env = options.env;
|
template.env = options.env;
|
||||||
}
|
}
|
||||||
Ok(ret)
|
Ok(Some(template))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -101,7 +105,12 @@ impl TryFrom<VsCodeTaskFile> for TaskTemplates {
|
||||||
let templates = value
|
let templates = value
|
||||||
.tasks
|
.tasks
|
||||||
.into_iter()
|
.into_iter()
|
||||||
.filter_map(|vscode_definition| vscode_definition.into_zed_format(&replacer).log_err())
|
.filter_map(|vscode_definition| {
|
||||||
|
vscode_definition
|
||||||
|
.into_zed_format(&replacer)
|
||||||
|
.log_err()
|
||||||
|
.flatten()
|
||||||
|
})
|
||||||
.collect();
|
.collect();
|
||||||
Ok(Self(templates))
|
Ok(Self(templates))
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue