package com.coverity.ps.common.plugins.scm;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import com.coverity.ps.common.CimProxy;
import com.coverity.ws.v4.CovRemoteServiceException_Exception;
import com.coverity.ws.v4.UserDataObj;
/*
* Provides support for subversion
*/
public class GitPlugin implements ScmPlugin {
// build user map email -> user
static Map<String, UserDataObj> userMap = new HashMap<String, UserDataObj>();
static {
try {
// map git e-mail address to users
List<UserDataObj> users;
users = CimProxy.getInstance().getAllUsers();
for(UserDataObj user : users) {
userMap.put(user.getEmail(), user);
}
} catch (CovRemoteServiceException_Exception e) {
e.printStackTrace();
}
}
/**
* Returns the user name of the last person modified the file
*/
public String getFileOwner(String file) throws Exception {
final String command = "git log -1 --author=coverity --format=%ce " + file;
try {
Process process = Runtime.getRuntime().exec(command);
String ownerEmail = new BufferedReader(new InputStreamReader(process.getInputStream())).readLine();
UserDataObj user = userMap.get(ownerEmail);
if(user != null) {
return user.getUsername();
}
return "nobody";
} catch (Exception e) {
return "";
}
}
public static void main(String[] args) {
try {
if(args.length > 0) {
GitPlugin svn = new GitPlugin();
String author = svn.getFileOwner(args[0]);
System.out.println("file owner=" + author);
}
} catch (Exception e) {
e.printStackTrace();
}
}
}