-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathProjects.fs
More file actions
165 lines (156 loc) · 5.56 KB
/
Projects.fs
File metadata and controls
165 lines (156 loc) · 5.56 KB
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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
module Projects
open System.IO
open Semver
open Fake.IO
open Spec
type NpmPackage =
| Versioned of name: string * version: SemVersion
| Basic of name: string
type FsProjPath = FsProjPath of string
module FsProjPath =
let value = function FsProjPath value -> value
let create = FsProjPath
module NpmPackage =
let create = Basic
let getName = function Basic value | Versioned(value,_) -> value
module Versioned =
let create (major: int) (minor: int) (patch: int) name =
(name, SemVersion(major,minor,patch))
|> Versioned
let toVersioned major minor patch = getName
>> Versioned.create major minor patch
type Project = {
Path: FsProjPath
Name: string
NpmPackage: NpmPackage voption
}
type ProjectBuilder() =
member inline _.Yield(_: unit) = ()
[<CustomOperation>]
member inline _.path(_: unit, value: string) =
{
Path =
FsProjPath.create value
Name =
// default name to file name
value
|> Path.GetFileNameWithoutExtension
NpmPackage = ValueNone
}
[<CustomOperation>]
member inline _.path(state: Project, value: string) =
{ state with Path = FsProjPath.create value }
[<CustomOperation>]
member inline _.name(state: Project, value: string) =
{ state with Name = value }
[<CustomOperation>]
member inline _.npm(state: Project, value: string) =
{ state with NpmPackage = NpmPackage.create value |> ValueSome }
[<CustomOperation>]
member inline _.npm(state: Project, value: string, major, ?minor, ?patch) =
let minor = defaultArg minor 0
let patch = defaultArg patch 0
{ state with NpmPackage = ValueSome <| NpmPackage.Versioned.create major minor patch value }
member inline _.Run(state: Project) = state
let project = ProjectBuilder()
module IgnoredProjects =
let private ignore (path: string) = Path.GetFileNameWithoutExtension(path)
let chartJs = ignore Files.Root.``Partas.Solid.ChartJs``.``Partas.Solid.ChartJs.fsproj``
let dnd = ignore Files.Root.``Partas.Solid.Dnd``.``Partas.Solid.Dnd.fsproj``
let dndkit = ignore Files.Root.``Partas.Solid.DndKit``.``Partas.Solid.DndKit.fsproj``
let embla = ignore Files.Root.``Partas.Solid.EmblaCarousel``.``Partas.Solid.EmblaCarousel.fsproj``
let bindings = ignore Files.Root.``Partas.Solid.Bindings``.``Partas.Solid.Bindings.fsproj``
module Projects =
let zagJs = project {
path Files.Root.``Glutinum.ZagJs``.``Glutinum.ZagJs.fsproj``
}
let internationalised = project {
path Files.Root.``Glutinum.Internationalised``.``Glutinum.Internationalised.fsproj``
}
let apexCharts = project {
path Files.Root.``Partas.Solid.ApexCharts``.``Partas.Solid.ApexCharts.fsproj``
npm "solid-apexcharts" 0 4 0
}
let arkUi = project {
path Files.Root.``Partas.Solid.ArkUI``.``Partas.Solid.ArkUI.fsproj``
npm "@ark-ui/solid" 5 0 0
}
let cmdk = project {
path Files.Root.``Partas.Solid.Cmdk``.``Partas.Solid.Cmdk.fsproj``
npm "cmdk-solid" 1 1 0
}
let corvu = project {
path Files.Root.``Partas.Solid.Corvu``.``Partas.Solid.Corvu.fsproj``
npm "@corvu/otp-field" 0 1 4
}
let cva = project {
path Files.Root.``Partas.Solid.Cva``.``Partas.Solid.Cva.fsproj``
npm "class-variance-authority" 0 7 1
}
let kobalte = project {
path Files.Root.``Partas.Solid.Kobalte``.``Partas.Solid.Kobalte.fsproj``
npm "@kobalte/core" 0 13 10
}
let lucide = project {
path Files.Root.``Partas.Solid.Lucide``.``Partas.Solid.Lucide.fsproj``
npm "lucide-solid" 0 513 0
}
let modularForms = project {
path Files.Root.``Partas.Solid.ModularForms``.``Partas.Solid.ModularForms.fsproj``
npm "@modular-forms/solid" 0 29 1
}
let motion = project {
path Files.Root.``Partas.Solid.Motion``.``Partas.Solid.Motion.fsproj``
npm "solid-motionone" 1 0 0
}
let neodrag = project {
path Files.Root.``Partas.Solid.NeoDrag``.``Partas.Solid.NeoDrag.fsproj``
npm "@neodrag/solid" 2 3 0
}
let sonner = project {
path Files.Root.``Partas.Solid.Sonner``.``Partas.Solid.Sonner.fsproj``
npm "solid-sonner" 0 2 8
}
let storybook = project {
path Files.Root.``Partas.Solid.Storybook``.``Partas.Solid.Storybook.fsproj``
}
let tanstackTables = project {
path Files.Root.``Partas.Solid.TanStack.Table``.``Partas.Solid.TanStack.Table.fsproj``
npm "@tanstack/solid-table" 8 0 0
}
let zag = project {
path Files.Root.``Partas.Solid.Zag``.``Partas.Solid.Zag.fsproj``
}
let tabler = project {
path Files.Root.``Partas.Solid.Tabler``.``Partas.Solid.Tabler.fsproj``
}
let tanstackVirtual = project {
path Files.Root.``Partas.Solid.TanStack.Virtual``.``Partas.Solid.TanStack.Virtual.fsproj``
npm "@tanstack/solid-virtual" 3 0 0
}
let projects = [
Projects.tabler
Projects.zagJs
Projects.internationalised
Projects.apexCharts
Projects.arkUi
Projects.cmdk
Projects.corvu
Projects.cva
Projects.kobalte
Projects.lucide
Projects.modularForms
Projects.motion
Projects.neodrag
Projects.sonner
Projects.tanstackTables
Projects.tanstackVirtual
Projects.zag
]
let ignored = [
IgnoredProjects.chartJs
IgnoredProjects.dnd
IgnoredProjects.dndkit
IgnoredProjects.embla
IgnoredProjects.bindings
]