SwiftUI에서 git-blame-pr.pl을 Mac 앱으로 만들었습니다.
어제는 @ 빨리 _ 씨 씨의 「FastAPI의 부하 실험 환경을 만들어 보자」 이었습니다.
그런데 어떤 코드가 어떤 배경이나 의도로 변경되었는지 알고 싶은 것은 자주 있는 것이라고 생각합니다. 이 경우 의 t-bame pr. pl 을 사용하면 코드가 어떤 당김 요청에서 변경되었는지 쉽게 알 수 있습니다.
이것은 CLI에서 그대로 사용하는 것만으로도 충분히 편리합니다.
단지 사용 빈도가 높기도 하고, 유스 케이스에 따른 GUI를 원했습니다.
그래서 git-blame-pr.pl이 출력한 결과의 행을 클릭하는 것만으로 해당 웹 페이지로 전환할 수 있는 Mac 앱을 만들어 보았습니다.
완성된 것은 아래의 리포지토리에서 공개하고 있습니다.
htps : // 기주 b. 코 m / 마오 야마 / 기 tB ぁ 메 PR
GitHub 출시에서 최신 GitBlamePR.app.zip을 다운로드하고 압축을 풀기 만하면됩니다. 꼭 사용해보십시오.
※macOS Catalina가 필요합니다.
구현 내용 소개
UI는 AppKit이 아닌 SwiftUI에서 구현됩니다.
아래 코드는 UI에서 모두입니다. SwiftUI를 사용하고 있기 때문에 스토리 보드 나 xib 파일도 없습니다.
struct GitBlamePRView: View {
var model: GitBlamePRViewModel
var textOnCommit: (String) -> Void
@State private(set) var fullPath: String = ""
var body: some View {
VStack(alignment: .leading, spacing: 0) {
TextField(
"Enter full path",
text: $fullPath,
onEditingChanged: {_ in },
onCommit: {
self.textOnCommit(self.fullPath)
}
).lineLimit(1)
.textFieldStyle(RoundedBorderTextFieldStyle())
.padding()
Divider()
ScrollView(.vertical, showsIndicators: true) {
VStack(alignment: .leading) {
if !model.error.isEmpty {
Text(model.error)
}
ForEach(model.lines, id: \.id) { line in
HStack(alignment: .top, spacing: 12) {
Text(line.message)
.font(Font.system(.caption, design: .monospaced))
.foregroundColor(.accentColor)
.frame(width: 80, height: nil, alignment: .trailing)
.onTapGesture {
NSWorkspace.shared.open(line.url)
}
Text(line.code)
.font(Font.system(.caption, design: .monospaced))
.frame(width: nil, height: nil, alignment: .leading)
}
}
HStack {
Spacer()
EmptyView()
}
}.padding()
}.background(Color(NSColor.textBackgroundColor))
}
}
}
"Better apps. Less code."라고 애플이 구분하고 있는 대로, 매우 적은 코드로 실현되고 있습니다.
또한 SwiftUI는 모든 Apple 플랫폼에서 사용할 수 있습니다. 그 때문에, 저와 같은 평상시는 iOS 어플리의 개발을 하고 있는 프로그래머에서도, macOS로 움직이는 어플리를 만드는 문턱이 매우 낮아졌습니다.
이 기사는 이상입니다.
내일은 @alpha_goto씨입니다. 기대하세요!
Reference
이 문제에 관하여(SwiftUI에서 git-blame-pr.pl을 Mac 앱으로 만들었습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/maoyama/items/fd1bb60e47ddea111518텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)