Skip to content

Commit

Permalink
Update gitrepo.uipack.py
Browse files Browse the repository at this point in the history
  • Loading branch information
Victor committed Sep 3, 2014
1 parent ca4e3e0 commit e66dfd4
Showing 1 changed file with 66 additions and 15 deletions.
81 changes: 66 additions & 15 deletions gitrepo.uipack.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
NAME = "gitrepo"
PYFILE = """# coding: utf-8
import clipboard, console, requests, ui, urlparse, zipfile, re
import clipboard, console, requests, ui, urlparse, zipfile, re, os
try:
from cStringIO import StringIO
except ImportError:
Expand All @@ -32,6 +32,7 @@ def tableview_did_select(self, tableview, section, row):
tableview.superview.close()
repolink = "https://github.com/{}/{}/archive/master.zip"
gistslink = "https://api.github.com/users/{}/gists"
browselink = "https://api.github.com/users/{}/repos"
releaselink = "https://api.github.com/repos/{}/{}/releases"
parselink = re.compile("<[\S]*?page=(\d+)>; rel=\"last\"").search
Expand Down Expand Up @@ -86,29 +87,58 @@ def download_release(username, repo, unzip):
save_zip(requests.get(zipurl).content, tapped_text, unzip)
return console.hud_alert("Done!")
@ui.in_background
def download_gist(username, gist):
url = gistslink.format(username, gist)
req = requests.get(url)
data = req.json()
req.close()
info = [i for i in data if i["id"] == gist]
if not info:
return error_alert("Gist '{}' not found".format(gist))
info = info[0]
files = info["files"]
try:
os.mkdir(gist)
except:
pass
for fpinfo in files.values():
data = requests.get(fpinfo["raw_url"]).content
with open(os.path.join(gist,
fpinfo["filename"]), "wb") as fp:
fp.write(data)
return console.hud_alert("Done!")
@ui.in_background
def gitdownload(button):
isrelease = view["sgcontrol"].selected_index
username = view["username"].text = view["username"].text.strip()
reponame = view["reponame"].text = view["reponame"].text.strip()
unzip = view["dounzip"].value
index = view["sgcontrol"].selected_index
username = view["username"].text = view["username"].text.strip()
reponame = view["reponame"].text = view["reponame"].text.strip()
unzip = view["dounzip"].value
if not username:
return error_alert("Please enter username")
if not reponame:
return error_alert("Please enter repo name")
console.show_activity()
if isrelease:
download_release(username, reponame, unzip)
else:
if index == 0:
download_repo(username, reponame, unzip)
elif index == 1:
download_release(username, reponame, unzip)
elif index == 2:
download_gist(username, reponame)
console.hide_activity()
@ui.in_background
def gitbrowse(sender):
username = view["username"].text = view["username"].text.strip()
if not username:
return error_alert("Please enter username")
url = browselink.format(username)
index = view["sgcontrol"].selected_index
if index == 2:
url = gistslink.format(username)
else:
url = browselink.format(username)
try:
req = requests.get(url)
data = req.json() # normally returns a list of dicts
Expand All @@ -125,16 +155,27 @@ def gitbrowse(sender):
link = browselink.format(username) + "?page=%d" % lnk
req = requests.get(link)
finaldata += req.json()
if index == 2:
nameid_dict = {}
for fpinfo in finaldata:
nameid_dict[", ".join(fpinfo["files"].keys())] = fpinfo["id"]
names = nameid_dict.keys()
else:
names = sorted([i["name"] for i in finaldata])
repos = sorted([i["name"] for i in finaldata])
if not repos:
return error_alert("User '{}' has no repos".format(username))
rview = data_view("repo", repos)
name = {0: "repos", 1: "repos", 2: "gists"}[index]
if not names:
return error_alert("User '{}' has no {}".format(username, name))
rview = data_view(name[:-1], names)
rview.present("sheet")
rview.wait_modal()
tapped_text = rview["rtable"].delegate.selected_item
if tapped_text:
view["reponame"].text = tapped_text
if index == 2:
view["reponame"].text = nameid_dict[tapped_text]
else:
view["reponame"].text = tapped_text
def data_view(name, data):
rview = ui.View(name="Choose a " + name)
Expand All @@ -147,6 +188,15 @@ def data_view(name, data):
rview.add_subview(table)
return rview
def segchange(sender):
index = sender.selected_index
if index == 2: # Gist
view["repolabel"].text = "Gist ID:"
view["bbutton"].title = "Browse gists"
else:
view["repolabel"].text = "Repo:"
view["bbutton"].title = "Browse repos"
view = ui.load_view('gitrepo')
for name in 'username reponame'.split():
view[name].autocapitalization_type = ui.AUTOCAPITALIZE_NONE
Expand All @@ -155,9 +205,10 @@ def data_view(name, data):
path = [i for i in parse.path.split("/") if i]
if len(path) >= 2:
view["username"].text, view["reponame"].text = path[:2]
view["sgcontrol"].action = segchange
view.present('popover')
"""
PYUIFILE = """[{"class":"View","attributes":{"name":"gitrepo","background_color":"RGBA(1.000000,1.000000,1.000000,1.000000)","tint_color":"RGBA(0.000000,0.478000,1.000000,1.000000)","enabled":true,"border_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","flex":""},"frame":"{{0, 0}, {341, 250}}","nodes":[{"class":"SegmentedControl","attributes":{"name":"sgcontrol","border_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","uuid":"308A3491-ABAA-43BC-8D2C-1319469FF3C9","enabled":true,"segments":"Repo | Release","flex":"LR"},"frame":"{{16, 6}, {120, 29}}","nodes":[]},{"class":"Label","attributes":{"font_size":20,"enabled":true,"text":"Username:","flex":"","name":"label1","border_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","text_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","alignment":"left","uuid":"7C45FE1B-8084-4257-A1D1-DE573BC8299A"},"frame":"{{16.5, 57.5}, {96, 35.5}}","nodes":[]},{"class":"TextField","attributes":{"uuid":"18AD549C-48DF-40CF-B008-5E2C283AD3EA","alignment":"left","autocorrection_type":"no","font_size":17,"font_name":"Avenir-Book","enabled":true,"flex":"","border_color":"RGBA(0.571429,0.571429,0.571429,1.000000)","text_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","corner_radius":2,"border_width":1,"secure":false,"border_style":3,"name":"username","spellchecking_type":"no"},"frame":"{{120.5, 57.5}, {200, 36}}","nodes":[]},{"class":"Label","attributes":{"font_size":20,"enabled":true,"text":"Repo:","flex":"","name":"label2","border_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","text_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","alignment":"left","uuid":"97359D8F-3BD5-4D8F-8711-14B4565F9601"},"frame":"{{16.5, 102}, {96, 35}}","nodes":[]},{"class":"TextField","attributes":{"name":"reponame","alignment":"left","autocorrection_type":"no","font_size":17,"font_name":"Avenir-Book","enabled":true,"flex":"","border_color":"RGBA(0.571429,0.571429,0.571429,1.000000)","text_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","corner_radius":2,"border_width":1,"uuid":"7BFD908D-CA67-4976-94DD-5CF0DB5EC360","border_style":3,"secure":false,"spellchecking_type":"no"},"frame":"{{120, 101.5}, {200, 36}}","nodes":[]},{"class":"Button","attributes":{"font_size":16,"enabled":true,"flex":"","font_bold":false,"name":"dbutton","corner_radius":9,"border_color":"RGBA(0.244898,0.520408,0.857143,1.000000)","border_width":1,"action":"gitdownload","uuid":"7C58793E-E2CA-4724-B2FC-3E779FD71890","title":"Download"},"frame":"{{16.5, 201}, {96, 31}}","nodes":[]},{"class":"Label","attributes":{"font_size":20,"enabled":true,"text":"Unzip archive:","flex":"","name":"label3","border_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","text_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","alignment":"left","uuid":"3A801AA2-D086-48E9-9262-E9880135E8EA"},"frame":"{{16.5, 145}, {137, 35}}","nodes":[]},{"class":"Switch","attributes":{"enabled":true,"flex":"","name":"dounzip","value":true,"alpha":1,"border_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","uuid":"40756EA8-214B-4247-9A47-F7D519C0BE88"},"frame":"{{161.5, 147}, {51, 31}}","nodes":[]},{"class":"Button","attributes":{"font_size":16,"enabled":true,"flex":"","font_bold":false,"name":"bbutton","corner_radius":9,"border_color":"RGBA(0.244898,0.520408,0.857143,1.000000)","border_width":1,"action":"gitbrowse","uuid":"127F82F8-97A9-4835-AD60-DF5FCDC942E3","title":"Browse repos"},"frame":"{{139, 201}, {119.5, 31}}","nodes":[]}]}]"""
PYUIFILE = """[{"class":"View","attributes":{"name":"gitrepo","background_color":"RGBA(1.000000,1.000000,1.000000,1.000000)","tint_color":"RGBA(0.000000,0.478000,1.000000,1.000000)","enabled":true,"border_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","flex":""},"frame":"{{0, 0}, {341, 250}}","nodes":[{"class":"SegmentedControl","attributes":{"name":"sgcontrol","border_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","uuid":"308A3491-ABAA-43BC-8D2C-1319469FF3C9","enabled":true,"segments":"Repo|Release|Gist","flex":"LR"},"frame":"{{16, 6}, {196.5, 29}}","nodes":[]},{"class":"Label","attributes":{"font_size":20,"enabled":true,"text":"Username:","flex":"","name":"label1","border_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","text_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","alignment":"left","uuid":"7C45FE1B-8084-4257-A1D1-DE573BC8299A"},"frame":"{{16.5, 57.5}, {96, 35.5}}","nodes":[]},{"class":"TextField","attributes":{"uuid":"18AD549C-48DF-40CF-B008-5E2C283AD3EA","alignment":"left","autocorrection_type":"no","font_size":17,"font_name":"Avenir-Book","enabled":true,"flex":"","border_color":"RGBA(0.571429,0.571429,0.571429,1.000000)","text_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","corner_radius":2,"secure":false,"border_width":1,"border_style":3,"name":"username","spellchecking_type":"no"},"frame":"{{120.5, 57.5}, {200, 36}}","nodes":[]},{"class":"Label","attributes":{"font_size":20,"enabled":true,"text":"Repo:","flex":"","name":"repolabel","border_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","text_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","alignment":"left","uuid":"97359D8F-3BD5-4D8F-8711-14B4565F9601"},"frame":"{{16.5, 102}, {96, 35}}","nodes":[]},{"class":"TextField","attributes":{"name":"reponame","alignment":"left","autocorrection_type":"no","font_size":17,"font_name":"Avenir-Book","enabled":true,"flex":"","border_color":"RGBA(0.571429,0.571429,0.571429,1.000000)","text_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","corner_radius":2,"secure":false,"uuid":"7BFD908D-CA67-4976-94DD-5CF0DB5EC360","border_style":3,"border_width":1,"spellchecking_type":"no"},"frame":"{{120, 101.5}, {200, 36}}","nodes":[]},{"class":"Button","attributes":{"font_size":16,"enabled":true,"flex":"","font_bold":false,"name":"dbutton","corner_radius":9,"border_color":"RGBA(0.244898,0.520408,0.857143,1.000000)","border_width":1,"action":"gitdownload","uuid":"7C58793E-E2CA-4724-B2FC-3E779FD71890","title":"Download"},"frame":"{{16.5, 201}, {96, 31}}","nodes":[]},{"class":"Label","attributes":{"font_size":20,"enabled":true,"text":"Unzip archive:","flex":"","name":"label3","border_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","text_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","alignment":"left","uuid":"3A801AA2-D086-48E9-9262-E9880135E8EA"},"frame":"{{16.5, 145}, {137, 35}}","nodes":[]},{"class":"Switch","attributes":{"enabled":true,"flex":"","name":"dounzip","value":true,"alpha":1,"border_color":"RGBA(0.000000,0.000000,0.000000,1.000000)","uuid":"40756EA8-214B-4247-9A47-F7D519C0BE88"},"frame":"{{161.5, 147}, {51, 31}}","nodes":[]},{"class":"Button","attributes":{"font_size":16,"enabled":true,"flex":"","font_bold":false,"name":"bbutton","corner_radius":9,"border_color":"RGBA(0.244898,0.520408,0.857143,1.000000)","border_width":1,"action":"gitbrowse","uuid":"127F82F8-97A9-4835-AD60-DF5FCDC942E3","title":"Browse repos"},"frame":"{{139, 201}, {119.5, 31}}","nodes":[]}]}]"""

def fix_quotes_out(s):
return s.replace("\\\"\\\"\\\"", "\"\"\"").replace("\\\\", "\\")
Expand Down

0 comments on commit e66dfd4

Please sign in to comment.