From 5c1803aaf855c1394af3dfbb0accca937aeed10b Mon Sep 17 00:00:00 2001
From: jobevers <jobevers@users.noreply.github.com>
Date: Wed, 22 Feb 2017 11:52:46 -0600
Subject: [PATCH] Misc release imrovements

* force submodule updates
* missing changelog is now only a warning
* allow push to be skipped
---
 release.py | 23 +++++++++++++++++------
 1 file changed, 17 insertions(+), 6 deletions(-)

diff --git a/release.py b/release.py
index 28377c56d..c77324af9 100644
--- a/release.py
+++ b/release.py
@@ -34,6 +34,9 @@ def main():
     parser.add_argument("--branch", help="branch to use for each repo; useful for testing")
     parser.add_argument("--last-release")
     parser.add_argument("--skip-sanity-checks", action="store_true")
+    parser.add_argument("--require-changelog", action="store_true")
+    parser.add_argument("--skip-push", action="store_true",
+                        help="Set to not push changes to remote repo")
     args = parser.parse_args()
 
     base = git.Repo(os.getcwd())
@@ -61,12 +64,12 @@ def main():
     # our last release, see what commit we were on, and then compare that to
     # current
     base.git.checkout(last_release)
-    base.submodule_update()
+    base.git.submodule('update')
     for repo in repos:
         repo.save_commit()
 
     base.git.checkout(branch)
-    base.submodule_update()
+    base.git.submodule('update')
 
     changelogs = {}
 
@@ -76,7 +79,11 @@ def main():
         if repo.has_changes():
             entry = repo.get_changelog_entry()
             if not entry:
-                raise Exception('Changelog is missing for {}'.format(repo.name))
+                msg = 'Changelog entry is missing for {}'.format(repo.name)
+                if args.require_changelog:
+                    raise Exception(msg)
+                else:
+                    logging.warning(msg)
             else:
                 changelogs[repo.name] = entry.strip()
         else:
@@ -101,9 +108,13 @@ def main():
     auth.get_repo('lbryio/lbrynet-daemon').create_git_release(
         current_tag, current_tag, lbrynet_daemon_release_msg, draft=True)
 
-    #for repo in repos:
-    #    repo.git.push(follow_tags=True)
-    #base.git.push(follow_tags=True, recurse_submodules='check')
+    if not args.skip_push:
+        for repo in repos:
+            repo.git.push(follow_tags=True)
+        base.git.push(follow_tags=True, recurse_submodules='check')
+    else:
+        logging.info('Skipping push; you will have to reset and delete tags if '
+                 'you want to run this script again')
 
 
 def get_branch(repo_name, override=None):