feat(ST2.GitPackages): bump up all packages
- Refresh PackageCache with latest versions of everything
This commit is contained in:
		| @@ -1,6 +1,7 @@ | ||||
| import os | ||||
| import sys | ||||
| import os.path | ||||
| sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) | ||||
| import re | ||||
| import sublime | ||||
| import sublime_plugin | ||||
| @@ -15,7 +16,7 @@ except ImportError: | ||||
|  | ||||
| try: | ||||
|     sys.path.append(os.path.join(sublime.packages_path(), 'Git')) | ||||
|     git = __import__("git") | ||||
|     import git | ||||
|     sys.path.remove(os.path.join(sublime.packages_path(), 'Git')) | ||||
| except ImportError: | ||||
|     git = None | ||||
| @@ -30,6 +31,7 @@ class BaseGitHubCommand(sublime_plugin.TextCommand): | ||||
|     """ | ||||
|     MSG_USERNAME = "GitHub username:" | ||||
|     MSG_PASSWORD = "GitHub password:" | ||||
|     MSG_ONE_TIME_PASSWORD = "One-time passowrd (for 2FA):" | ||||
|     MSG_TOKEN_SUCCESS = "Your access token has been saved. We'll now resume your command." | ||||
|     ERR_NO_USER_TOKEN = "Your GitHub Gist access token needs to be configured.\n\n"\ | ||||
|         "Click OK and then enter your GitHub username and password below (neither will "\ | ||||
| @@ -42,10 +44,12 @@ class BaseGitHubCommand(sublime_plugin.TextCommand): | ||||
|     def run(self, edit): | ||||
|         self.settings = sublime.load_settings("GitHub.sublime-settings") | ||||
|         self.github_user = None | ||||
|         self.github_password = None | ||||
|         self.github_one_time_password = None | ||||
|         self.accounts = self.settings.get("accounts") | ||||
|         self.active_account = self.settings.get("active_account") | ||||
|         if not self.active_account: | ||||
|             self.active_account = self.accounts.keys()[0] | ||||
|             self.active_account = list(self.accounts.keys())[0] | ||||
|         self.github_token = self.accounts[self.active_account]["github_token"] | ||||
|         if not self.github_token: | ||||
|             self.github_token = self.settings.get("github_token") | ||||
| @@ -58,7 +62,11 @@ class BaseGitHubCommand(sublime_plugin.TextCommand): | ||||
|                 sublime.save_settings("GitHub.sublime-settings") | ||||
|         self.base_uri = self.accounts[self.active_account]["base_uri"] | ||||
|         self.debug = self.settings.get('debug') | ||||
|         self.gistapi = GitHubApi(self.base_uri, self.github_token, debug=self.debug) | ||||
|  | ||||
|         self.proxies = {'https': self.accounts[self.active_account].get("https_proxy", None)} | ||||
|         self.force_curl = self.accounts[self.active_account].get("force_curl", False) | ||||
|         self.gistapi = GitHubApi(self.base_uri, self.github_token, debug=self.debug, | ||||
|                                  proxies=self.proxies, force_curl=self.force_curl) | ||||
|  | ||||
|     def get_token(self): | ||||
|         sublime.error_message(self.ERR_NO_USER_TOKEN) | ||||
| @@ -70,16 +78,29 @@ class BaseGitHubCommand(sublime_plugin.TextCommand): | ||||
|     def get_password(self): | ||||
|         self.view.window().show_input_panel(self.MSG_PASSWORD, "", self.on_done_password, None, None) | ||||
|  | ||||
|     def get_one_time_password(self): | ||||
|         self.view.window().show_input_panel(self.MSG_ONE_TIME_PASSWORD, "", self.on_done_one_time_password, None, None) | ||||
|  | ||||
|     def on_done_username(self, value): | ||||
|         "Callback for the username show_input_panel." | ||||
|         self.github_user = value | ||||
|         # need to do this or the input panel doesn't show | ||||
|         sublime.set_timeout(self.get_password, 50) | ||||
|  | ||||
|     def on_done_one_time_password(self, value): | ||||
|         "Callback for the one-time password show_input_panel" | ||||
|         self.github_one_time_password = value | ||||
|         self.on_done_password(self.github_password) | ||||
|  | ||||
|     def on_done_password(self, value): | ||||
|         "Callback for the password show_input_panel" | ||||
|         self.github_password = value | ||||
|         try: | ||||
|             self.github_token = GitHubApi(self.base_uri, debug=self.debug).get_token(self.github_user, value) | ||||
|             api = GitHubApi(self.base_uri, debug=self.debug) | ||||
|             self.github_token = api.get_token(self.github_user, | ||||
|                                               self.github_password, | ||||
|                                               self.github_one_time_password) | ||||
|             self.github_password = self.github_one_time_password = None  # don't keep these around | ||||
|             self.accounts[self.active_account]["github_token"] = self.github_token | ||||
|             self.settings.set("accounts", self.accounts) | ||||
|             sublime.save_settings("GitHub.sublime-settings") | ||||
| @@ -92,13 +113,23 @@ class BaseGitHubCommand(sublime_plugin.TextCommand): | ||||
|                     sublime.set_timeout(callback, 50) | ||||
|             except AttributeError: | ||||
|                 pass | ||||
|         except GitHubApi.OTPNeededException: | ||||
|             sublime.set_timeout(self.get_one_time_password, 50) | ||||
|         except GitHubApi.UnauthorizedException: | ||||
|             sublime.error_message(self.ERR_UNAUTHORIZED) | ||||
|             sublime.set_timeout(self.get_username, 50) | ||||
|         except GitHubApi.UnknownException, e: | ||||
|         except GitHubApi.UnknownException as e: | ||||
|             sublime.error_message(e.message) | ||||
|  | ||||
|  | ||||
| class InsertTextCommand(sublime_plugin.TextCommand): | ||||
|     """ | ||||
|     Internal command to insert text into a view. | ||||
|     """ | ||||
|     def run(self, edit, **args): | ||||
|         self.view.insert(edit, 0, args['text']) | ||||
|  | ||||
|  | ||||
| class OpenGistCommand(BaseGitHubCommand): | ||||
|     """ | ||||
|     Open a gist. | ||||
| @@ -125,12 +156,12 @@ class OpenGistCommand(BaseGitHubCommand): | ||||
|             packed_gists = [] | ||||
|             for idx, gist in enumerate(self.gists): | ||||
|                 attribs = {"index": idx + 1, | ||||
|                            "filename": gist["files"].keys()[0], | ||||
|                            "filename": list(gist["files"].keys())[0], | ||||
|                            "description": gist["description"] or ''} | ||||
|                 if isinstance(format, basestring): | ||||
|                     item = format % attribs | ||||
|                 else: | ||||
|                 if isinstance(format, list): | ||||
|                     item = [(format_str % attribs) for format_str in format] | ||||
|                 else: | ||||
|                     item = format % attribs | ||||
|                 packed_gists.append(item) | ||||
|  | ||||
|             args = [packed_gists, self.on_done] | ||||
| @@ -140,14 +171,14 @@ class OpenGistCommand(BaseGitHubCommand): | ||||
|         except GitHubApi.UnauthorizedException: | ||||
|             sublime.error_message(self.ERR_UNAUTHORIZED_TOKEN) | ||||
|             sublime.set_timeout(self.get_username, 50) | ||||
|         except GitHubApi.UnknownException, e: | ||||
|         except GitHubApi.UnknownException as e: | ||||
|             sublime.error_message(e.message) | ||||
|  | ||||
|     def on_done(self, idx): | ||||
|         if idx == -1: | ||||
|             return | ||||
|         gist = self.gists[idx] | ||||
|         filename = gist["files"].keys()[0] | ||||
|         filename = list(gist["files"].keys())[0] | ||||
|         filedata = gist["files"][filename] | ||||
|         content = self.gistapi.get(filedata["raw_url"]) | ||||
|         if self.open_in_editor: | ||||
| @@ -164,9 +195,7 @@ class OpenGistCommand(BaseGitHubCommand): | ||||
|                     logger.warn("no mapping for '%s'" % extension) | ||||
|                     pass | ||||
|             # insert the gist | ||||
|             edit = new_view.begin_edit('gist') | ||||
|             new_view.insert(edit, 0, content) | ||||
|             new_view.end_edit(edit) | ||||
|             new_view.run_command("insert_text", {'text': content}) | ||||
|             new_view.set_name(filename) | ||||
|             new_view.settings().set('gist', gist) | ||||
|         elif self.copy_gist_id: | ||||
| @@ -290,9 +319,9 @@ class GistFromSelectionCommand(BaseGitHubCommand): | ||||
|  | ||||
|         try: | ||||
|             gist = self.gistapi.create_gist(description=self.description, | ||||
|                                            filename=self.filename, | ||||
|                                            content=text, | ||||
|                                            public=self.public) | ||||
|                                             filename=self.filename, | ||||
|                                             content=text, | ||||
|                                             public=self.public) | ||||
|             self.view.settings().set('gist', gist) | ||||
|             sublime.set_clipboard(gist["html_url"]) | ||||
|             sublime.status_message(self.MSG_SUCCESS) | ||||
| @@ -302,9 +331,10 @@ class GistFromSelectionCommand(BaseGitHubCommand): | ||||
|             sublime.save_settings("GitHub.sublime-settings") | ||||
|             sublime.error_message(self.ERR_UNAUTHORIZED_TOKEN) | ||||
|             sublime.set_timeout(self.get_username, 50) | ||||
|         except GitHubApi.UnknownException, e: | ||||
|         except GitHubApi.UnknownException as e: | ||||
|             sublime.error_message(e.message) | ||||
|         except GitHubApi.ConnectionException as e: | ||||
|             sublime.error_message(e.message) | ||||
|  | ||||
|  | ||||
| class PrivateGistFromSelectionCommand(GistFromSelectionCommand): | ||||
|     """ | ||||
| @@ -347,21 +377,21 @@ class UpdateGistCommand(BaseGitHubCommand): | ||||
|             sublime.save_settings("GitHub.sublime-settings") | ||||
|             sublime.error_message(self.ERR_UNAUTHORIZED_TOKEN) | ||||
|             sublime.set_timeout(self.get_username, 50) | ||||
|         except GitHubApi.UnknownException, e: | ||||
|         except GitHubApi.UnknownException as e: | ||||
|             sublime.error_message(e.message) | ||||
|  | ||||
|  | ||||
| class SwitchAccountsCommand(BaseGitHubCommand): | ||||
|     def run(self, edit): | ||||
|         super(SwitchAccountsCommand, self).run(edit) | ||||
|         accounts = self.accounts.keys() | ||||
|         accounts = list(self.accounts.keys()) | ||||
|         self.view.window().show_quick_panel(accounts, self.account_selected) | ||||
|  | ||||
|     def account_selected(self, index): | ||||
|         if index == -1: | ||||
|             return  # canceled | ||||
|         else: | ||||
|             self.active_account = self.accounts.keys()[index] | ||||
|             self.active_account = list(self.accounts.keys())[index] | ||||
|             self.settings.set("active_account", self.active_account) | ||||
|             sublime.save_settings("GitHub.sublime-settings") | ||||
|             self.base_uri = self.accounts[self.active_account]["base_uri"] | ||||
| @@ -369,14 +399,17 @@ class SwitchAccountsCommand(BaseGitHubCommand): | ||||
|  | ||||
| if git: | ||||
|     class RemoteUrlCommand(git.GitTextCommand): | ||||
|         url_type = 'blob' | ||||
|  | ||||
|         def run(self, edit): | ||||
|             self.run_command("git remote -v".split(), self.done_remote) | ||||
|             self.run_command("git ls-remote --get-url".split(), self.done_remote) | ||||
|  | ||||
|         def done_remote(self, result): | ||||
|             remote_origin = [r for r in result.split("\n") if "origin" in r][0] | ||||
|             remote_loc = re.split('\s+', remote_origin)[1] | ||||
|             repo_url = re.sub('^git@', 'https://', remote_loc) | ||||
|             repo_url = re.sub('\.com:', '.com/', repo_url) | ||||
|             remote_loc = result.split()[0] | ||||
|             repo_url = re.sub('^git(@|://)', 'http://', remote_loc) | ||||
|             # Replace the "tld:" with "tld/" | ||||
|             # https://github.com/bgreenlee/sublime-github/pull/49#commitcomment-3688312 | ||||
|             repo_url = re.sub(r'^(https?://[^/:]+):', r'\1/', repo_url) | ||||
|             repo_url = re.sub('\.git$', '', repo_url) | ||||
|             self.repo_url = repo_url | ||||
|             self.run_command("git rev-parse --abbrev-ref HEAD".split(), self.done_rev_parse) | ||||
| @@ -386,8 +419,20 @@ if git: | ||||
|             current_branch = result.strip() | ||||
|             # get file path within repo | ||||
|             repo_name = self.repo_url.split("/").pop() | ||||
|             relative_path = self.view.file_name().split(repo_name).pop() | ||||
|             self.url = "%s/blob/%s%s" % (self.repo_url, current_branch, relative_path) | ||||
|             relative_path = self.view.file_name().split(repo_name, 1).pop() | ||||
|             line_nums = "" | ||||
|             if self.allows_line_highlights: | ||||
|                 # if any lines are selected, the first of those | ||||
|                 non_empty_regions = [region for region in self.view.sel() if not region.empty()] | ||||
|                 if non_empty_regions: | ||||
|                     selection = non_empty_regions[0] | ||||
|                     (start_row, _) = self.view.rowcol(selection.begin()) | ||||
|                     (end_row, _) = self.view.rowcol(selection.end()) | ||||
|                     line_nums = "#L%s" % (start_row + 1) | ||||
|                     if end_row > start_row: | ||||
|                         line_nums += "-L%s" % (end_row + 1) | ||||
|  | ||||
|             self.url = "%s/%s/%s%s%s" % (self.repo_url, self.url_type, current_branch, relative_path, line_nums) | ||||
|             self.on_done() | ||||
| else: | ||||
|     class RemoteUrlCommand(sublime_plugin.TextCommand): | ||||
| @@ -396,6 +441,8 @@ else: | ||||
|  | ||||
|  | ||||
| class OpenRemoteUrlCommand(RemoteUrlCommand): | ||||
|     allows_line_highlights = True | ||||
|  | ||||
|     def run(self, edit): | ||||
|         super(OpenRemoteUrlCommand, self).run(edit) | ||||
|  | ||||
| @@ -410,3 +457,17 @@ class CopyRemoteUrlCommand(RemoteUrlCommand): | ||||
|     def on_done(self): | ||||
|         sublime.set_clipboard(self.url) | ||||
|         sublime.status_message("Remote URL copied to clipboard") | ||||
|  | ||||
|  | ||||
| class BlameCommand(OpenRemoteUrlCommand): | ||||
|     url_type = 'blame' | ||||
|  | ||||
|  | ||||
| class HistoryCommand(OpenRemoteUrlCommand): | ||||
|     url_type = 'commits' | ||||
|     allows_line_highlights = False | ||||
|  | ||||
|  | ||||
| class EditCommand(OpenRemoteUrlCommand): | ||||
|     url_type = 'edit' | ||||
|     allows_line_highlights = False | ||||
|   | ||||
		Reference in New Issue
	
	Block a user