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