Implementing 'rustpkg init'.

This will initialize a new workspace.
This commit is contained in:
Steve Klabnik 2013-09-16 14:59:34 -07:00
parent 0ec4d34b3f
commit 77bbf23b4a
3 changed files with 24 additions and 1 deletions

View File

@ -189,6 +189,7 @@ pub trait CtxMethods {
fn test(&self);
fn uninstall(&self, _id: &str, _vers: Option<~str>);
fn unprefer(&self, _id: &str, _vers: Option<~str>);
fn init(&self);
}
impl CtxMethods for BuildContext {
@ -319,6 +320,13 @@ impl CtxMethods for BuildContext {
"test" => {
self.test();
}
"init" => {
if args.len() != 0 {
return usage::init();
} else {
self.init();
}
}
"uninstall" => {
if args.len() < 1 {
return usage::uninstall();
@ -540,6 +548,13 @@ impl CtxMethods for BuildContext {
fail!("test not yet implemented");
}
fn init(&self) {
os::mkdir_recursive(&Path("src"), U_RWX);
os::mkdir_recursive(&Path("lib"), U_RWX);
os::mkdir_recursive(&Path("bin"), U_RWX);
os::mkdir_recursive(&Path("build"), U_RWX);
}
fn uninstall(&self, _id: &str, _vers: Option<~str>) {
fail!("uninstall not yet implemented");
}
@ -688,6 +703,7 @@ pub fn main_args(args: &[~str]) {
~"list" => usage::list(),
~"prefer" => usage::prefer(),
~"test" => usage::test(),
~"init" => usage::init(),
~"uninstall" => usage::uninstall(),
~"unprefer" => usage::unprefer(),
_ => usage::general()

View File

@ -148,3 +148,10 @@ and exit code will be redirected.
Options:
-c, --cfg Pass a cfg flag to the package script");
}
pub fn init() {
io::println("rustpkg init name
This makes a new workspace for working on a project named name.
");
}

View File

@ -33,7 +33,7 @@ use workcache_support::{digest_file_with_date, digest_only_date};
// you could update the match in rustpkg.rc but forget to update this list. I think
// that should be fixed.
static COMMANDS: &'static [&'static str] =
&["build", "clean", "do", "info", "install", "list", "prefer", "test", "uninstall",
&["build", "clean", "do", "info", "init", "install", "list", "prefer", "test", "uninstall",
"unprefer"];