From: Dirk Gadsden Date: Mon, 15 Feb 2016 06:26:37 +0000 (-0800) Subject: Rename `error-index-generator` to `error_index_generator` X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=2766e254b1c326fb32414496c9532bcb3d3f1d51;p=rust.git Rename `error-index-generator` to `error_index_generator` This is because the tool compiler passes the name of the tool as a command line `--cfg`. The improved session config parser is stricter and no longer permits invalid meta items (such as "error-index-generator"). --- diff --git a/mk/crates.mk b/mk/crates.mk index bfd054ae988..cf3e479ec21 100644 --- a/mk/crates.mk +++ b/mk/crates.mk @@ -59,7 +59,7 @@ RUSTC_CRATES := rustc rustc_typeck rustc_mir rustc_borrowck rustc_resolve rustc_ rustc_data_structures rustc_front rustc_platform_intrinsics \ rustc_plugin rustc_metadata rustc_passes HOST_CRATES := syntax syntax_ext $(RUSTC_CRATES) rustdoc fmt_macros -TOOLS := compiletest rustdoc rustc rustbook error-index-generator +TOOLS := compiletest rustdoc rustc rustbook error_index_generator DEPS_core := DEPS_alloc := core libc alloc_system @@ -120,12 +120,12 @@ TOOL_DEPS_compiletest := test getopts TOOL_DEPS_rustdoc := rustdoc TOOL_DEPS_rustc := rustc_driver TOOL_DEPS_rustbook := std rustdoc -TOOL_DEPS_error-index-generator := rustdoc syntax serialize +TOOL_DEPS_error_index_generator := rustdoc syntax serialize TOOL_SOURCE_compiletest := $(S)src/compiletest/compiletest.rs TOOL_SOURCE_rustdoc := $(S)src/driver/driver.rs TOOL_SOURCE_rustc := $(S)src/driver/driver.rs TOOL_SOURCE_rustbook := $(S)src/rustbook/main.rs -TOOL_SOURCE_error-index-generator := $(S)src/error-index-generator/main.rs +TOOL_SOURCE_error_index_generator := $(S)src/error_index_generator/main.rs ONLY_RLIB_core := 1 ONLY_RLIB_libc := 1 diff --git a/mk/dist.mk b/mk/dist.mk index 685fb2b5b46..31d3764eefa 100644 --- a/mk/dist.mk +++ b/mk/dist.mk @@ -52,7 +52,7 @@ PKG_FILES := \ doc \ driver \ etc \ - error-index-generator \ + error_index_generator \ $(foreach crate,$(CRATES),lib$(crate)) \ libcollectionstest \ libcoretest \ diff --git a/mk/docs.mk b/mk/docs.mk index 7f73b99863f..83cdb7f8023 100644 --- a/mk/docs.mk +++ b/mk/docs.mk @@ -59,8 +59,8 @@ RUSTBOOK_EXE = $(HBIN2_H_$(CFG_BUILD))/rustbook$(X_$(CFG_BUILD)) # ./configure RUSTBOOK = $(RPATH_VAR2_T_$(CFG_BUILD)_H_$(CFG_BUILD)) $(RUSTBOOK_EXE) -# The error-index-generator executable... -ERR_IDX_GEN_EXE = $(HBIN2_H_$(CFG_BUILD))/error-index-generator$(X_$(CFG_BUILD)) +# The error_index_generator executable... +ERR_IDX_GEN_EXE = $(HBIN2_H_$(CFG_BUILD))/error_index_generator$(X_$(CFG_BUILD)) ERR_IDX_GEN = $(RPATH_VAR2_T_$(CFG_BUILD)_H_$(CFG_BUILD)) $(ERR_IDX_GEN_EXE) ERR_IDX_GEN_MD = $(RPATH_VAR2_T_$(CFG_BUILD)_H_$(CFG_BUILD)) $(ERR_IDX_GEN_EXE) markdown @@ -221,9 +221,9 @@ error-index: doc/error-index.html # Metadata used to generate the index is created as a side effect of # the build so this depends on every crate being up to date. doc/error-index.html: $(ERR_IDX_GEN_EXE) $(CSREQ$(2)_T_$(CFG_BUILD)_H_$(CFG_BUILD)) | doc/ - $(Q)$(call E, error-index-generator: $@) + $(Q)$(call E, error_index_generator: $@) $(Q)$(ERR_IDX_GEN) doc/error-index.md: $(ERR_IDX_GEN_EXE) $(CSREQ$(2)_T_$(CFG_BUILD)_H_$(CFG_BUILD)) | doc/ - $(Q)$(call E, error-index-generator: $@) + $(Q)$(call E, error_index_generator: $@) $(Q)$(ERR_IDX_GEN_MD) diff --git a/mk/prepare.mk b/mk/prepare.mk index 87a445000ad..2488de4ad5b 100644 --- a/mk/prepare.mk +++ b/mk/prepare.mk @@ -82,7 +82,7 @@ define PREPARE_MAN endef -PREPARE_TOOLS = $(filter-out compiletest rustbook error-index-generator, $(TOOLS)) +PREPARE_TOOLS = $(filter-out compiletest rustbook error_index_generator, $(TOOLS)) # $(1) is tool diff --git a/src/error-index-generator/main.rs b/src/error-index-generator/main.rs deleted file mode 100644 index db9dd006f3c..00000000000 --- a/src/error-index-generator/main.rs +++ /dev/null @@ -1,203 +0,0 @@ -// Copyright 2015 The Rust Project Developers. See the COPYRIGHT -// file at the top-level directory of this distribution and at -// http://rust-lang.org/COPYRIGHT. -// -// Licensed under the Apache License, Version 2.0 or the MIT license -// , at your -// option. This file may not be copied, modified, or distributed -// except according to those terms. - -#![feature(rustc_private, rustdoc)] - -extern crate syntax; -extern crate rustdoc; -extern crate serialize as rustc_serialize; - -use std::collections::BTreeMap; -use std::fs::{read_dir, File}; -use std::io::{Read, Write}; -use std::env; -use std::path::Path; -use std::error::Error; - -use syntax::diagnostics::metadata::{get_metadata_dir, ErrorMetadataMap, ErrorMetadata}; - -use rustdoc::html::markdown::Markdown; -use rustc_serialize::json; - -enum OutputFormat { - HTML(HTMLFormatter), - Markdown(MarkdownFormatter), - Unknown(String), -} - -impl OutputFormat { - fn from(format: &str) -> OutputFormat { - match &*format.to_lowercase() { - "html" => OutputFormat::HTML(HTMLFormatter), - "markdown" => OutputFormat::Markdown(MarkdownFormatter), - s => OutputFormat::Unknown(s.to_owned()), - } - } -} - -trait Formatter { - fn header(&self, output: &mut Write) -> Result<(), Box>; - fn title(&self, output: &mut Write) -> Result<(), Box>; - fn error_code_block(&self, output: &mut Write, info: &ErrorMetadata, - err_code: &str) -> Result<(), Box>; - fn footer(&self, output: &mut Write) -> Result<(), Box>; -} - -struct HTMLFormatter; -struct MarkdownFormatter; - -impl Formatter for HTMLFormatter { - fn header(&self, output: &mut Write) -> Result<(), Box> { - try!(write!(output, r##" - - -Rust Compiler Error Index - - - - - - - -"##)); - Ok(()) - } - - fn title(&self, output: &mut Write) -> Result<(), Box> { - try!(write!(output, "

