Skip to content

Commit 898f86c

Browse files
committed
chore: Move generate-options to justfile
1 parent 363bf13 commit 898f86c

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+295
-52
lines changed

flake.nix

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@
4545
nodejs
4646
# Nix
4747
alejandra
48+
# Scripting
49+
just
4850
];
4951
};
5052

justfile

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
project_root := justfile_directory()
2+
3+
@help:
4+
just --list
5+
6+
@generate-options:
7+
#!/usr/bin/env bash
8+
set -euo pipefail
9+
cd ./script/generate-options
10+
spago run {{project_root}}

script/generate-options.sh

Lines changed: 0 additions & 6 deletions
This file was deleted.

script/generate-options/Main.purs renamed to script/generate-options/src/Main.purs

Lines changed: 18 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ module Main where
22

33
import Prelude
44

5-
import Control.Alt ((<|>))
65
import Control.Monad.Writer as Writer
7-
import Data.Array as Array
6+
import Data.Array ((!!))
87
import Data.Foldable as Foldable
8+
import Data.Map as Map
99
import Data.Maybe (Maybe(..))
1010
import Data.String as String
11+
import Data.Tuple (Tuple(..))
1112
import Effect (Effect)
1213
import Effect.Aff as Aff
1314
import Effect.Exception as Exception
@@ -327,8 +328,20 @@ makeModule moduleName option = Partial.Unsafe.unsafePartial do
327328

328329
main :: Effect Unit
329330
main = do
330-
projectRoot <- Process.lookupEnv "INTL_PROJECT_ROOT"
331-
rootDirectory <- Process.argv >>= \args -> case Array.index args 2 <|> projectRoot of
331+
let
332+
duplicateOptionNames =
333+
options
334+
<#> (\option -> (Tuple option.name 1))
335+
# Map.fromFoldableWith (+)
336+
# Map.filter (_ > 1)
337+
338+
unless (Map.isEmpty duplicateOptionNames) do
339+
-- Asserting that any option field names are unique. In case of collision
340+
-- (like "style") I've been prefixing with the constructor name
341+
-- ("NumberFormatStyle", "DurationFormatStyle")
342+
Exception.throw ("Duplicate option names: " <> Foldable.intercalate ", " (Map.keys duplicateOptionNames))
343+
344+
rootDirectory <- Process.argv <#> (_ !! 2) >>= case _ of
332345
Just path -> pure path
333346
Nothing -> Exception.throw "Expected path to output directory as first argument"
334347
let
@@ -345,7 +358,7 @@ main = do
345358
contents =
346359
String.joinWith "\n"
347360
[ "-- *** DO NOT EDIT! ***"
348-
, "-- This module is generated by ./script/generate-options.sh"
361+
, "-- This module is generated by `just generate-options`"
349362
, ""
350363
, Codegen.printModuleWithOptions (Codegen.defaultPrintOptions { pageWidth = 80 }) module_
351364
]

