-
Notifications
You must be signed in to change notification settings - Fork 59
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: uml diagrams & diagram generate script #266
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,48 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
#!/bin/bash | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Directory containing the .sol files | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
baseFolder="./contracts" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
folders=("/evm" "/zevm") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Output directory for the flattened files | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
output_dir="./contracts" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Directory for the class diagrams | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
diagram_folder="./contract-class-diagrams" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Loop through all .sol files in the contracts_dir | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
for folder in "${folders[@]}"; do | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
contracts_dir="$baseFolder$folder" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
echo "Processing folder: $contracts_dir" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
for file in "$contracts_dir"/*.sol; do | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Check if any .sol files exist in the directory | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if [[ ! -e "$file" ]]; then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
echo "No .sol files found in $contracts_dir" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
continue | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fi | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+13
to
+23
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Handle cases where no .sol files are found more gracefully. Instead of continuing silently, consider exiting the script or skipping to the next folder if no .sol files are found. if [[ ! -e "$file" ]]; then
echo "No .sol files found in $contracts_dir"
+ break
continue
fi Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Get the base name of the file (without path) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
base_name=$(basename "$file") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
echo "Processing file: $file" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Construct the output file path | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
output_file="$output_dir/Flattened_$base_name" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Run the flatten command | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
npx hardhat flatten "$file" > "$output_file" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Check if the command was successful | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
if [ $? -eq 0 ]; then | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
echo "Successfully flattened $file to $output_file" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
else | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
echo "Error flattening $file" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fi | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+24
to
+40
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Improve error handling for flatten command. If the flatten command fails, consider exiting the script or retrying the command. npx hardhat flatten "$file" > "$output_file"
# Check if the command was successful
if [ $? -eq 0 ]; then
echo "Successfully flattened $file to $output_file"
else
echo "Error flattening $file"
+ exit 1
fi Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Run the sol2uml command | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
npx sol2uml class "$output_file" -f png -o "$diagram_folder/$folder/$base_name.png" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
# Remove the flattened file | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
rm "$output_file" | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Comment on lines
+42
to
+46
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Improve error handling for sol2uml command. If the sol2uml command fails, consider exiting the script or retrying the command. npx sol2uml class "$output_file" -f png -o "$diagram_folder/$folder/$base_name.png"
# Check if the command was successful
if [ $? -eq 0 ]; then
echo "Successfully generated UML diagram for $file"
else
echo "Error generating UML diagram for $file"
+ exit 1
fi
# Remove the flattened file
rm "$output_file" Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
done | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
done |
Large diffs are not rendered by default.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ensure the diagram folder exists.
Before processing files, ensure that the diagram folder exists to avoid potential errors.
Committable suggestion