chiark / gitweb /
Make write_metadata take a writer
authorDaniel Martí <mvdan@mvdan.cc>
Fri, 25 Sep 2015 05:27:38 +0000 (22:27 -0700)
committerDaniel Martí <mvdan@mvdan.cc>
Fri, 25 Sep 2015 05:38:33 +0000 (22:38 -0700)
This will let rewritemeta report format issues without writing to disk.

fdroidserver/checkupdates.py
fdroidserver/import.py
fdroidserver/metadata.py
fdroidserver/rewritemeta.py

index c57cd8bee00d654506d77d35d723f3788281d516..a6b001301de4af0650445d484afb6eef3c6b85c8 100644 (file)
@@ -505,7 +505,8 @@ def checkupdates_app(app, first=True):
 
     if commitmsg:
         metadatapath = os.path.join('metadata', app['id'] + '.txt')
-        metadata.write_metadata(metadatapath, app)
+        with open(metadatapath, 'w') as f:
+            metadata.write_metadata(f, app)
         if options.commit:
             logging.info("Commiting update for " + metadatapath)
             gitcmd = ["git", "commit", "-m", commitmsg]
index ce19bd543f1eaef4ce0458a811873d153c370cf4..9841c7a138a094f0ba13335b27d4ba119475d2ce 100644 (file)
@@ -248,7 +248,8 @@ def main():
         f.write(app['Repo Type'] + ' ' + app['Repo'])
 
     metadatapath = os.path.join('metadata', package + '.txt')
-    metadata.write_metadata(metadatapath, app)
+    with open(metadatapath, 'w') as f:
+        metadata.write_metadata(f, app)
     logging.info("Wrote " + metadatapath)
 
 
index e5ae6716a6d167bdcece3586544d6bfc8af498ee..530f135070bda67ae86031d0fc2eda8e1bbc3e3e 100644 (file)
@@ -1040,9 +1040,9 @@ def parse_txt_metadata(apps, metadatapath):
 
 # Write a metadata file.
 #
-# 'dest'    - The path to the output file
+# 'mf'      - Writer interface (file, StringIO, ...)
 # 'app'     - The app data
-def write_metadata(dest, app):
+def write_metadata(mf, app):
 
     def writecomments(key):
         written = 0
@@ -1073,7 +1073,6 @@ def write_metadata(dest, app):
         if value:
             writefield(field, value)
 
-    mf = open(dest, 'w')
     writefield_nonempty('Disabled')
     if app['AntiFeatures']:
         writefield('AntiFeatures')
@@ -1161,4 +1160,3 @@ def write_metadata(dest, app):
         writefield('No Source Since')
         mf.write('\n')
     writecomments(None)
-    mf.close()
index 47e478a4a13546787200112e5e7befa95d6fadcb..ecf685be4984b1f55a6031c9b933e0f2c2edaebd 100644 (file)
@@ -18,7 +18,6 @@
 # You should have received a copy of the GNU Affero General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-import os
 from argparse import ArgumentParser
 import logging
 import common
@@ -46,13 +45,14 @@ def main():
 
     for appid, app in apps.iteritems():
         metadatapath = app['metadatapath']
-        ext = os.path.splitext(metadatapath)[1][1:]
-        if ext == 'txt':
-            logging.debug("Rewriting " + metadatapath)
-            metadata.write_metadata(metadatapath, app)
-        else:
+        ext = common.get_extension(metadatapath)
+        if ext not in ['txt']:
             logging.info("Ignoring %s file at '%s'"
                          % (ext.upper(), metadatapath))
+            continue
+        logging.debug("Rewriting " + metadatapath)
+        with open(metadatapath, 'w') as f:
+            metadata.write_metadata(f, app)
 
     logging.debug("Finished.")