File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -98,28 +98,43 @@ for language in "${languages[@]}"; do
9898 staging_directory=" $(
9999 mktemp -d " ${SERIALIZATION_DATA} /.${language} _generated_files.XXXXXX"
100100 ) "
101- count=0
101+ members=()
102+ names=()
102103
103104 while IFS= read -r member; do
104105 case " ${member} " in
105106 * /serialization/" ${language} " /snapshots/* .sk)
106107 name=" ${member##*/ } "
107- output=" ${staging_directory} /${name} "
108- if [[ -e " ${output} " || -L " ${output} " ]]; then
109- echo " Duplicate snapshot in archive: ${name} " >&2
110- exit 1
111- fi
112- tar -xOzf " ${archive_path} " " ${member} " > " ${output} "
113- count=$(( count + 1 ))
108+ for existing_name in " ${names[@]-} " ; do
109+ if [[ " ${name} " == " ${existing_name} " ]]; then
110+ echo " Duplicate snapshot in archive: ${name} " >&2
111+ exit 1
112+ fi
113+ done
114+ members+=(" ${member} " )
115+ names+=(" ${name} " )
114116 ;;
115117 esac
116118 done < <( tar -tzf " ${archive_path} " )
117119
120+ count=${# members[@]}
118121 if [[ ${count} -eq 0 ]]; then
119122 echo " No ${language} snapshots found in the TCK archive" >&2
120123 exit 1
121124 fi
122125
126+ tar \
127+ -xzf " ${archive_path} " \
128+ -C " ${staging_directory} " \
129+ --strip-components=4 \
130+ " ${members[@]} "
131+ for name in " ${names[@]} " ; do
132+ if [[ ! -f " ${staging_directory} /${name} " ]]; then
133+ echo " Failed to extract snapshot: ${name} " >&2
134+ exit 1
135+ fi
136+ done
137+
123138 destination=" ${SERIALIZATION_DATA} /${language} _generated_files"
124139 if [[ -L " ${destination} " ]]; then
125140 echo " Snapshot output path cannot be a symbolic link: ${destination} " >&2
You can’t perform that action at this time.
0 commit comments