forked from endorphant/ttbp
		
	adding publish setting to patcher
patcher now asks user to set new publish option on load. publish and unpublish correctly links or unlinks file from user's public_html. also, ~tightened up the graphics a little~
This commit is contained in:
		
							parent
							
								
									2a406d7958
								
							
						
					
					
						commit
						d94f3d2830
					
				
							
								
								
									
										155
									
								
								bin/_ttbp.py
									
									
									
									
									
								
							
							
						
						
									
										155
									
								
								bin/_ttbp.py
									
									
									
									
									
								
							| @ -38,8 +38,8 @@ SETTINGS = { | ||||
|     } | ||||
| 
 | ||||
| ## ui globals | ||||
| BANNER = util.attach_rainbow()+open(os.path.join(SOURCE, "config", "banner.txt")).read()+util.attach_reset() | ||||
| SPACER = "\n\n\n" | ||||
| BANNER = util.attach_rainbow()+open(os.path.join(SOURCE, "config", "banner.txt")).read()+"~potentially volatile beta version~"+util.attach_reset() | ||||
| SPACER = "\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" | ||||
| QUITS = ['exit', 'quit', 'q', 'x'] | ||||
| @ -48,7 +48,7 @@ EJECT = "eject button fired! going home now." | ||||
| 
 | ||||
| ## ref | ||||
| 
 | ||||
| EDITORS = ["vim", "vi", "emacs", "pico", "nano"] | ||||
| EDITORS = ["vim", "vi", "emacs", "pico", "nano", "ed"] | ||||
| SUBJECTS = ["help request", "bug report", "feature suggestion", "general comment"] | ||||
| 
 | ||||
| ## | ||||
| @ -75,10 +75,6 @@ just keep in mind that you might lose anything you've started here.\ | ||||
|         print(stop()) | ||||
|         return | ||||
| 
 | ||||
|     ## PATCH CHECK HERE | ||||
|     if not updated(): | ||||
|         update_version() | ||||
| 
 | ||||
|     ## | ||||
|     redraw() | ||||
| 
 | ||||
| @ -97,22 +93,27 @@ def stop(): | ||||
|     return "\n\n\t"+chatter.say("bye")+"\n\n" | ||||
| 
 | ||||
| def check_init(): | ||||
|   global SETTINGS | ||||
|   print("\n\n") | ||||
|   if os.path.exists(os.path.join(os.path.expanduser("~"),".ttbp")): | ||||
|       print(chatter.say("greet")+", "+USER+".") | ||||
|       while not os.path.isfile(TTBPRC): | ||||
|         setup_handler() | ||||
|       try: | ||||
|         SETTINGS = json.load(open(TTBPRC)) | ||||
|       except ValueError: | ||||
|         setup_handler() | ||||
|     global SETTINGS | ||||
|     print("\n\n") | ||||
|     if os.path.exists(os.path.join(os.path.expanduser("~"),".ttbp")): | ||||
|         print(chatter.say("greet")+", "+USER+".\n") | ||||
|         while not os.path.isfile(TTBPRC): | ||||
|             setup_handler() | ||||
|         try: | ||||
|             SETTINGS = json.load(open(TTBPRC)) | ||||
|         except ValueError: | ||||
|             setup_handler() | ||||
| 
 | ||||
|       raw_input("\n\npress <enter> to explore your feels.\n\n") | ||||
|       core.load() | ||||
|       return "" | ||||
|   else: | ||||
|     return init() | ||||
|         ## PATCH CHECK HERE | ||||
|         if not updated(): | ||||
|             print(update_version()) | ||||
| 
 | ||||
|         raw_input("press <enter> to explore your feels.\n\n") | ||||
|         core.load() | ||||
| 
 | ||||
|         return "" | ||||
|     else: | ||||
|         return init() | ||||
| 
 | ||||
| def init(): | ||||
|     try: | ||||
| @ -186,24 +187,18 @@ def setup(): | ||||
| 
 | ||||
|     # publishing selection | ||||
|     SETTINGS.update({"publishing":select_publishing()}) | ||||
|     update_publishing() | ||||
|     redraw("blog publishing: "+str(publishing())) | ||||
| 
 | ||||
