Created
February 28, 2020 01:00
-
-
Save exelotl/2d41ba497a50c29ac54e9c4756be0944 to your computer and use it in GitHub Desktop.
NimScript to rebuild JS on save and report errors in the browser.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import strformat, strutils | |
const main = "dlghelper.nim" # file to watch | |
const mainHtml = "index.html" # source web page | |
const outputHtml = "debug.html" # receive the contents of source web page, only if nothing went wrong. | |
proc sleep(seconds: float) = | |
exec("sleep {seconds}".fmt) | |
proc lastModified(file: string): float = | |
gorge("stat --format=\"%.6Y\" {file}".fmt).strip().parseFloat() | |
proc errorPage(content: string): string = | |
fmt""" | |
<style>body {{ margin: 20px auto; color: #ddd; background: #234 }}</style> | |
<pre style="white-space: pre-wrap;">{content}</pre> | |
""" | |
var modTime: float | |
while true: | |
sleep(0.1) | |
let t = lastModified(main) | |
if t > modTime: | |
writeFile(outputHtml, errorPage("BUILDING...")) | |
modTime = t | |
let (output, exitCode) = gorgeEx("nim js " & main) | |
if exitCode == 0: | |
writeFile(outputHtml, readFile(mainHtml)) | |
else: | |
writeFile(outputHtml, errorPage(output)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment