-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreate_assignment.sh
More file actions
executable file
·119 lines (104 loc) · 3.82 KB
/
create_assignment.sh
File metadata and controls
executable file
·119 lines (104 loc) · 3.82 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
111
112
113
114
115
116
117
118
119
#!/bin/bash
# 作业模板生成脚本
# 使用方法: ./create_assignment.sh [课程代码] [作业编号] [输出目录]
# 例如: ./create_assignment.sh MDS5110 1 ~/Desktop
set -e
# 检查参数
if [ $# -lt 2 ]; then
echo "使用方法: $0 <课程代码> <作业编号> [输出目录]"
echo "例如: $0 MDS5110 1 ~/Desktop"
exit 1
fi
COURSE_CODE=$1
ASSIGNMENT_NUM=$2
OUTPUT_DIR=${3:-~/Desktop} # 默认输出到桌面
# 配置变量(可在此修改个人信息)
STUDENT_NAME=""
STUDENT_ID=""
# 创建课程目录(所有作业的父目录)
COURSE_DIR="${OUTPUT_DIR}/${COURSE_CODE}"
ASSIGNMENT_DIR="${COURSE_DIR}/Assignment${ASSIGNMENT_NUM}"
echo "正在创建课程目录: $COURSE_DIR"
echo "正在创建作业目录: $ASSIGNMENT_DIR"
# 检查作业目录是否已存在
if [ -d "$ASSIGNMENT_DIR" ]; then
echo "警告: 作业目录 $ASSIGNMENT_DIR 已存在"
read -p "是否覆盖? (y/N): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
echo "操作已取消"
exit 1
fi
rm -rf "$ASSIGNMENT_DIR"
fi
# 检查是否为第一次创建课程目录
IS_NEW_COURSE=false
if [ ! -d "$COURSE_DIR" ]; then
IS_NEW_COURSE=true
mkdir -p "$COURSE_DIR"
echo "✅ 创建新课程目录: $COURSE_DIR"
else
echo "📁 使用现有课程目录: $COURSE_DIR"
fi
# 创建作业子目录
mkdir -p "$ASSIGNMENT_DIR"
# 复制模板文件到作业目录
cp Template.tex "$ASSIGNMENT_DIR/Assignment${ASSIGNMENT_NUM}.tex"
# 如果是新课程,复制.gitignore和创建README
if [ "$IS_NEW_COURSE" = true ]; then
cp .gitignore "$COURSE_DIR/"
# 创建课程README
if [ -f "Course_README_Template.md" ]; then
cp Course_README_Template.md "$COURSE_DIR/README.md"
cd "$COURSE_DIR"
sed -i "" "s/{COURSE_CODE}/${COURSE_CODE}/g" "README.md"
sed -i "" "s/{STUDENT_NAME}/${STUDENT_NAME}/g" "README.md"
sed -i "" "s/{STUDENT_ID}/${STUDENT_ID}/g" "README.md"
cd - > /dev/null
fi
fi
# 替换模板中的变量
cd "$ASSIGNMENT_DIR"
sed -i "" "s/some course/${COURSE_CODE}/g" "Assignment${ASSIGNMENT_NUM}.tex"
sed -i "" "s/Assignment 1/Assignment ${ASSIGNMENT_NUM}/g" "Assignment${ASSIGNMENT_NUM}.tex"
sed -i "" "s/name/${STUDENT_NAME}/g" "Assignment${ASSIGNMENT_NUM}.tex"
sed -i "" "s/id/${STUDENT_ID}/g" "Assignment${ASSIGNMENT_NUM}.tex"
# Git操作
cd "$COURSE_DIR"
if [ "$IS_NEW_COURSE" = true ]; then
# 第一次创建课程时初始化Git仓库
git init
git add .
git commit -m "Initial commit: ${COURSE_CODE} course repository with Assignment ${ASSIGNMENT_NUM}"
echo "🎉 已初始化Git仓库并创建初始提交"
else
# 为现有课程添加新作业
git add "Assignment${ASSIGNMENT_NUM}/"
git commit -m "Add Assignment ${ASSIGNMENT_NUM} for ${COURSE_CODE}"
echo "📝 已添加Assignment ${ASSIGNMENT_NUM}到现有仓库"
fi
# 创建GitHub仓库的提示信息
echo ""
echo "✅ 作业模板已创建完成!"
echo "📁 课程目录: $COURSE_DIR"
echo "📄 作业文件: $ASSIGNMENT_DIR/Assignment${ASSIGNMENT_NUM}.tex"
echo ""
if [ "$IS_NEW_COURSE" = true ]; then
echo "🚀 下一步 - 推送到GitHub (首次创建):"
echo "1. 在GitHub上创建新仓库,名称建议为: ${COURSE_CODE}"
echo "2. 运行以下命令连接远程仓库:"
echo " cd '$COURSE_DIR'"
echo " git remote add origin https://github.com/YOUR_USERNAME/${COURSE_CODE}.git"
echo " git branch -M main"
echo " git push -u origin main"
echo ""
echo "💡 提示: 您也可以运行 'cd \"$COURSE_DIR\" && ../setup_github.sh ${COURSE_CODE}' 来自动化GitHub仓库创建"
else
echo "🔄 推送更新到GitHub:"
echo " cd '$COURSE_DIR'"
echo " git push origin main"
echo ""
echo "📂 课程结构:"
echo " ${COURSE_CODE}/"
ls -la "$COURSE_DIR" | grep "Assignment" | sed 's/^/ ├── /'
fi