Rust Compiler Error Index

\n")); - Ok(()) - } - - fn error_code_block(&self, output: &mut Write, info: &ErrorMetadata, - err_code: &str) -> Result<(), Box> { - // Enclose each error in a div so they can be shown/hidden en masse. - let desc_desc = match info.description { - Some(_) => "error-described", - None => "error-undescribed", - }; - let use_desc = match info.use_site { - Some(_) => "error-used", - None => "error-unused", - }; - try!(write!(output, "
", desc_desc, use_desc)); - - // Error title (with self-link). - try!(write!(output, - "

{0}

\n", - err_code)); - - // Description rendered as markdown. - match info.description { - Some(ref desc) => try!(write!(output, "{}", Markdown(desc))), - None => try!(write!(output, "

No description.

\n")), - } - - try!(write!(output, "
\n")); - Ok(()) - } - - fn footer(&self, output: &mut Write) -> Result<(), Box> { - try!(write!(output, "\n")); - Ok(()) - } -} - -impl Formatter for MarkdownFormatter { - #[allow(unused_variables)] - fn header(&self, output: &mut Write) -> Result<(), Box> { - Ok(()) - } - - fn title(&self, output: &mut Write) -> Result<(), Box> { - try!(write!(output, "# Rust Compiler Error Index\n")); - Ok(()) - } - - fn error_code_block(&self, output: &mut Write, info: &ErrorMetadata, - err_code: &str) -> Result<(), Box> { - Ok(match info.description { - Some(ref desc) => try!(write!(output, "## {}\n{}\n", err_code, desc)), - None => (), - }) - } - - #[allow(unused_variables)] - fn footer(&self, output: &mut Write) -> Result<(), Box> { - Ok(()) - } -} - -/// Load all the metadata files from `metadata_dir` into an in-memory map. -fn load_all_errors(metadata_dir: &Path) -> Result> { - let mut all_errors = BTreeMap::new(); - - for entry in try!(read_dir(metadata_dir)) { - let path = try!(entry).path(); - - let mut metadata_str = String::new(); - try!(File::open(&path).and_then(|mut f| f.read_to_string(&mut metadata_str))); - - let some_errors: ErrorMetadataMap = try!(json::decode(&metadata_str)); - - for (err_code, info) in some_errors { - all_errors.insert(err_code, info); - } - } - - Ok(all_errors) -} - -/// Output an HTML page for the errors in `err_map` to `output_path`. -fn render_error_page(err_map: &ErrorMetadataMap, output_path: &Path, - formatter: T) -> Result<(), Box> { - let mut output_file = try!(File::create(output_path)); - - try!(formatter.header(&mut output_file)); - try!(formatter.title(&mut output_file)); - - for (err_code, info) in err_map { - try!(formatter.error_code_block(&mut output_file, info, err_code)); - } - - formatter.footer(&mut output_file) -} - -fn main_with_result(format: OutputFormat) -> Result<(), Box> { - let build_arch = try!(env::var("CFG_BUILD")); - let metadata_dir = get_metadata_dir(&build_arch); - let err_map = try!(load_all_errors(&metadata_dir)); - match format { - OutputFormat::Unknown(s) => panic!("Unknown output format: {}", s), - OutputFormat::HTML(h) => try!(render_error_page(&err_map, - Path::new("doc/error-index.html"), - h)), - OutputFormat::Markdown(m) => try!(render_error_page(&err_map, - Path::new("doc/error-index.md"), - m)), - } - Ok(()) -} - -fn parse_args() -> OutputFormat { - for arg in env::args().skip(1) { - return OutputFormat::from(&arg); - } - OutputFormat::from("html") -} - -fn main() { - if let Err(e) = main_with_result(parse_args()) { - panic!("{}", e.description()); - } -} diff --git a/src/error_index_generator/main.rs b/src/error_index_generator/main.rs new file mode 100644 index 00000000000..db9dd006f3c --- /dev/null +++ b/src/error_index_generator/main.rs @@ -0,0 +1,203 @@ +// Copyright 2015 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![feature(rustc_private, rustdoc)] + +extern crate syntax; +extern crate rustdoc; +extern crate serialize as rustc_serialize; + +use std::collections::BTreeMap; +use std::fs::{read_dir, File}; +use std::io::{Read, Write}; +use std::env; +use std::path::Path; +use std::error::Error; + +use syntax::diagnostics::metadata::{get_metadata_dir, ErrorMetadataMap, ErrorMetadata}; + +use rustdoc::html::markdown::Markdown; +use rustc_serialize::json; + +enum OutputFormat { + HTML(HTMLFormatter), + Markdown(MarkdownFormatter), + Unknown(String), +} + +impl OutputFormat { + fn from(format: &str) -> OutputFormat { + match &*format.to_lowercase() { + "html" => OutputFormat::HTML(HTMLFormatter), + "markdown" => OutputFormat::Markdown(MarkdownFormatter), + s => OutputFormat::Unknown(s.to_owned()), + } + } +} + +trait Formatter { + fn header(&self, output: &mut Write) -> Result<(), Box>; + fn title(&self, output: &mut Write) -> Result<(), Box>; + fn error_code_block(&self, output: &mut Write, info: &ErrorMetadata, + err_code: &str) -> Result<(), Box>; + fn footer(&self, output: &mut Write) -> Result<(), Box>; +} + +struct HTMLFormatter; +struct MarkdownFormatter; + +impl Formatter for HTMLFormatter { + fn header(&self, output: &mut Write) -> Result<(), Box> { + try!(write!(output, r##" + + +Rust Compiler Error Index + + + + + + + +"##)); + Ok(()) + } + + fn title(&self, output: &mut Write) -> Result<(), Box> { + try!(write!(output, "

