#!/usr/bin/env python
# Need to suppress all exceptions.
# pylint: disable-msg=W0702
""" Program to print an fms/freemail signature string with embedded
repo update information.
Copyright (C) 2009 Darrell Karbott
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either
version 2.0 of the License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
General Public License for more details.
You should have received a copy of the GNU General Public
License along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Author: djk@isFiaD04zgAgnrEC5XJt1i4IE7AkNPqhBG5bONi6Yks
This program has no command line interface.
You must modify the variables at the top of the file.
"""
import os
from fcpclient import get_usk_hash
from config import Config, DEFAULT_CFG_PATH
from fms import to_msg_string
# The maximum number of updates to include.
MAX_UPDATES = 4 # == 67 chars
# The full path to your .infocalypse / infocalypse.ini
# file. Should work for the default location.
CFG_PATH = os.path.expanduser(DEFAULT_CFG_PATH)
# The static part of your sig message with no trailing '\n'
STATIC_TEXT = ('Incremental hg repos in Freenet (Not pyfreenethg!):\n'
+ 'USK@-bk9znYylSCOEDuSWAvo5m72nUeMxKkDmH3nIqAeI-0,'
+ 'qfu5H3FZsZ-5rfNBY-jQHS5Ke7AT2PtJWd13IrPZjcg,'
+ 'AQACAAE/feral_codewright/12/infocalypse_howto.html')
# Your repo Request (not Insert!) URIs go here:
#
# The versions don't matter, they are read from your .infocalpse file.
# Hmmm... using request uris means you can broadcast information about
# repos you have pulled but didn't insert.
REPO_USKS = ('USK@kRM~jJVREwnN2qnA8R0Vt8HmpfRzBZ0j4rHC2cQ-0hw,'
+ '2xcoQVdQLyqfTpF2DpkdUIbHFCeL4W~2X1phUYymnhM,'
+ 'AQACAAE/fred_staging.R1/1',
'USK@kRM~jJVREwnN2qnA8R0Vt8HmpfRzBZ0j4rHC2cQ-0hw,'
+ '2xcoQVdQLyqfTpF2DpkdUIbHFCeL4W~2X1phUYymnhM,'
+ 'AQACAAE/infocalypse.hgext.R1/12',
)
USK_HASHES = tuple([get_usk_hash(usk) for usk in REPO_USKS])
def print_updates():
""" Print a sig message with embedded update strings or nothing
at all if there's an error. """
try:
stored_cfg = Config.from_file(CFG_PATH)
updates = []
for usk_hash in USK_HASHES:
index = stored_cfg.get_index(usk_hash)
if index is None:
# Uncomment this and run from the command line if
# you get no output.
#print "No stored index for usk hash: ", usk_hash
continue
updates.append((usk_hash, index))
updates.sort()
# Hmmm... silently truncate
updates = updates[:MAX_UPDATES]
if len(updates) > 0:
print STATIC_TEXT
print to_msg_string(updates, None, ':')
except:
# Fail silently, rather than spewing garbage into sig.
return
if __name__ == "__main__":
print_updates()