forked from endorphant/ttbp
consolidate variables in config module
parent
e910ce5518
commit
ab17642361
|
@ -0,0 +1,82 @@
|
||||||
|
from __future__ import absolute_import
|
||||||
|
import os
|
||||||
|
|
||||||
|
from . import util
|
||||||
|
|
||||||
|
## System config
|
||||||
|
|
||||||
|
# We refer to some package files (ie .css stuff), so we save a reference to the
|
||||||
|
# path.
|
||||||
|
INSTALL_PATH = dirname(sys.modules['ttbp'].__file__)
|
||||||
|
|
||||||
|
# We use this to store any persisted, global state.
|
||||||
|
VAR = '/var/global/ttbp'
|
||||||
|
VAR_WWW = os.path.join(VAR, 'www')
|
||||||
|
|
||||||
|
if not os.path.isdir('/var/global'):
|
||||||
|
raise Exception('bad system state: /var/global does not exist.')
|
||||||
|
|
||||||
|
if not os.path.isdir(VAR):
|
||||||
|
os.mkdir(VAR)
|
||||||
|
|
||||||
|
if not os.path.isdir(VAR_WWW):
|
||||||
|
os.mkdir(VAR_WWW)
|
||||||
|
|
||||||
|
LIVE = 'https://tilde.town/~'
|
||||||
|
FEEDBOX = "endorphant@tilde.town"
|
||||||
|
USERFILE = os.path.join(VAR, "users.txt")
|
||||||
|
GRAFF_DIR = os.path.join(VAR, "graffiti")
|
||||||
|
WALL = os.path.join(GRAFF_DIR, "wall.txt")
|
||||||
|
WALL_LOCK = os.path.join(GRAFF_DIR, ".lock")
|
||||||
|
|
||||||
|
## Defaults
|
||||||
|
|
||||||
|
DEFAULT_HEADER = '''
|
||||||
|
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 3.2//EN">
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<title>$USER on TTBP</title>
|
||||||
|
<link rel="stylesheet" href="style.css" />
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="meta">
|
||||||
|
<h1><a href="#">~$USER</a>@<a href="/~endorphant/ttbp">TTBP</a></h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="tlogs">
|
||||||
|
'''.ltrim()
|
||||||
|
|
||||||
|
DEFAULT_FOOTER = '''
|
||||||
|
</div>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
'''.ltrim()
|
||||||
|
|
||||||
|
with open(os.path.join(INSTALL_PATH, 'config', 'defaults', 'style.css')) as f:
|
||||||
|
DEFAULT_STYLE = f.read()
|
||||||
|
|
||||||
|
|
||||||
|
## User config
|
||||||
|
|
||||||
|
USER = os.path.basename(os.path.expanduser('~'))
|
||||||
|
USER_HOME = os.path.expanduser('~')
|
||||||
|
PATH = os.path.join(USER_HOME, '.ttbp')
|
||||||
|
PUBLIC = os.path.join(USER_HOME, 'public_html')
|
||||||
|
WWW = os.path.join(PATH, 'www')
|
||||||
|
USER_CONFIG = os.path.join(PATH, 'config')
|
||||||
|
TTBPRC = os.path.join(USER_CONFIG, 'ttbprc')
|
||||||
|
USER_DATA = os.path.join(PATH, 'entries')
|
||||||
|
NOPUB = os.path.join(USER_CONFIG, "nopub")
|
||||||
|
|
||||||
|
## UI
|
||||||
|
|
||||||
|
BANNER = '''
|
||||||
|
__________________________________________________________
|
||||||
|
| |
|
||||||
|
| the tilde.town |
|
||||||
|
| ____ ____ ____ _ ____ ____ _ _ ____ _ _ _ ____ |
|
||||||
|
| |___ |___ |___ | [__ |___ |\ | | __ | |\ | |___ |
|
||||||
|
| | |___ |___ |___ ___] |___ | \| |__] | | \| |___ |
|
||||||
|
| ver 0.10.0 (almost stable) |
|
||||||
|
|__________________________________________________________|
|
||||||
|
'''.ltrim()
|
|
@ -1,8 +0,0 @@
|
||||||
__________________________________________________________
|
|
||||||
| |
|
|
||||||
| the tilde.town |
|
|
||||||
| ____ ____ ____ _ ____ ____ _ _ ____ _ _ _ ____ |
|
|
||||||
| |___ |___ |___ | [__ |___ |\ | | __ | |\ | |___ |
|
|
||||||
| | |___ |___ |___ ___] |___ | \| |__] | | \| |___ |
|
|
||||||
| ver 0.9.2 (almost stable) |
|
|
||||||
|__________________________________________________________|
|
|
45
ttbp/core.py
45
ttbp/core.py
|
@ -39,19 +39,10 @@ import re
|
||||||
import mistune
|
import mistune
|
||||||
import json
|
import json
|
||||||
|
|
||||||
import chatter
|
from . import chatter
|
||||||
|
from . import config
|
||||||
|
|
||||||
SOURCE = os.path.join("/home", "endorphant", "projects", "ttbp", "bin")
|
FEED = os.path.join(config.VAR_WWW, "index.html")
|
||||||
USER = os.path.basename(os.path.expanduser("~"))
|
|
||||||
PATH = os.path.join("/home", USER, ".ttbp")
|
|
||||||
|
|
||||||
LIVE = "http://tilde.town/~"
|
|
||||||
WWW = os.path.join(PATH, "www")
|
|
||||||
CONFIG = os.path.join(PATH, "config")
|
|
||||||
DATA = os.path.join(PATH, "entries")
|
|
||||||
FEED = os.path.join(SOURCE, "www", "index.html")
|
|
||||||
DOCS = os.path.join(SOURCE, "www", "help.html")
|
|
||||||
NOPUB = os.path.join(CONFIG, "nopub")
|
|
||||||
SETTINGS = {}
|
SETTINGS = {}
|
||||||
|
|
||||||
HEADER = ""
|
HEADER = ""
|
||||||
|
@ -67,8 +58,8 @@ def load(ttbprc={}):
|
||||||
global FOOTER
|
global FOOTER
|
||||||
global SETTINGS
|
global SETTINGS
|
||||||
|
|
||||||
HEADER = open(os.path.join(CONFIG, "header.txt")).read()
|
HEADER = open(os.path.join(config.USER_CONFIG, "header.txt")).read()
|
||||||
FOOTER = open(os.path.join(CONFIG, "footer.txt")).read()
|
FOOTER = open(os.path.join(config.USER_CONFIG, "footer.txt")).read()
|
||||||
SETTINGS = ttbprc
|
SETTINGS = ttbprc
|
||||||
|
|
||||||
load_files()
|
load_files()
|
||||||
|
@ -94,13 +85,13 @@ def load_files():
|
||||||
|
|
||||||
FILES = []
|
FILES = []
|
||||||
|
|
||||||
for filename in os.listdir(DATA):
|
for filename in os.listdir(config.USER_DATA):
|
||||||
if nopub(filename):
|
if nopub(filename):
|
||||||
link = os.path.join(WWW, os.path.splitext(os.path.basename(filename))[0]+".html")
|
link = os.path.join(config.WWW, os.path.splitext(os.path.basename(filename))[0]+".html")
|
||||||
if os.path.exists(link):
|
if os.path.exists(link):
|
||||||
subprocess.call(["rm", link])
|
subprocess.call(["rm", link])
|
||||||
continue
|
continue
|
||||||
filename = os.path.join(DATA, filename)
|
filename = os.path.join(config.USER_DATA, filename)
|
||||||
if os.path.isfile(filename) and valid(filename):
|
if os.path.isfile(filename) and valid(filename):
|
||||||
FILES.append(filename)
|
FILES.append(filename)
|
||||||
|
|
||||||
|
@ -119,7 +110,7 @@ def write(outurl="default.html"):
|
||||||
* calls write_page() on each file to make permalinks
|
* calls write_page() on each file to make permalinks
|
||||||
'''
|
'''
|
||||||
|
|
||||||
outfile = open(os.path.join(WWW, outurl), "w")
|
outfile = open(os.path.join(config.WWW, outurl), "w")
|
||||||
|
|
||||||
outfile.write("<!--generated by the tilde.town blogging platform on "+time.strftime("%d %B %y")+"\nhttp://tilde.town/~endorphant/ttbp/-->\n\n")
|
outfile.write("<!--generated by the tilde.town blogging platform on "+time.strftime("%d %B %y")+"\nhttp://tilde.town/~endorphant/ttbp/-->\n\n")
|
||||||
|
|
||||||
|
@ -140,7 +131,7 @@ def write(outurl="default.html"):
|
||||||
|
|
||||||
outfile.close()
|
outfile.close()
|
||||||
|
|
||||||
return os.path.join(LIVE+USER,os.path.basename(os.path.realpath(WWW)),outurl)
|
return os.path.join(config.LIVE+config.USER,os.path.basename(os.path.realpath(config.WWW)),outurl)
|
||||||
|
|
||||||
def write_page(filename):
|
def write_page(filename):
|
||||||
'''
|
'''
|
||||||
|
@ -150,7 +141,7 @@ def write_page(filename):
|
||||||
url
|
url
|
||||||
'''
|
'''
|
||||||
|
|
||||||
outurl = os.path.join(WWW, "".join(parse_date(filename))+".html")
|
outurl = os.path.join(config.WWW, "".join(parse_date(filename))+".html")
|
||||||
outfile = open(outurl, "w")
|
outfile = open(outurl, "w")
|
||||||
|
|
||||||
outfile.write("<!--generated by the tilde.town blogging platform on "+time.strftime("%d %B %y")+"\nhttp://tilde.town/~endorphant/ttbp/-->\n\n")
|
outfile.write("<!--generated by the tilde.town blogging platform on "+time.strftime("%d %B %y")+"\nhttp://tilde.town/~endorphant/ttbp/-->\n\n")
|
||||||
|
@ -190,7 +181,7 @@ def write_entry(filename):
|
||||||
]
|
]
|
||||||
|
|
||||||
raw = []
|
raw = []
|
||||||
rawfile = open(os.path.join(DATA, filename), "r")
|
rawfile = open(os.path.join(config.USER_DATA, filename), "r")
|
||||||
|
|
||||||
for line in rawfile:
|
for line in rawfile:
|
||||||
raw.append(line)
|
raw.append(line)
|
||||||
|
@ -244,7 +235,7 @@ def write_global_feed(blogList):
|
||||||
## docs
|
## docs
|
||||||
outfile.write("""\
|
outfile.write("""\
|
||||||
<div class="docs">""")
|
<div class="docs">""")
|
||||||
outfile.write(mistune.markdown(open(os.path.join(SOURCE, "..", "README.md"), "r").read()))
|
outfile.write(mistune.markdown(open(os.path.join(config.INSTALL_PATH, "..", "README.md"), "r").read()))
|
||||||
outfile.write("""\
|
outfile.write("""\
|
||||||
</div>""")
|
</div>""")
|
||||||
|
|
||||||
|
@ -354,14 +345,14 @@ def find_ttbps():
|
||||||
|
|
||||||
return users
|
return users
|
||||||
|
|
||||||
def publishing(username = USER):
|
def publishing(username=config.USER):
|
||||||
'''
|
'''
|
||||||
checks .ttbprc for whether or not user opted for www publishing
|
checks .ttbprc for whether or not user opted for www publishing
|
||||||
'''
|
'''
|
||||||
|
|
||||||
ttbprc = {}
|
ttbprc = {}
|
||||||
|
|
||||||
if username == USER:
|
if username == config.USER:
|
||||||
ttbprc = SETTINGS
|
ttbprc = SETTINGS
|
||||||
|
|
||||||
else:
|
else:
|
||||||
|
@ -384,7 +375,7 @@ def www_neighbors():
|
||||||
|
|
||||||
url = ""
|
url = ""
|
||||||
if userRC["publish dir"]:
|
if userRC["publish dir"]:
|
||||||
url = LIVE+user+"/"+userRC["publish dir"]
|
url = config.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"))
|
||||||
|
@ -418,8 +409,8 @@ def nopub(filename):
|
||||||
|
|
||||||
exclude = []
|
exclude = []
|
||||||
|
|
||||||
if os.path.isfile(NOPUB):
|
if os.path.isfile(config.NOPUB):
|
||||||
for line in open(NOPUB, "r"):
|
for line in open(config.NOPUB, "r"):
|
||||||
exclude.append(line.rstrip())
|
exclude.append(line.rstrip())
|
||||||
|
|
||||||
return os.path.basename(filename) in exclude
|
return os.path.basename(filename) in exclude
|
||||||
|
|
150
ttbp/ttbp.py
150
ttbp/ttbp.py
|
@ -44,6 +44,7 @@ import re
|
||||||
|
|
||||||
import inflect
|
import inflect
|
||||||
|
|
||||||
|
from . import config
|
||||||
from . import core
|
from . import core
|
||||||
from . import chatter
|
from . import chatter
|
||||||
from . import util
|
from . import util
|
||||||
|
@ -51,33 +52,16 @@ from . import util
|
||||||
__version__ = "0.10.0"
|
__version__ = "0.10.0"
|
||||||
__author__ = "endorphant <endorphant@tilde.town)"
|
__author__ = "endorphant <endorphant@tilde.town)"
|
||||||
|
|
||||||
## system globals
|
|
||||||
SOURCE = os.path.join("/home", "endorphant", "projects", "ttbp", "bin")
|
|
||||||
LIVE = "http://tilde.town/~"
|
|
||||||
FEEDBACK = os.path.join("/home", "endorphant", "ttbp-mail")
|
|
||||||
FEEDBOX = "endorphant@tilde.town"
|
|
||||||
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()
|
||||||
|
|
||||||
## user globals
|
## user globals
|
||||||
USER = os.path.basename(os.path.expanduser("~"))
|
|
||||||
PATH = os.path.join("/home", USER, ".ttbp")
|
|
||||||
PUBLIC = os.path.join("/home", USER, "public_html")
|
|
||||||
WWW = os.path.join(PATH, "www")
|
|
||||||
CONFIG = os.path.join(PATH, "config")
|
|
||||||
TTBPRC = os.path.join(CONFIG, "ttbprc")
|
|
||||||
DATA = os.path.join(PATH, "entries")
|
|
||||||
SETTINGS = {
|
SETTINGS = {
|
||||||
"editor": "none",
|
"editor": "none",
|
||||||
"publish dir": False
|
"publish dir": False
|
||||||
}
|
}
|
||||||
|
|
||||||
## ui globals
|
## ui globals
|
||||||
BANNER = util.attach_rainbow()+open(os.path.join(SOURCE, "config", "banner.txt")).read()+util.attach_reset()
|
BANNER = util.attach_rainbow() + config.BANNER + util.attach_reset()
|
||||||
SPACER = "\n"
|
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"
|
||||||
|
@ -231,14 +215,14 @@ 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")+", "+USER+".\n")
|
print(chatter.say("greet")+", "+config.USER+".\n")
|
||||||
|
|
||||||
'''
|
'''
|
||||||
## ttbprc validation
|
## ttbprc validation
|
||||||
while not os.path.isfile(TTBPRC):
|
while not os.path.isfile(config.TTBPRC):
|
||||||
setup_repair()
|
setup_repair()
|
||||||
try:
|
try:
|
||||||
SETTINGS = json.load(open(TTBPRC))
|
SETTINGS = json.load(open(config.TTBPRC))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
setup_repair()
|
setup_repair()
|
||||||
'''
|
'''
|
||||||
|
@ -281,28 +265,30 @@ press <enter> to begin, or <ctrl-c> to get out of here.
|
||||||
quit()
|
quit()
|
||||||
|
|
||||||
## record user in source list
|
## record user in source list
|
||||||
users = open(USERFILE, 'a')
|
users = open(config.USERFILE, 'a')
|
||||||
users.write(USER+"\n")
|
users.write(config.USER+"\n")
|
||||||
users.close()
|
users.close()
|
||||||
|
|
||||||
## make .ttbp directory structure
|
## make .ttbp directory structure
|
||||||
subprocess.call(["mkdir", PATH])
|
subprocess.call(["mkdir", config.PATH])
|
||||||
subprocess.call(["mkdir", CONFIG])
|
subprocess.call(["mkdir", config.USER_CONFIG])
|
||||||
subprocess.call(["mkdir", DATA])
|
subprocess.call(["mkdir", config.USER_DATA])
|
||||||
|
|
||||||
versionFile = os.path.join(PATH, "version")
|
versionFile = os.path.join(config.PATH, "version")
|
||||||
open(versionFile, "w").write(__version__)
|
open(versionFile, "w").write(__version__)
|
||||||
|
|
||||||
## create header file
|
## create header file
|
||||||
header = gen_header()
|
header = gen_header()
|
||||||
headerfile = open(os.path.join(CONFIG, "header.txt"), 'w')
|
headerfile = open(os.path.join(config.USER_CONFIG, "header.txt"), 'w')
|
||||||
for line in header:
|
for line in header:
|
||||||
headerfile.write(line)
|
headerfile.write(line)
|
||||||
headerfile.close()
|
headerfile.close()
|
||||||
|
|
||||||
## copy footer and default stylesheet
|
## copy footer and default stylesheet
|
||||||
subprocess.call(["cp", os.path.join(SOURCE, "config", "defaults", "footer.txt"), CONFIG])
|
with open(os.path.join(config.USER_CONFIG, 'footer.txt', 'w')) as f:
|
||||||
subprocess.call(["cp", os.path.join(SOURCE, "config", "defaults", "style.css"), CONFIG])
|
f.write(config.DEFAULT_FOOTER)
|
||||||
|
with open(os.path.join(config.USER_CONFIG, 'style.css', 'w')) as f:
|
||||||
|
f.write(config.DEFAULT_STYLE)
|
||||||
|
|
||||||
## run user-interactive setup and load core engine
|
## run user-interactive setup and load core engine
|
||||||
setup()
|
setup()
|
||||||
|
@ -323,12 +309,12 @@ def gen_header():
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<!--- this header automatically generated by ttbp initialization on """+time.strftime("%Y-%m-%d %h:m")+""" --->
|
<!--- this header automatically generated by ttbp initialization on """+time.strftime("%Y-%m-%d %h:m")+""" --->
|
||||||
<title>~"""+USER+""" on TTBP</title>
|
<title>~"""+config.USER+""" on TTBP</title>
|
||||||
<link rel=\"stylesheet\" href=\"style.css\" />
|
<link rel=\"stylesheet\" href=\"style.css\" />
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<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#\">~"""+config.USER+"""</a>@<a href=\"/~endorphant/ttbp\">TTBP</a></h1>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!---put your custom html here-->
|
<!---put your custom html here-->
|
||||||
|
@ -347,11 +333,11 @@ def valid_setup():
|
||||||
|
|
||||||
global SETTINGS
|
global SETTINGS
|
||||||
|
|
||||||
if not os.path.isfile(TTBPRC):
|
if not os.path.isfile(config.TTBPRC):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
try:
|
try:
|
||||||
SETTINGS = json.load(open(TTBPRC))
|
SETTINGS = json.load(open(config.TTBPRC))
|
||||||
except ValueError:
|
except ValueError:
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -359,10 +345,10 @@ def valid_setup():
|
||||||
if not SETTINGS.get("publish dir"):
|
if not SETTINGS.get("publish dir"):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if not os.path.exists(WWW):
|
if not os.path.exists(config.WWW):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
if not os.path.exists(os.path.join(WWW, SETTINGS.get("pubish dir"))):
|
if not os.path.exists(os.path.join(config.WWW, SETTINGS.get("pubish dir"))):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
return True
|
return True
|
||||||
|
@ -398,7 +384,7 @@ def setup():
|
||||||
|
|
||||||
print("\n\ttext editor:\t" +SETTINGS.get("editor"))
|
print("\n\ttext editor:\t" +SETTINGS.get("editor"))
|
||||||
if core.publishing():
|
if core.publishing():
|
||||||
print("\tpublish dir:\t" +os.path.join(PUBLIC, str(SETTINGS.get("publish dir"))))
|
print("\tpublish dir:\t" +os.path.join(config.PUBLIC, str(SETTINGS.get("publish dir"))))
|
||||||
print("\tpubishing:\t"+str(SETTINGS.get("publishing"))+"\n")
|
print("\tpubishing:\t"+str(SETTINGS.get("publishing"))+"\n")
|
||||||
|
|
||||||
# editor selection
|
# editor selection
|
||||||
|
@ -412,10 +398,10 @@ def setup():
|
||||||
redraw("blog publishing: "+str(core.publishing()))
|
redraw("blog publishing: "+str(core.publishing()))
|
||||||
|
|
||||||
if core.publishing():
|
if core.publishing():
|
||||||
print("publish directory: ~"+USER+"/public_html/"+SETTINGS.get("publish dir"))
|
print("publish directory: ~"+config.USER+"/public_html/"+SETTINGS.get("publish dir"))
|
||||||
|
|
||||||
# save settings
|
# save settings
|
||||||
ttbprc = open(TTBPRC, "w")
|
ttbprc = open(config.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()
|
||||||
|
|
||||||
|
@ -454,7 +440,7 @@ def main_menu():
|
||||||
if choice == '0':
|
if choice == '0':
|
||||||
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(config.USER_DATA, today+".txt"))
|
||||||
core.www_neighbors()
|
core.www_neighbors()
|
||||||
elif choice == '1':
|
elif choice == '1':
|
||||||
if core.publishing():
|
if core.publishing():
|
||||||
|
@ -465,7 +451,7 @@ def main_menu():
|
||||||
core.write("index.html")
|
core.write("index.html")
|
||||||
else:
|
else:
|
||||||
redraw("your recorded feels, listed by date:")
|
redraw("your recorded feels, listed by date:")
|
||||||
view_feels(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 "+p.no("user", len(users))+" "+p.plural("is", len(users))+" recording feels on ttbp:"
|
||||||
|
@ -490,7 +476,7 @@ def main_menu():
|
||||||
redraw()
|
redraw()
|
||||||
show_credits()
|
show_credits()
|
||||||
elif choice == '8':
|
elif choice == '8':
|
||||||
subprocess.call(["lynx", os.path.join(SOURCE, "..", "README.html")])
|
subprocess.call(["lynx", os.path.join(config.INSTALL_PATH, "..", "README.html")])
|
||||||
redraw()
|
redraw()
|
||||||
elif choice in QUITS:
|
elif choice in QUITS:
|
||||||
return stop()
|
return stop()
|
||||||
|
@ -543,7 +529,7 @@ def review_menu(intro=""):
|
||||||
if choice is not False:
|
if choice is not False:
|
||||||
if choice == 0:
|
if choice == 0:
|
||||||
redraw("your recorded feels, listed by date:")
|
redraw("your recorded feels, listed by date:")
|
||||||
view_feels(USER)
|
view_feels(config.USER)
|
||||||
elif choice == 1:
|
elif choice == 1:
|
||||||
redraw("here's your current nopub status:")
|
redraw("here's your current nopub status:")
|
||||||
set_nopubs()
|
set_nopubs()
|
||||||
|
@ -570,7 +556,7 @@ def view_neighbors(users, prompt):
|
||||||
## retrieve publishing url, if it exists
|
## retrieve publishing url, if it exists
|
||||||
url="\t\t\t"
|
url="\t\t\t"
|
||||||
if userRC.get("publish dir"):
|
if userRC.get("publish dir"):
|
||||||
url = LIVE+user+"/"+userRC.get("publish dir")
|
url = config.LIVE+user+"/"+userRC.get("publish dir")
|
||||||
|
|
||||||
## find last entry
|
## find last entry
|
||||||
files = os.listdir(os.path.join("/home", user, ".ttbp", "entries"))
|
files = os.listdir(os.path.join("/home", user, ".ttbp", "entries"))
|
||||||
|
@ -630,8 +616,8 @@ def view_feels(townie):
|
||||||
filenames = []
|
filenames = []
|
||||||
showpub = False
|
showpub = False
|
||||||
|
|
||||||
if townie == USER:
|
if townie == config.USER:
|
||||||
entryDir = DATA
|
entryDir = config.USER_DATA
|
||||||
owner = "your"
|
owner = "your"
|
||||||
if core.publishing():
|
if core.publishing():
|
||||||
showpub = True
|
showpub = True
|
||||||
|
@ -685,7 +671,7 @@ thanks to everyone who reads, listens, writes, and feels.\
|
||||||
|
|
||||||
## handlers
|
## handlers
|
||||||
|
|
||||||
def write_entry(entry=os.path.join(DATA, "test.txt")):
|
def write_entry(entry=os.path.join(config.USER_DATA, "test.txt")):
|
||||||
'''
|
'''
|
||||||
main feels-recording handler
|
main feels-recording handler
|
||||||
'''
|
'''
|
||||||
|
@ -715,7 +701,7 @@ editor.
|
||||||
if core.publishing():
|
if core.publishing():
|
||||||
core.load_files()
|
core.load_files()
|
||||||
core.write("index.html")
|
core.write("index.html")
|
||||||
left = "posted to "+LIVE+USER+"/"+str(SETTINGS.get("publish dir"))+"/index.html\n\n>"
|
left = "posted to "+config.LIVE+config.USER+"/"+str(SETTINGS.get("publish dir"))+"/index.html\n\n>"
|
||||||
redraw(left + " thanks for sharing your feels!")
|
redraw(left + " thanks for sharing your feels!")
|
||||||
|
|
||||||
return
|
return
|
||||||
|
@ -745,8 +731,8 @@ def send_feedback(entered, subject="none"):
|
||||||
if message:
|
if message:
|
||||||
id = "#"+util.genID(3)
|
id = "#"+util.genID(3)
|
||||||
mail = MIMEText(message)
|
mail = MIMEText(message)
|
||||||
mail['To'] = FEEDBOX
|
mail['To'] = config.FEEDBOX
|
||||||
mail['From'] = USER+"@tilde.town"
|
mail['From'] = config.USER+"@tilde.town"
|
||||||
mail['Subject'] = " ".join(["[ttbp]", subject, id])
|
mail['Subject'] = " ".join(["[ttbp]", subject, id])
|
||||||
m = os.popen("/usr/sbin/sendmail -t -oi", 'w')
|
m = os.popen("/usr/sbin/sendmail -t -oi", 'w')
|
||||||
m.write(mail.as_string())
|
m.write(mail.as_string())
|
||||||
|
@ -838,10 +824,10 @@ def graffiti_handler():
|
||||||
Main graffiti handler.
|
Main graffiti handler.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if os.path.isfile(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, "+chatter.say("friend")+", but someone's there right now. try again in a few!")
|
||||||
else:
|
else:
|
||||||
subprocess.call(["touch", WALL_LOCK])
|
subprocess.call(["touch", config.WALL_LOCK])
|
||||||
redraw()
|
redraw()
|
||||||
print("""\
|
print("""\
|
||||||
the graffiti wall is a world-writeable text file. anyone can
|
the graffiti wall is a world-writeable text file. anyone can
|
||||||
|
@ -855,8 +841,8 @@ your changes by exiting without saving.
|
||||||
|
|
||||||
""")
|
""")
|
||||||
raw_input("press <enter> to visit the wall\n\n")
|
raw_input("press <enter> to visit the wall\n\n")
|
||||||
subprocess.call([SETTINGS.get("editor"), WALL])
|
subprocess.call([SETTINGS.get("editor"), config.WALL])
|
||||||
subprocess.call(["rm", WALL_LOCK])
|
subprocess.call(["rm", config.WALL_LOCK])
|
||||||
redraw("thanks for visiting the graffiti wall!")
|
redraw("thanks for visiting the graffiti wall!")
|
||||||
|
|
||||||
|
|
||||||
|
@ -886,14 +872,14 @@ def select_publish_dir():
|
||||||
republish = False
|
republish = False
|
||||||
|
|
||||||
if current:
|
if current:
|
||||||
print("\ncurrent publish dir:\t"+os.path.join(PUBLIC, SETTINGS["publish dir"]))
|
print("\ncurrent publish dir:\t"+os.path.join(config.PUBLIC, SETTINGS["publish dir"]))
|
||||||
republish = True
|
republish = True
|
||||||
|
|
||||||
choice = raw_input("\nwhere do you want your blog published? (leave blank to use default \"blog\") ")
|
choice = raw_input("\nwhere do you want your blog published? (leave blank to use default \"blog\") ")
|
||||||
if not choice:
|
if not choice:
|
||||||
choice = "blog"
|
choice = "blog"
|
||||||
|
|
||||||
publishDir = os.path.join(PUBLIC, choice)
|
publishDir = os.path.join(config.PUBLIC, choice)
|
||||||
while os.path.exists(publishDir):
|
while os.path.exists(publishDir):
|
||||||
second = raw_input("\n"+publishDir+"""\
|
second = raw_input("\n"+publishDir+"""\
|
||||||
already exists!
|
already exists!
|
||||||
|
@ -907,7 +893,7 @@ otherwise, pick another location: """)
|
||||||
if second == "":
|
if second == "":
|
||||||
break
|
break
|
||||||
choice = second
|
choice = second
|
||||||
publishDir = os.path.join(PUBLIC, choice)
|
publishDir = os.path.join(config.PUBLIC, choice)
|
||||||
|
|
||||||
return choice
|
return choice
|
||||||
|
|
||||||
|
@ -939,9 +925,9 @@ def unpublish():
|
||||||
remove user's published directory, if it exists. this should only remove the symlink in public_html.
|
remove user's published directory, if it exists. this should only remove the symlink in public_html.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
dir = SETTINGS.get("publish dir")
|
directory = SETTINGS.get("publish dir")
|
||||||
if dir:
|
if dir:
|
||||||
publishDir = os.path.join(PUBLIC, dir)
|
publishDir = os.path.join(config.PUBLIC, directory)
|
||||||
subprocess.call(["rm", publishDir])
|
subprocess.call(["rm", publishDir])
|
||||||
|
|
||||||
def update_publishing():
|
def update_publishing():
|
||||||
|
@ -956,7 +942,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", os.path.join(PUBLIC, oldDir)])
|
subprocess.call(["rm", os.path.join(config.PUBLIC, oldDir)])
|
||||||
make_publish_dir(newDir)
|
make_publish_dir(newDir)
|
||||||
core.load_files()
|
core.load_files()
|
||||||
core.write("index.html")
|
core.write("index.html")
|
||||||
|
@ -971,21 +957,21 @@ def make_publish_dir(dir):
|
||||||
setup helper to create publishing directory
|
setup helper to create publishing directory
|
||||||
'''
|
'''
|
||||||
|
|
||||||
if not os.path.exists(WWW):
|
if not os.path.exists(config.WWW):
|
||||||
subprocess.call(["mkdir", WWW])
|
subprocess.call(["mkdir", config.WWW])
|
||||||
subprocess.call(["ln", "-s", os.path.join(CONFIG, "style.css"), os.path.join(WWW, "style.css")])
|
subprocess.call(["ln", "-s", os.path.join(config.USER_CONFIG, "style.css"), os.path.join(config.WWW, "style.css")])
|
||||||
subprocess.call(["touch", os.path.join(WWW, "index.html")])
|
subprocess.call(["touch", os.path.join(config.WWW, "index.html")])
|
||||||
index = open(os.path.join(WWW, "index.html"), "w")
|
index = open(os.path.join(config.WWW, "index.html"), "w")
|
||||||
index.write("<h1>ttbp blog placeholder</h1>")
|
index.write("<h1>ttbp blog placeholder</h1>")
|
||||||
index.close()
|
index.close()
|
||||||
|
|
||||||
publishDir = os.path.join(PUBLIC, dir)
|
publishDir = os.path.join(config.PUBLIC, dir)
|
||||||
if os.path.exists(publishDir):
|
if os.path.exists(publishDir):
|
||||||
subprocess.call(["rm", publishDir])
|
subprocess.call(["rm", publishDir])
|
||||||
|
|
||||||
subprocess.call(["ln", "-s", WWW, publishDir])
|
subprocess.call(["ln", "-s", config.WWW, publishDir])
|
||||||
|
|
||||||
print("\n\tpublishing to "+LIVE+USER+"/"+SETTINGS.get("publish dir")+"/\n\n")
|
print("\n\tpublishing to "+config.LIVE+config.USER+"/"+SETTINGS.get("publish dir")+"/\n\n")
|
||||||
|
|
||||||
##### PATCHING UTILITIES
|
##### PATCHING UTILITIES
|
||||||
|
|
||||||
|
@ -994,7 +980,7 @@ def build_mismatch():
|
||||||
checks to see if user's last run build is the same as this session
|
checks to see if user's last run build is the same as this session
|
||||||
'''
|
'''
|
||||||
|
|
||||||
versionFile = os.path.join(PATH, "version")
|
versionFile = os.path.join(config.PATH, "version")
|
||||||
if not os.path.exists(versionFile):
|
if not os.path.exists(versionFile):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -1020,7 +1006,7 @@ def switch_build(ver):
|
||||||
print("\nswitching you over to the "+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(config.PATH, "version")
|
||||||
open(versionFile, "w").write(ver)
|
open(versionFile, "w").write(ver)
|
||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
#print("\nall good!\n")
|
#print("\nall good!\n")
|
||||||
|
@ -1030,7 +1016,7 @@ def updated():
|
||||||
checks to see if current user is up to the same version as system
|
checks to see if current user is up to the same version as system
|
||||||
'''
|
'''
|
||||||
|
|
||||||
versionFile = os.path.join(PATH, "version")
|
versionFile = os.path.join(config.PATH, "version")
|
||||||
if not os.path.exists(versionFile):
|
if not os.path.exists(versionFile):
|
||||||
return False
|
return False
|
||||||
|
|
||||||
|
@ -1048,7 +1034,7 @@ def update_version():
|
||||||
|
|
||||||
global SETTINGS
|
global SETTINGS
|
||||||
|
|
||||||
versionFile = os.path.join(PATH, "version")
|
versionFile = os.path.join(config.PATH, "version")
|
||||||
|
|
||||||
print("ttbp had some updates!")
|
print("ttbp had some updates!")
|
||||||
|
|
||||||
|
@ -1065,22 +1051,22 @@ def update_version():
|
||||||
|
|
||||||
# change style.css location
|
# change style.css location
|
||||||
if core.publishing():
|
if core.publishing():
|
||||||
if os.path.isfile(os.path.join(WWW, "style.css")):
|
if os.path.isfile(os.path.join(config.WWW, "style.css")):
|
||||||
subprocess.call(["mv", os.path.join(WWW, "style.css"), CONFIG])
|
subprocess.call(["mv", os.path.join(config.WWW, "style.css"), config.USER_CONFIG])
|
||||||
|
|
||||||
# change www symlink
|
# change www symlink
|
||||||
if os.path.exists(WWW):
|
if os.path.exists(config.WWW):
|
||||||
subprocess.call(["rm", WWW])
|
subprocess.call(["rm", config.WWW])
|
||||||
|
|
||||||
subprocess.call(["mkdir", WWW])
|
subprocess.call(["mkdir", config.WWW])
|
||||||
|
|
||||||
subprocess.call(["ln", "-s", os.path.join(CONFIG, "style.css"), os.path.join(WWW, "style.css")])
|
subprocess.call(["ln", "-s", os.path.join(config.USER_CONFIG, "style.css"), os.path.join(config.WWW, "style.css")])
|
||||||
|
|
||||||
publishDir = os.path.join(PUBLIC, SETTINGS.get("publish dir"))
|
publishDir = os.path.join(config.PUBLIC, SETTINGS.get("publish dir"))
|
||||||
if os.path.exists(publishDir):
|
if os.path.exists(publishDir):
|
||||||
subprocess.call(["rm", "-rf", publishDir])
|
subprocess.call(["rm", "-rf", publishDir])
|
||||||
|
|
||||||
subprocess.call(["ln", "-s", WWW, os.path.join(PUBLIC, SETTINGS.get("publish dir"))])
|
subprocess.call(["ln", "-s", config.WWW, os.path.join(config.PUBLIC, SETTINGS.get("publish dir"))])
|
||||||
|
|
||||||
# repopulate html files
|
# repopulate html files
|
||||||
core.load_files()
|
core.load_files()
|
||||||
|
@ -1090,7 +1076,7 @@ def update_version():
|
||||||
print("\nnew feature!\n")
|
print("\nnew feature!\n")
|
||||||
SETTINGS.update({"publishing":select_publishing()})
|
SETTINGS.update({"publishing":select_publishing()})
|
||||||
update_publishing()
|
update_publishing()
|
||||||
ttbprc = open(TTBPRC, "w")
|
ttbprc = open(config.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()
|
||||||
|
|
||||||
|
@ -1102,7 +1088,7 @@ def update_version():
|
||||||
print("\nresetting your publishing settings...\n")
|
print("\nresetting your publishing settings...\n")
|
||||||
SETTINGS.update({"publishing":select_publishing()})
|
SETTINGS.update({"publishing":select_publishing()})
|
||||||
update_publishing()
|
update_publishing()
|
||||||
ttbprc = open(TTBPRC, "w")
|
ttbprc = open(config.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()
|
||||||
|
|
||||||
|
|
|
@ -23,11 +23,11 @@ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
'''
|
'''
|
||||||
|
|
||||||
import inflect
|
|
||||||
import time
|
|
||||||
import random
|
import random
|
||||||
|
import time
|
||||||
|
|
||||||
import colorama
|
import colorama
|
||||||
|
import inflect
|
||||||
|
|
||||||
## misc globals
|
## misc globals
|
||||||
BACKS = ['back', 'b', 'q']
|
BACKS = ['back', 'b', 'q']
|
||||||
|
|
Loading…
Reference in New Issue