46 lines
1.3 KiB
Python
46 lines
1.3 KiB
Python
import re
|
|
|
|
import sublime
|
|
import sublime_plugin
|
|
|
|
from ..show_error import show_error
|
|
|
|
|
|
class AddChannelCommand(sublime_plugin.WindowCommand):
|
|
"""
|
|
A command to add a new channel (list of repositories) to the user's machine
|
|
"""
|
|
|
|
def run(self):
|
|
self.window.show_input_panel('Channel JSON URL', '',
|
|
self.on_done, self.on_change, self.on_cancel)
|
|
|
|
def on_done(self, input):
|
|
"""
|
|
Input panel handler - adds the provided URL as a channel
|
|
|
|
:param input:
|
|
A string of the URL to the new channel
|
|
"""
|
|
|
|
input = input.strip()
|
|
|
|
if re.match('https?://', input, re.I) == None:
|
|
show_error(u"Unable to add the channel \"%s\" since it does not appear to be served via HTTP (http:// or https://)." % input)
|
|
return
|
|
|
|
settings = sublime.load_settings('Package Control.sublime-settings')
|
|
channels = settings.get('channels', [])
|
|
if not channels:
|
|
channels = []
|
|
channels.append(input)
|
|
settings.set('channels', channels)
|
|
sublime.save_settings('Package Control.sublime-settings')
|
|
sublime.status_message(('Channel %s successfully ' +
|
|
'added') % input)
|
|
|
|
def on_change(self, input):
|
|
pass
|
|
|
|
def on_cancel(self):
|
|
pass
|