mirror of
https://github.com/denoland/deno.git
synced 2025-09-26 12:19:12 +00:00
fix(task): show package name of task when --recursive (#30136)
This commit is contained in:
parent
b7680dde5e
commit
61a7913a8b
18 changed files with 124 additions and 92 deletions
|
@ -206,6 +206,7 @@ pub async fn execute_script(
|
||||||
return task_runner
|
return task_runner
|
||||||
.run_deno_task(
|
.run_deno_task(
|
||||||
&Url::from_directory_path(cli_options.initial_cwd()).unwrap(),
|
&Url::from_directory_path(cli_options.initial_cwd()).unwrap(),
|
||||||
|
None,
|
||||||
"",
|
"",
|
||||||
&TaskDefinition {
|
&TaskDefinition {
|
||||||
command: Some(task_flags.task.as_ref().unwrap().to_string()),
|
command: Some(task_flags.task.as_ref().unwrap().to_string()),
|
||||||
|
@ -234,6 +235,7 @@ pub async fn execute_script(
|
||||||
|
|
||||||
struct RunSingleOptions<'a> {
|
struct RunSingleOptions<'a> {
|
||||||
task_name: &'a str,
|
task_name: &'a str,
|
||||||
|
package_name: Option<&'a str>,
|
||||||
script: &'a str,
|
script: &'a str,
|
||||||
cwd: PathBuf,
|
cwd: PathBuf,
|
||||||
custom_commands: HashMap<String, Rc<dyn ShellCommand>>,
|
custom_commands: HashMap<String, Rc<dyn ShellCommand>>,
|
||||||
|
@ -354,10 +356,11 @@ impl<'a> TaskRunner<'a> {
|
||||||
return Some(
|
return Some(
|
||||||
async move {
|
async move {
|
||||||
match task.task_or_script {
|
match task.task_or_script {
|
||||||
TaskOrScript::Task(_, def) => {
|
TaskOrScript::Task { task: def, .. } => {
|
||||||
runner
|
runner
|
||||||
.run_deno_task(
|
.run_deno_task(
|
||||||
task.folder_url,
|
task.task_or_script.folder_url(),
|
||||||
|
task.task_or_script.package_name(),
|
||||||
task.name,
|
task.name,
|
||||||
def,
|
def,
|
||||||
kill_signal,
|
kill_signal,
|
||||||
|
@ -365,12 +368,13 @@ impl<'a> TaskRunner<'a> {
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
}
|
}
|
||||||
TaskOrScript::Script(scripts, _) => {
|
TaskOrScript::Script { details, .. } => {
|
||||||
runner
|
runner
|
||||||
.run_npm_script(
|
.run_npm_script(
|
||||||
task.folder_url,
|
task.task_or_script.folder_url(),
|
||||||
|
task.task_or_script.package_name(),
|
||||||
task.name,
|
task.name,
|
||||||
scripts,
|
&details.tasks,
|
||||||
kill_signal,
|
kill_signal,
|
||||||
args,
|
args,
|
||||||
)
|
)
|
||||||
|
@ -426,17 +430,17 @@ impl<'a> TaskRunner<'a> {
|
||||||
pub async fn run_deno_task(
|
pub async fn run_deno_task(
|
||||||
&self,
|
&self,
|
||||||
dir_url: &Url,
|
dir_url: &Url,
|
||||||
|
package_name: Option<&str>,
|
||||||
task_name: &str,
|
task_name: &str,
|
||||||
definition: &TaskDefinition,
|
definition: &TaskDefinition,
|
||||||
kill_signal: KillSignal,
|
kill_signal: KillSignal,
|
||||||
argv: &'a [String],
|
argv: &'a [String],
|
||||||
) -> Result<i32, deno_core::anyhow::Error> {
|
) -> Result<i32, deno_core::anyhow::Error> {
|
||||||
let Some(command) = &definition.command else {
|
let Some(command) = &definition.command else {
|
||||||
log::info!(
|
self.output_task(
|
||||||
"{} {} {}",
|
task_name,
|
||||||
colors::green("Task"),
|
package_name,
|
||||||
colors::cyan(task_name),
|
&colors::gray("(no command)").to_string(),
|
||||||
colors::gray("(no command)")
|
|
||||||
);
|
);
|
||||||
return Ok(0);
|
return Ok(0);
|
||||||
};
|
};
|
||||||
|
@ -457,6 +461,7 @@ impl<'a> TaskRunner<'a> {
|
||||||
self
|
self
|
||||||
.run_single(RunSingleOptions {
|
.run_single(RunSingleOptions {
|
||||||
task_name,
|
task_name,
|
||||||
|
package_name,
|
||||||
script: command,
|
script: command,
|
||||||
cwd,
|
cwd,
|
||||||
custom_commands,
|
custom_commands,
|
||||||
|
@ -469,6 +474,7 @@ impl<'a> TaskRunner<'a> {
|
||||||
pub async fn run_npm_script(
|
pub async fn run_npm_script(
|
||||||
&self,
|
&self,
|
||||||
dir_url: &Url,
|
dir_url: &Url,
|
||||||
|
package_name: Option<&str>,
|
||||||
task_name: &str,
|
task_name: &str,
|
||||||
scripts: &IndexMap<String, String>,
|
scripts: &IndexMap<String, String>,
|
||||||
kill_signal: KillSignal,
|
kill_signal: KillSignal,
|
||||||
|
@ -500,6 +506,7 @@ impl<'a> TaskRunner<'a> {
|
||||||
let exit_code = self
|
let exit_code = self
|
||||||
.run_single(RunSingleOptions {
|
.run_single(RunSingleOptions {
|
||||||
task_name,
|
task_name,
|
||||||
|
package_name,
|
||||||
script,
|
script,
|
||||||
cwd: cwd.clone(),
|
cwd: cwd.clone(),
|
||||||
custom_commands: custom_commands.clone(),
|
custom_commands: custom_commands.clone(),
|
||||||
|
@ -522,6 +529,7 @@ impl<'a> TaskRunner<'a> {
|
||||||
) -> Result<i32, AnyError> {
|
) -> Result<i32, AnyError> {
|
||||||
let RunSingleOptions {
|
let RunSingleOptions {
|
||||||
task_name,
|
task_name,
|
||||||
|
package_name,
|
||||||
script,
|
script,
|
||||||
cwd,
|
cwd,
|
||||||
custom_commands,
|
custom_commands,
|
||||||
|
@ -529,8 +537,9 @@ impl<'a> TaskRunner<'a> {
|
||||||
argv,
|
argv,
|
||||||
} = opts;
|
} = opts;
|
||||||
|
|
||||||
output_task(
|
self.output_task(
|
||||||
opts.task_name,
|
task_name,
|
||||||
|
package_name,
|
||||||
&task_runner::get_script_with_args(script, argv),
|
&task_runner::get_script_with_args(script, argv),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
@ -564,6 +573,26 @@ impl<'a> TaskRunner<'a> {
|
||||||
}
|
}
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn output_task(
|
||||||
|
&self,
|
||||||
|
task_name: &str,
|
||||||
|
package_name: Option<&str>,
|
||||||
|
script: &str,
|
||||||
|
) {
|
||||||
|
log::info!(
|
||||||
|
"{} {}{} {}",
|
||||||
|
colors::green("Task"),
|
||||||
|
colors::cyan(task_name),
|
||||||
|
package_name
|
||||||
|
.filter(
|
||||||
|
|_| self.task_flags.recursive || self.task_flags.filter.is_some()
|
||||||
|
)
|
||||||
|
.map(|p| format!(" ({})", colors::gray(p)))
|
||||||
|
.unwrap_or_default(),
|
||||||
|
script,
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
@ -575,7 +604,6 @@ enum TaskError {
|
||||||
struct ResolvedTask<'a> {
|
struct ResolvedTask<'a> {
|
||||||
id: usize,
|
id: usize,
|
||||||
name: &'a str,
|
name: &'a str,
|
||||||
folder_url: &'a Url,
|
|
||||||
task_or_script: TaskOrScript<'a>,
|
task_or_script: TaskOrScript<'a>,
|
||||||
dependencies: Vec<usize>,
|
dependencies: Vec<usize>,
|
||||||
}
|
}
|
||||||
|
@ -585,26 +613,20 @@ fn sort_tasks_topo<'a>(
|
||||||
task_name: &str,
|
task_name: &str,
|
||||||
) -> Result<Vec<ResolvedTask<'a>>, TaskError> {
|
) -> Result<Vec<ResolvedTask<'a>>, TaskError> {
|
||||||
trait TasksConfig {
|
trait TasksConfig {
|
||||||
fn task(
|
fn task(&self, name: &str) -> Option<(TaskOrScript, &dyn TasksConfig)>;
|
||||||
&self,
|
|
||||||
name: &str,
|
|
||||||
) -> Option<(&Url, TaskOrScript, &dyn TasksConfig)>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TasksConfig for WorkspaceTasksConfig {
|
impl TasksConfig for WorkspaceTasksConfig {
|
||||||
fn task(
|
fn task(&self, name: &str) -> Option<(TaskOrScript, &dyn TasksConfig)> {
|
||||||
&self,
|
|
||||||
name: &str,
|
|
||||||
) -> Option<(&Url, TaskOrScript, &dyn TasksConfig)> {
|
|
||||||
if let Some(member) = &self.member {
|
if let Some(member) = &self.member {
|
||||||
if let Some((dir_url, task_or_script)) = member.task(name) {
|
if let Some(task_or_script) = member.task(name) {
|
||||||
return Some((dir_url, task_or_script, self as &dyn TasksConfig));
|
return Some((task_or_script, self as &dyn TasksConfig));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if let Some(root) = &self.root {
|
if let Some(root) = &self.root {
|
||||||
if let Some((dir_url, task_or_script)) = root.task(name) {
|
if let Some(task_or_script) = root.task(name) {
|
||||||
// switch to only using the root tasks for the dependencies
|
// switch to only using the root tasks for the dependencies
|
||||||
return Some((dir_url, task_or_script, root as &dyn TasksConfig));
|
return Some((task_or_script, root as &dyn TasksConfig));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
None
|
None
|
||||||
|
@ -612,13 +634,10 @@ fn sort_tasks_topo<'a>(
|
||||||
}
|
}
|
||||||
|
|
||||||
impl TasksConfig for WorkspaceMemberTasksConfig {
|
impl TasksConfig for WorkspaceMemberTasksConfig {
|
||||||
fn task(
|
fn task(&self, name: &str) -> Option<(TaskOrScript, &dyn TasksConfig)> {
|
||||||
&self,
|
self
|
||||||
name: &str,
|
.task(name)
|
||||||
) -> Option<(&Url, TaskOrScript, &dyn TasksConfig)> {
|
.map(|task_or_script| (task_or_script, self as &dyn TasksConfig))
|
||||||
self.task(name).map(|(dir_url, task_or_script)| {
|
|
||||||
(dir_url, task_or_script, self as &dyn TasksConfig)
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -628,16 +647,14 @@ fn sort_tasks_topo<'a>(
|
||||||
mut path: Vec<(&'a Url, &'a str)>,
|
mut path: Vec<(&'a Url, &'a str)>,
|
||||||
tasks_config: &'a dyn TasksConfig,
|
tasks_config: &'a dyn TasksConfig,
|
||||||
) -> Result<usize, TaskError> {
|
) -> Result<usize, TaskError> {
|
||||||
let Some((folder_url, task_or_script, tasks_config)) =
|
let Some((task_or_script, tasks_config)) = tasks_config.task(name) else {
|
||||||
tasks_config.task(name)
|
|
||||||
else {
|
|
||||||
return Err(TaskError::NotFound(name.to_string()));
|
return Err(TaskError::NotFound(name.to_string()));
|
||||||
};
|
};
|
||||||
|
|
||||||
if let Some(existing_task) = sorted
|
let folder_url = task_or_script.folder_url();
|
||||||
.iter()
|
if let Some(existing_task) = sorted.iter().find(|task| {
|
||||||
.find(|task| task.name == name && task.folder_url == folder_url)
|
task.name == name && task.task_or_script.folder_url() == folder_url
|
||||||
{
|
}) {
|
||||||
// already exists
|
// already exists
|
||||||
return Ok(existing_task.id);
|
return Ok(existing_task.id);
|
||||||
}
|
}
|
||||||
|
@ -650,7 +667,7 @@ fn sort_tasks_topo<'a>(
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut dependencies: Vec<usize> = Vec::new();
|
let mut dependencies: Vec<usize> = Vec::new();
|
||||||
if let TaskOrScript::Task(_, task) = task_or_script {
|
if let TaskOrScript::Task { task, .. } = task_or_script {
|
||||||
dependencies.reserve(task.dependencies.len());
|
dependencies.reserve(task.dependencies.len());
|
||||||
for dep in &task.dependencies {
|
for dep in &task.dependencies {
|
||||||
let mut path = path.clone();
|
let mut path = path.clone();
|
||||||
|
@ -663,7 +680,6 @@ fn sort_tasks_topo<'a>(
|
||||||
sorted.push(ResolvedTask {
|
sorted.push(ResolvedTask {
|
||||||
id,
|
id,
|
||||||
name,
|
name,
|
||||||
folder_url,
|
|
||||||
task_or_script,
|
task_or_script,
|
||||||
dependencies,
|
dependencies,
|
||||||
});
|
});
|
||||||
|
@ -710,15 +726,6 @@ fn matches_package(
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
|
|
||||||
fn output_task(task_name: &str, script: &str) {
|
|
||||||
log::info!(
|
|
||||||
"{} {} {}",
|
|
||||||
colors::green("Task"),
|
|
||||||
colors::cyan(task_name),
|
|
||||||
script,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
fn print_available_tasks_workspace(
|
fn print_available_tasks_workspace(
|
||||||
cli_options: &Arc<CliOptions>,
|
cli_options: &Arc<CliOptions>,
|
||||||
package_regex: &Regex,
|
package_regex: &Regex,
|
||||||
|
@ -729,8 +736,7 @@ fn print_available_tasks_workspace(
|
||||||
let workspace = cli_options.workspace();
|
let workspace = cli_options.workspace();
|
||||||
|
|
||||||
let mut matched = false;
|
let mut matched = false;
|
||||||
for (folder_url, folder) in workspace.config_folders_sorted_by_dependencies()
|
for (folder_url, folder) in workspace.config_folders() {
|
||||||
{
|
|
||||||
if !recursive && !matches_package(folder, force_use_pkg_json, package_regex)
|
if !recursive && !matches_package(folder, force_use_pkg_json, package_regex)
|
||||||
{
|
{
|
||||||
continue;
|
continue;
|
||||||
|
@ -927,7 +933,7 @@ fn visit_task_and_dependencies(
|
||||||
|
|
||||||
visited.insert(name.to_string());
|
visited.insert(name.to_string());
|
||||||
|
|
||||||
if let Some((_, TaskOrScript::Task(_, task))) = &tasks_config.task(name) {
|
if let Some(TaskOrScript::Task { task, .. }) = &tasks_config.task(name) {
|
||||||
for dep in &task.dependencies {
|
for dep in &task.dependencies {
|
||||||
visit_task_and_dependencies(tasks_config, visited, dep);
|
visit_task_and_dependencies(tasks_config, visited, dep);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1941,6 +1941,7 @@ impl WorkspaceDirectory {
|
||||||
tasks.map(|tasks| WorkspaceMemberTasksConfigFile {
|
tasks.map(|tasks| WorkspaceMemberTasksConfigFile {
|
||||||
folder_url: url_parent(&deno_json.specifier),
|
folder_url: url_parent(&deno_json.specifier),
|
||||||
tasks,
|
tasks,
|
||||||
|
package_name: deno_json.json.name.clone(),
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
.map_err(|error| ToTasksConfigError {
|
.map_err(|error| ToTasksConfigError {
|
||||||
|
@ -1954,6 +1955,7 @@ impl WorkspaceDirectory {
|
||||||
WorkspaceMemberTasksConfigFile {
|
WorkspaceMemberTasksConfigFile {
|
||||||
folder_url: url_parent(&pkg_json.specifier()),
|
folder_url: url_parent(&pkg_json.specifier()),
|
||||||
tasks: scripts,
|
tasks: scripts,
|
||||||
|
package_name: pkg_json.name.clone(),
|
||||||
}
|
}
|
||||||
}),
|
}),
|
||||||
None => None,
|
None => None,
|
||||||
|
@ -2110,13 +2112,36 @@ impl WorkspaceDirectory {
|
||||||
|
|
||||||
pub enum TaskOrScript<'a> {
|
pub enum TaskOrScript<'a> {
|
||||||
/// A task from a deno.json.
|
/// A task from a deno.json.
|
||||||
Task(&'a IndexMap<String, TaskDefinition>, &'a TaskDefinition),
|
Task {
|
||||||
|
details: &'a WorkspaceMemberTasksConfigFile<TaskDefinition>,
|
||||||
|
task: &'a TaskDefinition,
|
||||||
|
},
|
||||||
/// A script from a package.json.
|
/// A script from a package.json.
|
||||||
Script(&'a IndexMap<String, String>, &'a str),
|
Script {
|
||||||
|
details: &'a WorkspaceMemberTasksConfigFile<String>,
|
||||||
|
task: &'a str,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'a> TaskOrScript<'a> {
|
||||||
|
pub fn package_name(&self) -> Option<&'a str> {
|
||||||
|
match self {
|
||||||
|
TaskOrScript::Task { details, .. } => details.package_name.as_deref(),
|
||||||
|
TaskOrScript::Script { details, .. } => details.package_name.as_deref(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn folder_url(&self) -> &'a Url {
|
||||||
|
match self {
|
||||||
|
TaskOrScript::Task { details, .. } => &details.folder_url,
|
||||||
|
TaskOrScript::Script { details, .. } => &details.folder_url,
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||||
pub struct WorkspaceMemberTasksConfigFile<TValue> {
|
pub struct WorkspaceMemberTasksConfigFile<TValue> {
|
||||||
|
pub package_name: Option<String>,
|
||||||
pub folder_url: Url,
|
pub folder_url: Url,
|
||||||
pub tasks: IndexMap<String, TValue>,
|
pub tasks: IndexMap<String, TValue>,
|
||||||
}
|
}
|
||||||
|
@ -2180,23 +2205,21 @@ impl WorkspaceMemberTasksConfig {
|
||||||
.unwrap_or(0)
|
.unwrap_or(0)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn task(&self, name: &str) -> Option<(&Url, TaskOrScript)> {
|
pub fn task(&self, name: &str) -> Option<TaskOrScript> {
|
||||||
self
|
self
|
||||||
.deno_json
|
.deno_json
|
||||||
.as_ref()
|
.as_ref()
|
||||||
.and_then(|config| {
|
.and_then(|config| {
|
||||||
config
|
config.tasks.get(name).map(|task| TaskOrScript::Task {
|
||||||
.tasks
|
details: config,
|
||||||
.get(name)
|
task,
|
||||||
.map(|t| (&config.folder_url, TaskOrScript::Task(&config.tasks, t)))
|
})
|
||||||
})
|
})
|
||||||
.or_else(|| {
|
.or_else(|| {
|
||||||
self.package_json.as_ref().and_then(|config| {
|
self.package_json.as_ref().and_then(|config| {
|
||||||
config.tasks.get(name).map(|task| {
|
config.tasks.get(name).map(|script| TaskOrScript::Script {
|
||||||
(
|
details: config,
|
||||||
&config.folder_url,
|
task: script,
|
||||||
TaskOrScript::Script(&config.tasks, task),
|
|
||||||
)
|
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
})
|
})
|
||||||
|
@ -2239,7 +2262,7 @@ impl WorkspaceTasksConfig {
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn task(&self, name: &str) -> Option<(&Url, TaskOrScript)> {
|
pub fn task(&self, name: &str) -> Option<TaskOrScript> {
|
||||||
self
|
self
|
||||||
.member
|
.member
|
||||||
.as_ref()
|
.as_ref()
|
||||||
|
@ -2699,6 +2722,7 @@ pub mod test {
|
||||||
assert_eq!(workspace_dir.workspace.diagnostics(), vec![]);
|
assert_eq!(workspace_dir.workspace.diagnostics(), vec![]);
|
||||||
let root_deno_json = Some(WorkspaceMemberTasksConfigFile {
|
let root_deno_json = Some(WorkspaceMemberTasksConfigFile {
|
||||||
folder_url: url_from_directory_path(&root_dir()).unwrap(),
|
folder_url: url_from_directory_path(&root_dir()).unwrap(),
|
||||||
|
package_name: None,
|
||||||
tasks: IndexMap::from([
|
tasks: IndexMap::from([
|
||||||
("hi".to_string(), "echo hi".into()),
|
("hi".to_string(), "echo hi".into()),
|
||||||
("overwrite".to_string(), "echo overwrite".into()),
|
("overwrite".to_string(), "echo overwrite".into()),
|
||||||
|
@ -2738,6 +2762,7 @@ pub mod test {
|
||||||
deno_json: Some(WorkspaceMemberTasksConfigFile {
|
deno_json: Some(WorkspaceMemberTasksConfigFile {
|
||||||
folder_url: url_from_directory_path(&root_dir().join("member"))
|
folder_url: url_from_directory_path(&root_dir().join("member"))
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
|
package_name: None,
|
||||||
tasks: IndexMap::from([
|
tasks: IndexMap::from([
|
||||||
("overwrite".to_string(), "echo overwritten".into()),
|
("overwrite".to_string(), "echo overwritten".into()),
|
||||||
("bye".to_string(), "echo bye".into()),
|
("bye".to_string(), "echo bye".into()),
|
||||||
|
@ -2768,6 +2793,7 @@ pub mod test {
|
||||||
package_json: Some(WorkspaceMemberTasksConfigFile {
|
package_json: Some(WorkspaceMemberTasksConfigFile {
|
||||||
folder_url: url_from_directory_path(&root_dir().join("pkg_json"))
|
folder_url: url_from_directory_path(&root_dir().join("pkg_json"))
|
||||||
.unwrap(),
|
.unwrap(),
|
||||||
|
package_name: None,
|
||||||
tasks: IndexMap::from([(
|
tasks: IndexMap::from([(
|
||||||
"script".to_string(),
|
"script".to_string(),
|
||||||
"echo 1".to_string()
|
"echo 1".to_string()
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Task dev echo '@deno/bar'
|
Task dev (@deno/bar) echo '@deno/bar'
|
||||||
@deno/bar
|
@deno/bar
|
||||||
Task dev echo '@deno/foo'
|
Task dev (@deno/foo) echo '@deno/foo'
|
||||||
@deno/foo
|
@deno/foo
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
Task dev echo '@deno/foo'
|
Task dev (@deno/foo) echo '@deno/foo'
|
||||||
@deno/foo
|
@deno/foo
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
Task dev echo '@deno/foo'
|
Task dev (@deno/foo) echo '@deno/foo'
|
||||||
@deno/foo
|
@deno/foo
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Task dev echo '@deno/bar'
|
Task dev (@deno/bar) echo '@deno/bar'
|
||||||
@deno/bar
|
@deno/bar
|
||||||
Task dev echo '@deno/foo'
|
Task dev (@deno/foo) echo '@deno/foo'
|
||||||
@deno/foo
|
@deno/foo
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
Task dev echo '@foo/bar'
|
Task dev (@foo/bar) echo '@foo/bar'
|
||||||
@foo/bar
|
@foo/bar
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Task dev echo '@foo/bar'
|
Task dev (@foo/bar) echo '@foo/bar'
|
||||||
@foo/bar
|
@foo/bar
|
||||||
Task dev echo '@foo/baz'
|
Task dev (@foo/baz) echo '@foo/baz'
|
||||||
@foo/baz
|
@foo/baz
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Task dev echo '@foo/bar'
|
Task dev (@foo/bar) echo '@foo/bar'
|
||||||
@foo/bar
|
@foo/bar
|
||||||
Task dev echo '@foo/baz'
|
Task dev (@foo/baz) echo '@foo/baz'
|
||||||
@foo/baz
|
@foo/baz
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Task dev echo 'bar'
|
Task dev (bar) echo 'bar'
|
||||||
bar
|
bar
|
||||||
Task dev echo 'foo'
|
Task dev (foo) echo 'foo'
|
||||||
foo
|
foo
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
Task dev echo 'foo'
|
Task dev (foo) echo 'foo'
|
||||||
foo
|
foo
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
Task dev echo 'foo'
|
Task dev (foo) echo 'foo'
|
||||||
foo
|
foo
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Task dev echo 'multi-a'
|
Task dev (multi-a) echo 'multi-a'
|
||||||
multi-a
|
multi-a
|
||||||
Task dev echo 'multi-b'
|
Task dev (multi-b) echo 'multi-b'
|
||||||
multi-b
|
multi-b
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Task dev echo 'bar'
|
Task dev (bar) echo 'bar'
|
||||||
bar
|
bar
|
||||||
Task dev echo 'foo'
|
Task dev (foo) echo 'foo'
|
||||||
foo
|
foo
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
Task dev echo '@foo/bar'
|
Task dev (@foo/bar) echo '@foo/bar'
|
||||||
@foo/bar
|
@foo/bar
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Task dev echo '@foo/bar'
|
Task dev (@foo/bar) echo '@foo/bar'
|
||||||
@foo/bar
|
@foo/bar
|
||||||
Task dev echo '@foo/baz'
|
Task dev (@foo/baz) echo '@foo/baz'
|
||||||
@foo/baz
|
@foo/baz
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Task dev echo '@foo/bar'
|
Task dev (@foo/bar) echo '@foo/bar'
|
||||||
@foo/bar
|
@foo/bar
|
||||||
Task dev echo '@foo/baz'
|
Task dev (@foo/baz) echo '@foo/baz'
|
||||||
@foo/baz
|
@foo/baz
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
Task build echo b
|
Task build (b) echo b
|
||||||
b
|
b
|
||||||
Task build echo a
|
Task build (a) echo a
|
||||||
a
|
a
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue