auto-clean newlines and spaces in repo/archive descriptions

This gives us flexibility in how the blocks of text can be formatted in
config.py, but also provides a more useful format for displaying since the
client can decide where to wrap the text.
This commit is contained in:
Hans-Christoph Steiner 2014-07-02 20:57:47 -04:00
parent c7962e7c6d
commit f34c842f55
3 changed files with 80 additions and 13 deletions

View File

@ -33,11 +33,12 @@ repo_maxage = 0
repo_url = "https://MyFirstFDroidRepo.org/fdroid/repo"
repo_name = "My First FDroid Repo Demo"
repo_icon = "fdroid-icon.png"
repo_description = (
"This is a repository of apps to be used with FDroid. Applications in this "
+ "repository are either official binaries built by the original application "
+ "developers, or are binaries built from source by the admin of f-droid.org "
+ "using the tools on https://gitlab.com/u/fdroid.")
repo_description = """
This is a repository of apps to be used with FDroid. Applications in this
repository are either official binaries built by the original application
developers, or are binaries built from source by the admin of f-droid.org
using the tools on https://gitlab.com/u/fdroid.
"""
# As above, but for the archive repo.
# archive_older sets the number of versions kept in the main repo, with all
@ -47,9 +48,9 @@ archive_older = 3
archive_url = "https://f-droid.org/archive"
archive_name = "My First FDroid Archive Demo"
archive_icon = "fdroid-icon.png"
archive_description = (
"The repository of older versions of applications from the main demo "
+ "repository.")
archive_description = """
The repository of older versions of applications from the main demo repository.
"""
# The ID of a GPG key for making detached signatures for apks. Optional.

View File

@ -62,11 +62,12 @@ def get_default_config():
'repo_url': "https://MyFirstFDroidRepo.org/fdroid/repo",
'repo_name': "My First FDroid Repo Demo",
'repo_icon': "fdroid-icon.png",
'repo_description': (
"This is a repository of apps to be used with FDroid. Applications in this "
+ "repository are either official binaries built by the original application "
+ "developers, or are binaries built from source by the admin of f-droid.org "
+ "using the tools on https://gitlab.com/u/fdroid."),
'repo_description': '''
This is a repository of apps to be used with FDroid. Applications in this
repository are either official binaries built by the original application
developers, or are binaries built from source by the admin of f-droid.org
using the tools on https://gitlab.com/u/fdroid.
''',
'archive_older': 0,
}
@ -163,6 +164,10 @@ def read_config(opts, config_file='config.py'):
if k in config:
write_password_file(k)
for k in ["repo_description", "archive_description"]:
if k in config:
config[k] = clean_description(config[k])
# since this is used with rsync, where trailing slashes have meaning,
# ensure there is always a trailing slash
if 'serverwebroot' in config:
@ -290,6 +295,19 @@ def has_extension(filename, extension):
apk_regex = None
def clean_description(description):
'Remove unneeded newlines and spaces from a block of description text'
returnstring = ''
# this is split up by paragraph to make removing the newlines easier
for paragraph in re.split(r'\n\n', description):
paragraph = re.sub('\r', '', paragraph)
paragraph = re.sub('\n', ' ', paragraph)
paragraph = re.sub(' {2,}', ' ', paragraph)
paragraph = re.sub('^\s*(\w)', r'\1', paragraph)
returnstring += paragraph + '\n\n'
return returnstring.rstrip('\n')
def apknameinfo(filename):
global apk_regex
filename = os.path.basename(filename)

48
tests/description-parsing.py Executable file
View File

@ -0,0 +1,48 @@
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
import os
import sys
sys.path.insert(1, os.path.join(os.getcwd(), '..', 'fdroidserver'))
import common
config = common.get_default_config()
testtext = '''
This is a block of text that has been wrapped to fit nicely in PEP8 style:
GnuPrivacyGuard extends the gpgcli command line tool to bring an integrated
privacy engine to your Android. It gives you command line access to the entire
GnuPG suite of encryption software. It also serves as the test bed for
complete Android integration for all of GnuPG's crypto services, including
OpenPGP, symmetric encryption, and more.
GPG is GNUs tool for end-to-end secure communication and encrypted data
storage. This trusted protocol is the free software alternative to PGP. This
app is built upon GnuPG 2.1, the new modularized version of GnuPG that now
supports S/MIME.
GPG aims to provide an integrated experience, so clicking on PGP files should
"just work". You can also share files to GPG to encrypt them. GPG will also
respond when you click on a PGP fingerprint URL (one that starts with
openpgp4fpr:).
Before using GPG, be sure to launch the app and let it finish its installation
process. Once it has completed, then you're ready to use it. The easiest way
to get started with GPG is to install [[jackpal.androidterm]]. GPG will
automatically configure Android Terminal Emulator as long as you have the
"Allow PATH extensions" settings enabled.
'''
archive_description = """
The repository of older versions of applications from the main demo repository.
"""
print('\n\n\n----------------------------------------------------')
print(common.clean_description(testtext))
print('\n\n\n----------------------------------------------------')
print(common.clean_description(archive_description))
print('\n\n\n----------------------------------------------------')
print(common.clean_description(config['repo_description']))