-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathgenerate-diffs.sh
More file actions
executable file
·91 lines (75 loc) · 4.29 KB
/
generate-diffs.sh
File metadata and controls
executable file
·91 lines (75 loc) · 4.29 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
#!/bin/bash
# Detect OS for sed compatibility
if [[ "$OSTYPE" == "darwin"* ]]; then
SED_INPLACE="sed -i ''"
else
SED_INPLACE="sed -i"
fi
# Create local tmp directory
mkdir -p tmp/{version-1,version-2,version-3,version-4}
# Copy files with normalized names
cp -r src/app/registration-form-1/* tmp/version-1/
cp -r src/app/registration-form-2/* tmp/version-2/
cp -r src/app/registration-form-3/* tmp/version-3/
cp -r src/app/registration-form-4/* tmp/version-4/
# Copy additional files for version-2 to version-3 comparison
# Create empty files in version-2 to show as new in diff
touch tmp/version-2/identity-form.ts
touch tmp/version-2/identity-form.html
touch tmp/version-2/multiselect.ts
touch tmp/version-2/multiselect.html
# Copy actual files to version-3
cp src/app/identity-form/identity-form.ts tmp/version-3/
cp src/app/identity-form/identity-form.html tmp/version-3/
cp src/app/multiselect/multiselect.ts tmp/version-3/
cp src/app/multiselect/multiselect.html tmp/version-3/
# Copy additional files for version-3 to version-4 comparison
# Create empty files in version-3 to show as new in diff
touch tmp/version-3/src/app/field-aria-attributes.ts
touch tmp/version-3/src/app/form-props.ts
touch tmp/version-3/src/app/form-field-info/form-field-info.html
touch tmp/version-3/src/app/form-field-info/form-field-info.ts
# Copy actual files to version-4
cp src/app/field-aria-attributes.ts tmp/version-4/
cp src/app/form-props.ts tmp/version-4/
cp src/app/form-field-info/form-field-info.ts tmp/version-4/
cp src/app/form-field-info/form-field-info.html tmp/version-4/
cp src/app/identity-form/identity-form.ts tmp/version-4/
cp src/app/identity-form/identity-form.html tmp/version-4/
cp src/app/multiselect/multiselect.ts tmp/version-4/
cp src/app/multiselect/multiselect.html tmp/version-4/
# Rename files
cd tmp/version-1 && for f in registration-form-1.*; do mv "$f" "${f/registration-form-1/registration-form}"; done
cd ../version-2 && for f in registration-form-2.*; do mv "$f" "${f/registration-form-2/registration-form}"; done
cd ../version-3 && for f in registration-form-3.*; do mv "$f" "${f/registration-form-3/registration-form}"; done
cd ../version-4 && for f in registration-form-4.*; do mv "$f" "${f/registration-form-4/registration-form}"; done
cd ../..
# Remove spec files
rm -f tmp/*/registration-form.spec.ts
# Clean up HTML files - remove everything before <form
eval "$SED_INPLACE '1,/<form/{ /<form/!d; }' tmp/*/registration-form.html"
# Remove BackButton import and reference from TypeScript files
eval "$SED_INPLACE '/import { BackButton } from/d' tmp/*/registration-form.ts"
eval "$SED_INPLACE 's/BackButton, //g' tmp/*/registration-form.ts"
# Update class names and selectors
eval "$SED_INPLACE 's/RegistrationForm1/RegistrationForm/g; s/registration-form-1/registration-form/g' tmp/version-1/registration-form.ts"
eval "$SED_INPLACE 's/RegistrationForm2/RegistrationForm/g; s/registration-form-2/registration-form/g' tmp/version-2/registration-form.ts"
eval "$SED_INPLACE 's/RegistrationForm3/RegistrationForm/g; s/registration-form-3/registration-form/g' tmp/version-3/registration-form.ts"
eval "$SED_INPLACE 's/RegistrationForm4/RegistrationForm/g; s/registration-form-4/registration-form/g' tmp/version-4/registration-form.ts"
# Generate diffs
git diff --no-index tmp/version-1 tmp/version-2 > version-1-version-2.diff
git diff --no-index tmp/version-2 tmp/version-3 > version-2-version-3.diff
git diff --no-index tmp/version-3 tmp/version-4 > version-3-version-4.diff
# Remove tmp paths from diffs
eval "$SED_INPLACE 's|tmp/version[1234]/||g' version-1-version-2.diff version-2-version-3.diff version-3-version-4.diff"
# Generate HTML views
npx diff2html-cli -i file -o stdout -s side --title="Version 1 - Version 2" -- version-1-version-2.diff > public/version-1-version-2.html
npx diff2html-cli -i file -o stdout -s side --title="Version 2 - Version 3" -- version-2-version-3.diff > public/version-2-version-3.html
npx diff2html-cli -i file -o stdout -s side --title="Version 3 - Version 4" -- version-3-version-4.diff > public/version-3-version-4.html
# Move diff files to public
mv version-1-version-2.diff public/
mv version-2-version-3.diff public/
mv version-3-version-4.diff public/
# Cleanup
rm -rf tmp
echo "Generated: public/version-1-version-2.html, public/version-2-version-3.html and public/version-3-version-4.html"