From 4e2c8f422aec1aef910fdfdac57f5f66a7465355 Mon Sep 17 00:00:00 2001 From: Tim Chevalier Date: Wed, 24 Apr 2013 17:37:59 -0700 Subject: rustpkg: Preliminary work on install command Mostly just tests (that are ignored); install command is still stubbed out. --- src/librustpkg/workspace.rs | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/librustpkg/workspace.rs (limited to 'src/librustpkg/workspace.rs') diff --git a/src/librustpkg/workspace.rs b/src/librustpkg/workspace.rs new file mode 100644 index 00000000000..15e2166b24a --- /dev/null +++ b/src/librustpkg/workspace.rs @@ -0,0 +1,34 @@ +// Copyright 2013 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// rustpkg utilities having to do with workspaces + +use path_util::{rust_path, workspace_contains_package_id}; +use util::PkgId; +use core::path::Path; + +pub fn pkg_parent_workspaces(pkgid: PkgId, action: &fn(&Path) -> bool) { + // Using the RUST_PATH, find workspaces that contain + // this package ID + let workspaces = rust_path().filtered(|ws| + workspace_contains_package_id(pkgid, ws)); + if workspaces.is_empty() { + // tjc: make this a condition + fail!(fmt!("Package %s not found in any of \ + the following workspaces: %s", + pkgid.path.to_str(), + rust_path().to_str())); + } + for workspaces.each |ws| { + if action(ws) { + break; + } + } +} \ No newline at end of file -- cgit 1.4.1-3-g733a5