summaryrefslogtreecommitdiff
path: root/Omni/Bild
diff options
context:
space:
mode:
Diffstat (limited to 'Omni/Bild')
-rw-r--r--Omni/Bild/Builder.nix7
-rwxr-xr-x[-rw-r--r--]Omni/Bild/Deps.hs1
-rwxr-xr-x[-rw-r--r--]Omni/Bild/Example.c1
-rwxr-xr-x[-rw-r--r--]Omni/Bild/Example.hs1
-rwxr-xr-x[-rw-r--r--]Omni/Bild/Example.lisp1
-rwxr-xr-x[-rw-r--r--]Omni/Bild/Example.py1
-rwxr-xr-x[-rw-r--r--]Omni/Bild/Example.rs1
-rw-r--r--Omni/Bild/Meta.hs34
8 files changed, 23 insertions, 24 deletions
diff --git a/Omni/Bild/Builder.nix b/Omni/Bild/Builder.nix
index a78f311..b4e6780 100644
--- a/Omni/Bild/Builder.nix
+++ b/Omni/Bild/Builder.nix
@@ -124,7 +124,12 @@ let
. ${commonBash}
cp ${../../pyproject.toml} ./pyproject.toml
check ruff format --exclude 'setup.py' --check .
- check ruff check --exclude 'setup.py' --exclude '__init__.py' .
+ # ignore EXE here to support run.sh shebangs
+ check ruff check \
+ --ignore EXE \
+ --exclude 'setup.py' \
+ --exclude '__init__.py' \
+ .
touch ./py.typed
check python -m mypy \
--explicit-package-bases \
diff --git a/Omni/Bild/Deps.hs b/Omni/Bild/Deps.hs
index c2fe53f..7183c26 100644..100755
--- a/Omni/Bild/Deps.hs
+++ b/Omni/Bild/Deps.hs
@@ -1,3 +1,4 @@
+#!/usr/bin/env run.sh
{-# LANGUAGE DerivingStrategies #-}
{-# LANGUAGE GeneralizedNewtypeDeriving #-}
{-# LANGUAGE LambdaCase #-}
diff --git a/Omni/Bild/Example.c b/Omni/Bild/Example.c
index 2f4bfd4..49b93f8 100644..100755
--- a/Omni/Bild/Example.c
+++ b/Omni/Bild/Example.c
@@ -1,3 +1,4 @@
+//usr/bin/env run.sh $0; exit
// : out examplesodium.exe
// : dep libsodium
// : arg -lsodium
diff --git a/Omni/Bild/Example.hs b/Omni/Bild/Example.hs
index 025391c..3c7c144 100644..100755
--- a/Omni/Bild/Example.hs
+++ b/Omni/Bild/Example.hs
@@ -1,3 +1,4 @@
+#!/usr/bin/env run.sh
{-# LANGUAGE QuasiQuotes #-}
{-# LANGUAGE NoImplicitPrelude #-}
diff --git a/Omni/Bild/Example.lisp b/Omni/Bild/Example.lisp
index cdabe7c..1063047 100644..100755
--- a/Omni/Bild/Example.lisp
+++ b/Omni/Bild/Example.lisp
@@ -1,3 +1,4 @@
+;/usr/bin/env run.sh $0; exit
;; : out helloworld.exe
(require 'alexandria)
(defun main ()
diff --git a/Omni/Bild/Example.py b/Omni/Bild/Example.py
index e5766ba..462a497 100644..100755
--- a/Omni/Bild/Example.py
+++ b/Omni/Bild/Example.py
@@ -1,3 +1,4 @@
+#!/usr/bin/env run.sh
"""
Test that bild can build Python stuff.
diff --git a/Omni/Bild/Example.rs b/Omni/Bild/Example.rs
index ba98dda..d6d738b 100644..100755
--- a/Omni/Bild/Example.rs
+++ b/Omni/Bild/Example.rs
@@ -1,3 +1,4 @@
+#!/usr/bin/env run.sh
// : out helloworld
fn main() {
println!("Hello world!");
diff --git a/Omni/Bild/Meta.hs b/Omni/Bild/Meta.hs
index 44bcff0..a5f722e 100644
--- a/Omni/Bild/Meta.hs
+++ b/Omni/Bild/Meta.hs
@@ -1,4 +1,3 @@
-{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE NoImplicitPrelude #-}
@@ -6,7 +5,6 @@
module Omni.Bild.Meta where
import Alpha
-import qualified Data.Aeson as Aeson
import qualified Data.Char as Char
import qualified Data.Set as Set
import qualified Data.Text as Text
@@ -29,15 +27,7 @@ type Run = String
-- command. Should be used sparingly, and not all builds will support this.
type Arg = String
-data Out = Lib String | Bin String | None
- deriving (Show, Eq)
-
-instance Aeson.ToJSON Out where
- toJSON =
- Aeson.String <. Text.pack <. \case
- Bin a -> a
- Lib a -> a
- None -> ""
+type Out = Maybe String
data Parsed = Parsed
{ pdep :: Set Dep,
@@ -56,19 +46,24 @@ detect m cl =
|> Set.fromList
-- | 'Out' is always singular, so it gets a special function
-detectOut :: Regex.RE Char Out -> [Text] -> Out
+detectOut :: Regex.RE Char String -> [Text] -> Out
detectOut m cl =
cl
/> Text.unpack
/> Regex.match m
|> catMaybes
|> head
- |> fromMaybe None
-detectAll :: [Char] -> [Text] -> Parsed
+-- | Detect all metadata
+detectAll ::
+ -- | The comment character(s) to match on
+ [Char] ->
+ -- | Lines of text to parse
+ [Text] ->
+ Parsed
detectAll m cl = Parsed {..}
where
- pout = detectOut (out m <|> lib m) cl
+ pout = detectOut (out m) cl
detect_ re = detect (re m) cl
pdep = detect_ dep
psys = detect_ sys
@@ -85,17 +80,10 @@ sys comment =
Regex.string (comment ++ " : sys ")
*> Regex.many (Regex.psym (not <. Char.isSpace))
-out :: [Char] -> Regex.RE Char Out
+out :: [Char] -> Regex.RE Char String
out comment =
Regex.string (comment ++ " : out ")
*> Regex.many (Regex.psym (/= ' '))
- /> Bin
-
-lib :: [Char] -> Regex.RE Char Out
-lib comment =
- Regex.string (comment ++ " : lib ")
- *> Regex.many (Regex.psym (/= ' '))
- /> Lib
arg :: [Char] -> Regex.RE Char Arg
arg comment =