cleaning up settings and version checker
this commit picks up from some of my broken local repos; it improves the config validator run at startup, handles publishing toggling more correctly, and includes version updating to 0.10.2master
parent
f1f6f03e08
commit
9d7b470b2a
6
setup.py
6
setup.py
|
@ -4,7 +4,7 @@ from setuptools import setup
|
||||||
|
|
||||||
setup(
|
setup(
|
||||||
name='ttbp',
|
name='ttbp',
|
||||||
version='0.10.1',
|
version='0.10.2',
|
||||||
description='command line social blogging tool used on tilde.town',
|
description='command line social blogging tool used on tilde.town',
|
||||||
url='https://github.com/modgethanc/ttbp',
|
url='https://github.com/modgethanc/ttbp',
|
||||||
author='~endorphant',
|
author='~endorphant',
|
||||||
|
@ -24,8 +24,8 @@ setup(
|
||||||
include_package_data = True,
|
include_package_data = True,
|
||||||
entry_points = {
|
entry_points = {
|
||||||
'console_scripts': [
|
'console_scripts': [
|
||||||
'feels = ttbp.ttbp:start',
|
'feels = ttbp.ttbp:main',
|
||||||
'ttbp = ttbp.ttbp:start',
|
'ttbp = ttbp.ttbp:main',
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
|
1147
ttbp/_ttbp.py
1147
ttbp/_ttbp.py
File diff suppressed because it is too large
Load Diff
|
@ -81,6 +81,6 @@ __________________________________________________________
|
||||||
| ____ ____ ____ _ ____ ____ _ _ ____ _ _ _ ____ |
|
| ____ ____ ____ _ ____ ____ _ _ ____ _ _ _ ____ |
|
||||||
| |___ |___ |___ | [__ |___ |\ | | __ | |\ | |___ |
|
| |___ |___ |___ | [__ |___ |\ | | __ | |\ | |___ |
|
||||||
| | |___ |___ |___ ___] |___ | \| |__] | | \| |___ |
|
| | |___ |___ |___ ___] |___ | \| |__] | | \| |___ |
|
||||||
| ver 0.10.0 (now with gophers) |
|
| ver 0.10.2 |
|
||||||
|__________________________________________________________|
|
|__________________________________________________________|
|
||||||
'''.lstrip()
|
'''.lstrip()
|
||||||
|
|
|
@ -10,6 +10,9 @@ from . import util
|
||||||
from .core import parse_date
|
from .core import parse_date
|
||||||
|
|
||||||
GOPHER_PROMPT = """
|
GOPHER_PROMPT = """
|
||||||
|
|
||||||
|
GOPHER SETUP
|
||||||
|
|
||||||
gopher is a pre-web technology that is text-oriented and primarily used to
|
gopher is a pre-web technology that is text-oriented and primarily used to
|
||||||
share folders of your files with the world.
|
share folders of your files with the world.
|
||||||
|
|
||||||
|
|
228
ttbp/ttbp.py
228
ttbp/ttbp.py
|
@ -49,17 +49,13 @@ from . import chatter
|
||||||
from . import gopher
|
from . import gopher
|
||||||
from . import util
|
from . import util
|
||||||
|
|
||||||
__version__ = "0.10.1"
|
__version__ = "0.10.2"
|
||||||
__author__ = "endorphant <endorphant@tilde.town)"
|
__author__ = "endorphant <endorphant@tilde.town)"
|
||||||
|
|
||||||
p = inflect.engine()
|
p = inflect.engine()
|
||||||
|
|
||||||
## user globals
|
## user globals
|
||||||
SETTINGS = {
|
SETTINGS = { }
|
||||||
"editor": "none",
|
|
||||||
"publish dir": False,
|
|
||||||
"gopher": False,
|
|
||||||
}
|
|
||||||
|
|
||||||
## ui globals
|
## ui globals
|
||||||
BANNER = util.attach_rainbow() + config.BANNER + util.attach_reset()
|
BANNER = util.attach_rainbow() + config.BANNER + util.attach_reset()
|
||||||
|
@ -74,6 +70,12 @@ RAINBOW = False
|
||||||
|
|
||||||
EDITORS = ["nano", "vim", "vi", "emacs", "pico", "ed", "micro"]
|
EDITORS = ["nano", "vim", "vi", "emacs", "pico", "ed", "micro"]
|
||||||
SUBJECTS = ["help request", "bug report", "feature suggestion", "general comment"]
|
SUBJECTS = ["help request", "bug report", "feature suggestion", "general comment"]
|
||||||
|
DEFAULT_SETTINGS = {
|
||||||
|
"editor": "nano",
|
||||||
|
"publish dir": None,
|
||||||
|
"gopher": False,
|
||||||
|
"publishing": False
|
||||||
|
}
|
||||||
|
|
||||||
## ttbp specific utilities
|
## ttbp specific utilities
|
||||||
|
|
||||||
|
@ -157,9 +159,9 @@ def redraw(leftover=""):
|
||||||
print(BANNER)
|
print(BANNER)
|
||||||
print(SPACER)
|
print(SPACER)
|
||||||
if leftover:
|
if leftover:
|
||||||
print("> "+leftover+"\n")
|
print("> {leftover}\n".format(leftover=leftover))
|
||||||
|
|
||||||
def start():
|
def main():
|
||||||
'''
|
'''
|
||||||
main engine head
|
main engine head
|
||||||
|
|
||||||
|
@ -216,26 +218,19 @@ def check_init():
|
||||||
|
|
||||||
print("\n\n")
|
print("\n\n")
|
||||||
if os.path.exists(os.path.join(os.path.expanduser("~"),".ttbp")):
|
if os.path.exists(os.path.join(os.path.expanduser("~"),".ttbp")):
|
||||||
print(chatter.say("greet")+", "+config.USER+".\n")
|
print("{greeting}, {user}".format(greeting=chatter.say("greet"),
|
||||||
|
user=config.USER))
|
||||||
'''
|
|
||||||
## ttbprc validation
|
|
||||||
while not os.path.isfile(config.TTBPRC):
|
|
||||||
setup_repair()
|
|
||||||
try:
|
|
||||||
SETTINGS = json.load(open(config.TTBPRC))
|
|
||||||
except ValueError:
|
|
||||||
setup_repair()
|
|
||||||
'''
|
|
||||||
|
|
||||||
## ttbp env validation
|
## ttbp env validation
|
||||||
if not valid_setup():
|
if not valid_setup():
|
||||||
setup_repair()
|
setup_repair()
|
||||||
|
|
||||||
## version checker
|
## version checker
|
||||||
|
'''
|
||||||
mismatch = build_mismatch()
|
mismatch = build_mismatch()
|
||||||
if mismatch is not False:
|
if mismatch is not False:
|
||||||
switch_build(mismatch)
|
switch_build(mismatch)
|
||||||
|
'''
|
||||||
if not updated():
|
if not updated():
|
||||||
update_version()
|
update_version()
|
||||||
|
|
||||||
|
@ -331,7 +326,7 @@ def gen_header():
|
||||||
|
|
||||||
def valid_setup():
|
def valid_setup():
|
||||||
'''
|
'''
|
||||||
Checks to see if user has a sane ttbp environment.
|
Checks to see if user has a valid ttbp environment.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
global SETTINGS
|
global SETTINGS
|
||||||
|
@ -344,18 +339,23 @@ def valid_setup():
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
core.load(SETTINGS)
|
||||||
|
|
||||||
|
for option in iter(DEFAULT_SETTINGS):
|
||||||
|
if option != "publish dir" and SETTINGS.get(option, None) is None:
|
||||||
|
return False
|
||||||
|
|
||||||
if core.publishing():
|
if core.publishing():
|
||||||
if not SETTINGS.get("publish dir"):
|
if SETTINGS.get("publish dir", None) is None:
|
||||||
|
print("CONFIG ERROR! publishing is enabled but no directory is set")
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if not os.path.exists(config.WWW):
|
if (not os.path.exists(config.WWW) or
|
||||||
return False
|
not os.path.exists(os.path.join(config.PUBLIC,
|
||||||
|
SETTINGS.get("publish dir")))):
|
||||||
|
print("something's weird with your publishing directories. let's try rebuilding them!")
|
||||||
|
|
||||||
if not os.path.exists(os.path.join(config.WWW, SETTINGS.get("pubish dir"))):
|
update_publishing()
|
||||||
return False
|
|
||||||
|
|
||||||
if isinstance(SETTINGS.get("gopher"), type(None)):
|
|
||||||
return False
|
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
|
||||||
|
@ -367,12 +367,49 @@ def setup_repair():
|
||||||
* handles ^c
|
* handles ^c
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
global SETTINGS
|
||||||
|
|
||||||
print("\nyour ttbp configuration doesn't look right. let's make you a fresh copy.\n\n")
|
print("\nyour ttbp configuration doesn't look right. let's make you a fresh copy.\n\n")
|
||||||
|
|
||||||
|
settings_map = {
|
||||||
|
"editor": select_editor,
|
||||||
|
"publishing": select_publishing,
|
||||||
|
"publish dir": select_publish_dir,
|
||||||
|
"gopher": gopher.select_gopher
|
||||||
|
}
|
||||||
|
|
||||||
|
for option in iter(settings_map):
|
||||||
|
if SETTINGS.get(option, None) is None:
|
||||||
|
SETTINGS.update({option: "NOT SET"})
|
||||||
|
SETTINGS.update({option: settings_map[option]()})
|
||||||
|
|
||||||
|
update_publishing()
|
||||||
|
core.reload_ttbprc(SETTINGS)
|
||||||
|
save_settings()
|
||||||
|
'''
|
||||||
|
if SETTINGS.get("editor", None) is None:
|
||||||
|
SETTINGS.update({"editor": "not set"})
|
||||||
|
SETTINGS.update({"editor": select_editor()})
|
||||||
|
|
||||||
|
if SETTINGS.get("publishing", None) is None:
|
||||||
|
SETTINGS.update({"publishing": "not set"})
|
||||||
|
SETTINGS.update({"publishing": select_publishing()})
|
||||||
|
'''
|
||||||
|
|
||||||
|
'''
|
||||||
|
SETTINGS = {
|
||||||
|
"editor": "none",
|
||||||
|
"publish dir": False,
|
||||||
|
"publishing": False,
|
||||||
|
"gopher": False,
|
||||||
|
}
|
||||||
|
|
||||||
try:
|
try:
|
||||||
setup()
|
setup()
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
print("\n\nsorry, trying again.\n\n")
|
print("\n\nsorry, trying again.\n\n")
|
||||||
setup()
|
setup()
|
||||||
|
'''
|
||||||
|
|
||||||
def setup():
|
def setup():
|
||||||
'''
|
'''
|
||||||
|
@ -400,14 +437,6 @@ def setup():
|
||||||
except KeyboardInterrupt:
|
except KeyboardInterrupt:
|
||||||
redraw(EJECT)
|
redraw(EJECT)
|
||||||
return SETTINGS
|
return SETTINGS
|
||||||
"""
|
|
||||||
print("\n\ttext editor:\t" +SETTINGS.get("editor"))
|
|
||||||
if core.publishing():
|
|
||||||
print("\tpublish dir:\t" +os.path.join(config.PUBLIC, str(SETTINGS.get("publish dir"))))
|
|
||||||
print("\tpublishing:\t"+str(SETTINGS.get("publishing")))
|
|
||||||
print("\tgopher:\t"+str(SETTINGS.get('gopher')))
|
|
||||||
print("")
|
|
||||||
"""
|
|
||||||
|
|
||||||
if choice in QUITS:
|
if choice in QUITS:
|
||||||
redraw()
|
redraw()
|
||||||
|
@ -416,7 +445,7 @@ def setup():
|
||||||
# editor selection
|
# editor selection
|
||||||
if settingList[int(choice)] == "editor":
|
if settingList[int(choice)] == "editor":
|
||||||
SETTINGS.update({"editor": select_editor()})
|
SETTINGS.update({"editor": select_editor()})
|
||||||
redraw("text editor set to: "+SETTINGS["editor"])
|
redraw("text editor set to: {editor}".format(editor=SETTINGS["editor"]))
|
||||||
save_settings()
|
save_settings()
|
||||||
return setup()
|
return setup()
|
||||||
|
|
||||||
|
@ -424,32 +453,35 @@ def setup():
|
||||||
elif settingList[int(choice)] == "publishing":
|
elif settingList[int(choice)] == "publishing":
|
||||||
SETTINGS.update({"publishing":select_publishing()})
|
SETTINGS.update({"publishing":select_publishing()})
|
||||||
core.reload_ttbprc(SETTINGS)
|
core.reload_ttbprc(SETTINGS)
|
||||||
#update_publishing()
|
update_publishing()
|
||||||
#print("blog publishing: "+str(core.publishing()))
|
redraw("publishing set to {publishing}".format(publishing=SETTINGS.get("publishing")))
|
||||||
redraw("publishing set to "+str(SETTINGS.get("publishing")))
|
|
||||||
save_settings()
|
save_settings()
|
||||||
return setup()
|
return setup()
|
||||||
|
|
||||||
# publish dir selection
|
# publish dir selection
|
||||||
elif settingList[int(choice)] == "publish dir":
|
elif settingList[int(choice)] == "publish dir":
|
||||||
update_publishing()
|
publish_dir = select_publish_dir()
|
||||||
redraw("publishing your entries to "+config.LIVE+config.USER+"/"+str(SETTINGS.get("publish dir"))+"/index.html")
|
SETTINGS.update({"publish dir": publish_dir})
|
||||||
|
#update_publishing()
|
||||||
|
|
||||||
|
if publish_dir is None:
|
||||||
|
redraw("sorry, i can't set a publish directory for you if you don't have html publishing enabled. please enable publishing to continue.")
|
||||||
|
else:
|
||||||
|
redraw("publishing your entries to {url}/index.html".format(
|
||||||
|
url="/".join([config.LIVE+config.USER,
|
||||||
|
str(SETTINGS.get("publish dir"))])))
|
||||||
save_settings()
|
save_settings()
|
||||||
return setup()
|
return setup()
|
||||||
|
|
||||||
# gopher opt-in
|
# gopher opt-in
|
||||||
elif settingList[int(choice)] == "gopher":
|
elif settingList[int(choice)] == "gopher":
|
||||||
SETTINGS.update({'gopher': gopher.select_gopher()})
|
SETTINGS.update({'gopher': gopher.select_gopher()})
|
||||||
#redraw('opting into gopher: ' + str(SETTINGS['gopher']))
|
redraw('gopher publishing set to: {gopher}'.format(gopher=SETTINGS['gopher']))
|
||||||
# TODO for now i'm hardcoding where people's gopher stuff is generated. if
|
update_gopher()
|
||||||
# there is demand for this to be configurable we can expose that.
|
|
||||||
if SETTINGS.get("gopher"):
|
|
||||||
gopher.setup_gopher('feels')
|
|
||||||
redraw("gopher publishing set to "+str(SETTINGS.get("gopher")))
|
|
||||||
save_settings()
|
save_settings()
|
||||||
return setup()
|
return setup()
|
||||||
|
|
||||||
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, {friend}! hit <enter> to continue.\n\n".format(friend=chatter.say("friend")))
|
||||||
redraw()
|
redraw()
|
||||||
|
|
||||||
return SETTINGS
|
return SETTINGS
|
||||||
|
@ -507,7 +539,9 @@ def main_menu():
|
||||||
view_feels(config.USER)
|
view_feels(config.USER)
|
||||||
elif choice == '2':
|
elif choice == '2':
|
||||||
users = core.find_ttbps()
|
users = core.find_ttbps()
|
||||||
prompt = "the following "+p.no("user", len(users))+" "+p.plural("is", len(users))+" recording feels on ttbp:"
|
prompt = "the following {usercount} {are} recording feels on ttbp:".format(
|
||||||
|
usercount=p.no("user", len(users)),
|
||||||
|
are=p.plural("is", len(users)))
|
||||||
redraw(prompt)
|
redraw(prompt)
|
||||||
view_neighbors(users, prompt)
|
view_neighbors(users, prompt)
|
||||||
elif choice == '3':
|
elif choice == '3':
|
||||||
|
@ -549,11 +583,11 @@ def feedback_menu():
|
||||||
if choice in ['0', '1', '2', '3']:
|
if choice in ['0', '1', '2', '3']:
|
||||||
cat = SUBJECTS[int(choice)]
|
cat = SUBJECTS[int(choice)]
|
||||||
entered = raw_input("""
|
entered = raw_input("""
|
||||||
composing a """+cat+""" to ~endorphant.
|
composing a {mail_category} to ~endorphant.
|
||||||
|
|
||||||
press <enter> to open an external text editor. mail will be sent once you save and quit.
|
press <enter> to open an external text editor. mail will be sent once you save and quit.
|
||||||
|
|
||||||
""")
|
""".format(mail_category=cat))
|
||||||
redraw(send_feedback(entered, cat))
|
redraw(send_feedback(entered, cat))
|
||||||
return
|
return
|
||||||
else:
|
else:
|
||||||
|
@ -633,7 +667,8 @@ def view_neighbors(users, prompt):
|
||||||
if len(user) < 7:
|
if len(user) < 7:
|
||||||
userpad = "\t"
|
userpad = "\t"
|
||||||
|
|
||||||
userList.append(["\t~"+user+userpad+"\t("+ago+")"+urlpad+"\t"+url, last, user])
|
userList.append(["\t~{user}{userpad}\t({ago}){urlpad}\t{url}".format(user=user,
|
||||||
|
userpad=userpad, ago=ago, urlpad=urlpad, url=url), last, user])
|
||||||
|
|
||||||
# sort user by most recent entry for display
|
# sort user by most recent entry for display
|
||||||
userList.sort(key = lambda userdata:userdata[1])
|
userList.sort(key = lambda userdata:userdata[1])
|
||||||
|
@ -647,7 +682,7 @@ def view_neighbors(users, prompt):
|
||||||
choice = menu_handler(sortedUsers, "pick a townie to browse their feels, or type 'back' or 'q' to go home: ", 15, RAINBOW, prompt)
|
choice = menu_handler(sortedUsers, "pick a townie to browse their feels, or type 'back' or 'q' to go home: ", 15, RAINBOW, prompt)
|
||||||
|
|
||||||
if choice is not False:
|
if choice is not False:
|
||||||
redraw("~"+userIndex[choice]+"'s recorded feels, listed by date: \n")
|
redraw("~{user}'s recorded feels, listed by date: \n".format(user=userIndex[choice]))
|
||||||
view_feels(userIndex[choice])
|
view_feels(userIndex[choice])
|
||||||
view_neighbors(users, prompt)
|
view_neighbors(users, prompt)
|
||||||
else:
|
else:
|
||||||
|
@ -728,7 +763,7 @@ def write_entry(entry=os.path.join(config.USER_DATA, "test.txt")):
|
||||||
'''
|
'''
|
||||||
|
|
||||||
entered = raw_input("""
|
entered = raw_input("""
|
||||||
feels will be recorded for today, """+time.strftime("%d %B %Y")+""".
|
feels will be recorded for today, {today}.
|
||||||
|
|
||||||
if you've already started recording feels for this day, you
|
if you've already started recording feels for this day, you
|
||||||
can pick up where you left off.
|
can pick up where you left off.
|
||||||
|
@ -739,7 +774,7 @@ these.
|
||||||
press <enter> to begin recording your feels in your chosen text
|
press <enter> to begin recording your feels in your chosen text
|
||||||
editor.
|
editor.
|
||||||
|
|
||||||
""")
|
""".format(today=time.strftime("%d %B %Y")))
|
||||||
|
|
||||||
if entered:
|
if entered:
|
||||||
entryFile = open(entry, "a")
|
entryFile = open(entry, "a")
|
||||||
|
@ -752,7 +787,10 @@ editor.
|
||||||
if core.publishing():
|
if core.publishing():
|
||||||
core.load_files()
|
core.load_files()
|
||||||
core.write("index.html")
|
core.write("index.html")
|
||||||
left = "posted to "+config.LIVE+config.USER+"/"+str(SETTINGS.get("publish dir"))+"/index.html\n\n>"
|
left = "posted to {url}/index.html\n\n>".format(
|
||||||
|
url="/".join(
|
||||||
|
[config.LIVE+config.USER,
|
||||||
|
str(SETTINGS.get("publish dir"))]))
|
||||||
|
|
||||||
if SETTINGS.get('gopher'):
|
if SETTINGS.get('gopher'):
|
||||||
gopher.publish_gopher('feels', core.get_files())
|
gopher.publish_gopher('feels', core.get_files())
|
||||||
|
@ -810,16 +848,12 @@ def list_entries(metas, entries, prompt):
|
||||||
displays a list of entries for reading selection
|
displays a list of entries for reading selection
|
||||||
'''
|
'''
|
||||||
|
|
||||||
'''
|
|
||||||
util.print_menu(entries, RAINBOW)
|
|
||||||
choice = util.list_select(entries, "pick an entry from the list, or type 'back' or 'q' to go back: ")
|
|
||||||
'''
|
|
||||||
|
|
||||||
choice = menu_handler(entries, "pick an entry from the list, or type 'q' to go back: ", 10, RAINBOW, prompt)
|
choice = menu_handler(entries, "pick an entry from the list, or type 'q' to go back: ", 10, RAINBOW, prompt)
|
||||||
|
|
||||||
if choice is not False:
|
if choice is not False:
|
||||||
|
|
||||||
redraw("now reading ~"+metas[choice][5]+"'s feels on "+metas[choice][4]+"\n> press <q> to return to feels list.\n\n")
|
redraw("now reading ~{user}'s feels on {date}\n> press <q> to return to feels list.\n\n".format(user=metas[choice][5],
|
||||||
|
date=metas[choice][4]))
|
||||||
|
|
||||||
show_entry(metas[choice][0])
|
show_entry(metas[choice][0])
|
||||||
redraw(prompt)
|
redraw(prompt)
|
||||||
|
@ -851,7 +885,7 @@ def view_feed():
|
||||||
filenames = os.listdir(entryDir)
|
filenames = os.listdir(entryDir)
|
||||||
|
|
||||||
for entry in filenames:
|
for entry in filenames:
|
||||||
## hardcoded bs
|
## hardcoded display cutoff at 30 days
|
||||||
if core.valid(entry):
|
if core.valid(entry):
|
||||||
year = int(entry[0:4])
|
year = int(entry[0:4])
|
||||||
month = int(entry[4:6])
|
month = int(entry[4:6])
|
||||||
|
@ -860,7 +894,6 @@ def view_feed():
|
||||||
displayCutoff = datetime.date.today() - datetime.timedelta(days=30)
|
displayCutoff = datetime.date.today() - datetime.timedelta(days=30)
|
||||||
|
|
||||||
if datecheck > displayCutoff:
|
if datecheck > displayCutoff:
|
||||||
#if re.search("2017", entry):
|
|
||||||
feedList.append(os.path.join(entryDir, entry))
|
feedList.append(os.path.join(entryDir, entry))
|
||||||
|
|
||||||
metas = core.meta(feedList)
|
metas = core.meta(feedList)
|
||||||
|
@ -873,7 +906,9 @@ def view_feed():
|
||||||
if len(entry[5]) < 8:
|
if len(entry[5]) < 8:
|
||||||
pad = "\t"
|
pad = "\t"
|
||||||
|
|
||||||
entries.append("~"+entry[5]+pad+"\ton "+entry[3]+" ("+p.no("word", entry[2])+") ")
|
entries.append("~{user}{pad}\ton {date} ({wordcount})".format(
|
||||||
|
user=entry[5], pad=pad, date=entry[3],
|
||||||
|
wordcount=p.no("word", entry[2])))
|
||||||
|
|
||||||
list_entries(metas, entries, "most recent global entries:")
|
list_entries(metas, entries, "most recent global entries:")
|
||||||
|
|
||||||
|
@ -887,7 +922,7 @@ def graffiti_handler():
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if os.path.isfile(config.WALL_LOCK):
|
if os.path.isfile(config.WALL_LOCK):
|
||||||
redraw("sorry, "+chatter.say("friend")+", but someone's there right now. try again in a few!")
|
redraw("sorry, {friend}, but someone's there right now. try again in a few!".format(friend=chatter.say("friend")))
|
||||||
else:
|
else:
|
||||||
subprocess.call(["touch", config.WALL_LOCK])
|
subprocess.call(["touch", config.WALL_LOCK])
|
||||||
redraw()
|
redraw()
|
||||||
|
@ -916,7 +951,7 @@ def select_editor():
|
||||||
setup helper for editor selection
|
setup helper for editor selection
|
||||||
'''
|
'''
|
||||||
|
|
||||||
print("")
|
print("\nTEXT EDITOR SELECTION")
|
||||||
print("your current editor is: "+SETTINGS.get("editor"))
|
print("your current editor is: "+SETTINGS.get("editor"))
|
||||||
util.print_menu(EDITORS, RAINBOW)
|
util.print_menu(EDITORS, RAINBOW)
|
||||||
choice = util.list_select(EDITORS, "pick your favorite text editor, or type 'q' to go back: ")
|
choice = util.list_select(EDITORS, "pick your favorite text editor, or type 'q' to go back: ")
|
||||||
|
@ -931,9 +966,14 @@ def select_publish_dir():
|
||||||
setup helper for publish directory selection
|
setup helper for publish directory selection
|
||||||
'''
|
'''
|
||||||
|
|
||||||
|
if not core.publishing():
|
||||||
|
return None
|
||||||
|
|
||||||
current = SETTINGS.get("publish dir")
|
current = SETTINGS.get("publish dir")
|
||||||
republish = False
|
republish = False
|
||||||
|
|
||||||
|
print("\nUPDATING HTML PATH")
|
||||||
|
|
||||||
if current:
|
if current:
|
||||||
print("\ncurrent publish dir:\t"+os.path.join(config.PUBLIC, SETTINGS["publish dir"]))
|
print("\ncurrent publish dir:\t"+os.path.join(config.PUBLIC, SETTINGS["publish dir"]))
|
||||||
republish = True
|
republish = True
|
||||||
|
@ -966,6 +1006,9 @@ def select_publishing():
|
||||||
'''
|
'''
|
||||||
|
|
||||||
publish = util.input_yn("""\
|
publish = util.input_yn("""\
|
||||||
|
|
||||||
|
SETTING UP PUBLISHING
|
||||||
|
|
||||||
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
|
||||||
|
@ -1035,6 +1078,16 @@ def make_publish_dir(dir):
|
||||||
|
|
||||||
print("\n\tpublishing to "+config.LIVE+config.USER+"/"+SETTINGS.get("publish dir")+"/\n\n")
|
print("\n\tpublishing to "+config.LIVE+config.USER+"/"+SETTINGS.get("publish dir")+"/\n\n")
|
||||||
|
|
||||||
|
def update_gopher():
|
||||||
|
'''
|
||||||
|
helper for toggling gopher settings
|
||||||
|
'''
|
||||||
|
# TODO for now i'm hardcoding where people's gopher stuff is generated. if
|
||||||
|
# there is demand for this to be configurable we can expose that.
|
||||||
|
if SETTINGS.get("gopher"):
|
||||||
|
gopher.setup_gopher('feels')
|
||||||
|
redraw("gopher publishing set to {gopher}".format(gopher=SETTINGS.get("gopher")))
|
||||||
|
|
||||||
##### PATCHING UTILITIES
|
##### PATCHING UTILITIES
|
||||||
|
|
||||||
def build_mismatch():
|
def build_mismatch():
|
||||||
|
@ -1052,6 +1105,7 @@ def build_mismatch():
|
||||||
|
|
||||||
return ver
|
return ver
|
||||||
|
|
||||||
|
"""
|
||||||
def switch_build(ver):
|
def switch_build(ver):
|
||||||
'''
|
'''
|
||||||
switches user between beta and stable builds
|
switches user between beta and stable builds
|
||||||
|
@ -1074,6 +1128,7 @@ def switch_build(ver):
|
||||||
open(versionFile, "w").write(ver)
|
open(versionFile, "w").write(ver)
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
#print("\nall good!\n")
|
#print("\nall good!\n")
|
||||||
|
"""
|
||||||
|
|
||||||
def updated():
|
def updated():
|
||||||
'''
|
'''
|
||||||
|
@ -1093,7 +1148,8 @@ def updated():
|
||||||
|
|
||||||
def update_version():
|
def update_version():
|
||||||
'''
|
'''
|
||||||
updates user to current version
|
updates user to current version, printing relevant release notes and
|
||||||
|
stepping through new features.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
global SETTINGS
|
global SETTINGS
|
||||||
|
@ -1174,14 +1230,12 @@ def update_version():
|
||||||
else:
|
else:
|
||||||
print("okay, passing on gopher for now. this option is available in settings if you change\nyour mind!")
|
print("okay, passing on gopher for now. this option is available in settings if you change\nyour mind!")
|
||||||
|
|
||||||
# increment user versionfile
|
|
||||||
open(versionFile, "w").write(__version__)
|
|
||||||
print("""
|
print("""
|
||||||
you're all good to go, """+chatter.say("friend")+"""! please contact ~endorphant if
|
you're all good to go, """+chatter.say("friend")+"""! please contact ~endorphant if
|
||||||
somehing strange happened to you during this update.
|
something strange happened to you during this update.
|
||||||
""")
|
""")
|
||||||
|
|
||||||
'''
|
''' LEGACY UPDATE MESSAGES HERE
|
||||||
# TODO these conditionals will need to change if we increment the Y level
|
# TODO these conditionals will need to change if we increment the Y level
|
||||||
# to 10.
|
# to 10.
|
||||||
|
|
||||||
|
@ -1223,7 +1277,7 @@ version 0.9.3 features:
|
||||||
#if userVersion[0:5] < "0.10.1":
|
#if userVersion[0:5] < "0.10.1":
|
||||||
# todo: write a better updating function
|
# todo: write a better updating function
|
||||||
'''
|
'''
|
||||||
if 1:
|
if int(userVersion.split(".")[1]) < 10:
|
||||||
# version 0.10.1 patch notes
|
# version 0.10.1 patch notes
|
||||||
print("""
|
print("""
|
||||||
|
|
||||||
|
@ -1234,10 +1288,30 @@ version 0.9.3 features:
|
||||||
* if you don't know what gopher is, it's fine to opt-out; ask around on
|
* if you don't know what gopher is, it's fine to opt-out; ask around on
|
||||||
irc if you'd like to learn more!
|
irc if you'd like to learn more!
|
||||||
* the settings menu has been reworked to be less clunky
|
* the settings menu has been reworked to be less clunky
|
||||||
""".lstrip())
|
""")
|
||||||
|
|
||||||
|
if int(userVersion.split(".")[2]) < 2:
|
||||||
|
# version 0.10.2 patch notes
|
||||||
|
print("""
|
||||||
|
|
||||||
|
~[version 0.10.2 update]~
|
||||||
|
|
||||||
|
* some errors in selecting and validating settings and creating publishing
|
||||||
|
directories have been corrected
|
||||||
|
* please send mail to ~endorphant or ask for help on IRC if you're still
|
||||||
|
having issues with getting your settings sorted out!
|
||||||
|
|
||||||
|
general PSA:
|
||||||
|
* join #ttbp on the local irc network for help and discussion about the
|
||||||
|
feels engine!
|
||||||
|
* ~login created centralfeels, which is an opt-in collection of
|
||||||
|
html-published feels; create a blank file called '.centralfeels' in
|
||||||
|
your home directory if you'd like to be included!
|
||||||
|
""")
|
||||||
|
|
||||||
|
open(versionFile, "w").write(__version__)
|
||||||
|
|
||||||
#####
|
#####
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
start()
|
sys.exit(main())
|
||||||
#print("down for maintenance, brb")
|
|
||||||
|
|
Loading…
Reference in New Issue