forked from endorphant/ttbp
Merge branch 'master' into documentation_update
commit
87c2491388
|
@ -0,0 +1,3 @@
|
|||
*.pyc
|
||||
*.swp
|
||||
*.egg-info
|
|
@ -1,8 +0,0 @@
|
|||
__________________________________________________________
|
||||
| |
|
||||
| the tilde.town |
|
||||
| ____ ____ ____ _ ____ ____ _ _ ____ _ _ _ ____ |
|
||||
| |___ |___ |___ | [__ |___ |\ | | __ | |\ | |___ |
|
||||
| | |___ |___ |___ ___] |___ | \| |__] | | \| |___ |
|
||||
| ver 0.9.2 (almost stable) |
|
||||
|__________________________________________________________|
|
|
@ -25,6 +25,10 @@ TO-DO:
|
|||
------
|
||||
|
||||
CHANGELOG:
|
||||
ver 0.9.3
|
||||
-packaging
|
||||
-easier to contribute to
|
||||
|
||||
ver 0.9.2
|
||||
-paginated scrolling
|
||||
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
#!/usr/bin/env python
|
||||
|
||||
from setuptools import setup
|
||||
|
||||
setup(
|
||||
name='ttbp',
|
||||
version='0.9.3',
|
||||
description='command line social blogging tool used on tilde.town',
|
||||
url='https://github.com/modgethanc/ttbp',
|
||||
author='~endorphant',
|
||||
author_email='endorphant@tilde.town',
|
||||
license='MIT',
|
||||
classifiers=[
|
||||
'Topic :: Artistic Software',
|
||||
'License :: OSI Approved :: MIT License',
|
||||
],
|
||||
keywords='blog',
|
||||
packages=['ttbp'],
|
||||
install_requires = [
|
||||
'inflect==0.2.5',
|
||||
'mistune==0.8.1',
|
||||
'colorama==0.3.9',
|
||||
],
|
||||
include_package_data = True,
|
||||
entry_points = {
|
||||
'console_scripts': [
|
||||
'feels = ttbp.ttbp:start',
|
||||
'ttbp = ttbp.ttbp:start',
|
||||
]
|
||||
},
|
||||
)
|
|
@ -0,0 +1,69 @@
|
|||
import json
|
||||
import os
|
||||
import random
|
||||
|
||||
DEFAULT_LANG = {
|
||||
"greet":[
|
||||
"hi",
|
||||
"hey",
|
||||
"howdy",
|
||||
"good morning",
|
||||
"good afternoon",
|
||||
"good day",
|
||||
"good evening",
|
||||
"welcome back",
|
||||
"nice to see you"
|
||||
],
|
||||
"bye":[
|
||||
"see you later, space cowboy",
|
||||
"bye, townie",
|
||||
"until next time, friend",
|
||||
"come back whenever"
|
||||
],
|
||||
"friend":[
|
||||
"friend",
|
||||
"pal",
|
||||
"buddy",
|
||||
"townie"
|
||||
],
|
||||
"months":{
|
||||
"01":"january",
|
||||
"02":"february",
|
||||
"03":"march",
|
||||
"04":"april",
|
||||
"05":"may",
|
||||
"06":"june",
|
||||
"07":"july",
|
||||
"08":"august",
|
||||
"09":"september",
|
||||
"10":"october",
|
||||
"11":"november",
|
||||
"12":"december"
|
||||
}
|
||||
}
|
||||
|
||||
if os.path.exists("/home/endorphant/lib/python/chatterlib.json"):
|
||||
with open("/home/endorphant/lib/python/chatterlib.json", 'r') as f:
|
||||
LANG = json.load(f)
|
||||
else:
|
||||
LANG = DEFAULT_LANG
|
||||
|
||||
def say(keyword):
|
||||
'''
|
||||
takes a keyword and randomly returns from language dictionary to match that keyword
|
||||
|
||||
returns None if keyword doesn't exist
|
||||
|
||||
TODO: validate keyword?
|
||||
'''
|
||||
|
||||
return random.choice(LANG.get(keyword))
|
||||
|
||||
def month(num):
|
||||
'''
|
||||
takes a MM and returns lovercase full name of that month
|
||||
|
||||
TODO: validate num?
|
||||
'''
|
||||
|
||||
return LANG["months"].get(num)
|
|
@ -0,0 +1,86 @@
|
|||
from __future__ import absolute_import
|
||||
import os
|
||||
import sys
|
||||
|
||||
from .. import util
|
||||
|
||||
## System config
|
||||
|
||||
# We refer to some package files (ie .css stuff), so we save a reference to the
|
||||
# path.
|
||||
INSTALL_PATH = os.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")
|
||||
|
||||
if not os.path.isdir(GRAFF_DIR):
|
||||
os.mkdir(GRAFF_DIR)
|
||||
|
||||
## 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">
|
||||
'''.lstrip()
|
||||
|
||||
DEFAULT_FOOTER = '''
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
'''.lstrip()
|
||||
|
||||
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) |
|
||||
|__________________________________________________________|
|
||||
'''.lstrip()
|
|
@ -39,19 +39,10 @@ import re
|
|||
import mistune
|
||||
import json
|
||||
|
||||
import chatter
|
||||
from . import chatter
|
||||
from . import config
|
||||
|
||||
SOURCE = os.path.join("/home", "endorphant", "projects", "ttbp", "bin")
|
||||
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")
|
||||
FEED = os.path.join(config.VAR_WWW, "index.html")
|
||||
SETTINGS = {}
|
||||
|
||||
HEADER = ""
|
||||
|
@ -67,8 +58,8 @@ def load(ttbprc={}):
|
|||
global FOOTER
|
||||
global SETTINGS
|
||||
|
||||
HEADER = open(os.path.join(CONFIG, "header.txt")).read()
|
||||
FOOTER = open(os.path.join(CONFIG, "footer.txt")).read()
|
||||
HEADER = open(os.path.join(config.USER_CONFIG, "header.txt")).read()
|
||||
FOOTER = open(os.path.join(config.USER_CONFIG, "footer.txt")).read()
|
||||
SETTINGS = ttbprc
|
||||
|
||||
load_files()
|
||||
|
@ -94,13 +85,13 @@ def load_files():
|
|||
|
||||
FILES = []
|
||||
|
||||
for filename in os.listdir(DATA):
|
||||
for filename in os.listdir(config.USER_DATA):
|
||||
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):
|
||||
subprocess.call(["rm", link])
|
||||
continue
|
||||
filename = os.path.join(DATA, filename)
|
||||
filename = os.path.join(config.USER_DATA, filename)
|
||||
if os.path.isfile(filename) and valid(filename):
|
||||
FILES.append(filename)
|
||||
|
||||
|
@ -119,7 +110,7 @@ def write(outurl="default.html"):
|
|||
* 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")
|
||||
|
||||
|
@ -140,7 +131,7 @@ def write(outurl="default.html"):
|
|||
|
||||
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):
|
||||
'''
|
||||
|
@ -150,7 +141,7 @@ def write_page(filename):
|
|||
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.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 = []
|
||||
rawfile = open(os.path.join(DATA, filename), "r")
|
||||
rawfile = open(os.path.join(config.USER_DATA, filename), "r")
|
||||
|
||||
for line in rawfile:
|
||||
raw.append(line)
|
||||
|
@ -244,7 +235,7 @@ def write_global_feed(blogList):
|
|||
## docs
|
||||
outfile.write("""\
|
||||
<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("""\
|
||||
</div>""")
|
||||
|
||||
|
@ -354,14 +345,14 @@ def find_ttbps():
|
|||
|
||||
return users
|
||||
|
||||
def publishing(username = USER):
|
||||
def publishing(username=config.USER):
|
||||
'''
|
||||
checks .ttbprc for whether or not user opted for www publishing
|
||||
'''
|
||||
|
||||
ttbprc = {}
|
||||
|
||||
if username == USER:
|
||||
if username == config.USER:
|
||||
ttbprc = SETTINGS
|
||||
|
||||
else:
|
||||
|
@ -384,7 +375,7 @@ def www_neighbors():
|
|||
|
||||
url = ""
|
||||
if userRC["publish dir"]:
|
||||
url = LIVE+user+"/"+userRC["publish dir"]
|
||||
url = config.LIVE+user+"/"+userRC["publish dir"]
|
||||
|
||||
lastfile = ""
|
||||
files = os.listdir(os.path.join("/home", user, ".ttbp", "entries"))
|
||||
|
@ -418,8 +409,8 @@ def nopub(filename):
|
|||
|
||||
exclude = []
|
||||
|
||||
if os.path.isfile(NOPUB):
|
||||
for line in open(NOPUB, "r"):
|
||||
if os.path.isfile(config.NOPUB):
|
||||
for line in open(config.NOPUB, "r"):
|
||||
exclude.append(line.rstrip())
|
||||
|
||||
return os.path.basename(filename) in exclude
|
|
@ -31,6 +31,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|||
the complete codebase is available at:
|
||||
https://github.com/modgethanc/ttbp
|
||||
'''
|
||||
from __future__ import absolute_import
|
||||
|
||||
import os
|
||||
import random
|
||||
|
@ -41,41 +42,26 @@ import json
|
|||
from email.mime.text import MIMEText;
|
||||
import re
|
||||
|
||||
import core
|
||||
import chatter
|
||||
import inflect
|
||||
import util
|
||||
|
||||
__version__ = "0.9.2"
|
||||
from . import config
|
||||
from . import core
|
||||
from . import chatter
|
||||
from . import util
|
||||
|
||||
__version__ = "0.9.3"
|
||||
__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()
|
||||
|
||||
## 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 = {
|
||||
"editor": "none",
|
||||
"publish dir": False
|
||||
}
|
||||
|
||||
## 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"
|
||||
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"
|
||||
|
@ -229,14 +215,14 @@ def check_init():
|
|||
|
||||
print("\n\n")
|
||||
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
|
||||
while not os.path.isfile(TTBPRC):
|
||||
while not os.path.isfile(config.TTBPRC):
|
||||
setup_repair()
|
||||
try:
|
||||
SETTINGS = json.load(open(TTBPRC))
|
||||
SETTINGS = json.load(open(config.TTBPRC))
|
||||
except ValueError:
|
||||
setup_repair()
|
||||
'''
|
||||
|
@ -279,28 +265,30 @@ press <enter> to begin, or <ctrl-c> to get out of here.
|
|||
quit()
|
||||
|
||||
## record user in source list
|
||||
users = open(USERFILE, 'a')
|
||||
users.write(USER+"\n")
|
||||
users = open(config.USERFILE, 'a')
|
||||
users.write(config.USER+"\n")
|
||||
users.close()
|
||||
|
||||
## make .ttbp directory structure
|
||||
subprocess.call(["mkdir", PATH])
|
||||
subprocess.call(["mkdir", CONFIG])
|
||||
subprocess.call(["mkdir", DATA])
|
||||
subprocess.call(["mkdir", config.PATH])
|
||||
subprocess.call(["mkdir", config.USER_CONFIG])
|
||||
subprocess.call(["mkdir", config.USER_DATA])
|
||||
|
||||
versionFile = os.path.join(PATH, "version")
|
||||
versionFile = os.path.join(config.PATH, "version")
|
||||
open(versionFile, "w").write(__version__)
|
||||
|
||||
## create header file
|
||||
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:
|
||||
headerfile.write(line)
|
||||
headerfile.close()
|
||||
|
||||
## copy footer and default stylesheet
|
||||
subprocess.call(["cp", os.path.join(SOURCE, "config", "defaults", "footer.txt"), CONFIG])
|
||||
subprocess.call(["cp", os.path.join(SOURCE, "config", "defaults", "style.css"), CONFIG])
|
||||
with open(os.path.join(config.USER_CONFIG, 'footer.txt'), 'w') as f:
|
||||
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
|
||||
setup()
|
||||
|
@ -321,12 +309,12 @@ def gen_header():
|
|||
<html>
|
||||
<head>
|
||||
<!--- 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\" />
|
||||
</head>
|
||||
<body>
|
||||
<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>
|
||||
|
||||
<!---put your custom html here-->
|
||||
|
@ -345,11 +333,11 @@ def valid_setup():
|
|||
|
||||
global SETTINGS
|
||||
|
||||
if not os.path.isfile(TTBPRC):
|
||||
if not os.path.isfile(config.TTBPRC):
|
||||
return False
|
||||
|
||||
try:
|
||||
SETTINGS = json.load(open(TTBPRC))
|
||||
SETTINGS = json.load(open(config.TTBPRC))
|
||||
except ValueError:
|
||||
return False
|
||||
|
||||
|
@ -357,10 +345,10 @@ def valid_setup():
|
|||
if not SETTINGS.get("publish dir"):
|
||||
return False
|
||||
|
||||
if not os.path.exists(WWW):
|
||||
if not os.path.exists(config.WWW):
|
||||
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 True
|
||||
|
@ -396,7 +384,7 @@ def setup():
|
|||
|
||||
print("\n\ttext editor:\t" +SETTINGS.get("editor"))
|
||||
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")
|
||||
|
||||
# editor selection
|
||||
|
@ -410,10 +398,10 @@ def setup():
|
|||
redraw("blog publishing: "+str(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
|
||||
ttbprc = open(TTBPRC, "w")
|
||||
ttbprc = open(config.TTBPRC, "w")
|
||||
ttbprc.write(json.dumps(SETTINGS, sort_keys=True, indent=2, separators=(',',':')))
|
||||
ttbprc.close()
|
||||
|
||||
|
@ -452,7 +440,7 @@ def main_menu():
|
|||
if choice == '0':
|
||||
redraw()
|
||||
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()
|
||||
elif choice == '1':
|
||||
if core.publishing():
|
||||
|
@ -463,7 +451,7 @@ def main_menu():
|
|||
core.write("index.html")
|
||||
else:
|
||||
redraw("your recorded feels, listed by date:")
|
||||
view_feels(USER)
|
||||
view_feels(config.USER)
|
||||
elif choice == '2':
|
||||
users = core.find_ttbps()
|
||||
prompt = "the following "+p.no("user", len(users))+" "+p.plural("is", len(users))+" recording feels on ttbp:"
|
||||
|
@ -488,7 +476,7 @@ def main_menu():
|
|||
redraw()
|
||||
show_credits()
|
||||
elif choice == '8':
|
||||
subprocess.call(["lynx", os.path.join(SOURCE, "..", "README.html")])
|
||||
subprocess.call(["lynx", os.path.join(config.INSTALL_PATH, "..", "README.html")])
|
||||
redraw()
|
||||
elif choice in QUITS:
|
||||
return stop()
|
||||
|
@ -541,7 +529,7 @@ def review_menu(intro=""):
|
|||
if choice is not False:
|
||||
if choice == 0:
|
||||
redraw("your recorded feels, listed by date:")
|
||||
view_feels(USER)
|
||||
view_feels(config.USER)
|
||||
elif choice == 1:
|
||||
redraw("here's your current nopub status:")
|
||||
set_nopubs()
|
||||
|
@ -568,7 +556,7 @@ def view_neighbors(users, prompt):
|
|||
## retrieve publishing url, if it exists
|
||||
url="\t\t\t"
|
||||
if userRC.get("publish dir"):
|
||||
url = LIVE+user+"/"+userRC.get("publish dir")
|
||||
url = config.LIVE+user+"/"+userRC.get("publish dir")
|
||||
|
||||
## find last entry
|
||||
files = os.listdir(os.path.join("/home", user, ".ttbp", "entries"))
|
||||
|
@ -628,8 +616,8 @@ def view_feels(townie):
|
|||
filenames = []
|
||||
showpub = False
|
||||
|
||||
if townie == USER:
|
||||
entryDir = DATA
|
||||
if townie == config.USER:
|
||||
entryDir = config.USER_DATA
|
||||
owner = "your"
|
||||
if core.publishing():
|
||||
showpub = True
|
||||
|
@ -683,7 +671,7 @@ thanks to everyone who reads, listens, writes, and feels.\
|
|||
|
||||
## 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
|
||||
'''
|
||||
|
@ -713,7 +701,7 @@ editor.
|
|||
if core.publishing():
|
||||
core.load_files()
|
||||
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!")
|
||||
|
||||
return
|
||||
|
@ -743,8 +731,8 @@ def send_feedback(entered, subject="none"):
|
|||
if message:
|
||||
id = "#"+util.genID(3)
|
||||
mail = MIMEText(message)
|
||||
mail['To'] = FEEDBOX
|
||||
mail['From'] = USER+"@tilde.town"
|
||||
mail['To'] = config.FEEDBOX
|
||||
mail['From'] = config.USER+"@tilde.town"
|
||||
mail['Subject'] = " ".join(["[ttbp]", subject, id])
|
||||
m = os.popen("/usr/sbin/sendmail -t -oi", 'w')
|
||||
m.write(mail.as_string())
|
||||
|
@ -836,10 +824,10 @@ def 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!")
|
||||
else:
|
||||
subprocess.call(["touch", WALL_LOCK])
|
||||
subprocess.call(["touch", config.WALL_LOCK])
|
||||
redraw()
|
||||
print("""\
|
||||
the graffiti wall is a world-writeable text file. anyone can
|
||||
|
@ -853,8 +841,8 @@ your changes by exiting without saving.
|
|||
|
||||
""")
|
||||
raw_input("press <enter> to visit the wall\n\n")
|
||||
subprocess.call([SETTINGS.get("editor"), WALL])
|
||||
subprocess.call(["rm", WALL_LOCK])
|
||||
subprocess.call([SETTINGS.get("editor"), config.WALL])
|
||||
subprocess.call(["rm", config.WALL_LOCK])
|
||||
redraw("thanks for visiting the graffiti wall!")
|
||||
|
||||
|
||||
|
@ -884,14 +872,14 @@ def select_publish_dir():
|
|||
republish = False
|
||||
|
||||
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
|
||||
|
||||
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)
|
||||
publishDir = os.path.join(config.PUBLIC, choice)
|
||||
while os.path.exists(publishDir):
|
||||
second = raw_input("\n"+publishDir+"""\
|
||||
already exists!
|
||||
|
@ -905,7 +893,7 @@ otherwise, pick another location: """)
|
|||
if second == "":
|
||||
break
|
||||
choice = second
|
||||
publishDir = os.path.join(PUBLIC, choice)
|
||||
publishDir = os.path.join(config.PUBLIC, choice)
|
||||
|
||||
return choice
|
||||
|
||||
|
@ -936,10 +924,9 @@ def unpublish():
|
|||
'''
|
||||
remove user's published directory, if it exists. this should only remove the symlink in public_html.
|
||||
'''
|
||||
|
||||
dir = SETTINGS.get("publish dir")
|
||||
if dir:
|
||||
publishDir = os.path.join(PUBLIC, dir)
|
||||
directory = SETTINGS.get("publish dir")
|
||||
if directory:
|
||||
publishDir = os.path.join(config.PUBLIC, directory)
|
||||
subprocess.call(["rm", publishDir])
|
||||
|
||||
def update_publishing():
|
||||
|
@ -954,7 +941,7 @@ def update_publishing():
|
|||
newDir = select_publish_dir()
|
||||
SETTINGS.update({"publish dir": newDir})
|
||||
if oldDir:
|
||||
subprocess.call(["rm", os.path.join(PUBLIC, oldDir)])
|
||||
subprocess.call(["rm", os.path.join(config.PUBLIC, oldDir)])
|
||||
make_publish_dir(newDir)
|
||||
core.load_files()
|
||||
core.write("index.html")
|
||||
|
@ -969,21 +956,21 @@ 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")
|
||||
if not os.path.exists(config.WWW):
|
||||
subprocess.call(["mkdir", config.WWW])
|
||||
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(config.WWW, "index.html")])
|
||||
index = open(os.path.join(config.WWW, "index.html"), "w")
|
||||
index.write("<h1>ttbp blog placeholder</h1>")
|
||||
index.close()
|
||||
|
||||
publishDir = os.path.join(PUBLIC, dir)
|
||||
publishDir = os.path.join(config.PUBLIC, dir)
|
||||
if os.path.exists(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
|
||||
|
||||
|
@ -992,7 +979,7 @@ def build_mismatch():
|
|||
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):
|
||||
return False
|
||||
|
||||
|
@ -1018,7 +1005,7 @@ def switch_build(ver):
|
|||
print("\nswitching you over to the "+build+" version...\n")
|
||||
time.sleep(1)
|
||||
print("...")
|
||||
versionFile = os.path.join(PATH, "version")
|
||||
versionFile = os.path.join(config.PATH, "version")
|
||||
open(versionFile, "w").write(ver)
|
||||
time.sleep(1)
|
||||
#print("\nall good!\n")
|
||||
|
@ -1028,7 +1015,7 @@ def updated():
|
|||
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):
|
||||
return False
|
||||
|
||||
|
@ -1046,7 +1033,7 @@ def update_version():
|
|||
|
||||
global SETTINGS
|
||||
|
||||
versionFile = os.path.join(PATH, "version")
|
||||
versionFile = os.path.join(config.PATH, "version")
|
||||
|
||||
print("ttbp had some updates!")
|
||||
|
||||
|
@ -1063,22 +1050,22 @@ def update_version():
|
|||
|
||||
# change style.css location
|
||||
if core.publishing():
|
||||
if os.path.isfile(os.path.join(WWW, "style.css")):
|
||||
subprocess.call(["mv", os.path.join(WWW, "style.css"), CONFIG])
|
||||
if os.path.isfile(os.path.join(config.WWW, "style.css")):
|
||||
subprocess.call(["mv", os.path.join(config.WWW, "style.css"), config.USER_CONFIG])
|
||||
|
||||
# change www symlink
|
||||
if os.path.exists(WWW):
|
||||
subprocess.call(["rm", WWW])
|
||||
if os.path.exists(config.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):
|
||||
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
|
||||
core.load_files()
|
||||
|
@ -1088,7 +1075,7 @@ def update_version():
|
|||
print("\nnew feature!\n")
|
||||
SETTINGS.update({"publishing":select_publishing()})
|
||||
update_publishing()
|
||||
ttbprc = open(TTBPRC, "w")
|
||||
ttbprc = open(config.TTBPRC, "w")
|
||||
ttbprc.write(json.dumps(SETTINGS, sort_keys=True, indent=2, separators=(',',':')))
|
||||
ttbprc.close()
|
||||
|
||||
|
@ -1100,7 +1087,7 @@ def update_version():
|
|||
print("\nresetting your publishing settings...\n")
|
||||
SETTINGS.update({"publishing":select_publishing()})
|
||||
update_publishing()
|
||||
ttbprc = open(TTBPRC, "w")
|
||||
ttbprc = open(config.TTBPRC, "w")
|
||||
ttbprc.write(json.dumps(SETTINGS, sort_keys=True, indent=2, separators=(',',':')))
|
||||
ttbprc.close()
|
||||
|
||||
|
@ -1111,6 +1098,9 @@ you're all good to go, """+chatter.say("friend")+"""! please contact ~endorphant
|
|||
somehing strange happened to you during this update.
|
||||
""")
|
||||
|
||||
# TODO these conditionals will need to change if we increment the Y level
|
||||
# to 10.
|
||||
|
||||
# show patch notes
|
||||
#if userVersion != "0.9.0" and userVersion != "0.9.0b":
|
||||
if userVersion[0:5] < "0.9.0":
|
||||
|
@ -1138,6 +1128,16 @@ ver 0.9.2 features:
|
|||
* expanded menu for viewing your own feels (further
|
||||
features to be implemented)
|
||||
""")
|
||||
if userVersion[0:5] < "0.9.3":
|
||||
# version 0.9.3 patch notes
|
||||
print()
|
||||
print("""
|
||||
version 0.9.3 features:
|
||||
* ttbp is now packaged, making it easier to contribute to.
|
||||
* things should otherwise be the same!
|
||||
* check out https://github.com/modgethanc/ttbp if you'd like to contribute.
|
||||
* takes advantage of new /var/global
|
||||
""".lstrip())
|
||||
|
||||
#####
|
||||
|
|
@ -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
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
'''
|
||||
|
||||
import inflect
|
||||
import time
|
||||
import random
|
||||
import time
|
||||
|
||||
import colorama
|
||||
import inflect
|
||||
|
||||
## misc globals
|
||||
BACKS = ['back', 'b', 'q']
|
Loading…
Reference in New Issue