aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'repoman/lib')
-rw-r--r--repoman/lib/repoman/actions.py40
-rw-r--r--repoman/lib/repoman/copyrights.py10
2 files changed, 49 insertions, 1 deletions
diff --git a/repoman/lib/repoman/actions.py b/repoman/lib/repoman/actions.py
index 8e23322c8..9fe5f722e 100644
--- a/repoman/lib/repoman/actions.py
+++ b/repoman/lib/repoman/actions.py
@@ -151,10 +151,17 @@ the whole commit message to abort.
# Update copyright for new and changed files
year = time.strftime('%Y', time.gmtime())
+ updated_copyright = []
for fn in chain(mynew, mychanged):
if fn.endswith('.diff') or fn.endswith('.patch'):
continue
- update_copyright(fn, year, pretend=self.options.pretend)
+ if update_copyright(fn, year, pretend=self.options.pretend):
+ updated_copyright.append(fn)
+
+ if updated_copyright and not (
+ self.options.pretend or self.repo_settings.repo_config.thin_manifest):
+ for cp in sorted(self._vcs_files_to_cps(iter(updated_copyright))):
+ self._manifest_gen(cp)
myupdates, broken_changelog_manifests = self.changelogs(
myupdates, mymanifests, myremoved, mychanged, myautoadd,
@@ -230,6 +237,37 @@ the whole commit message to abort.
"\"If everyone were like you, I'd be out of business!\"\n")
return
+ def _vcs_files_to_cps(self, vcs_file_iter):
+ """
+ Iterate over the given modified file paths returned from the vcs,
+ and return a frozenset containing category/pn strings for each
+ modified package.
+
+ @param vcs_file_iter: file paths from vcs module
+ @type iter
+ @rtype: frozenset
+ @return: category/pn strings for each package.
+ """
+ return vcs_files_to_cps(
+ vcs_file_iter,
+ self.repo_settings.repodir,
+ self.scanner.repolevel,
+ self.scanner.reposplit,
+ self.scanner.categories)
+
+ def _manifest_gen(self, cp):
+ """
+ Generate manifest for a cp.
+
+ @param cp: category/pn string
+ @type str
+ @rtype: bool
+ @return: True if successful, False otherwise
+ """
+ self.repoman_settings["O"] = os.path.join(self.repo_settings.repodir, cp)
+ return not digestgen(
+ mysettings=self.repoman_settings,
+ myportdb=self.repo_settings.portdb)
def _suggest(self):
print()
diff --git a/repoman/lib/repoman/copyrights.py b/repoman/lib/repoman/copyrights.py
index 1eaaab660..275dcbc3f 100644
--- a/repoman/lib/repoman/copyrights.py
+++ b/repoman/lib/repoman/copyrights.py
@@ -67,6 +67,15 @@ def update_copyright(fn_path, year, pretend=False):
Files are read and written in binary mode, so that this function
will work correctly with files encoded in any character set, as
long as the copyright statements consist of plain ASCII.
+
+ @param fn_path: file path
+ @type str
+ @param year: current year
+ @type str
+ @param pretend: pretend mode
+ @type bool
+ @rtype: bool
+ @return: True if copyright update was needed, False otherwise
"""
try:
@@ -120,3 +129,4 @@ def update_copyright(fn_path, year, pretend=False):
else:
util.apply_stat_permissions(fn_path, fn_stat)
fn_hdl.close()
+ return difflines > 3