|     if publishing(): | ||||
|         oldDir = SETTINGS.get("publish dir") | ||||
|         newDir = select_publish_dir() | ||||
|         SETTINGS.update({"publish dir": newDir}) | ||||
|         subprocess.call(["rm", "-rf", os.path.join(PUBLIC, oldDir)]) | ||||
|         make_publish_dir(newDir) | ||||
|         core.load_files() | ||||
|         core.write("index.html") | ||||
|     else: | ||||
|         unpublish() | ||||
| 
 | ||||
|         print("publish directory: ~"+USER+"/public_html/"+SETTINGS.get("publish dir")) | ||||
|     # save settings | ||||
|     ttbprc = open(TTBPRC, "w") | ||||
|     ttbprc.write(json.dumps(SETTINGS, sort_keys=True, indent=2, separators=(',',':'))) | ||||
|     ttbprc.close() | ||||
| 
 | ||||
|     raw_input("\nyou're all good to go, "+chatter.say("friend")+"! hit <enter> to continue.\n\n") | ||||
|     redraw() | ||||
|     return SETTINGS | ||||
| 
 | ||||
| ## menus | ||||
| @ -246,29 +241,28 @@ def main_menu(): | ||||
|         write_entry(os.path.join(DATA, today+".txt")) | ||||
|         www_neighbors(find_ttbps()) | ||||
|     elif choice == '1': | ||||
|         redraw("here are your recorded feels, listed by date:\n\n") | ||||
|         redraw("here are your recorded feels, listed by date:\n") | ||||
|         view_own() | ||||
|     elif choice == '2': | ||||
|         users = find_ttbps() | ||||
|         redraw("the following "+p.no("user", len(users))+" "+p.plural("is", len(users))+" recording feels on ttbp:\n\n") | ||||
|         redraw("the following "+p.no("user", len(users))+" "+p.plural("is", len(users))+" recording feels on ttbp:\n") | ||||
|         view_neighbors(users) | ||||
|     elif choice == '3': | ||||
|         redraw("now viewing most recent entries\n\n") | ||||
|         redraw("now viewing most recent entries\n") | ||||
|         view_feed() | ||||
|     elif choice == '4': | ||||
|         pretty_settings = "\n\ttext editor:\t" +SETTINGS.get("editor") | ||||
|         pretty_settings += "\n\tpublish dir:\t" +os.path.join(PUBLIC, SETTINGS.get("publish dir")) | ||||
|         pretty_settings = "\n\n\ttext editor:\t" +SETTINGS.get("editor") | ||||
|         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: | ||||
|             setup() | ||||
|         except KeyboardInterrupt(): | ||||
|             redraw(EJECT) | ||||
|         raw_input("\nyou're all good to go, "+chatter.say("friend")+"! hit <enter> to continue.\n\n") | ||||
|         redraw() | ||||
|     elif choice == '5': | ||||
|         redraw() | ||||
|         feedback_menu() | ||||
|     elif choice == '6': | ||||
|         redraw() | ||||
| @ -371,6 +365,8 @@ def show_credits(): | ||||
| ttbp was written by ~endorphant in python. the codebase is | ||||
| publicly available on github at https://github.com/modgethanc/ttbp | ||||
| 
 | ||||
| for the full changelog, see ~endorphant/projects/ttbp/changelog.txt | ||||
| 
 | ||||
| if you have ideas for ttbp, you are welcome to fork the repo and | ||||
| work on it. i'm only a neophyte dev, so i apologize for any | ||||
| horrendously ugly coding habits i have. i'd love to hear about your | ||||
| @ -577,7 +573,10 @@ def list_select(options, prompt): | ||||
| def input_yn(query): | ||||
|     # returns boolean True or False | ||||
| 
 | ||||
|     ans = raw_input(query+" [y/n] ") | ||||
|     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: ") | ||||
| @ -605,7 +604,7 @@ def select_editor(): | ||||
| 
 | ||||
|     print_menu(EDITORS) | ||||
|     choice = raw_input("\npick your favorite text editor: ") | ||||
|     while choice  not in ['0', '1', '2', '3', '4']: | ||||
|     while choice  not in ['0', '1', '2', '3', '4', '5']: | ||||
|         choice = raw_input("\nplease pick a number from the list: ") | ||||
| 
 | ||||
