use of org.jetbrains.plugins.github.api.GithubFullPath in project intellij-community by JetBrains.
the class GithubShareAction method checkExistingRemote.
private static boolean checkExistingRemote(@NotNull final Project project, @NotNull final GithubAuthDataHolder authHolder, @NotNull String remote) {
final GithubFullPath path = GithubUrlUtil.getUserAndRepositoryFromRemoteUrl(remote);
if (path == null) {
return GithubNotifications.showYesNoDialog(project, "Project Is Already on GitHub", "Can't connect to repository from configured remote. You could want to check .git config.\n" + "Do you want to proceed anyway?");
}
try {
GithubRepo repo = GithubUtil.computeValueInModalIO(project, "Access to GitHub", indicator -> GithubUtil.runTask(project, authHolder, indicator, connection -> GithubApiUtil.getDetailedRepoInfo(connection, path.getUser(), path.getRepository())));
int result = Messages.showDialog(project, "Successfully connected to " + repo.getHtmlUrl() + ".\n" + "Do you want to proceed anyway?", "Project Is Already on GitHub", new String[] { "Continue", "Open in Browser", Messages.CANCEL_BUTTON }, 2, Messages.getQuestionIcon());
if (result == 0)
return true;
if (result == 1) {
BrowserUtil.browse(repo.getHtmlUrl());
}
return false;
} catch (GithubStatusCodeException e) {
if (e.getStatusCode() == HttpStatus.SC_NOT_FOUND) {
return GithubNotifications.showYesNoDialog(project, "Project Is Already on GitHub", "Can't connect to repository from configured remote. You could want to check .git config.\n" + "Do you want to proceed anyway?");
}
GithubNotifications.showErrorDialog(project, "Failed to Connect to GitHub", e);
return false;
} catch (IOException e) {
GithubNotifications.showErrorDialog(project, "Failed to Connect to GitHub", e);
return false;
}
}
use of org.jetbrains.plugins.github.api.GithubFullPath in project intellij-community by JetBrains.
the class GithubCreatePullRequestWorker method doAddFork.
@Nullable
private ForkInfo doAddFork(@NotNull GithubRepo repo, @NotNull ProgressIndicator indicator) {
GithubFullPath path = repo.getFullPath();
for (ForkInfo fork : myForks) {
if (fork.getPath().equals(path)) {
return fork;
}
}
try {
List<String> branches = loadBranches(path, indicator);
String defaultBranch = repo.getDefaultBranch();
ForkInfo fork = new ForkInfo(path, branches, defaultBranch);
myForks.add(fork);
return fork;
} catch (IOException e) {
GithubNotifications.showWarning(myProject, "Can't load branches for " + path.getFullName(), e);
return null;
}
}
use of org.jetbrains.plugins.github.api.GithubFullPath in project intellij-community by JetBrains.
the class GithubCreatePullRequestWorker method create.
@Nullable
public static GithubCreatePullRequestWorker create(@NotNull final Project project, @Nullable final VirtualFile file) {
return GithubUtil.computeValueInModal(project, "Loading data...", indicator -> {
Git git = ServiceManager.getService(Git.class);
GitRepository gitRepository = GithubUtil.getGitRepository(project, file);
if (gitRepository == null) {
GithubNotifications.showError(project, CANNOT_CREATE_PULL_REQUEST, "Can't find git repository");
return null;
}
gitRepository.update();
Pair<GitRemote, String> remote = GithubUtil.findGithubRemote(gitRepository);
if (remote == null) {
GithubNotifications.showError(project, CANNOT_CREATE_PULL_REQUEST, "Can't find GitHub remote");
return null;
}
String remoteName = remote.getFirst().getName();
String remoteUrl = remote.getSecond();
GithubFullPath path = GithubUrlUtil.getUserAndRepositoryFromRemoteUrl(remoteUrl);
if (path == null) {
GithubNotifications.showError(project, CANNOT_CREATE_PULL_REQUEST, "Can't process remote: " + remoteUrl);
return null;
}
GitLocalBranch currentBranch = gitRepository.getCurrentBranch();
if (currentBranch == null) {
GithubNotifications.showError(project, CANNOT_CREATE_PULL_REQUEST, "No current branch");
return null;
}
GithubAuthDataHolder authHolder;
try {
authHolder = GithubUtil.getValidAuthDataHolderFromConfig(project, AuthLevel.LOGGED, indicator);
} catch (IOException e) {
GithubNotifications.showError(project, CANNOT_CREATE_PULL_REQUEST, e);
return null;
}
GithubCreatePullRequestWorker worker = new GithubCreatePullRequestWorker(project, git, gitRepository, authHolder, path, remoteName, remoteUrl, currentBranch.getName());
try {
worker.initForks(indicator);
} catch (IOException e) {
GithubNotifications.showError(project, CANNOT_CREATE_PULL_REQUEST, e);
return null;
}
return worker;
});
}
use of org.jetbrains.plugins.github.api.GithubFullPath in project intellij-community by JetBrains.
the class GithubCreatePullRequestWorker method doCreatePullRequest.
@Nullable
private GithubPullRequest doCreatePullRequest(@NotNull ProgressIndicator indicator, @NotNull final BranchInfo branch, @NotNull final String title, @NotNull final String description) {
final GithubFullPath forkPath = branch.getForkInfo().getPath();
final String head = myPath.getUser() + ":" + myCurrentBranch;
final String base = branch.getRemoteName();
try {
return GithubUtil.runTask(myProject, myAuthHolder, indicator, connection -> GithubApiUtil.createPullRequest(connection, forkPath.getUser(), forkPath.getRepository(), title, description, head, base));
} catch (IOException e) {
GithubNotifications.showError(myProject, CANNOT_CREATE_PULL_REQUEST, e);
return null;
}
}
Aggregations