about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2015-01-10 05:55:07 +0000
committerbors <bors@rust-lang.org>2015-01-10 05:55:07 +0000
commit391e0106ef46085da4998c841ffb44c115633e45 (patch)
treee692aea47c12a9b8cdb49cf454d6be538e493c97
parent9205d74fe0eed9ed1fee4d408e4bc99b7c4e0d58 (diff)
parentafe260ff4b9968300a4c64a4fd1ce903ddec0619 (diff)
downloadrust-391e0106ef46085da4998c841ffb44c115633e45.tar.gz
rust-391e0106ef46085da4998c841ffb44c115633e45.zip
auto merge of #20802 : huonw/rust/book-css, r=steveklabnik
There is likely to be new users with the alpha release, and there are a lot of documents on the internet (StackOverflow, reddit, blogs) that refer to these guides, so emitting a more helpful error than "404" is nice. Hence, I've temporarily reinstated stub documents for each of the old guides, referring to as relevant a part of the book as possible.

Also, rustbook was silently ignoring some errors, which lead to an inconsistency with directory creation/file writing. This meant the CSS file was not being written if no `doc` directory existed in the users build dir (e.g. the buildbots). This should mean that the CSS will appear automatically in later builds.
-rw-r--r--mk/docs.mk8
-rw-r--r--src/doc/guide-crates.md4
-rw-r--r--src/doc/guide-error-handling.md4
-rw-r--r--src/doc/guide-ffi.md4
-rw-r--r--src/doc/guide-macros.md4
-rw-r--r--src/doc/guide-ownership.md4
-rw-r--r--src/doc/guide-plugins.md4
-rw-r--r--src/doc/guide-pointers.md4
-rw-r--r--src/doc/guide-strings.md4
-rw-r--r--src/doc/guide-tasks.md4
-rw-r--r--src/doc/guide-testing.md4
-rw-r--r--src/doc/guide-unsafe.md4
-rw-r--r--src/doc/guide.md4
-rw-r--r--src/rustbook/book.rs7
-rw-r--r--src/rustbook/build.rs27
-rw-r--r--src/rustbook/css.rs2
-rw-r--r--src/rustbook/error.rs1
-rw-r--r--src/rustbook/main.rs7
18 files changed, 76 insertions, 24 deletions
diff --git a/mk/docs.mk b/mk/docs.mk
index 1104c3eb6db..8af47700f25 100644
--- a/mk/docs.mk
+++ b/mk/docs.mk
@@ -29,6 +29,12 @@ DOCS := index intro tutorial complement-bugreport \
     complement-lang-faq complement-design-faq complement-project-faq \
     rustdoc reference
 
+# Legacy guides, preserved for a while to reduce the number of 404s
+DOCS += guide-crates guide-error-handling guide-ffi guide-macros guide \
+    guide-ownership guide-plugins guide-pointers guide-strings guide-tasks \
+    guide-testing
+
+
 PDF_DOCS := reference
 
 RUSTDOC_DEPS_reference := doc/full-toc.inc
@@ -277,6 +283,6 @@ compiler-docs: $(COMPILER_DOC_TARGETS)
 
 trpl: doc/book/index.html
 