src/JS/Intl/Options/AvailableCanonical.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.AvailableCanonical
55
( AvailableCanonical(..)

src/JS/Intl/Options/CaseFirst.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.CaseFirst
55
( CaseFirst(..)

src/JS/Intl/Options/Collation.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.Collation
55
( Collation(..)

src/JS/Intl/Options/CompactDisplay.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.CompactDisplay
55
( CompactDisplay(..)

src/JS/Intl/Options/CurrencyDisplay.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.CurrencyDisplay
55
( CurrencyDisplay(..)

src/JS/Intl/Options/CurrencySign.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.CurrencySign
55
( CurrencySign(..)

src/JS/Intl/Options/DateStyle.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.DateStyle
55
( DateStyle(..)

src/JS/Intl/Options/Day.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.Day
55
( Day(..)

src/JS/Intl/Options/DayPeriod.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.DayPeriod
55
( DayPeriod(..)

src/JS/Intl/Options/Days.purs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
-- *** DO NOT EDIT! ***
2+
-- This module is generated by `just generate-options`
3+
4+
module JS.Intl.Options.Days
5+
( Days(..)
6+
, fromString
7+
, toString
8+
) where
9+
10+
import Prelude
11+
12+
import Data.Maybe (Maybe(..))
13+
14+
data Days = Narrow | Short | Long
15+
16+
derive instance Eq Days
17+
18+
toString :: Days -> String
19+
toString = case _ of
20+
Narrow -> "narrow"
21+
Short -> "short"
22+
Long -> "long"
23+
24+
fromString :: String -> Maybe Days
25+
fromString = case _ of
26+
"narrow" -> Just Narrow
27+
"short" -> Just Short
28+
"long" -> Just Long
29+
_ -> Nothing

src/JS/Intl/Options/DaysDisplay.purs

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-- *** DO NOT EDIT! ***
2+
-- This module is generated by `just generate-options`
3+
4+
module JS.Intl.Options.DaysDisplay
5+
( DaysDisplay(..)
6+
, fromString
7+
, toString
8+
) where
9+
10+
import Prelude
11+
12+
import Data.Maybe (Maybe(..))
13+
14+
data DaysDisplay = Always | Auto
15+
16+
derive instance Eq DaysDisplay
17+
18+
toString :: DaysDisplay -> String
19+
toString = case _ of
20+
Always -> "always"
21+
Auto -> "auto"
22+
23+
fromString :: String -> Maybe DaysDisplay
24+
fromString = case _ of
25+
"always" -> Just Always
26+
"auto" -> Just Auto
27+
_ -> Nothing

src/JS/Intl/Options/DisplayNamesType.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.DisplayNamesType
55
( DisplayNamesType(..)

src/JS/Intl/Options/Era.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.Era
55
( Era(..)

src/JS/Intl/Options/Fallback.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.Fallback
55
( Fallback(..)

src/JS/Intl/Options/FormatMatcher.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.FormatMatcher
55
( FormatMatcher(..)

src/JS/Intl/Options/Granularity.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.Granularity
55
( Granularity(..)

src/JS/Intl/Options/Hour.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.Hour
55
( Hour(..)

src/JS/Intl/Options/HourCycle.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.HourCycle
55
( HourCycle(..)

src/JS/Intl/Options/LanguageDisplay.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.LanguageDisplay
55
( LanguageDisplay(..)

src/JS/Intl/Options/ListFormatType.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.ListFormatType
55
( ListFormatType(..)

src/JS/Intl/Options/LocaleMatcher.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.LocaleMatcher
55
( LocaleMatcher(..)

src/JS/Intl/Options/Minute.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.Minute
55
( Minute(..)

src/JS/Intl/Options/Month.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.Month
55
( Month(..)

src/JS/Intl/Options/Months.purs

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
-- *** DO NOT EDIT! ***
2+
-- This module is generated by `just generate-options`
3+
4+
module JS.Intl.Options.Months
5+
( Months(..)
6+
, fromString
7+
, toString
8+
) where
9+
10+
import Prelude
11+
12+
import Data.Maybe (Maybe(..))
13+
14+
data Months = Narrow | Short | Long
15+
16+
derive instance Eq Months
17+
18+
toString :: Months -> String
19+
toString = case _ of
20+
Narrow -> "narrow"
21+
Short -> "short"
22+
Long -> "long"
23+
24+
fromString :: String -> Maybe Months
25+
fromString = case _ of
26+
"narrow" -> Just Narrow
27+
"short" -> Just Short
28+
"long" -> Just Long
29+
_ -> Nothing
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
-- *** DO NOT EDIT! ***
2+
-- This module is generated by `just generate-options`
3+
4+
module JS.Intl.Options.MonthsDisplay
5+
( MonthsDisplay(..)
6+
, fromString
7+
, toString
8+
) where
9+
10+
import Prelude
11+
12+
import Data.Maybe (Maybe(..))
13+
14+
data MonthsDisplay = Always | Auto
15+
16+
derive instance Eq MonthsDisplay
17+
18+
toString :: MonthsDisplay -> String
19+
toString = case _ of
20+
Always -> "always"
21+
Auto -> "auto"
22+
23+
fromString :: String -> Maybe MonthsDisplay
24+
fromString = case _ of
25+
"always" -> Just Always
26+
"auto" -> Just Auto
27+
_ -> Nothing

src/JS/Intl/Options/Notation.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.Notation
55
( Notation(..)

src/JS/Intl/Options/NumberFormatStyle.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.NumberFormatStyle
55
( NumberFormatStyle(..)

src/JS/Intl/Options/Numeric.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.Numeric
55
( Numeric(..)

src/JS/Intl/Options/PluralCategory.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.PluralCategory
55
( PluralCategory(..)

src/JS/Intl/Options/PluralRulesType.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.PluralRulesType
55
( PluralRulesType(..)

src/JS/Intl/Options/RelativeTimeUnit.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.RelativeTimeUnit
55
( RelativeTimeUnit(..)

src/JS/Intl/Options/RoundingMode.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.RoundingMode
55
( RoundingMode(..)

src/JS/Intl/Options/RoundingPriority.purs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
-- *** DO NOT EDIT! ***
2-
-- This module is generated by ./script/generate-options.sh
2+
-- This module is generated by `just generate-options`
33

44
module JS.Intl.Options.RoundingPriority
55
( RoundingPriority(..)

0 commit comments

Comments
 (0)