forked from endorphant/ttbp
incrementing stable to 0.9.1
-adding graffiti wall to stable -flopping over a bunch of core changes from betamaster
parent
328c6a498a
commit
9e3cca2b97
|
@ -5,5 +5,5 @@
|
||||||
| |___ |___ |___ | [__ |___ |\ | | __ | |\ | |___ |
|
| |___ |___ |___ | [__ |___ |\ | | __ | |\ | |___ |
|
||||||
| | |___ |___ |___ ___] |___ | \| |__] | | \| |___ |
|
| | |___ |___ |___ ___] |___ | \| |__] | | \| |___ |
|
||||||
| |
|
| |
|
||||||
| ver 0.9.0 (almost stable) |
|
| ver 0.9.1 (almost stable) |
|
||||||
|__________________________________________________________|
|
|__________________________________________________________|
|
||||||
|
|
262
bin/ttbp.py
262
bin/ttbp.py
|
@ -49,6 +49,9 @@ LIVE = "http://tilde.town/~"
|
||||||
FEEDBACK = os.path.join("/home", "endorphant", "ttbp-mail")
|
FEEDBACK = os.path.join("/home", "endorphant", "ttbp-mail")
|
||||||
FEEDBOX = "endorphant@tilde.town"
|
FEEDBOX = "endorphant@tilde.town"
|
||||||
USERFILE = os.path.join("/home", "endorphant", "projects", "ttbp", "users.txt")
|
USERFILE = os.path.join("/home", "endorphant", "projects", "ttbp", "users.txt")
|
||||||
|
GRAFF_DIR = os.path.join(SOURCE, "graffiti")
|
||||||
|
WALL = os.path.join(GRAFF_DIR, "wall.txt")
|
||||||
|
WALL_LOCK = os.path.join(GRAFF_DIR, ".lock")
|
||||||
|
|
||||||
p = inflect.engine()
|
p = inflect.engine()
|
||||||
|
|
||||||
|
@ -72,8 +75,8 @@ SPACER = "\n"
|
||||||
INVALID = "please pick a number from the list of options!\n\n"
|
INVALID = "please pick a number from the list of options!\n\n"
|
||||||
DUST = "sorry about the dust, but this part is still under construction. check back later!\n\n"
|
DUST = "sorry about the dust, but this part is still under construction. check back later!\n\n"
|
||||||
QUITS = ['exit', 'quit', 'q', 'x']
|
QUITS = ['exit', 'quit', 'q', 'x']
|
||||||
BACKS = ['back', 'b', 'q']
|
|
||||||
EJECT = "eject button fired! going home now."
|
EJECT = "eject button fired! going home now."
|
||||||
|
RAINBOW = False
|
||||||
|
|
||||||
## ref
|
## ref
|
||||||
|
|
||||||
|
@ -156,21 +159,22 @@ def check_init():
|
||||||
|
|
||||||
## ttbprc validation
|
## ttbprc validation
|
||||||
while not os.path.isfile(TTBPRC):
|
while not os.path.isfile(TTBPRC):
|
||||||
setup_handler()
|
setup_repair()
|
||||||
try:
|
try:
|
||||||
SETTINGS = json.load(open(TTBPRC))
|
SETTINGS = json.load(open(TTBPRC))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
setup_handler()
|
setup_repair()
|
||||||
|
|
||||||
## PATCH CHECK HERE
|
## version checker
|
||||||
if build_mismatch():
|
mismatch = build_mismatch()
|
||||||
switch_build()
|
if mismatch is not False:
|
||||||
|
switch_build(mismatch)
|
||||||
if not updated():
|
if not updated():
|
||||||
update_version()
|
update_version()
|
||||||
|
|
||||||
## when ready, enter main program and load core engine
|
## when ready, enter main program and load core engine
|
||||||
raw_input("press <enter> to explore your feels.\n\n")
|
raw_input("press <enter> to explore your feels.\n\n")
|
||||||
core.load()
|
core.load(SETTINGS)
|
||||||
|
|
||||||
return ""
|
return ""
|
||||||
else:
|
else:
|
||||||
|
@ -217,7 +221,7 @@ press <enter> to begin, or <ctrl-c> to get out of here.
|
||||||
|
|
||||||
## run user-interactive setup and load core engine
|
## run user-interactive setup and load core engine
|
||||||
setup()
|
setup()
|
||||||
core.load()
|
core.load(SETTINGS)
|
||||||
|
|
||||||
raw_input("\nyou're all good to go, "+chatter.say("friend")+"! hit <enter> to continue.\n\n")
|
raw_input("\nyou're all good to go, "+chatter.say("friend")+"! hit <enter> to continue.\n\n")
|
||||||
return ""
|
return ""
|
||||||
|
@ -251,9 +255,9 @@ def gen_header():
|
||||||
"""
|
"""
|
||||||
return header
|
return header
|
||||||
|
|
||||||
def setup_handler():
|
def setup_repair():
|
||||||
'''
|
'''
|
||||||
setup wrapper function
|
setup repair function
|
||||||
|
|
||||||
* calls setup()
|
* calls setup()
|
||||||
* handles ^c
|
* handles ^c
|
||||||
|
@ -281,7 +285,7 @@ def setup():
|
||||||
global SETTINGS
|
global SETTINGS
|
||||||
|
|
||||||
print("\n\ttext editor:\t" +SETTINGS.get("editor"))
|
print("\n\ttext editor:\t" +SETTINGS.get("editor"))
|
||||||
if publishing():
|
if core.publishing():
|
||||||
print("\tpublish dir:\t" +os.path.join(PUBLIC, SETTINGS.get("publish dir")))
|
print("\tpublish dir:\t" +os.path.join(PUBLIC, SETTINGS.get("publish dir")))
|
||||||
print("\tpubishing:\t"+str(SETTINGS.get("publishing"))+"\n")
|
print("\tpubishing:\t"+str(SETTINGS.get("publishing"))+"\n")
|
||||||
|
|
||||||
|
@ -292,9 +296,9 @@ def setup():
|
||||||
# publishing selection
|
# publishing selection
|
||||||
SETTINGS.update({"publishing":select_publishing()})
|
SETTINGS.update({"publishing":select_publishing()})
|
||||||
update_publishing()
|
update_publishing()
|
||||||
redraw("blog publishing: "+str(publishing()))
|
redraw("blog publishing: "+str(core.publishing()))
|
||||||
|
|
||||||
if publishing():
|
if core.publishing():
|
||||||
print("publish directory: ~"+USER+"/public_html/"+SETTINGS.get("publish dir"))
|
print("publish directory: ~"+USER+"/public_html/"+SETTINGS.get("publish dir"))
|
||||||
|
|
||||||
# save settings
|
# save settings
|
||||||
|
@ -309,23 +313,6 @@ def setup():
|
||||||
|
|
||||||
## menus
|
## menus
|
||||||
|
|
||||||
def print_menu(menu):
|
|
||||||
'''
|
|
||||||
pretty menu handler
|
|
||||||
|
|
||||||
* takes list of options and prints them
|
|
||||||
'''
|
|
||||||
|
|
||||||
i = 0
|
|
||||||
for x in menu:
|
|
||||||
line = []
|
|
||||||
line.append("\t[ ")
|
|
||||||
if i < 10:
|
|
||||||
line.append(" ")
|
|
||||||
line.append(str(i)+" ] "+x)
|
|
||||||
print("".join(line))
|
|
||||||
i += 1
|
|
||||||
|
|
||||||
def main_menu():
|
def main_menu():
|
||||||
'''
|
'''
|
||||||
main navigation menu
|
main navigation menu
|
||||||
|
@ -336,13 +323,14 @@ def main_menu():
|
||||||
"review your feels",
|
"review your feels",
|
||||||
"check out your neighbors",
|
"check out your neighbors",
|
||||||
"browse global feels",
|
"browse global feels",
|
||||||
|
"scribble some graffiti\t(new!)",
|
||||||
"change your settings",
|
"change your settings",
|
||||||
"send some feedback",
|
"send some feedback",
|
||||||
"see credits",
|
"see credits",
|
||||||
"read documentation"]
|
"read documentation"]
|
||||||
|
|
||||||
print("you're at ttbp home. remember, you can always press <ctrl-c> to come back here.\n\n")
|
print("you're at ttbp home. remember, you can always press <ctrl-c> to come back here.\n\n")
|
||||||
print_menu(menuOptions)
|
util.print_menu(menuOptions, RAINBOW)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
choice = raw_input("\ntell me about your feels (or 'quit' to exit): ")
|
choice = raw_input("\ntell me about your feels (or 'quit' to exit): ")
|
||||||
|
@ -354,30 +342,33 @@ def main_menu():
|
||||||
redraw()
|
redraw()
|
||||||
today = time.strftime("%Y%m%d")
|
today = time.strftime("%Y%m%d")
|
||||||
write_entry(os.path.join(DATA, today+".txt"))
|
write_entry(os.path.join(DATA, today+".txt"))
|
||||||
www_neighbors(find_ttbps())
|
core.www_neighbors()
|
||||||
elif choice == '1':
|
elif choice == '1':
|
||||||
redraw("your recorded feels, listed by date:\n")
|
redraw("your recorded feels, listed by date:\n")
|
||||||
view_feels(USER)
|
view_feels(USER)
|
||||||
elif choice == '2':
|
elif choice == '2':
|
||||||
users = find_ttbps()
|
users = core.find_ttbps()
|
||||||
redraw("the following "+p.no("user", len(users))+" "+p.plural("is", len(users))+" recording feels on ttbp:\n")
|
redraw("the following "+p.no("user", len(users))+" "+p.plural("is", len(users))+" recording feels on ttbp:\n")
|
||||||
view_neighbors(users)
|
view_neighbors(users)
|
||||||
elif choice == '3':
|
elif choice == '3':
|
||||||
redraw("most recent global entries\n")
|
redraw("most recent global entries\n")
|
||||||
view_feed()
|
view_feed()
|
||||||
elif choice == '4':
|
elif choice == '4':
|
||||||
|
graffiti_handler()
|
||||||
|
elif choice == '5':
|
||||||
redraw("now changing your settings. press <ctrl-c> if you didn't mean to do this.")
|
redraw("now changing your settings. press <ctrl-c> if you didn't mean to do this.")
|
||||||
try:
|
try:
|
||||||
setup()
|
core.load(setup()) # reload settings to core
|
||||||
except KeyboardInterrupt():
|
except KeyboardInterrupt():
|
||||||
redraw(EJECT)
|
redraw(EJECT)
|
||||||
redraw()
|
redraw()
|
||||||
elif choice == '5':
|
|
||||||
feedback_menu()
|
|
||||||
elif choice == '6':
|
elif choice == '6':
|
||||||
|
redraw("you're about to send mail to ~endorphant about ttbp\n")
|
||||||
|
feedback_menu()
|
||||||
|
elif choice == '7':
|
||||||
redraw()
|
redraw()
|
||||||
show_credits()
|
show_credits()
|
||||||
elif choice == '7':
|
elif choice == '8':
|
||||||
subprocess.call(["lynx", os.path.join(SOURCE, "..", "README.html")])
|
subprocess.call(["lynx", os.path.join(SOURCE, "..", "README.html")])
|
||||||
redraw()
|
redraw()
|
||||||
elif choice in QUITS:
|
elif choice in QUITS:
|
||||||
|
@ -395,9 +386,8 @@ def feedback_menu():
|
||||||
* calls feedback writing function
|
* calls feedback writing function
|
||||||
'''
|
'''
|
||||||
|
|
||||||
print("you're about to send mail to ~endorphant about ttbp\n\n")
|
|
||||||
|
|
||||||
print_menu(SUBJECTS)
|
util.print_menu(SUBJECTS, RAINBOW)
|
||||||
choice = raw_input("\npick a category for your feedback: ")
|
choice = raw_input("\npick a category for your feedback: ")
|
||||||
|
|
||||||
cat = ""
|
cat = ""
|
||||||
|
@ -471,10 +461,10 @@ def view_neighbors(users):
|
||||||
sortedUsers.append(user[0])
|
sortedUsers.append(user[0])
|
||||||
userIndex.append(user[2])
|
userIndex.append(user[2])
|
||||||
|
|
||||||
print_menu(sortedUsers)
|
util.print_menu(sortedUsers, RAINBOW)
|
||||||
|
|
||||||
#raw_input("\n\npress <enter> to go back home.\n\n")
|
#raw_input("\n\npress <enter> to go back home.\n\n")
|
||||||
choice = list_select(sortedUsers, "pick a townie to browse their feels, or type 'back' to go home: ")
|
choice = util.list_select(sortedUsers, "pick a townie to browse their feels, or type 'back' to go home: ")
|
||||||
|
|
||||||
if choice is not False:
|
if choice is not False:
|
||||||
redraw("~"+userIndex[choice]+"'s recorded feels, listed by date: \n")
|
redraw("~"+userIndex[choice]+"'s recorded feels, listed by date: \n")
|
||||||
|
@ -565,11 +555,11 @@ editor.
|
||||||
entryFile = open(entry, "a")
|
entryFile = open(entry, "a")
|
||||||
entryFile.write("\n"+entered+"\n")
|
entryFile.write("\n"+entered+"\n")
|
||||||
entryFile.close()
|
entryFile.close()
|
||||||
subprocess.call([SETTINGS["editor"], entry])
|
subprocess.call([SETTINGS.get("editor"), entry])
|
||||||
|
|
||||||
left = ""
|
left = ""
|
||||||
|
|
||||||
if publishing():
|
if core.publishing():
|
||||||
core.load_files()
|
core.load_files()
|
||||||
core.write("index.html")
|
core.write("index.html")
|
||||||
left = "posted to "+LIVE+USER+"/"+SETTINGS["publish dir"]+"/index.html\n\n>"
|
left = "posted to "+LIVE+USER+"/"+SETTINGS["publish dir"]+"/index.html\n\n>"
|
||||||
|
@ -611,9 +601,9 @@ def list_entries(metas, entries, prompt):
|
||||||
displays a list of entries for reading selection
|
displays a list of entries for reading selection
|
||||||
'''
|
'''
|
||||||
|
|
||||||
print_menu(entries)
|
util.print_menu(entries, RAINBOW)
|
||||||
|
|
||||||
choice = list_select(entries, "pick an entry from the list, or type 'back' to go back: ")
|
choice = util.list_select(entries, "pick an entry from the list, or type 'back' to go back: ")
|
||||||
|
|
||||||
if choice is not False:
|
if choice is not False:
|
||||||
|
|
||||||
|
@ -644,7 +634,7 @@ def view_feed():
|
||||||
|
|
||||||
feedList = []
|
feedList = []
|
||||||
|
|
||||||
for townie in find_ttbps():
|
for townie in core.find_ttbps():
|
||||||
entryDir = os.path.join("/home", townie, ".ttbp", "entries")
|
entryDir = os.path.join("/home", townie, ".ttbp", "entries")
|
||||||
filenames = os.listdir(entryDir)
|
filenames = os.listdir(entryDir)
|
||||||
|
|
||||||
|
@ -670,126 +660,42 @@ def view_feed():
|
||||||
|
|
||||||
return
|
return
|
||||||
|
|
||||||
|
def graffiti_handler():
|
||||||
|
'''
|
||||||
|
Main graffiti handler.
|
||||||
|
'''
|
||||||
|
|
||||||
|
if os.path.isfile(WALL_LOCK):
|
||||||
|
redraw("sorry, "+chatter.say("friend")+", but someone's there right now. try again in a few!\n")
|
||||||
|
else:
|
||||||
|
subprocess.call(["touch", WALL_LOCK])
|
||||||
|
redraw()
|
||||||
|
print("""\
|
||||||
|
the graffiti wall is a world-writeable text file. anyone can
|
||||||
|
scribble on it; anyone can move or delete things. please be
|
||||||
|
considerate of your neighbors when writing on it.
|
||||||
|
|
||||||
|
no one will be able to visit the wall while you are here, so don't
|
||||||
|
worry about overwriting someone else's work. anything you do to the
|
||||||
|
wall will be recorded if you save the file, and you can cancel
|
||||||
|
your changes by exiting without saving.
|
||||||
|
|
||||||
|
""")
|
||||||
|
raw_input("press <enter> to visit the wall\n\n")
|
||||||
|
subprocess.call([SETTINGS.get("editor"), WALL])
|
||||||
|
subprocess.call(["rm", WALL_LOCK])
|
||||||
|
redraw("thanks for visiting the graffiti wall!")
|
||||||
|
|
||||||
|
|
||||||
## misc helpers
|
## misc helpers
|
||||||
|
|
||||||
def find_ttbps():
|
|
||||||
'''
|
|
||||||
returns a list of users with a ttbp by checking for a valid ttbprc
|
|
||||||
'''
|
|
||||||
|
|
||||||
users = []
|
|
||||||
|
|
||||||
for townie in os.listdir("/home"):
|
|
||||||
if os.path.exists(os.path.join("/home", townie, ".ttbp", "config", "ttbprc")):
|
|
||||||
users.append(townie)
|
|
||||||
|
|
||||||
return users
|
|
||||||
|
|
||||||
def www_neighbors(users):
|
|
||||||
'''
|
|
||||||
takes a list of users with publiishing turned on and prepares it for www output
|
|
||||||
'''
|
|
||||||
|
|
||||||
userList = []
|
|
||||||
|
|
||||||
for user in users:
|
|
||||||
if not publishing(user):
|
|
||||||
continue
|
|
||||||
|
|
||||||
userRC = json.load(open(os.path.join("/home", user, ".ttbp", "config", "ttbprc")))
|
|
||||||
|
|
||||||
url = LIVE+user+"/"+userRC["publish dir"]
|
|
||||||
|
|
||||||
lastfile = ""
|
|
||||||
files = os.listdir(os.path.join("/home", user, ".ttbp", "entries"))
|
|
||||||
files.sort()
|
|
||||||
for filename in files:
|
|
||||||
if core.valid(filename):
|
|
||||||
lastfile = os.path.join("/home", user, ".ttbp", "entries", filename)
|
|
||||||
|
|
||||||
if lastfile:
|
|
||||||
last = os.path.getctime(lastfile)
|
|
||||||
timestamp = time.strftime("%Y-%m-%d at %H:%M", time.localtime(last)) + " (utc"+time.strftime("%z")[0]+time.strftime("%z")[2]+")"
|
|
||||||
else:
|
|
||||||
timestamp = ""
|
|
||||||
last = 0
|
|
||||||
|
|
||||||
userList.append(["<a href=\""+url+"\">~"+user+"</a> "+timestamp, last])
|
|
||||||
|
|
||||||
# sort user by most recent entry
|
|
||||||
userList.sort(key = lambda userdata:userdata[1])
|
|
||||||
userList.reverse()
|
|
||||||
sortedUsers = []
|
|
||||||
for user in userList:
|
|
||||||
sortedUsers.append(user[0])
|
|
||||||
|
|
||||||
core.write_global_feed(sortedUsers)
|
|
||||||
|
|
||||||
def list_select(options, prompt):
|
|
||||||
'''
|
|
||||||
given a list, cycles through the prompt until a valid index is imputted
|
|
||||||
'''
|
|
||||||
|
|
||||||
ans = ""
|
|
||||||
invalid = True
|
|
||||||
|
|
||||||
while invalid:
|
|
||||||
choice = raw_input("\n\n"+prompt)
|
|
||||||
|
|
||||||
if choice in BACKS:
|
|
||||||
return False
|
|
||||||
|
|
||||||
try:
|
|
||||||
ans = int(choice)
|
|
||||||
except ValueError:
|
|
||||||
return list_select(options, prompt)
|
|
||||||
|
|
||||||
invalid = False
|
|
||||||
|
|
||||||
if ans >= len(options):
|
|
||||||
return list_select(options, prompt)
|
|
||||||
|
|
||||||
return ans
|
|
||||||
|
|
||||||
def input_yn(query):
|
|
||||||
'''
|
|
||||||
given a query, returns boolean True or False by processing y/n input
|
|
||||||
'''
|
|
||||||
|
|
||||||
try:
|
|
||||||
ans = raw_input(query+" [y/n] ")
|
|
||||||
except KeyboardInterrupt:
|
|
||||||
input_yn(query)
|
|
||||||
|
|
||||||
while ans not in ["y", "n"]:
|
|
||||||
ans = raw_input("'y' or 'n' please: ")
|
|
||||||
|
|
||||||
if ans == "y":
|
|
||||||
return True
|
|
||||||
else:
|
|
||||||
return False
|
|
||||||
|
|
||||||
def publishing(username = USER):
|
|
||||||
'''
|
|
||||||
checks .ttbprc for whether or not user opted for www publishing
|
|
||||||
'''
|
|
||||||
|
|
||||||
ttbprc = {}
|
|
||||||
|
|
||||||
if username == USER:
|
|
||||||
ttbprc = SETTINGS
|
|
||||||
|
|
||||||
else:
|
|
||||||
ttbprc = json.load(open(os.path.join("/home", username, ".ttbp", "config", "ttbprc")))
|
|
||||||
|
|
||||||
return ttbprc.get("publishing")
|
|
||||||
|
|
||||||
def select_editor():
|
def select_editor():
|
||||||
'''
|
'''
|
||||||
setup helper for editor selection
|
setup helper for editor selection
|
||||||
'''
|
'''
|
||||||
|
|
||||||
print_menu(EDITORS)
|
util.print_menu(EDITORS, RAINBOW)
|
||||||
choice = raw_input("\npick your favorite text editor: ")
|
choice = raw_input("\npick your favorite text editor: ")
|
||||||
while choice not in ['0', '1', '2', '3', '4', '5']:
|
while choice not in ['0', '1', '2', '3', '4', '5']:
|
||||||
choice = raw_input("\nplease pick a number from the list: ")
|
choice = raw_input("\nplease pick a number from the list: ")
|
||||||
|
@ -835,7 +741,7 @@ def select_publishing():
|
||||||
setup helper for toggling publishing
|
setup helper for toggling publishing
|
||||||
'''
|
'''
|
||||||
|
|
||||||
publish = input_yn("""\
|
publish = util.input_yn("""\
|
||||||
do you want to publish your feels online?
|
do you want to publish your feels online?
|
||||||
|
|
||||||
if yes, your feels will be published to a directory of your choice in
|
if yes, your feels will be published to a directory of your choice in
|
||||||
|
@ -870,7 +776,7 @@ def update_publishing():
|
||||||
|
|
||||||
global SETTINGS
|
global SETTINGS
|
||||||
|
|
||||||
if publishing():
|
if core.publishing():
|
||||||
oldDir = SETTINGS.get("publish dir")
|
oldDir = SETTINGS.get("publish dir")
|
||||||
newDir = select_publish_dir()
|
newDir = select_publish_dir()
|
||||||
SETTINGS.update({"publish dir": newDir})
|
SETTINGS.update({"publish dir": newDir})
|
||||||
|
@ -915,31 +821,32 @@ def build_mismatch():
|
||||||
if not os.path.exists(versionFile):
|
if not os.path.exists(versionFile):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
ver = open(versionFile, "r").read()
|
ver = open(versionFile, "r").read().rstrip()
|
||||||
|
|
||||||
if ver[-1] == __version__[-1]:
|
if ver[-1] == __version__[-1]:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return True
|
return ver
|
||||||
|
|
||||||
def switch_build():
|
def switch_build(ver):
|
||||||
'''
|
'''
|
||||||
switches user between beta and stable builds
|
switches user between beta and stable builds
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if __version__[-1] == 'b':
|
if __version__[-1] == 'b':
|
||||||
build = "beta"
|
build = "beta"
|
||||||
|
ver += "b"
|
||||||
else:
|
else:
|
||||||
build = "stable"
|
build = "stable"
|
||||||
|
ver = ver[0:-1]
|
||||||
|
|
||||||
# increment user versionfile
|
# write user versionfile
|
||||||
print("\nswitching you over to the most current "+build+" version...\n")
|
print("\nswitching you over to the "+build+" version...\n")
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
print("...")
|
print("...")
|
||||||
versionFile = os.path.join(PATH, "version")
|
versionFile = os.path.join(PATH, "version")
|
||||||
open(versionFile, "w").write(__version__)
|
open(versionFile, "w").write(ver)
|
||||||
time.sleep(2)
|
time.sleep(1)
|
||||||
print("\nall good!\n")
|
#print("\nall good!\n")
|
||||||
|
|
||||||
def updated():
|
def updated():
|
||||||
'''
|
'''
|
||||||
|
@ -974,6 +881,8 @@ def update_version():
|
||||||
print("...")
|
print("...")
|
||||||
time.sleep(2)
|
time.sleep(2)
|
||||||
|
|
||||||
|
userVersion = ""
|
||||||
|
|
||||||
if not os.path.isfile(versionFile):
|
if not os.path.isfile(versionFile):
|
||||||
# from 0.8.5 to 0.8.6:
|
# from 0.8.5 to 0.8.6:
|
||||||
|
|
||||||
|
@ -1006,9 +915,9 @@ def update_version():
|
||||||
ttbprc.close()
|
ttbprc.close()
|
||||||
|
|
||||||
else: # version at least 0.8.6
|
else: # version at least 0.8.6
|
||||||
userVersion = open(versionFile, 'r').read()
|
userVersion = open(versionFile, "r").read().rstrip()
|
||||||
|
|
||||||
# from 0.8.6 to 0.8.7
|
# from 0.8.6
|
||||||
if userVersion == "0.8.6":
|
if userVersion == "0.8.6":
|
||||||
print("\nresetting your publishing settings...\n")
|
print("\nresetting your publishing settings...\n")
|
||||||
SETTINGS.update({"publishing":select_publishing()})
|
SETTINGS.update({"publishing":select_publishing()})
|
||||||
|
@ -1017,11 +926,12 @@ def update_version():
|
||||||
ttbprc.write(json.dumps(SETTINGS, sort_keys=True, indent=2, separators=(',',':')))
|
ttbprc.write(json.dumps(SETTINGS, sort_keys=True, indent=2, separators=(',',':')))
|
||||||
ttbprc.close()
|
ttbprc.close()
|
||||||
|
|
||||||
|
|
||||||
# increment user versionfile
|
# increment user versionfile
|
||||||
open(versionFile, "w").write(__version__)
|
open(versionFile, "w").write(__version__)
|
||||||
print("you're all good to go, "+chatter.say("friend")+"!")
|
print("\nyou're all good to go, "+chatter.say("friend")+"!\n")
|
||||||
|
|
||||||
|
# show patch notes
|
||||||
|
if userVersion != "0.9.0" and userVersion != "0.9.0b":
|
||||||
# version 0.9.0 patch notes:
|
# version 0.9.0 patch notes:
|
||||||
print("""
|
print("""
|
||||||
ver. 0.9.0 features:
|
ver. 0.9.0 features:
|
||||||
|
@ -1029,6 +939,12 @@ ver. 0.9.0 features:
|
||||||
* documentation browser
|
* documentation browser
|
||||||
""")
|
""")
|
||||||
|
|
||||||
|
# version 0.9.1 patch notes
|
||||||
|
print("""
|
||||||
|
ver 0.9.1 features:
|
||||||
|
* graffiti wall
|
||||||
|
""")
|
||||||
|
|
||||||
#####
|
#####
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
Loading…
Reference in New Issue