blob: e353c534eafaf7b8d29f6236ffa0a65de879118d (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
if MODE == 'CLIENT'
return {}
posix = require 'posix'
{
{
inp: 'text/x-scss'
out: 'text/css'
cost: 1
transform: (content) =>
r0, w0 = posix.pipe!
r1, w1 = posix.pipe!
r2, w2 = posix.pipe!
pid = assert posix.fork!
if pid == 0
posix.close w0
posix.close r1
posix.close r2
posix.dup2 r0, posix.fileno io.stdin
posix.dup2 w1, posix.fileno io.stdout
posix.dup2 w2, posix.fileno io.stderr
posix.close r0
posix.close w1
posix.close w2
err = assert posix.execp 'sassc', '-s'
posix._exit err
return
else
posix.close r0
posix.close w1
posix.close w2
posix.write w0, content
posix.close w0
_, _, status = posix.wait pid
out = if status == 0 then r1 else r2
out = assert posix.fdopen out, 'r'
out = out\read 'a'
posix.close r1
posix.close r2
if status == 0
out
else
error out
}
}
|