Skip to content

Commit 27b5c48

Browse files
committed
개인 형태로 문서 작성하도록 수정(초기형)
1 parent 7054a24 commit 27b5c48

File tree

3 files changed

+88
-1
lines changed

3 files changed

+88
-1
lines changed

.github/workflows/android.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ jobs:
2323
run: sudo apt-get install -y kotlin
2424

2525
- name: Run the Kotlin script
26-
run: kotlinc -script scripts/UpdateReadMeIndex.kts
26+
run: kotlinc -script scripts/UpdatePersonalFile.kts
2727

2828
- name: Commit changes
2929
run: |

personal/test.txt

Whitespace-only changes.

scripts/UpdatePersonalFile.kts

Lines changed: 87 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,87 @@
1+
import java.io.File
2+
import kotlin.system.exitProcess
3+
4+
val repoUrl: String = "https://github.com/Mash-Up-Android/Effective_Study"
5+
6+
val docsDir: File("docs")
7+
val effectiveKotlinDir: File = File("EffectiveKotlin")
8+
val personalDir: File = File("personal")
9+
10+
val personalFolders = effectiveKotlinDir.listFiles()?.filter { it.isDirectory } ?: run {
11+
println("사람이 아무도 없는뎁쇼?🐗")
12+
exitProcess(0)
13+
}
14+
15+
fun updatePersonalFile() {
16+
personalFolders.forEach { personalFolder ->
17+
updatePersonalContent(personalFolder.name, personalFolder)
18+
}
19+
}
20+
21+
fun updatePersonalContent(personName: String, personalFolder: File) {
22+
val content = StringBuilder()
23+
generateHeaderMessage(content, personName)
24+
generateMainMessage(content, personalFolder)
25+
overridePersonalFile(content, personName)
26+
}
27+
28+
fun generateHeaderMessage(content: StringBuilder, personName: String) {
29+
content.appendWithLineBreak("# ${personName}이가 정리한 이펙티브 책 스터디")
30+
content.appendWithLineBreak("📚🚨📚🚨📚🚨📚🚨📚🚨📚🚨📚🚨📚🚨📚🚨📚\n")
31+
insertSectionDivider(content)
32+
}
33+
34+
fun generateMainMessage(content: StringBuilder, PersonalFile: File) {
35+
val folderList = PersonalFile.listFiles() ?: run {
36+
println("폴더가 아무것도 없는뎁쇼?🐗")
37+
exitProcess(0)
38+
}
39+
40+
folderList.asSequence().filter { it.isDirectory }.sortedBy { it.name }.forEach { folder ->
41+
content.appendWithLineBreak("## ${folder.name}")
42+
appendFolderContent(content, folder, true)
43+
insertSectionDivider(content)
44+
}
45+
}
46+
47+
fun appendFolderContent(content: StringBuilder, folder: File, isFirstCall: Boolean) {
48+
val items = folder.listFiles()?.sortedBy { it.name }
49+
items?.forEach { item ->
50+
if (item.isDirectory) {
51+
content.appendWithLineBreak("### ${item.name}")
52+
appendFolderContent(content, item, false)
53+
} else if (item.isFile) {
54+
// 내부 폴더와 파일 사이 구획을 나누기 위한 방법
55+
if (isFirstCall) content.appendWithLineBreak("### ${folder.name} 폴더없는 친구들")
56+
val filePath = "tree/main/docs/${folder.relativeTo(docsDir).path}/${item.name}"
57+
val fileUrl = "$repoUrl/$filePath"
58+
content.appendWithLineBreak("- [${item.name}]($fileUrl)")
59+
}
60+
}
61+
}
62+
63+
fun overridePersonalFile(content: StringBuilder, personName: String) {
64+
createPersonalFileIfNotExists(personName)
65+
val personalFile = File("${personName}.md")
66+
67+
personalFile.writeText(content.toString())
68+
println("${personName}이꺼 리드미 업데이트 완료 히히히")
69+
}
70+
71+
fun createPersonalFileIfNotExists(folderName: String) {
72+
val fileName = "${folderName}.md"
73+
val personFile = File(personalDir, fileName)
74+
75+
if (!personFile.exists()) personFile.createNewFile()
76+
}
77+
78+
fun insertSectionDivider(content: StringBuilder) {
79+
content.append("\n\n\n")
80+
}
81+
82+
fun StringBuilder.appendWithLineBreak(value: String) {
83+
append(value + "\n")
84+
}
85+
86+
// 최종 실행
87+
updatePersonalFile()

0 commit comments

Comments
 (0)