-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathmake.sh
More file actions
executable file
·110 lines (99 loc) · 2.99 KB
/
make.sh
File metadata and controls
executable file
·110 lines (99 loc) · 2.99 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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
#!/bin/bash
# Script Name: make.sh
# Description: A script to create and clean day's folders for 75 days DSA challenge .
# Author: Tanveer Raza
# Copyright (c) 2023 CodeChef Chapter ABES EC Licensed under the MIT License
# Function to create a day folder
create_day() {
local day_number="$1"
local folder_name="day_$(printf "%02d" "$day_number")"
if [ -d "$folder_name" ]; then
echo "Folder for day $day_number already exists, skipping."
else
mkdir -p "$folder_name"
cp -i "SUMMARY.md" "$folder_name/SUMMARY.md"
echo "Created folder for day $day_number"
fi
}
# Function to form day folders
form_day_folders() {
local target_day="$1"
if [ "$target_day" == "all" ]; then
for i in {1..75}; do
create_day "$i"
done
echo "Form operation completed."
elif [[ "$target_day" =~ ^[0-9]+$ ]]; then
create_day "$target_day"
else
echo "Invalid day number: $target_day"
fi
}
# Function to clean day folders with an optional --force flag
clean_day_folders() {
local target_day="$1"
local force_flag="$2"
if [ "$target_day" == "all" ]; then
for i in {1..75}; do
if [ "$force_flag" == "--force" ]; then
remove_day "$i"
else
remove_day_with_conditions "$i"
fi
done
echo "Clean operation completed."
elif [[ "$target_day" =~ ^[0-9+$ ]]; then
if [ "$force_flag" == "--force" ]; then
remove_day "$target_day"
else
remove_day_with_conditions "$target_day"
fi
else
echo "Invalid day number: $target_day"
fi
}
# Function to remove a day folder with conditions
remove_day_with_conditions() {
local day_number="$1"
local folder_name="day_$(printf "%02d" "$day_number")"
if [ -d "$folder_name" ]; then
# Check if SUMMARY.md exists in the root folder
if [ -f "SUMMARY.md" ]; then
# Check if SUMMARY.md in the day folder is the same as the one in the root folder
if cmp -s "SUMMARY.md" "$folder_name/SUMMARY.md"; then
# Check if there are files other than SUMMARY.md in the day folder
if [ $(find "$folder_name" -maxdepth 1 -type f | wc -l) -eq 1 ]; then
rm -rf "$folder_name"
echo "Removed folder for day $day_number"
else
echo "Folder for day $day_number contains files other than SUMMARY.md, skipping removal."
fi
else
echo "SUMMARY.md in folder $folder_name is different from the one in the root folder, skipping removal."
fi
else
echo "SUMMARY.md is missing in the root folder, skipping removal."
fi
else
echo "Folder for day $day_number does not exist, skipping."
fi
}
# Function to remove a day folder
remove_day() {
local day_number="$1"
local folder_name="day_$(printf "%02d" "$day_number")"
if [ -d "$folder_name" ]; then
rm -rf "$folder_name"
echo "Removed folder for day $day_number"
else
echo "Folder for day $day_number does not exist, skipping."
fi
}
# Main script
if [ "$1" == "form" ] || [ "$1" == "create" ]; then
form_day_folders "$2"
elif [ "$1" == "clean" ] || [ "$1" == "remove" ]; then
clean_day_folders "$2" "$3"
else
echo "Usage: ./make.sh {{form|create}|{clean|remove}} {<day>|all} [--force]"
fi