O.K, so after a talk with Brian in #rust, I think we've found a good
solution that keeps the reliability and simplicity of the current setup but
can also automatically sync and update the local package list without
downloading an (eventually) massive file.

Every source has a packages.json file.

There are 3 types of sources:


   - "git": a source hosted in a git repository - cargo handles incremental
   changes by simply `git pull`ing whenever the list, search or install
   command is called and then using the new package information for the
   command.
   - "http" | "ftp" | "curl": a source hosted via some curl supported
   transfer (e.g. http) - cargo handles incremental changes by appending
   `?from=<timestamp>` to the URL where `timestamp`is a generic unix timestamp
   for the last update it did. If the source supports the from command, it
   will only provide the packages that have been updated since `timestamp`,
   otherwise it provides the entire packages.json file. Whenever the list,
   search or install command is called it requests the packages.json file with
   the last timestamp it did and merges it's local package list with it, and
   then uses the information for the command.
   - "file" - a source hosted locally, self explanatory

Then a source can optionally contain a source.json file which contains the
same stuff as a single source in sources.json does now (minus name and url
fields) and sources.json becomes:

```
{
    "central": "git://github.com/mozilla/cargo-central"
}
```

I think this turns out better. Any thoughts?
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to