|     return EDITORS[int(choice)] | ||||
| @ -617,7 +616,7 @@ def select_publish_dir(): | ||||
|     republish = False | ||||
| 
 | ||||
|     if current: | ||||
|         print("\tcurrent publish dir:\t"+os.path.join(PUBLIC, SETTINGS["publish dir"])+"\n\n") | ||||
|         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\") ") | ||||
| @ -626,7 +625,7 @@ def select_publish_dir(): | ||||
| 
 | ||||
|     publishDir = os.path.join(PUBLIC, choice) | ||||
|     while os.path.exists(publishDir): | ||||
|         second = raw_input("\n"+publishDir+" already exists!\nif you're sure you want to use it, hit <enter> to confirm. otherwise, pick another location: ") | ||||
|         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: ") | ||||
|         if second == "": | ||||
|             break | ||||
|         choice = second | ||||
| @ -640,9 +639,13 @@ def select_publishing(): | ||||
|     publish = input_yn("""\ | ||||
| do you want to publish your feels online? | ||||
| 
 | ||||
| if yes, i'll make a directory in your public_html where your blog posts | ||||
| will be published. if not, your posts will only be readable from | ||||
| within the tilde.town network. | ||||
| 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. | ||||
| 
 | ||||
| @ -654,13 +657,29 @@ please enter\ | ||||
| def unpublish(): | ||||
|     # remove user's published directory, if it exists | ||||
| 
 | ||||
|     publishDir = os.path.join(PUBLIC, SETTINGS.get("publish dir")) | ||||
|     dir = SETTINGS.get("publish dir") | ||||
|     if dir: | ||||
|         publishDir = os.path.join(PUBLIC, dir) | ||||
|         subprocess.call(["rm", publishDir]) | ||||
|         #subprocess.call(["rm", WWW]) | ||||
| 
 | ||||
|     if os.path.exists(publishDir): | ||||
|         subprocess.call(["rm", "-rf", publishDir]) | ||||
|         subprocess.call(["rm", WWW]) | ||||
| def update_publishing(): | ||||
|     # handler to update publishing directory, or wipe it | ||||
| 
 | ||||
|     return | ||||
|     global SETTINGS | ||||
| 
 | ||||
|     if publishing(): | ||||
|         oldDir = SETTINGS.get("publish dir") | ||||
|         newDir = select_publish_dir() | ||||
|         SETTINGS.update({"publish dir": newDir}) | ||||
|         if oldDir: | ||||
|             subprocess.call(["rm", "-rf", 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 | ||||
| @ -698,17 +717,24 @@ def updated(): | ||||
|     return False | ||||
| 
 | ||||
| def update_version(): | ||||
|     # updates current user to current version | ||||
|     # updates user to current version | ||||
| 
 | ||||
|     global SETTINGS | ||||
| 
 | ||||
|     versionFile = os.path.join(PATH, "version") | ||||
|     print(versionFile) | ||||
| 
 | ||||
|     print("ttbp had some updates!") | ||||
| 
 | ||||
|     # from 0.8.5 to 0.8.6: | ||||
|     if not os.path.isfile(versionFile):# and publishing(): | ||||
|         #print("hi let's fix this") | ||||
|     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.exists(os.path.join(WWW, "style.css")): | ||||
|         if os.path.isfile(os.path.join(WWW, "style.css")): | ||||
|             subprocess.call(["mv", os.path.join(WWW, "style.css"), CONFIG]) | ||||
| 
 | ||||
|         # change www symlink | ||||
| @ -719,9 +745,7 @@ def update_version(): | ||||
|         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")) | ||||
|         #print(publishDir) | ||||
|         if os.path.exists(publishDir): | ||||
|             #print("removing "+publishDir) | ||||
|             subprocess.call(["rm", "-rf", publishDir]) | ||||
|             subprocess.call(["ln", "-s", WWW, os.path.join(PUBLIC, SETTINGS.get("publish dir"))]) | ||||
| 
 | ||||
| @ -729,11 +753,18 @@ def update_version(): | ||||
|         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() | ||||
| print("ttbp beta is out to lunch. bbl.") | ||||
| start() | ||||
| #print("ttbp beta is out to lunch. bbl.") | ||||
|  | ||||
| @ -6,5 +6,4 @@ | ||||
| |  |    |___ |___ |___ ___]    |___ | \| |__] | | \| |___  | | ||||
| |                                                          | | ||||
| |                               ver 0.8.5 (almost stable)  | | ||||
| |                 ~endorphant/projects/ttbp/changelog.txt  | | ||||
| |__________________________________________________________| | ||||
|  | ||||
							
								
								
									
										15
									
								
								bin/ttbp.py
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								bin/ttbp.py
									
									
									
									
									
								
							| @ -36,7 +36,7 @@ SETTINGS = { | ||||
| 
 | ||||
| ## ui globals | ||||
| BANNER = util.attach_rainbow()+open(os.path.join(SOURCE, "config", "banner.txt")).read()+util.attach_reset() | ||||
| SPACER = "\n\n\n" | ||||
| SPACER = "\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" | ||||
| QUITS = ['exit', 'quit', 'q', 'x'] | ||||
| @ -45,7 +45,7 @@ EJECT = "eject button fired! going home now." | ||||
| 
 | ||||
| ## ref | ||||
| 
 | ||||
| EDITORS = ["vim", "vi", "emacs", "pico", "nano"] | ||||
| EDITORS = ["vim", "vi", "emacs", "pico", "nano", "ed"] | ||||
| SUBJECTS = ["help request", "bug report", "feature suggestion", "general comment"] | ||||
| 
 | ||||
| ## | ||||
| @ -53,7 +53,6 @@ SUBJECTS = ["help request", "bug report", "feature suggestion", "general comment | ||||
| def redraw(leftover=""): | ||||
|     os.system("clear") | ||||
|     print(BANNER) | ||||
|     print("DEV NOTE: want to see more color? try ~endorphant/bin/ttbp-beta and let me know what you think!") | ||||
|     print(SPACER) | ||||
|     if leftover: | ||||
|         print("> "+leftover+"\n") | ||||
| @ -192,7 +191,7 @@ def setup(): | ||||
|     # editor selection | ||||
|     print_menu(EDITORS) | ||||
|     choice = raw_input("\npick your favorite text editor: ") | ||||
|     while choice  not in ['0', '1', '2', '3', '4']: | ||||
|     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)] | ||||
| @ -272,14 +271,14 @@ def main_menu(): | ||||
|         write_entry(os.path.join(DATA, today+".txt")) | ||||
|         www_neighbors(find_ttbps()) | ||||
|     elif choice == '1': | ||||
|         redraw("here are your recorded feels, listed by date:\n\n") | ||||
|         redraw("here are your recorded feels, listed by date:\n") | ||||
|         view_own() | ||||
|     elif choice == '2': | ||||
|         users = find_ttbps() | ||||
|         redraw("the following "+p.no("user", len(users))+" "+p.plural("is", len(users))+" recording feels on ttbp:\n\n") | ||||
|         redraw("the following "+p.no("user", len(users))+" "+p.plural("is", len(users))+" recording feels on ttbp:\n") | ||||
|         view_neighbors(users) | ||||
|     elif choice == '3': | ||||
|         redraw("now viewing most recent entries\n\n") | ||||
|         redraw("now viewing most recent entries\n") | ||||
|         view_feed() | ||||
|     elif choice == '4': | ||||
|         pretty_settings = "\n\ttext editor:\t" +SETTINGS["editor"] | ||||
| @ -396,6 +395,8 @@ def show_credits(): | ||||
| ttbp was written by ~endorphant in python. the codebase is | ||||
| publicly available on github at https://github.com/modgethanc/ttbp | ||||
| 
 | ||||
| for the full changelog, see ~endorphant/projects/ttbp/changelog.txt | ||||
| 
 | ||||
| if you have ideas for ttbp, you are welcome to fork the repo and | ||||
| work on it. i'm only a neophyte dev, so i apologize for any | ||||
| horrendously ugly coding habits i have. i'd love to hear about your | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user