aboutsummaryrefslogtreecommitdiff
path: root/src/css_scanner.zig
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-09-05 19:40:59 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-09-05 19:40:59 -0700
commit0822e67594211850b9e21c8860594a13737f95cb (patch)
treedec6031cbf96c4889bc9da11390d9ee4890e883c /src/css_scanner.zig
parent7e79d9dae678b841a3682819610f0c6819437160 (diff)
downloadbun-0822e67594211850b9e21c8860594a13737f95cb.tar.gz
bun-0822e67594211850b9e21c8860594a13737f95cb.tar.zst
bun-0822e67594211850b9e21c8860594a13737f95cb.zip
such entitle
Former-commit-id: de26ae30116e3c13c48a710201a7da0817ffd9e5
Diffstat (limited to 'src/css_scanner.zig')
-rw-r--r--src/css_scanner.zig80
1 files changed, 47 insertions, 33 deletions
diff --git a/src/css_scanner.zig b/src/css_scanner.zig
index 1415ac3e6..4dc6fa106 100644
--- a/src/css_scanner.zig
+++ b/src/css_scanner.zig
@@ -114,6 +114,8 @@ pub const Scanner = struct {
codepoint: CodePoint = -1,
approximate_newline_count: usize = 0,
+ did_warn_tailwind: bool = false,
+
pub fn init(log: *logger.Log, allocator: *std.mem.Allocator, source: *const logger.Source) Scanner {
return Scanner{ .log = log, .source = source, .allocator = allocator };
}
@@ -316,6 +318,18 @@ pub const Scanner = struct {
return text;
}
+ pub fn warnTailwind(scanner: *Scanner, start: usize) void {
+ if (scanner.did_warn_tailwind) return;
+ scanner.did_warn_tailwind = true;
+ scanner.log.addWarningFmt(
+ scanner.source,
+ logger.usize2Loc(start),
+ scanner.allocator,
+ "To use Tailwind with Bun, use the Tailwind CLI and import the processed .css file.\nLearn more: https://tailwindcss.com/docs/installation#watching-for-changes",
+ .{},
+ ) catch {};
+ }
+
pub fn next(
scanner: *Scanner,
comptime import_behavior: ImportBehavior,
@@ -495,46 +509,22 @@ pub const Scanner = struct {
switch (word[0]) {
'b' => {
if (strings.eqlComptime(word, "base")) {
- scanner.log.addWarningFmt(
- scanner.source,
- logger.Loc{ .start = @intCast(i32, start) },
- scanner.allocator,
- "Tailwind not supported yet, try @import \"tailwindcss/dist/base.css\";",
- .{},
- ) catch {};
+ scanner.warnTailwind(start);
}
},
'c' => {
if (strings.eqlComptime(word, "components")) {
- scanner.log.addWarningFmt(
- scanner.source,
- logger.Loc{ .start = @intCast(i32, start) },
- scanner.allocator,
- "Tailwind not supported yet, try @import \"tailwindcss/dist/components.css\";",
- .{},
- ) catch {};
+ scanner.warnTailwind(start);
}
},
'u' => {
if (strings.eqlComptime(word, "utilities")) {
- scanner.log.addWarningFmt(
- scanner.source,
- logger.Loc{ .start = @intCast(i32, start) },
- scanner.allocator,
- "Tailwind not supported yet, try @import \"tailwindcss/dist/utilities.css\";",
- .{},
- ) catch {};
+ scanner.warnTailwind(start);
}
},
's' => {
if (strings.eqlComptime(word, "screens")) {
- scanner.log.addWarningFmt(
- scanner.source,
- logger.Loc{ .start = @intCast(i32, start) },
- scanner.allocator,
- "Tailwind not supported yet, try @import \"tailwindcss/dist/screens.css\";",
- .{},
- ) catch {};
+ scanner.warnTailwind(start);
}
},
else => continue :toplevel,
@@ -897,7 +887,12 @@ pub fn NewWriter(
};
}
- pub fn scan(writer: *Writer, log: *logger.Log, allocator: *std.mem.Allocator) !void {
+ pub fn scan(
+ writer: *Writer,
+ log: *logger.Log,
+ allocator: *std.mem.Allocator,
+ did_warn_tailwind: *bool,
+ ) !void {
var scanner = Scanner.init(
log,
@@ -905,10 +900,17 @@ pub fn NewWriter(
writer.source,
);
+ scanner.did_warn_tailwind = did_warn_tailwind.*;
try scanner.next(.scan, @TypeOf(writer), writer, scanChunk);
+ did_warn_tailwind.* = scanner.did_warn_tailwind;
}
- pub fn append(writer: *Writer, log: *logger.Log, allocator: *std.mem.Allocator) !usize {
+ pub fn append(
+ writer: *Writer,
+ log: *logger.Log,
+ allocator: *std.mem.Allocator,
+ did_warn_tailwind: *bool,
+ ) !usize {
var scanner = Scanner.init(
log,
@@ -916,19 +918,30 @@ pub fn NewWriter(
writer.source,
);
+ scanner.did_warn_tailwind = did_warn_tailwind.*;
+
try scanner.next(.omit, @TypeOf(writer), writer, writeBundledChunk);
+ did_warn_tailwind.* = scanner.did_warn_tailwind;
+
return scanner.approximate_newline_count;
}
- pub fn run(writer: *Writer, log: *logger.Log, allocator: *std.mem.Allocator) !void {
+ pub fn run(
+ writer: *Writer,
+ log: *logger.Log,
+ allocator: *std.mem.Allocator,
+ did_warn_tailwind: *bool,
+ ) !void {
var scanner = Scanner.init(
log,
allocator,
writer.source,
);
+ scanner.did_warn_tailwind = did_warn_tailwind.*;
try scanner.next(.keep, @TypeOf(writer), writer, commitChunk);
+ did_warn_tailwind.* = scanner.did_warn_tailwind;
}
fn writeString(writer: *Writer, str: string, quote: Chunk.TextContent.Quote) !void {
@@ -1180,13 +1193,14 @@ pub fn NewBundler(
css.buildCtx = &this;
try this.addCSSImport(absolute_path);
+ var did_warn_tailwind: bool = false;
while (this.import_queue.readItem()) |item| {
const watcher_id = this.watcher.indexOf(item) orelse unreachable;
const watch_item = this.watcher.watchlist.get(watcher_id);
const source = try this.getSource(watch_item.file_path, watch_item.fd);
css.source = &source;
- try css.scan(log, allocator);
+ try css.scan(log, allocator, &did_warn_tailwind);
}
// This exists to identify the entry point
@@ -1222,7 +1236,7 @@ pub fn NewBundler(
try this.writeAll("/* ");
try this.writeAll(file_path);
try this.writeAll("*/\n");
- lines_of_code += try css.append(log, allocator);
+ lines_of_code += try css.append(log, allocator, &did_warn_tailwind);
}
try this.writer.done();