-
Notifications
You must be signed in to change notification settings - Fork 0
/
FileAutoMigration.java
170 lines (137 loc) · 6.07 KB
/
FileAutoMigration.java
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
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
package 알고리즘연습;
import java.io.*;
import java.util.ArrayList;
import java.util.List;
public class FileAutoMigration {
private static final String localRepoPath = "C:\\Users\\HwangTaeyeon\\Desktop\\hwangz\\workspace\\repositories\\ps-study\\java-coding-test-study";
private static final String USER_NAME = "황제철";
private static final String PROBLEM_TYPE = "BOJ";
private static BufferedReader br;
public static void main(String[] args) throws IOException {
/*
* input problem description
* */
String problemNumber = inputCommandString("백준 문제 '번호'를 입력하세요 : ");
String problemName = inputCommandString("백준 문제 '이름'을 입력하세요 : ");
String problemTier = inputCommandString("백준 문제 '티어'을 입력하세요 : ");
String runTime = inputCommandString("로직 실행 '시간'을 입력하세요 : ");
String solvingTime = inputCommandString("풀이 소요 '시간'을 입력하세요 : ");
long prev = System.nanoTime();
/*
* fileName generation
* */
String fileName = getFileName(problemNumber, problemName);
/*
* file migration
* */
migrate(fileName); // output : 14961401
/*
* commit message generation
* */
String commitMessage = getCommitMessage(problemNumber, problemTier, runTime, solvingTime);
/*
* push to origin forked repository
* */
add();
commit(commitMessage);
push();
openGitHubRepository();
System.out.println("실행시간 : " + (System.nanoTime() - prev));
}
private static String getFileName(String problemNumber, String problemName) {
return new StringBuffer()
.append(PROBLEM_TYPE + "_")
.append(problemNumber)
.append("_")
.append(problemName)
.toString();
}
private static String inputCommandString(String s) throws IOException {
System.out.print(s);
br = new BufferedReader(new InputStreamReader(System.in));
String commandString = br.readLine();
System.out.println();
return commandString;
}
private static String getCommitMessage(String problemNumber, String problemTier, String runTime, String solvingTime) {
return new StringBuffer()
.append("[" + PROBLEM_TYPE + "]")
.append(problemNumber)
.append("/")
.append(problemTier)
.append("/")
.append(runTime)
.append("ms/")
.append(solvingTime)
.append("/")
.append(USER_NAME)
.toString();
}
private static void openGitHubRepository() throws IOException {
Process openRepo = Runtime.getRuntime().exec("explorer \"https://github.com/HwangBaco/java-coding-test-study\"");
printStream(openRepo.getInputStream());
printStream(openRepo.getErrorStream());
}
private static void migrate(String fileName) {
String sourcePath = ".\\" + PROBLEM_TYPE.toLowerCase() + "\\" + fileName + ".java";
File sourceFile = new File(sourcePath);
String destPath = localRepoPath + "\\Jecheol_Hwang\\" + fileName + ".java";
File destFile = new File(destPath);
try (BufferedInputStream inputStream = new BufferedInputStream(new FileInputStream(sourceFile));
BufferedOutputStream outStream = new BufferedOutputStream(new FileOutputStream(destFile))) {
int length;
while ((length = inputStream.read()) > 0) {
outStream.write(length);
}
System.out.println("파일이 성공적으로 복사되었습니다.");
} catch (IOException e) {
e.printStackTrace();
}
}
private static void migrateByGPT(String fileName) {
String sourcePath = ".\\boj\\" + fileName + ".java";
File sourceFile = new File(sourcePath);
String destPath = localRepoPath + "\\Jecheol_Hwang\\" + fileName + ".java";
File destFile = new File(destPath);
try (InputStream inStream = new FileInputStream(sourceFile);
OutputStream outStream = new FileOutputStream(destFile)) {
byte[] buffer = new byte[1024];
int length;
while ((length = inStream.read(buffer)) > 0) {
outStream.write(buffer, 0, length);
}
System.out.println("파일이 성공적으로 복사되었습니다.");
} catch (IOException e) {
e.printStackTrace();
}
}
public static void add() throws IOException {
Process add = Runtime.getRuntime().exec("git add .", null, new File(localRepoPath));
// 명령어 정상 실행 여부 확인 (표준 출력과 에러 출력)
printStream(add.getInputStream());
printStream(add.getErrorStream());
}
private static void commit(String commitMessage) throws IOException {
StringBuffer sb = new StringBuffer();
String command = sb.append("git commit -m \"")
.append(commitMessage)
.append("\"")
.toString();
Process commit = Runtime.getRuntime().exec(command, null, new File(localRepoPath));
// 명령어 정상 실행 여부 확인 (표준 출력과 에러 출력)
printStream(commit.getInputStream());
printStream(commit.getErrorStream());
}
public static void push() throws IOException {
String pushCommand = new StringBuffer().append("git push origin main").toString();
Process push = Runtime.getRuntime().exec(pushCommand, null, new File(localRepoPath));
printStream(push.getInputStream());
}
private static void printStream(InputStream input) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(input));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
}
}