001package edu.pdx.cs.joy.grader; 002 003import java.util.regex.Matcher; 004import java.util.regex.Pattern; 005 006public class GitHubUserNameFinder implements GitConfigParser.Callback { 007 private String gitHubUserName; 008 private boolean isInOrigin; 009 010 @Override 011 public void startCoreSection() { 012 013 } 014 015 @Override 016 public void property(String name, String value) { 017 if (name.equals("url") && this.isInOrigin) { 018 extractGitHubUserNameFrom(value); 019 } 020 } 021 022 private void extractGitHubUserNameFrom(String gitUrl) { 023 Matcher gitHubMatcher = Pattern.compile("git@github.com:(.*)/.*\\.git").matcher(gitUrl); 024 if (gitHubMatcher.matches()) { 025 this.gitHubUserName = gitHubMatcher.group(1); 026 027 } else { 028 Matcher httpsMatcher = Pattern.compile("https://github.com/(.*)/.*\\.git").matcher(gitUrl); 029 if (httpsMatcher.matches()) { 030 this.gitHubUserName = httpsMatcher.group(1); 031 } 032 } 033 } 034 035 @Override 036 public void endSection(String name) { 037 this.isInOrigin = false; 038 } 039 040 @Override 041 public void startRemoteSection(String name) { 042 if (name.equals("origin")) { 043 this.isInOrigin = true; 044 } 045 } 046 047 public String getGitHubUserName() { 048 return gitHubUserName; 049 } 050}