Rust Compiler Error Index

\n")); + Ok(()) + } + + fn error_code_block(&self, output: &mut Write, info: &ErrorMetadata, + err_code: &str) -> Result<(), Box> { + // Enclose each error in a div so they can be shown/hidden en masse. + let desc_desc = match info.description { + Some(_) => "error-described", + None => "error-undescribed", + }; + let use_desc = match info.use_site { + Some(_) => "error-used", + None => "error-unused", + }; + try!(write!(output, "
", desc_desc, use_desc)); + + // Error title (with self-link). + try!(write!(output, + "

{0}

\n", + err_code)); + + // Description rendered as markdown. + match info.description { + Some(ref desc) => try!(write!(output, "{}", Markdown(desc))), + None => try!(write!(output, "

No description.

\n")), + } + + try!(write!(output, "
\n")); + Ok(()) + } + + fn footer(&self, output: &mut Write) -> Result<(), Box> { + try!(write!(output, "\n")); + Ok(()) + } +} + +impl Formatter for MarkdownFormatter { + #[allow(unused_variables)] + fn header(&self, output: &mut Write) -> Result<(), Box> { + Ok(()) + } + + fn title(&self, output: &mut Write) -> Result<(), Box> { + try!(write!(output, "# Rust Compiler Error Index\n")); + Ok(()) + } + + fn error_code_block(&self, output: &mut Write, info: &ErrorMetadata, + err_code: &str) -> Result<(), Box> { + Ok(match info.description { + Some(ref desc) => try!(write!(output, "## {}\n{}\n", err_code, desc)), + None => (), + }) + } + + #[allow(unused_variables)] + fn footer(&self, output: &mut Write) -> Result<(), Box> { + Ok(()) + } +} + +/// Load all the metadata files from `metadata_dir` into an in-memory map. +fn load_all_errors(metadata_dir: &Path) -> Result> { + let mut all_errors = BTreeMap::new(); + + for entry in try!(read_dir(metadata_dir)) { + let path = try!(entry).path(); + + let mut metadata_str = String::new(); + try!(File::open(&path).and_then(|mut f| f.read_to_string(&mut metadata_str))); + + let some_errors: ErrorMetadataMap = try!(json::decode(&metadata_str)); + + for (err_code, info) in some_errors { + all_errors.insert(err_code, info); + } + } + + Ok(all_errors) +} + +/// Output an HTML page for the errors in `err_map` to `output_path`. +fn render_error_page(err_map: &ErrorMetadataMap, output_path: &Path, + formatter: T) -> Result<(), Box> { + let mut output_file = try!(File::create(output_path)); + + try!(formatter.header(&mut output_file)); + try!(formatter.title(&mut output_file)); + + for (err_code, info) in err_map { + try!(formatter.error_code_block(&mut output_file, info, err_code)); + } + + formatter.footer(&mut output_file) +} + +fn main_with_result(format: OutputFormat) -> Result<(), Box> { + let build_arch = try!(env::var("CFG_BUILD")); + let metadata_dir = get_metadata_dir(&build_arch); + let err_map = try!(load_all_errors(&metadata_dir)); + match format { + OutputFormat::Unknown(s) => panic!("Unknown output format: {}", s), + OutputFormat::HTML(h) => try!(render_error_page(&err_map, + Path::new("doc/error-index.html"), + h)), + OutputFormat::Markdown(m) => try!(render_error_page(&err_map, + Path::new("doc/error-index.md"), + m)), + } + Ok(()) +} + +fn parse_args() -> OutputFormat { + for arg in env::args().skip(1) { + return OutputFormat::from(&arg); + } + OutputFormat::from("html") +} + +fn main() { + if let Err(e) = main_with_result(parse_args()) { + panic!("{}", e.description()); + } +}