File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1717 uses : ./
1818 with :
1919 working-directory : test
20- target : test
20+ target : test1
2121 - name : Check non-recursive prerequisites
2222 run : |
2323 test "${{ steps.non-recursive-prerequisites.outputs.prerequisites }}" = "prereq"
2727 uses : ./
2828 with :
2929 working-directory : test
30- target : test
30+ target : test1
3131 flags : --recursive
3232 - name : Check recursive prerequisites
3333 run : |
3434 test "${{ steps.recursive-prerequisites.outputs.prerequisites }}" = "preprereq1 preprereq2"
3535 echo ${{ steps.recursive-prerequisites.outputs.hash }}
36+ - name : Hash directory prerequisite
37+ id : hash-dir-prerequisite
38+ uses : ./
39+ with :
40+ working-directory : test
41+ target : test2
42+ flags : --recursive
43+ - name : Check directory prerequisite hash
44+ run : |
45+ test "${{ steps.hash-dir-prerequisite.outputs.prerequisites }}" = "dirprereq"
46+ test "${{ steps.hash-dir-prerequisite.outputs.hash }}" = "c64a77871513eadd52ec0e278bfbac1db866b77f66ebe91725b378b8bf43e29c"
Original file line number Diff line number Diff line change 55from anytree import Node , RenderTree
66import argparse
77import hashlib
8+ from pathlib import Path
89import re
910import subprocess
1011import sys
@@ -137,9 +138,18 @@ def hash_files(file_list):
137138 # Create a new SHA-256 hash object
138139 hasher = hashlib .sha256 ()
139140
141+ # If any prerequisite is a directory, replace it with its (recursive) contents
142+ expanded_file_list = []
140143 for file_name in file_list :
141- # Open each file in binary mode
142- try :
144+ file = Path (file_name )
145+ if file .is_dir ():
146+ expanded_file_list .extend ([str (f ) for f in file .rglob ('*' ) if f .is_file ()])
147+ else :
148+ expanded_file_list .append (file_name )
149+
150+ # Hash file contents
151+ for file_name in expanded_file_list :
152+ try :
143153 with open (file_name , 'rb' ) as f :
144154 # Read the file content in chunks to avoid memory issues with large files
145155 while chunk := f .read (8192 ): # 8192 bytes per chunk
Original file line number Diff line number Diff line change 1- test : prereq
1+ test1 : prereq
22 cp $< $@
33
44prereq : preprereq1 preprereq2
55 cp $< $@
66 cat preprereq2 >> $@
7+
8+ test2 : dirprereq
Original file line number Diff line number Diff line change 1+ prereq
You can’t perform that action at this time.
0 commit comments