Skip past shebang in source file
diff --git a/gen/src/mod.rs b/gen/src/mod.rs
index 8df3404..0aa149f 100644
--- a/gen/src/mod.rs
+++ b/gen/src/mod.rs
@@ -49,9 +49,14 @@
         Ok(source) => source,
         Err(err) => format_err(path, "", Error::Io(err)),
     };
-    match generate(&source, opt, header) {
+    let mut source = source.as_str();
+    if source.starts_with("#!") && !source.starts_with("#![") {
+        let shebang_end = source.find('\n').unwrap_or(source.len());
+        source = &source[shebang_end..];
+    }
+    match generate(source, opt, header) {
         Ok(out) => out,
-        Err(err) => format_err(path, &source, err),
+        Err(err) => format_err(path, source, err),
     }
 }