diff options
Diffstat (limited to 'Omni/Bild')
-rw-r--r-- | Omni/Bild/Builder.nix | 7 | ||||
-rwxr-xr-x[-rw-r--r--] | Omni/Bild/Deps.hs | 1 | ||||
-rwxr-xr-x[-rw-r--r--] | Omni/Bild/Example.c | 1 | ||||
-rwxr-xr-x[-rw-r--r--] | Omni/Bild/Example.hs | 1 | ||||
-rwxr-xr-x[-rw-r--r--] | Omni/Bild/Example.lisp | 1 | ||||
-rwxr-xr-x[-rw-r--r--] | Omni/Bild/Example.py | 1 | ||||
-rwxr-xr-x[-rw-r--r--] | Omni/Bild/Example.rs | 1 | ||||
-rw-r--r-- | Omni/Bild/Meta.hs | 34 |
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 = |