summaryrefslogtreecommitdiffstats
path: root/gd_diff.py
diff options
context:
space:
mode:
authorrsiddharth <s@ricketyspace.net>2016-11-13 21:10:36 +0000
committerrsiddharth <s@ricketyspace.net>2016-11-13 21:10:36 +0000
commitdef5342df23cb034db1f9e1c21ce2401b198dcdf (patch)
treedafcd91bb2114a9916345aed0cb1ab250a53278c /gd_diff.py
parent5428e3ac379727e1a4d1c279b940403e5d7898b0 (diff)
Re-arrange functions.
* gd_diff.py (save_gns_readme, slurp_gns_readme, slurp_all_gns_readmes) (readme_gns_readme, slurp_fields_from_readme): Re-arrange functions. * tests/test_gd_diff.py (test_config_dir, test_config_file) (test_read_config_file_fail, test_read_config_file_success) (test_pkgs_dir, test_mk_pkgs_list, test_readmes_dir, test_wiki_page_dir) (test_write_wiki_page, test_configured_p_no, test_configured_p_yes) (test_configure): Re-arrange test methods.
Diffstat (limited to 'gd_diff.py')
-rw-r--r--gd_diff.py196
1 files changed, 100 insertions, 96 deletions
diff --git a/gd_diff.py b/gd_diff.py
index 319cc2d..ac79d20 100644
--- a/gd_diff.py
+++ b/gd_diff.py
@@ -6,6 +6,7 @@
# gns-deb-diff is under the Public Domain. See
# <https://creativecommons.org/publicdomain/zero/1.0>
+import argparse
import json
import os
import re
@@ -19,6 +20,8 @@ from subprocess import run, PIPE
from bs4 import BeautifulSoup
+_version = '0.1.0dev0'
+
# list of recognized fields.
field_list = [
"Change-Type",
@@ -114,102 +117,6 @@ def get_packages(release):
return pkgs
-def save_gns_readme(content, release, pkg):
- """Save README.gNewsense locally.
-
- :param str content:
- Content of the README.gNewsense file.
- :param str release:
- Release name.
- :param str pkg:
- Package name.
- """
- # create gns_readme dir. for pkg.
- gns_readme_dir = path.join(readmes_dir(release), pkg, 'debian')
-
- try:
- os.makedirs(gns_readme_dir, exist_ok=True)
- except Exception as e:
- print("Error creating directory '%s'\n Error Info:\n %r" %
- (gns_readme_dir, e), file=sys.stderr)
- sys.exit(1)
-
- gns_readme = path.join(gns_readme_dir, 'README.gNewSense')
- write_file(gns_readme, content)
- print('Saved {}'.format(gns_readme))
-
-
-def slurp_gns_readme(release, pkg):
- """Read and save the README.gNewSense for `pkg` in `release`.
-
- """
- readme_url = readme_url_fmt.format(release, pkg)
- cmd = 'bzr cat {}'.format(readme_url)
- cp = execute(cmd, out=PIPE, err=PIPE)
-
- if(cp.returncode == 0):
- save_gns_readme(cp.stdout.decode(), release, pkg)
- return True
- else:
- print("README.gNewSense not found for package {}".format(pkg),
- file=sys.stderr)
- return False
-
-
-def slurp_all_gns_readmes(release, pkgs):
- """Read and save all README.gNewSense for `pkgs` in `release`.
-
- Returns list of packages in `pkgs` that does not have README.gNewSense.
- """
- pkgs_noreadmes = []
- for pkg in pkgs:
- slurped = slurp_gns_readme(release, pkg)
-
- if(not slurped):
- pkgs_noreadmes.append(pkg)
-
- return pkgs_noreadmes
-
-
-def read_gns_readme(release, pkg):
- """Returns content of README.gNewSense for `pkg`.
-
- If `README.gNewSense` does not exists for `pkg`, None is returned.
-
- """
- readme_path = path.join(readmes_dir(release), pkg, 'debian',
- 'README.gNewSense')
-
- if not path.isfile(readme_path):
- return None
-
- readme_content = read_file(readme_path)
- return readme_content
-
-
-def slurp_fields_from_readme(content):
- """Returns dict containing fields slurped from `content`
-
- - If a field is not defined or if its value is empty in the
- `content`, then its corresponding value in the dict will be None.
-
- """
- field_values = {}
- for field in field_list:
- pattern = r'{}:[ ]*(.+)'.format(field)
- field_pattern = re.compile(pattern)
- field_match = field_pattern.search(content)
-
- if (field_match and
- field_match.group(1) and
- field_match.group(1).strip()):
- field_values[field] = field_match.group(1).strip()
- else:
- field_values[field] = None
-
- return field_values
-
-
def config_dir():
"""Return the gns-deb-diff config directory.
@@ -265,6 +172,7 @@ def mk_pkgs_list(release):
return pkgs_file
+
def readmes_dir(release):
"""Return readmes directory for `release`.
@@ -324,3 +232,99 @@ def configure():
json.dump(config, open(config_file(), 'w'))
os.chmod(config_file(), mode=0o600)
+
+
+def save_gns_readme(content, release, pkg):
+ """Save README.gNewsense locally.
+
+ :param str content:
+ Content of the README.gNewsense file.
+ :param str release:
+ Release name.
+ :param str pkg:
+ Package name.
+ """
+ # create gns_readme dir. for pkg.
+ gns_readme_dir = path.join(readmes_dir(release), pkg, 'debian')
+
+ try:
+ os.makedirs(gns_readme_dir, exist_ok=True)
+ except Exception as e:
+ print("Error creating directory '%s'\n Error Info:\n %r" %
+ (gns_readme_dir, e), file=sys.stderr)
+ sys.exit(1)
+
+ gns_readme = path.join(gns_readme_dir, 'README.gNewSense')
+ write_file(gns_readme, content)
+ print('Saved {}'.format(gns_readme))
+
+
+def slurp_gns_readme(release, pkg):
+ """Read and save the README.gNewSense for `pkg` in `release`.
+
+ """
+ readme_url = readme_url_fmt.format(release, pkg)
+ cmd = 'bzr cat {}'.format(readme_url)
+ cp = execute(cmd, out=PIPE, err=PIPE)
+
+ if(cp.returncode == 0):
+ save_gns_readme(cp.stdout.decode(), release, pkg)
+ return True
+ else:
+ print("README.gNewSense not found for package {}".format(pkg),
+ file=sys.stderr)
+ return False
+
+
+def slurp_all_gns_readmes(release, pkgs):
+ """Read and save all README.gNewSense for `pkgs` in `release`.
+
+ Returns list of packages in `pkgs` that does not have README.gNewSense.
+ """
+ pkgs_noreadmes = []
+ for pkg in pkgs:
+ slurped = slurp_gns_readme(release, pkg)
+
+ if(not slurped):
+ pkgs_noreadmes.append(pkg)
+
+ return pkgs_noreadmes
+
+
+def read_gns_readme(release, pkg):
+ """Returns content of README.gNewSense for `pkg`.
+
+ If `README.gNewSense` does not exists for `pkg`, None is returned.
+
+ """
+ readme_path = path.join(readmes_dir(release), pkg, 'debian',
+ 'README.gNewSense')
+
+ if not path.isfile(readme_path):
+ return None
+
+ readme_content = read_file(readme_path)
+ return readme_content
+
+
+def slurp_fields_from_readme(content):
+ """Returns dict containing fields slurped from `content`
+
+ - If a field is not defined or if its value is empty in the
+ `content`, then its corresponding value in the dict will be None.
+
+ """
+ field_values = {}
+ for field in field_list:
+ pattern = r'{}:[ ]*(.+)'.format(field)
+ field_pattern = re.compile(pattern)
+ field_match = field_pattern.search(content)
+
+ if (field_match and
+ field_match.group(1) and
+ field_match.group(1).strip()):
+ field_values[field] = field_match.group(1).strip()
+ else:
+ field_values[field] = None
+
+ return field_values