-doc/book/index.html: $(RUSTBOOK_EXE) $(wildcard $(S)/src/doc/trpl/*.md)
+doc/book/index.html: $(RUSTBOOK_EXE) $(wildcard $(S)/src/doc/trpl/*.md) | doc/
 	$(Q)rm -rf doc/book
 	$(Q)$(RUSTBOOK) build $(S)src/doc/trpl doc/book
diff --git a/src/doc/guide-crates.md b/src/doc/guide-crates.md
new file mode 100644
index 00000000000..8277988b7fe
--- /dev/null
+++ b/src/doc/guide-crates.md
@@ -0,0 +1,4 @@
+% The (old) Rust Crates and Modules Guide
+
+This content has moved into the
+[the Rust Programming Language book](book/crates-and-modules.html).
diff --git a/src/doc/guide-error-handling.md b/src/doc/guide-error-handling.md
new file mode 100644
index 00000000000..215fe6a441e
--- /dev/null
+++ b/src/doc/guide-error-handling.md
@@ -0,0 +1,4 @@
+% Error Handling in Rust
+
+This content has moved into the
+[the Rust Programming Language book](book/error-handling.html).
diff --git a/src/doc/guide-ffi.md b/src/doc/guide-ffi.md
new file mode 100644
index 00000000000..4c818cacbfa
--- /dev/null
+++ b/src/doc/guide-ffi.md
@@ -0,0 +1,4 @@
+% The (old) Rust Foreign Function Interface Guide
+
+This content has moved into the
+[the Rust Programming Language book](book/ffi.html).
diff --git a/src/doc/guide-macros.md b/src/doc/guide-macros.md
new file mode 100644
index 00000000000..534ae3504c3
--- /dev/null
+++ b/src/doc/guide-macros.md
@@ -0,0 +1,4 @@
+% The (old) Rust Macros Guide
+
+This content has moved into the
+[the Rust Programming Language book](book/macros.html).
diff --git a/src/doc/guide-ownership.md b/src/doc/guide-ownership.md
new file mode 100644
index 00000000000..26e059aeb26
--- /dev/null
+++ b/src/doc/guide-ownership.md
@@ -0,0 +1,4 @@
+% The (old) Rust Ownership Guide
+
+This content has moved into the
+[the Rust Programming Language book](book/ownership.html).
diff --git a/src/doc/guide-plugins.md b/src/doc/guide-plugins.md
new file mode 100644
index 00000000000..abfe7a44703
--- /dev/null
+++ b/src/doc/guide-plugins.md
@@ -0,0 +1,4 @@
+% The (old) Rust Compiler Plugins Guide
+
+This content has moved into the
+[the Rust Programming Language book](book/plugins.html).
diff --git a/src/doc/guide-pointers.md b/src/doc/guide-pointers.md
new file mode 100644
index 00000000000..e72eaf62720
--- /dev/null
+++ b/src/doc/guide-pointers.md
@@ -0,0 +1,4 @@
+% The (old) Rust Pointer Guide
+
+This content has moved into the
+[the Rust Programming Language book](book/pointers.html).
diff --git a/src/doc/guide-strings.md b/src/doc/guide-strings.md
new file mode 100644
index 00000000000..fd1420024c6
--- /dev/null
+++ b/src/doc/guide-strings.md
@@ -0,0 +1,4 @@
+% The (old) Guide to Rust Strings
+
+This content has moved into the
+[the Rust Programming Language book](book/strings.html).
diff --git a/src/doc/guide-tasks.md b/src/doc/guide-tasks.md
new file mode 100644
index 00000000000..be8cb670986
--- /dev/null
+++ b/src/doc/guide-tasks.md
@@ -0,0 +1,4 @@
+% The (old) Rust Threads and Communication Guide
+
+This content has moved into the
+[the Rust Programming Language book](book/tasks.html).
diff --git a/src/doc/guide-testing.md b/src/doc/guide-testing.md
new file mode 100644
index 00000000000..79721300d94
--- /dev/null
+++ b/src/doc/guide-testing.md
@@ -0,0 +1,4 @@
+% The (old) Rust Testing Guide
+
+This content has moved into the
+[the Rust Programming Language book](book/testing.html).
diff --git a/src/doc/guide-unsafe.md b/src/doc/guide-unsafe.md
new file mode 100644
index 00000000000..fe8fcc4c19d
--- /dev/null
+++ b/src/doc/guide-unsafe.md
@@ -0,0 +1,4 @@
+% Writing Safe Low-level and Unsafe Code in Rust
+
+This content has moved into the
+[the Rust Programming Language book](book/unsafe.html).
diff --git a/src/doc/guide.md b/src/doc/guide.md
new file mode 100644
index 00000000000..ba1e2590e7f
--- /dev/null
+++ b/src/doc/guide.md
@@ -0,0 +1,4 @@
+% The (old) Rust Guide
+
+This content has moved into the
+[the Rust Programming Language book](book/README.html).
diff --git a/src/rustbook/book.rs b/src/rustbook/book.rs
index 1d16de2a2fe..20346449fd1 100644
--- a/src/rustbook/book.rs
+++ b/src/rustbook/book.rs
@@ -124,7 +124,7 @@ pub fn parse_summary<R: Reader>(input: R, src: &Path) -> Result<Book, Vec<String
             let path_from_root = match src.join(given_path.unwrap()).path_relative_from(src) {
                 Some(p) => p,
                 None => {
-                    errors.push(format!("Paths in SUMMARY.md must be relative, \
+                    errors.push(format!("paths in SUMMARY.md must be relative, \
                                          but path '{}' for section '{}' is not.",
                                          given_path.unwrap(), title));
                     Path::new("")
@@ -148,8 +148,9 @@ pub fn parse_summary<R: Reader>(input: R, src: &Path) -> Result<Book, Vec<String
             }).sum() / 4 + 1;
 
             if level > stack.len() + 1 {
-                // FIXME: better error message
-                errors.push(format!("Section '{}' is indented too many levels.", item.title));
+                errors.push(format!("section '{}' is indented too deeply; \
+                                     found {}, expected {} or less",
+                                    item.title, level, stack.len() + 1));
             } else if level <= stack.len() {
                 collapse(&mut stack, &mut top_items, level);
             }
diff --git a/src/rustbook/build.rs b/src/rustbook/build.rs
index 1cb5e38e190..44b1630d9fb 100644
--- a/src/rustbook/build.rs
+++ b/src/rustbook/build.rs
@@ -73,10 +73,7 @@ fn write_toc(book: &Book, path_to_root: &Path, out: &mut Writer) -> IoResult<()>
 }
 
 fn render(book: &Book, tgt: &Path) -> CliResult<()> {
-    let tmp = TempDir::new("rust-book")
-                      .ok()
-                      // FIXME: lift to Result instead
-                      .expect("could not create temporary directory");
+    let tmp = try!(TempDir::new("rust-book"));
 
     for (section, item) in book.iter() {
         println!("{} {}", section, item.title);
@@ -163,30 +160,24 @@ impl Subcommand for Build {
             tgt = Path::new(os::args()[3].clone());
         }
 
-        let _ = fs::mkdir(&tgt, io::USER_DIR); // FIXME: handle errors
+        try!(fs::mkdir(&tgt, io::USER_DIR));
 
-        // FIXME: handle errors
-        let _ = File::create(&tgt.join("rust-book.css")).write_str(css::STYLE);
+        try!(File::create(&tgt.join("rust-book.css")).write_str(css::STYLE));
 
-        let summary = File::open(&src.join("SUMMARY.md"));
+        let summary = try!(File::open(&src.join("SUMMARY.md")));
         match book::parse_summary(summary, &src) {
             Ok(book) => {
                 // execute rustdoc on the whole book
-                try!(render(&book, &tgt).map_err(|err| {
-                    term.err(&format!("error: {}", err.description())[]);
-                    err.detail().map(|detail| {
-                        term.err(&format!("detail: {}", detail)[]);
-                    });
-                    err
-                }))
+                render(&book, &tgt)
             }
             Err(errors) => {
+                let n = errors.len();
                 for err in errors.into_iter() {
-                    term.err(&err[]);
+                    term.err(&format!("error: {}", err)[]);
                 }
+
+                Err(box format!("{} errors occurred", n) as Box<Error>)
             }
         }
-
-        Ok(()) // lol
     }
 }
diff --git a/src/rustbook/css.rs b/src/rustbook/css.rs
index 8eb66e71d3a..92433589155 100644
--- a/src/rustbook/css.rs
+++ b/src/rustbook/css.rs
@@ -11,7 +11,7 @@
 // The rust-book CSS in string form.
 
 pub static STYLE: &'static str = r#"
-@import url("//static.rust-lang.org/doc/master/rust.css");
+@import url("../rust.css");
 
 body {
     max-width:none;
diff --git a/src/rustbook/error.rs b/src/rustbook/error.rs
index a5915ed4d73..7d5e7efcc94 100644
--- a/src/rustbook/error.rs
+++ b/src/rustbook/error.rs
@@ -79,4 +79,5 @@ impl Error for IoError {
     }
 }
 
+
 //fn iter_map_err<T, U, E, I: Iterator<Result<T,E>>>(iter: I,
diff --git a/src/rustbook/main.rs b/src/rustbook/main.rs
index acb4edb7a45..48dad14321a 100644
--- a/src/rustbook/main.rs
+++ b/src/rustbook/main.rs
@@ -54,7 +54,12 @@ fn main() {
                     Ok(_) => {
                         match subcmd.execute(&mut term) {
                             Ok(_) => (),
-                            Err(_) => os::set_exit_status(-1),
+                            Err(err) => {
+                                term.err(&format!("error: {}", err.description())[]);
+                                err.detail().map(|detail| {
+                                    term.err(&format!("detail: {}", detail)[]);
+                                });
+                            }
                         }
                     }
                     Err(err) => {