Skip to content
Snippets Groups Projects
Commit bef55ad6 authored by Jorge Aparicio's avatar Jorge Aparicio
Browse files

optionally parse tasks.$T.path

parent 7ae2ea2b
No related branches found
No related tags found
No related merge requests found
...@@ -26,6 +26,7 @@ pub struct Init { ...@@ -26,6 +26,7 @@ pub struct Init {
pub struct Task { pub struct Task {
pub enabled: Option<bool>, pub enabled: Option<bool>,
pub path: Option<Path>,
pub priority: Option<u8>, pub priority: Option<u8>,
pub resources: Idents, pub resources: Idents,
} }
...@@ -129,16 +130,22 @@ fn tasks(tasks: Option<::Tasks>) -> Result<Tasks> { ...@@ -129,16 +130,22 @@ fn tasks(tasks: Option<::Tasks>) -> Result<Tasks> {
tasks tasks
.into_iter() .into_iter()
.map(|(name, task)| { .map(|(name_, task)| {
let name = name_.clone();
(move || -> Result<_> {
Ok(( Ok((
name.clone(), name,
Task { Task {
enabled: task.enabled, enabled: task.enabled,
path: task.path,
priority: task.priority, priority: task.priority,
resources: ::check::idents("resources", task.resources) resources: ::check::idents(
.chain_err(|| format!("checking task `{}`", name))?, "resources",
task.resources,
)?,
}, },
)) ))
})().chain_err(|| format!("checking task `{}`", name_))
}) })
.collect::<Result<_>>()? .collect::<Result<_>>()?
} else { } else {
......
...@@ -50,6 +50,7 @@ pub struct Idle { ...@@ -50,6 +50,7 @@ pub struct Idle {
#[derive(Debug)] #[derive(Debug)]
pub struct Task { pub struct Task {
pub enabled: Option<bool>, pub enabled: Option<bool>,
pub path: Option<Path>,
pub priority: Option<u8>, pub priority: Option<u8>,
pub resources: Option<Idents>, pub resources: Option<Idents>,
} }
......
...@@ -319,6 +319,7 @@ fn path(tts: &mut Peekable<Iter<TokenTree>>) -> Result<Path> { ...@@ -319,6 +319,7 @@ fn path(tts: &mut Peekable<Iter<TokenTree>>) -> Result<Path> {
fn task(tts: &mut Peekable<Iter<TokenTree>>) -> Result<Task> { fn task(tts: &mut Peekable<Iter<TokenTree>>) -> Result<Task> {
::parse::delimited(tts, DelimToken::Brace, |tts| { ::parse::delimited(tts, DelimToken::Brace, |tts| {
let mut enabled = None; let mut enabled = None;
let mut path = None;
let mut priority = None; let mut priority = None;
let mut resources = None; let mut resources = None;
...@@ -330,6 +331,13 @@ fn task(tts: &mut Peekable<Iter<TokenTree>>) -> Result<Task> { ...@@ -330,6 +331,13 @@ fn task(tts: &mut Peekable<Iter<TokenTree>>) -> Result<Task> {
enabled = Some(::parse::bool(tts.next()) enabled = Some(::parse::bool(tts.next())
.chain_err(|| "parsing `enabled`")?); .chain_err(|| "parsing `enabled`")?);
} }
"path" => {
ensure!(path.is_none(), "duplicated `path` field");
path = Some(
::parse::path(tts).chain_err(|| "parsing `path`")?,
);
}
"priority" => { "priority" => {
ensure!(priority.is_none(), "duplicated `priority` field"); ensure!(priority.is_none(), "duplicated `priority` field");
...@@ -353,6 +361,7 @@ fn task(tts: &mut Peekable<Iter<TokenTree>>) -> Result<Task> { ...@@ -353,6 +361,7 @@ fn task(tts: &mut Peekable<Iter<TokenTree>>) -> Result<Task> {
Ok(Task { Ok(Task {
enabled, enabled,
path,
priority, priority,
resources, resources,
}) })
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment