forked from endorphant/ttbp
		
	incrementing to v 0.8.6
adding a warning in publish directory selection about overwriting old files.
This commit is contained in:
		
							parent
							
								
									d94f3d2830
								
							
						
					
					
						commit
						ed071ebb67
					
				
							
								
								
									
										12
									
								
								bin/_ttbp.py
									
									
									
									
									
								
							
							
						
						
									
										12
									
								
								bin/_ttbp.py
									
									
									
									
									
								
							| @ -625,7 +625,15 @@ def select_publish_dir(): | |||||||
| 
 | 
 | ||||||
|     publishDir = os.path.join(PUBLIC, choice) |     publishDir = os.path.join(PUBLIC, choice) | ||||||
|     while os.path.exists(publishDir): |     while os.path.exists(publishDir): | ||||||
|         second = raw_input("\n"+publishDir+" already exists!\n\nif you're sure you want to use it, hit <enter> to confirm. otherwise, pick another location: ") |         second = raw_input("\n"+publishDir+"""\ | ||||||
|  |  already exists!  | ||||||
|  |   | ||||||
|  | setting this as your publishing directory means this program may | ||||||
|  | delete or overwrite file there! | ||||||
|  |   | ||||||
|  | if you're sure you want to use it, hit <enter> to confirm. | ||||||
|  | otherwise, pick another location: """)  | ||||||
|  |          | ||||||
|         if second == "": |         if second == "": | ||||||
|             break |             break | ||||||
|         choice = second |         choice = second | ||||||
| @ -673,7 +681,7 @@ def update_publishing(): | |||||||
|         newDir = select_publish_dir() |         newDir = select_publish_dir() | ||||||
|         SETTINGS.update({"publish dir": newDir}) |         SETTINGS.update({"publish dir": newDir}) | ||||||
|         if oldDir: |         if oldDir: | ||||||
|             subprocess.call(["rm", "-rf", os.path.join(PUBLIC, oldDir)]) |             subprocess.call(["rm", os.path.join(PUBLIC, oldDir)]) | ||||||
|         make_publish_dir(newDir) |         make_publish_dir(newDir) | ||||||
|         core.load_files() |         core.load_files() | ||||||
|         core.write("index.html") |         core.write("index.html") | ||||||
|  | |||||||
| @ -5,5 +5,5 @@ | |||||||
| |  |___ |___ |___ |    [__     |___ |\ | | __ | |\ | |___  | | |  |___ |___ |___ |    [__     |___ |\ | | __ | |\ | |___  | | ||||||
| |  |    |___ |___ |___ ___]    |___ | \| |__] | | \| |___  | | |  |    |___ |___ |___ ___]    |___ | \| |__] | | \| |___  | | ||||||
| |                                                          | | |                                                          | | ||||||
| |                               ver 0.8.5 (almost stable)  | | |                               ver 0.8.6 (almost stable)  | | ||||||
| |__________________________________________________________| | |__________________________________________________________| | ||||||
|  | |||||||
							
								
								
									
										381
									
								
								bin/ttbp.py
									
									
									
									
									
								
							
							
						
						
									
										381
									
								
								bin/ttbp.py
									
									
									
									
									
								
							| @ -19,10 +19,13 @@ 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") | ||||||
|  | VERSION = "0.8.6" | ||||||
|  | 
 | ||||||
| p = inflect.engine() | p = inflect.engine() | ||||||
| 
 | 
 | ||||||
| ## user globals | ## user globals | ||||||
| USER = os.path.basename(os.path.expanduser("~")) | USER = os.path.basename(os.path.expanduser("~")) | ||||||
|  | 
 | ||||||
| PATH = os.path.join("/home", USER, ".ttbp") | PATH = os.path.join("/home", USER, ".ttbp") | ||||||
| PUBLIC = os.path.join("/home", USER, "public_html") | PUBLIC = os.path.join("/home", USER, "public_html") | ||||||
| WWW = os.path.join(PATH, "www") | WWW = os.path.join(PATH, "www") | ||||||
| @ -58,53 +61,59 @@ def redraw(leftover=""): | |||||||
|         print("> "+leftover+"\n") |         print("> "+leftover+"\n") | ||||||
| 
 | 
 | ||||||
| def start(): | def start(): | ||||||
|   redraw() |     redraw() | ||||||
|   #print(chatter.say("greet")+", "+chatter.say("friend")) |     #print(chatter.say("greet")+", "+chatter.say("friend")) | ||||||
|   #print("(remember, you can always press ctrl-c to come home)\n") |     #print("(remember, you can always press ctrl-c to come home)\n") | ||||||
|   print(""" |     print(""" | ||||||
| if you don't want to be here at any point, press <ctrl-d> and it'll all go away. | if you don't want to be here at any point, press <ctrl-d> and it'll all go away. | ||||||
| just keep in mind that you might lose anything you've started here.\ | just keep in mind that you might lose anything you've started here.\ | ||||||
| """) | """) | ||||||
| 
 | 
 | ||||||
|   try: |  | ||||||
|     print(check_init()) |  | ||||||
|   except EOFError: |  | ||||||
|       print(stop()) |  | ||||||
|       return |  | ||||||
| 
 |  | ||||||
|   redraw() |  | ||||||
| 
 |  | ||||||
|   while 1: |  | ||||||
|     try: |     try: | ||||||
|         print(main_menu()) |         print(check_init()) | ||||||
|     except EOFError: |     except EOFError: | ||||||
|         print(stop()) |         print(stop()) | ||||||
|         break |         return | ||||||
|     except KeyboardInterrupt: | 
 | ||||||
|         redraw(EJECT) |     ## | ||||||
|     else: |     redraw() | ||||||
|         break | 
 | ||||||
|  |     while 1: | ||||||
|  |         try: | ||||||
|  |             print(main_menu()) | ||||||
|  |         except EOFError: | ||||||
|  |             print(stop()) | ||||||
|  |             break | ||||||
|  |         except KeyboardInterrupt: | ||||||
|  |             redraw(EJECT) | ||||||
|  |         else: | ||||||
|  |             break | ||||||
| 
 | 
 | ||||||
| def stop(): | def stop(): | ||||||
|   return "\n\n\t"+chatter.say("bye")+"\n\n" |     return "\n\n\t"+chatter.say("bye")+"\n\n" | ||||||
| 
 | 
 | ||||||
| def check_init(): | def check_init(): | ||||||
|   global SETTINGS |     global SETTINGS | ||||||
|   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")+", "+USER+".") |         print(chatter.say("greet")+", "+USER+".\n") | ||||||
|       while not os.path.isfile(TTBPRC): |         while not os.path.isfile(TTBPRC): | ||||||
|         setup_handler() |             setup_handler() | ||||||
|       try: |         try: | ||||||
|         SETTINGS = json.load(open(TTBPRC)) |             SETTINGS = json.load(open(TTBPRC)) | ||||||
|       except ValueError: |         except ValueError: | ||||||
|         setup_handler() |             setup_handler() | ||||||
| 
 | 
 | ||||||
|       raw_input("\n\npress <enter> to explore your feels.\n\n") |         ## PATCH CHECK HERE | ||||||
|       core.load() |         if not updated(): | ||||||
|       return "" |             print(update_version()) | ||||||
|   else: | 
 | ||||||
|     return init() |         raw_input("press <enter> to explore your feels.\n\n") | ||||||
|  |         core.load() | ||||||
|  | 
 | ||||||
|  |         return "" | ||||||
|  |     else: | ||||||
|  |         return init() | ||||||
| 
 | 
 | ||||||
| def init(): | def init(): | ||||||
|     try: |     try: | ||||||
| @ -131,31 +140,15 @@ press <enter> to begin, or <ctrl-c> to get out of here. | |||||||
|     headerfile.close() |     headerfile.close() | ||||||
| 
 | 
 | ||||||
|     subprocess.call(["cp", os.path.join(SOURCE, "config", "defaults", "footer.txt"), CONFIG]) |     subprocess.call(["cp", os.path.join(SOURCE, "config", "defaults", "footer.txt"), CONFIG]) | ||||||
|  |     subprocess.call(["cp", os.path.join(SOURCE, "config", "defaults", "style.css"), CONFIG]) | ||||||
| 
 | 
 | ||||||
|     setup() |     setup() | ||||||
|     subprocess.call(["cp", os.path.join(SOURCE, "config", "defaults", "style.css"), WWW]) |  | ||||||
|     core.load() |     core.load() | ||||||
| 
 | 
 | ||||||
|     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 "" | ||||||
| 
 | 
 | ||||||
| def gen_header(): | def gen_header(): | ||||||
|     #header = [] |  | ||||||
| 
 |  | ||||||
|     #header.append("<!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 3.2//EN\">") |  | ||||||
|     #header.append("\n<html>") |  | ||||||
|     #header.append("\n\t<head>") |  | ||||||
|     #header.append("\n\t\t<title>~"+USER+" on TTBP</title>") |  | ||||||
|     #header.append("\n\t\t<link rel=\"stylesheet\" href=\"style.css\" />") |  | ||||||
|     #header.append("\n\t</head>") |  | ||||||
|     #header.append("\n\t<body>") |  | ||||||
|     #header.append("\n\t\t<div id=\"meta\">") |  | ||||||
|     #header.append("\n\t\t\t<h1><a href=\"index.html#\">~"+USER+"</a>@<a href=\"/~endorphant/ttbp\">TTBP</a></h1>") |  | ||||||
|     #header.append("\n\t\t</div>\n") |  | ||||||
|     #header.append("\n\t\t<!---put your custom html here-->\n\n\n\n") |  | ||||||
|     #header.append("\n\t\t<!---don't put anything after this line-->\n") |  | ||||||
|     #header.append("\n\t\t<div id=\"tlogs\">\n") |  | ||||||
| 
 |  | ||||||
|     header =""" |     header =""" | ||||||
| <!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 3.2//EN\"> | <!DOCTYPE html PUBLIC \"-//W3C//DTD HTML 3.2//EN\"> | ||||||
| <html> | <html> | ||||||
| @ -167,7 +160,7 @@ def gen_header(): | |||||||
|         <div id=\"meta\"> |         <div id=\"meta\"> | ||||||
|             <h1><a href=\"index.html#\">~"""+USER+"""</a>@<a href=\"/~endorphant/ttbp\">TTBP</a></h1> |             <h1><a href=\"index.html#\">~"""+USER+"""</a>@<a href=\"/~endorphant/ttbp\">TTBP</a></h1> | ||||||
|         </div> |         </div> | ||||||
|      | 
 | ||||||
|         <!---put your custom html here--> |         <!---put your custom html here--> | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| @ -189,48 +182,23 @@ def setup(): | |||||||
|     global SETTINGS |     global SETTINGS | ||||||
| 
 | 
 | ||||||
|     # editor selection |     # editor selection | ||||||
|     print_menu(EDITORS) |     SETTINGS.update({"editor": select_editor()}) | ||||||
|     choice = raw_input("\npick your favorite text editor: ") |  | ||||||
|     while choice  not in ['0', '1', '2', '3', '4', '5']: |  | ||||||
|         choice = raw_input("\nplease pick a number from the list: ") |  | ||||||
| 
 |  | ||||||
|     SETTINGS["editor"] = EDITORS[int(choice)] |  | ||||||
|     redraw("text editor set to: "+SETTINGS["editor"]) |     redraw("text editor set to: "+SETTINGS["editor"]) | ||||||
| 
 | 
 | ||||||
|     # publish directory selection |     # publishing selection | ||||||
|     if SETTINGS["publish dir"]: |     SETTINGS.update({"publishing":select_publishing()}) | ||||||
|         print("\tcurrent publish dir:\t"+os.path.join(PUBLIC, SETTINGS["publish dir"])+"\n\n") |     update_publishing() | ||||||
|     choice = raw_input("\nwhere do you want your blog published? (leave blank to use default \"blog\") ") |     redraw("blog publishing: "+str(publishing())) | ||||||
|     if not choice: |  | ||||||
|         choice = "blog" |  | ||||||
| 
 |  | ||||||
|     publishing = os.path.join(PUBLIC, choice) |  | ||||||
|     while os.path.exists(publishing): |  | ||||||
|         second = raw_input("\n"+publishing+" already exists!\nif you're sure you want to use it, hit <enter> to confirm. otherwise, pick another location: ") |  | ||||||
|         if second == "": |  | ||||||
|             break |  | ||||||
|         choice = second |  | ||||||
|         publishing = os.path.join(PUBLIC, choice) |  | ||||||
| 
 |  | ||||||
|     SETTINGS["publish dir"] = choice |  | ||||||
| 
 |  | ||||||
|     # set up publish directory |  | ||||||
|     if not os.path.exists(publishing): |  | ||||||
|         subprocess.call(["mkdir", publishing]) |  | ||||||
|         subprocess.call(["touch", os.path.join(publishing, "index.html")]) |  | ||||||
|         index = open(os.path.join(publishing, "index.html"), "w") |  | ||||||
|         index.write("<h1>ttbp blog placeholder</h1>") |  | ||||||
|         index.close() |  | ||||||
|     if os.path.exists(WWW): |  | ||||||
|         subprocess.call(["rm", WWW]) |  | ||||||
|     subprocess.call(["ln", "-s", publishing, WWW]) |  | ||||||
|     print("\n\tpublishing to "+LIVE+USER+"/"+SETTINGS["publish dir"]+"/\n\n") |  | ||||||
| 
 | 
 | ||||||
|  |     if publishing(): | ||||||
|  |         print("publish directory: ~"+USER+"/public_html/"+SETTINGS.get("publish dir")) | ||||||
|     # save settings |     # save settings | ||||||
|     ttbprc = open(TTBPRC, "w") |     ttbprc = open(TTBPRC, "w") | ||||||
|     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() | ||||||
| 
 | 
 | ||||||
|  |     raw_input("\nyou're all good to go, "+chatter.say("friend")+"! hit <enter> to continue.\n\n") | ||||||
|  |     redraw() | ||||||
|     return SETTINGS |     return SETTINGS | ||||||
| 
 | 
 | ||||||
| ## menus | ## menus | ||||||
| @ -281,18 +249,18 @@ def main_menu(): | |||||||
|         redraw("now viewing most recent entries\n") |         redraw("now viewing most recent entries\n") | ||||||
|         view_feed() |         view_feed() | ||||||
|     elif choice == '4': |     elif choice == '4': | ||||||
|         pretty_settings = "\n\ttext editor:\t" +SETTINGS["editor"] |         pretty_settings = "\n\n\ttext editor:\t" +SETTINGS.get("editor") | ||||||
|         pretty_settings += "\n\tpublish dir:\t" +os.path.join(PUBLIC, SETTINGS["publish dir"]) |         if publishing(): | ||||||
|  |             pretty_settings += "\n\tpublish dir:\t" +os.path.join(PUBLIC, SETTINGS.get("publish dir")) | ||||||
|  |         pretty_settings += "\n\tpubishing:\t"+str(SETTINGS.get("publishing")) | ||||||
| 
 | 
 | ||||||
|         redraw("now changing your settings. press <ctrl-c> if you didn't mean to do this.\n\ncurrent settings "+pretty_settings+"\n") |         redraw("now changing your settings. press <ctrl-c> if you didn't mean to do this."+pretty_settings+"\n") | ||||||
|         try: |         try: | ||||||
|             setup() |             setup() | ||||||
|         except KeyboardInterrupt(): |         except KeyboardInterrupt(): | ||||||
|             redraw(EJECT) |             redraw(EJECT) | ||||||
|         raw_input("\nyou're all good to go, "+chatter.say("friend")+"! hit <enter> to continue.\n\n") |  | ||||||
|         redraw() |         redraw() | ||||||
|     elif choice == '5': |     elif choice == '5': | ||||||
|         redraw() |  | ||||||
|         feedback_menu() |         feedback_menu() | ||||||
|     elif choice == '6': |     elif choice == '6': | ||||||
|         redraw() |         redraw() | ||||||
| @ -334,7 +302,7 @@ def view_neighbors(users): | |||||||
| 
 | 
 | ||||||
|     for user in users: |     for user in users: | ||||||
|         userRC = json.load(open(os.path.join("/home", user, ".ttbp", "config", "ttbprc"))) |         userRC = json.load(open(os.path.join("/home", user, ".ttbp", "config", "ttbprc"))) | ||||||
|         url = LIVE+user+"/"+userRC["publish dir"] |         url = LIVE+user+"/"+userRC.get("publish dir") | ||||||
|         count = 0 |         count = 0 | ||||||
|         lastfile = "" |         lastfile = "" | ||||||
|         files = os.listdir(os.path.join("/home", user, ".ttbp", "entries")) |         files = os.listdir(os.path.join("/home", user, ".ttbp", "entries")) | ||||||
| @ -433,9 +401,15 @@ press <enter> to begin recording your feels. | |||||||
|         entryFile.write("\n"+entered+"\n") |         entryFile.write("\n"+entered+"\n") | ||||||
|         entryFile.close() |         entryFile.close() | ||||||
|     subprocess.call([SETTINGS["editor"], entry]) |     subprocess.call([SETTINGS["editor"], entry]) | ||||||
|     core.load_files() | 
 | ||||||
|     core.write("index.html") |     left = "" | ||||||
|     redraw("posted to "+LIVE+USER+"/"+SETTINGS["publish dir"]+"/index.html\n\nthanks for sharing your feels!") | 
 | ||||||
|  |     if publishing(): | ||||||
|  |         core.load_files() | ||||||
|  |         core.write("index.html") | ||||||
|  |         left = "posted to "+LIVE+USER+"/"+SETTINGS["publish dir"]+"/index.html" | ||||||
|  |     redraw(left + " thanks for sharing your feels!") | ||||||
|  | 
 | ||||||
|     return |     return | ||||||
| 
 | 
 | ||||||
| def send_feedback(entered, subject="none", mailbox=os.path.join(FEEDBACK, USER+"-"+time.strftime("%Y%m%d-%H%M")+".msg")): | def send_feedback(entered, subject="none", mailbox=os.path.join(FEEDBACK, USER+"-"+time.strftime("%Y%m%d-%H%M")+".msg")): | ||||||
| @ -538,8 +512,13 @@ def www_neighbors(users): | |||||||
|     userList = [] |     userList = [] | ||||||
| 
 | 
 | ||||||
|     for user in users: |     for user in users: | ||||||
|  |         if not publishing(user): | ||||||
|  |             continue | ||||||
|  | 
 | ||||||
|         userRC = json.load(open(os.path.join("/home", user, ".ttbp", "config", "ttbprc"))) |         userRC = json.load(open(os.path.join("/home", user, ".ttbp", "config", "ttbprc"))) | ||||||
|  | 
 | ||||||
|         url = LIVE+user+"/"+userRC["publish dir"] |         url = LIVE+user+"/"+userRC["publish dir"] | ||||||
|  | 
 | ||||||
|         lastfile = "" |         lastfile = "" | ||||||
|         files = os.listdir(os.path.join("/home", user, ".ttbp", "entries")) |         files = os.listdir(os.path.join("/home", user, ".ttbp", "entries")) | ||||||
|         files.sort() |         files.sort() | ||||||
| @ -547,15 +526,14 @@ def www_neighbors(users): | |||||||
|             if core.valid(filename): |             if core.valid(filename): | ||||||
|                 lastfile = os.path.join("/home", user, ".ttbp", "entries", filename) |                 lastfile = os.path.join("/home", user, ".ttbp", "entries", filename) | ||||||
| 
 | 
 | ||||||
|         ago = "never" |  | ||||||
|         if lastfile: |         if lastfile: | ||||||
|             last = os.path.getctime(lastfile) |             last = os.path.getctime(lastfile) | ||||||
|             since = time.time()-last |             timestamp = time.strftime("%Y-%m-%d at %H:%M", time.localtime(last)) | ||||||
|             ago = util.pretty_time(int(since)) + " ago" |  | ||||||
|         else: |         else: | ||||||
|  |             timestamp = "" | ||||||
|             last = 0 |             last = 0 | ||||||
| 
 | 
 | ||||||
|         userList.append(["<a href=\""+url+"\">~"+user+"</a> ("+ago+")", last]) |         userList.append(["<a href=\""+url+"\">~"+user+"</a> "+timestamp, last]) | ||||||
| 
 | 
 | ||||||
|     # sort user by most recent entry |     # sort user by most recent entry | ||||||
|     userList.sort(key = lambda userdata:userdata[1]) |     userList.sort(key = lambda userdata:userdata[1]) | ||||||
| @ -590,6 +568,209 @@ def list_select(options, prompt): | |||||||
| 
 | 
 | ||||||
|     return ans |     return ans | ||||||
| 
 | 
 | ||||||
|  | def input_yn(query): | ||||||
|  |     # returns boolean True or False | ||||||
|  | 
 | ||||||
|  |     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 wants their blog published online | ||||||
|  | 
 | ||||||
|  |     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(): | ||||||
|  |     # setup helper for editor selection | ||||||
|  | 
 | ||||||
|  |     print_menu(EDITORS) | ||||||
|  |     choice = raw_input("\npick your favorite text editor: ") | ||||||
|  |     while choice  not in ['0', '1', '2', '3', '4', '5']: | ||||||
|  |         choice = raw_input("\nplease pick a number from the list: ") | ||||||
|  | 
 | ||||||
|  |     return EDITORS[int(choice)] | ||||||
|  | 
 | ||||||
|  | def select_publish_dir(): | ||||||
|  |     # setup helper for publish directory selection | ||||||
|  | 
 | ||||||
|  |     current = SETTINGS.get("publish dir") | ||||||
|  |     republish = False | ||||||
|  | 
 | ||||||
|  |     if current: | ||||||
|  |         print("\ncurrent publish dir:\t"+os.path.join(PUBLIC, SETTINGS["publish dir"])) | ||||||
|  |         republish = True | ||||||
|  | 
 | ||||||
|  |     choice = raw_input("\nwhere do you want your blog published? (leave blank to use default \"blog\") ") | ||||||
|  |     if not choice: | ||||||
|  |         choice = "blog" | ||||||
|  | 
 | ||||||
|  |     publishDir = os.path.join(PUBLIC, choice) | ||||||
|  |     while os.path.exists(publishDir): | ||||||
|  |         second = raw_input("\n"+publishDir+"""\ | ||||||
|  |  already exists!  | ||||||
|  |   | ||||||
|  | setting this as your publishing directory means this program may | ||||||
|  | delete or overwrite file there! | ||||||
|  |   | ||||||
|  | if you're sure you want to use it, hit <enter> to confirm. | ||||||
|  | otherwise, pick another location: """)  | ||||||
|  |          | ||||||
|  |         if second == "": | ||||||
|  |             break | ||||||
|  |         choice = second | ||||||
|  |         publishDir = os.path.join(PUBLIC, choice) | ||||||
|  | 
 | ||||||
|  |     return choice | ||||||
|  | 
 | ||||||
|  | def select_publishing(): | ||||||
|  |     # setup helper for toggling publishing | ||||||
|  | 
 | ||||||
|  |     publish = input_yn("""\ | ||||||
|  | do you want to publish your feels online? | ||||||
|  | 
 | ||||||
