ce7cb702218693d08ea6d83464d2457c9250027c
This commit is contained in:
commit
34c5f8963c
1 changed files with 145336 additions and 0 deletions
30
scripts/hooks/pre-commit.fsx
Normal file
30
scripts/hooks/pre-commit.fsx
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
#r "nuget: Tomlyn, 2.10.1"
|
||||
#load "../../services/project-delivery/actions/masking.fsx"
|
||||
|
||||
open System
|
||||
|
||||
let checkIndex () =
|
||||
let git arguments = Masking.run "git" arguments None
|
||||
|
||||
let entries =
|
||||
git [ "ls-files"; "--stage"; "-z" ]
|
||||
|> _.Split('\u0000', StringSplitOptions.RemoveEmptyEntries)
|
||||
|> Array.map (fun entry ->
|
||||
let fields = entry.Split('\t', 2)
|
||||
let metadata = fields[0].Split(' ')
|
||||
|
||||
if metadata[2] <> "0" then
|
||||
invalidOp "unmerged index"
|
||||
|
||||
fields[1], (metadata[0] = "100644" || metadata[0] = "100755", metadata[1]))
|
||||
|> Map.ofArray
|
||||
|
||||
Masking.makePlan Masking.parseRules (entries |> Map.map (fun _ (regular, _) -> regular)) (fun path ->
|
||||
git [ "cat-file"; "blob"; snd entries[path] ])
|
||||
|
||||
try
|
||||
let plan = checkIndex ()
|
||||
printfn "masks: %d staged masks verified; %d directories omitted" plan.Masks.Length plan.Omitted.Length
|
||||
with :? InvalidOperationException as error ->
|
||||
eprintfn "masks: %s" error.Message
|
||||
exit 1
|
||||
Loading…
Reference in a new issue