On 29/07/14 23:30, Alex Crichton wrote:
[...]

We plan to implement any necessary infrastructure to ensure that the crates
move out of the rust repository maintain the same level of quality they
currently have.

Will these crates’ documentation be available online?

In rust-url, rust-cssparser, and Servo, I have Travis-CI setup to generate documentation with rustdoc and, for successful builds on master, upload it to GitHub Pages. The end result looks like this:

http://servo.github.io/rust-cssparser/cssparser/index.html

See at the end of this email for how this works.


Long term, I’d like Rust to have an official package index, like Python’s PyPI: https://pypi.python.org/

PyPI provides free hosting for documentation of Python projects. I’d like Rust to have something like this too. GitHub Pages works and exists now, but I’m not a fan of generated files in the source repository, even in a separate branch.


To this extent, the current process for moving a crate out of the standard
distribution will be as follows:

1. A member of the core team will be contacted to create the repository
   `rust-lang/$foo`.
2. A PR will be made against `rust-lang/$foo`

I’ve just checked: GitHub does not allow forking (and therefore making PRs to) an empty repository, so the person creating the repository will have to at least check the "Initialize this repository with a README" checkbox to make a dummy first commit.


    with the current copy of the
    code from `rust-lang/rust`. This PR will be expected to have the
    following source structure:

      * Cargo.toml - a manifest to build this repo as a cargo package
      * .travis.yml - configuration to run automated tests on travis. A
                      sample can be found for hexfloat [1]
      * LICENSE-{MIT,APACHE} - copied over from rust-lang/rust
      * src/ - the same source structure as the folder in rust-lang/rust

This should also include a README.md file containing at least of copy of the crate’s docstring.


3. A PR will be made against `rust-lang/rust` which will flag the relevant
    library as `#[deprecated]` with a message pointing at `rust-lang/$foo`

In order to ensure that these repositories continue to stay up to date, we
will have the following process in place:

1. Each repository will be hooked up to Travis CI and will be built each
    night once the new nightlies are available.

How will this be achieve? http://www.rust-ci.org/ does it, but I’d like to see something more "official" and tied to the rust-lang.org binary nightlies rather than the Ubuntu PPA.


[...]


Regarding documentation on GitHub pages mentioned earlier, the script doing it looks like this:

https://github.com/servo/rust-cssparser/blob/331e5695dc/.travis.yml

The `<meta http-equiv=refresh ...` line is so that the URL http://servo.github.io/rust-cssparser/ is not a 404 error. (rustdoc does not generate anything there.)

ghp-import resets a git branch (defaults to gh-pages) to contain exactly what’s in a given directory, regardless of what the branch previously contained.

The "secure" line is created with `travis encrypt -r servo/rust-cssparser TOKEN=[hex string]`, where [hex string] is a GitHub access token for a user with push access to the repository. (I created https://github.com/rustdoc for this purpose.)

http://docs.travis-ci.com/user/encryption-keys/
https://help.github.com/articles/creating-an-access-token-for-command-line-use

--
Simon Sapin
_______________________________________________
Rust-dev mailing list
Rust-dev@mozilla.org
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to