|  | if yes, your feels will be published to a directory of your choice in | ||||||
|  | your public_html. i'll confirm the location of that directory in a | ||||||
|  | moment. | ||||||
|  | 
 | ||||||
|  | if not, your feels will only be readable from within the tilde.town | ||||||
|  | network. if you already have a publishing directory, i'll remove it for | ||||||
|  | you (don't worry, your written entries will still be saved!) | ||||||
|  | 
 | ||||||
|  | you can change this option any time. | ||||||
|  | 
 | ||||||
|  | please enter\ | ||||||
|  | """) | ||||||
|  | 
 | ||||||
|  |     return publish | ||||||
|  | 
 | ||||||
|  | def unpublish(): | ||||||
|  |     # remove user's published directory, if it exists | ||||||
|  | 
 | ||||||
|  |     dir = SETTINGS.get("publish dir") | ||||||
|  |     if dir: | ||||||
|  |         publishDir = os.path.join(PUBLIC, dir) | ||||||
|  |         subprocess.call(["rm", publishDir]) | ||||||
|  |         #subprocess.call(["rm", WWW]) | ||||||
|  | 
 | ||||||
|  | def update_publishing(): | ||||||
|  |     # handler to update publishing directory, or wipe it | ||||||
|  | 
 | ||||||
|  |     global SETTINGS | ||||||
|  | 
 | ||||||
|  |     if publishing(): | ||||||
|  |         oldDir = SETTINGS.get("publish dir") | ||||||
|  |         newDir = select_publish_dir() | ||||||
|  |         SETTINGS.update({"publish dir": newDir}) | ||||||
|  |         if oldDir: | ||||||
|  |             subprocess.call(["rm", os.path.join(PUBLIC, oldDir)]) | ||||||
|  |         make_publish_dir(newDir) | ||||||
|  |         core.load_files() | ||||||
|  |         core.write("index.html") | ||||||
|  |     else: | ||||||
|  |         unpublish() | ||||||
|  |         SETTINGS.update({"publish dir": None}) | ||||||
|  | 
 | ||||||
|  | def make_publish_dir(dir): | ||||||
|  |     # setup helper to create publishing directory | ||||||
|  | 
 | ||||||
|  |     if not os.path.exists(WWW): | ||||||
|  |         subprocess.call(["mkdir", WWW]) | ||||||
|  |         subprocess.call(["ln", "-s", os.path.join(CONFIG, "style.css"), os.path.join(WWW, "style.css")]) | ||||||
|  |         subprocess.call(["touch", os.path.join(WWW, "index.html")]) | ||||||
|  |         index = open(os.path.join(WWW, "index.html"), "w") | ||||||
|  |         index.write("<h1>ttbp blog placeholder</h1>") | ||||||
|  |         index.close() | ||||||
|  | 
 | ||||||
|  |     publishDir = os.path.join(PUBLIC, dir) | ||||||
|  |     if os.path.exists(publishDir): | ||||||
|  |         subprocess.call(["rm", publishDir]) | ||||||
|  | 
 | ||||||
|  |     subprocess.call(["ln", "-s", WWW, publishDir]) | ||||||
|  | 
 | ||||||
|  |     print("\n\tpublishing to "+LIVE+USER+"/"+SETTINGS.get("publish dir")+"/\n\n") | ||||||
|  | 
 | ||||||
|  | ##### PATCHES | ||||||
|  | 
 | ||||||
|  | def updated(): | ||||||
|  |     # checks to see if current user is up to the same version as system | ||||||
|  | 
 | ||||||
|  |     versionFile = os.path.join(PATH, "version") | ||||||
|  |     if not os.path.exists(versionFile): | ||||||
|  |             return False | ||||||
|  | 
 | ||||||
|  |     ver = open(versionFile, "r").read() | ||||||
|  | 
 | ||||||
|  |     if ver == VERSION: | ||||||
|  |         return True | ||||||
|  | 
 | ||||||
|  |     return False | ||||||
|  | 
 | ||||||
|  | def update_version(): | ||||||
|  |     # updates user to current version | ||||||
|  | 
 | ||||||
|  |     global SETTINGS | ||||||
|  | 
 | ||||||
|  |     versionFile = os.path.join(PATH, "version") | ||||||
|  | 
 | ||||||
|  |     print("ttbp had some updates!") | ||||||
|  | 
 | ||||||
|  |     # from 0.8.5 to 0.8.6: | ||||||
|  |     if not os.path.isfile(versionFile): | ||||||
|  |         print("\ngive me a second to update you from version 0.8.5 to "+VERSION+"...\n") | ||||||
|  | 
 | ||||||
|  |         time.sleep(1) | ||||||
|  |         print("...") | ||||||
|  |         time.sleep(2) | ||||||
|  | 
 | ||||||
|  |         # change style.css location | ||||||
|  |         if os.path.isfile(os.path.join(WWW, "style.css")): | ||||||
|  |             subprocess.call(["mv", os.path.join(WWW, "style.css"), CONFIG]) | ||||||
|  | 
 | ||||||
|  |         # change www symlink | ||||||
|  |         if os.path.exists(WWW): | ||||||
|  |             subprocess.call(["rm", WWW]) | ||||||
|  |             subprocess.call(["mkdir", WWW]) | ||||||
|  | 
 | ||||||
|  |         subprocess.call(["ln", "-s", os.path.join(CONFIG, "style.css"), os.path.join(WWW, "style.css")]) | ||||||
|  | 
 | ||||||
|  |         publishDir = os.path.join(PUBLIC, SETTINGS.get("publish dir")) | ||||||
|  |         if os.path.exists(publishDir): | ||||||
|  |             subprocess.call(["rm", "-rf", publishDir]) | ||||||
|  |             subprocess.call(["ln", "-s", WWW, os.path.join(PUBLIC, SETTINGS.get("publish dir"))]) | ||||||
|  | 
 | ||||||
|  |         # repopulate html files | ||||||
|  |         core.load_files() | ||||||
|  |         core.write("index.html") | ||||||
|  | 
 | ||||||
|  |         # add publishing setting | ||||||
|  |         print("\nnew feature!\n") | ||||||
|  |         SETTINGS.update({"publishing":select_publishing()}) | ||||||
|  |         update_publishing() | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  |     # increment user versionfile | ||||||
|  |     open(versionFile, "w").write(VERSION) | ||||||
|  | 
 | ||||||
|  |     return "you're all good to go, "+chatter.say("friend")+"!\n" | ||||||
|  | 
 | ||||||
| ##### | ##### | ||||||
| 
 | 
 | ||||||
| start() | start() | ||||||
|  | #print("ttbp beta is out to lunch. bbl.") | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user