From 3de5f7f3e92ce3d44ac8a5bb36457c85717cc0b5 Mon Sep 17 00:00:00 2001
From: Chris Wong <lambda.fairy@gmail.com>
Date: Sun, 30 Jul 2017 22:18:26 +1200
Subject: [PATCH] Move lints into their own maud_lints crate

---
 .travis.yml                                   |  2 +-
 Cargo.toml                                    |  1 +
 maud_lints/Cargo.toml                         | 22 +++++++++++++++
 .../src/lints => maud_lints/src}/doctype.rs   |  0
 maud_lints/src/lib.rs                         | 27 +++++++++++++++++++
 .../src/lints => maud_lints/src}/util.rs      |  0
 maud_macros/src/lib.rs                        | 12 ---------
 maud_macros/src/lints/mod.rs                  | 14 ----------
 8 files changed, 51 insertions(+), 27 deletions(-)
 create mode 100644 maud_lints/Cargo.toml
 rename {maud_macros/src/lints => maud_lints/src}/doctype.rs (100%)
 create mode 100644 maud_lints/src/lib.rs
 rename {maud_macros/src/lints => maud_lints/src}/util.rs (100%)
 delete mode 100644 maud_macros/src/lints/mod.rs

diff --git a/.travis.yml b/.travis.yml
index a4c7571..589b106 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -11,7 +11,7 @@ script:
   - |
     if command -v cargo-clippy > /dev/null; then
       CLIPPY_STATUS=0
-      for package in maud_htmlescape maud_macros maud maud_extras; do
+      for package in maud_htmlescape maud_macros maud maud_lints maud_extras; do
         cargo clippy --manifest-path $package/Cargo.toml -- -D warnings || CLIPPY_STATUS=$?
       done
       (exit $CLIPPY_STATUS)
diff --git a/Cargo.toml b/Cargo.toml
index 87876cd..eea673a 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -3,5 +3,6 @@ members = [
     "maud_htmlescape",
     "maud_macros",
     "maud",
+    "maud_lints",
     "maud_extras",
 ]
diff --git a/maud_lints/Cargo.toml b/maud_lints/Cargo.toml
new file mode 100644
index 0000000..9a53f24
--- /dev/null
+++ b/maud_lints/Cargo.toml
@@ -0,0 +1,22 @@
+[package]
+
+name = "maud_lints"
+# When releasing a new version, please update html_root_url in src/lib.rs
+version = "0.17.0"
+authors = ["Chris Wong <lambda.fairy@gmail.com>"]
+
+license = "MIT/Apache-2.0"
+documentation = "https://docs.rs/maud_lints/"
+homepage = "https://maud.lambda.xyz/"
+repository = "https://github.com/lfairy/maud"
+description = "Lint plugin for the Maud template engine."
+
+[dependencies]
+if_chain = "0.1"
+
+[lib]
+name = "maud_lints"
+plugin = true
+
+[badges]
+travis-ci = { repository = "lfairy/maud" }
diff --git a/maud_macros/src/lints/doctype.rs b/maud_lints/src/doctype.rs
similarity index 100%
rename from maud_macros/src/lints/doctype.rs
rename to maud_lints/src/doctype.rs
diff --git a/maud_lints/src/lib.rs b/maud_lints/src/lib.rs
new file mode 100644
index 0000000..d286222
--- /dev/null
+++ b/maud_lints/src/lib.rs
@@ -0,0 +1,27 @@
+#![feature(plugin_registrar)]
+#![feature(rustc_private)]
+#![recursion_limit = "1000"]  // if_chain
+
+#![doc(html_root_url = "https://docs.rs/maud_lints/0.17.0")]
+
+#[macro_use]
+extern crate if_chain;
+#[macro_use]
+extern crate rustc;
+extern crate rustc_plugin;
+extern crate syntax;
+
+use rustc_plugin::Registry;
+
+#[macro_use]
+mod util;
+
+mod doctype;
+
+#[plugin_registrar]
+pub fn plugin_registrar(reg: &mut Registry) {
+    reg.register_late_lint_pass(Box::new(doctype::Doctype));
+    reg.register_lint_group("maud", vec![
+        doctype::MAUD_DOCTYPE,
+    ]);
+}
diff --git a/maud_macros/src/lints/util.rs b/maud_lints/src/util.rs
similarity index 100%
rename from maud_macros/src/lints/util.rs
rename to maud_lints/src/util.rs
diff --git a/maud_macros/src/lib.rs b/maud_macros/src/lib.rs
index 409c7ab..aaa07da 100644
--- a/maud_macros/src/lib.rs
+++ b/maud_macros/src/lib.rs
@@ -1,5 +1,4 @@
 #![feature(proc_macro)]
-#![recursion_limit = "1000"]  // if_chain
 
 #![doc(html_root_url = "https://docs.rs/maud_macros/0.16.3")]
 
@@ -7,8 +6,6 @@ extern crate literalext;
 extern crate maud_htmlescape;
 extern crate proc_macro;
 
-// TODO move lints into their own `maud_lints` crate
-// mod lints;
 mod parse;
 mod render;
 
@@ -34,12 +31,3 @@ pub fn html_debug(args: TokenStream) -> TokenStream {
         Err(e) => panic!(e),
     }
 }
-
-/*
-#[plugin_registrar]
-pub fn plugin_registrar(reg: &mut Registry) {
-    reg.register_macro("html", expand_html);
-    reg.register_macro("html_debug", expand_html_debug);
-    lints::register_lints(reg);
-}
-*/
diff --git a/maud_macros/src/lints/mod.rs b/maud_macros/src/lints/mod.rs
deleted file mode 100644
index 37b5acd..0000000
--- a/maud_macros/src/lints/mod.rs
+++ /dev/null
@@ -1,14 +0,0 @@
-use rustc_plugin::Registry;
-
-#[macro_use]
-mod util;
-
-mod doctype;
-
-pub fn register_lints(reg: &mut Registry) {
-    reg.register_late_lint_pass(Box::new(doctype::Doctype));
-
-    reg.register_lint_group("maud", vec![
-        doctype::MAUD_DOCTYPE,
-    ]);
-}