}
}
-fn load_one_source_package(&src: source, p: map::hashmap<str, json::json>) {
+fn load_one_source_package(&&src: source, p: map::hashmap<str, json::json>) {
let name = alt p.find("name") {
- some(json::string(_n)) { _n }
+ some(json::string(_n)) {
+ if !valid_pkg_name(_n) {
+ warn("malformed source json: " + src.name + ", '" + _n + "'"+
+ " is an invalid name (alphanumeric, underscores and" +
+ " dashes only)");
+ ret;
+ }
+ _n
+ }
_ {
warn("malformed source json: " + src.name + " (missing name)");
ret;
log(debug, " loaded package: " + src.name + "/" + name);
}
- fn load_source_packages(&&c: cargo, &&src: source) {
- log(debug, "Loading source: " + src.name);
+ fn load_source_info(&c: cargo, &src: source) {
+ let dir = path::connect(c.sourcedir, src.name);
+ let srcfile = path::connect(dir, "source.json");
+ if !os::path_exists(srcfile) { ret; }
+ let srcstr = io::read_whole_file_str(srcfile);
+ alt json::from_str(result::get(srcstr)) {
+ ok(json::dict(_s)) {
+ let o = parse_source(src.name, json::dict(_s));
+
+ src.key = o.key;
+ src.keyfp = o.keyfp;
+ }
+ ok(_) {
+ warn("malformed source.json: " + src.name +
+ "(source info is not a dict)");
+ }
+ err(e) {
+ warn(#fmt("%s:%u:%u: %s", src.name, e.line, e.col, e.msg));
+ }
+ };
+ }
-fn load_source_packages(&c: cargo, &src: source) {
++fn load_source_packages(&&c: cargo, &src: source) {
+ log(debug, "loading source: " + src.name);
let dir = path::connect(c.sourcedir, src.name);
let pkgfile = path::connect(dir, "packages.json");
if !os::path_exists(pkgfile) { ret; }
"uninstall" { cmd_uninstall(c); }
"list" { cmd_list(c); }
"search" { cmd_search(c); }
- "sync" { cmd_sync(c); }
- "usage" { cmd_usage(); }
+ "sources" { cmd_sources(c); }
_ { cmd_usage(); }
}
-}
+
+ dump_cache(c);
+ dump_sources(c);
+}