aboutsummaryrefslogtreecommitdiffstats
path: root/python/fatcat_export.py
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@robocracy.org>2018-09-09 10:10:42 -0700
committerBryan Newbold <bnewbold@robocracy.org>2018-09-09 10:10:42 -0700
commitb15eff77fdb7974ce2bf3c2e44c8edc354f9f452 (patch)
tree5bccb9ff2633eb35dc00babc0b2dd1842f02e49b /python/fatcat_export.py
parent419bddcb0377e82e7177356350d35bf84b3e80d8 (diff)
parenta29beab0683d77086cc1b431779d0540dc5a9b49 (diff)
downloadfatcat-b15eff77fdb7974ce2bf3c2e44c8edc354f9f452.tar.gz
fatcat-b15eff77fdb7974ce2bf3c2e44c8edc354f9f452.zip
Merge branch 'http-verbs' into cockroach
Manually merged conflicts: rust/migrations/2018-05-12-001226_init/up.sql rust/src/api_server.rs rust/src/database_schema.rs
Diffstat (limited to 'python/fatcat_export.py')
-rwxr-xr-xpython/fatcat_export.py72
1 files changed, 72 insertions, 0 deletions
diff --git a/python/fatcat_export.py b/python/fatcat_export.py
new file mode 100755
index 00000000..6c4502af
--- /dev/null
+++ b/python/fatcat_export.py
@@ -0,0 +1,72 @@
+#!/usr/bin/env python3
+
+import sys
+import json
+import argparse
+import fatcat_client
+from fatcat_client.rest import ApiException
+from fatcat.fcid import uuid2fcid
+
+def run_export_releases(args):
+ conf = fatcat_client.Configuration()
+ conf.host = args.host_url
+ api = fatcat_client.DefaultApi(fatcat_client.ApiClient(conf))
+
+ for line in args.ident_file:
+ ident = uuid2fcid(line.split()[0])
+ release = api.get_release(id=ident, expand="all")
+ args.json_output.write(json.dumps(release.to_dict()) + "\n")
+
+def run_export_changelog(args):
+ conf = fatcat_client.Configuration()
+ conf.host = args.host_url
+ api = fatcat_client.DefaultApi(fatcat_client.ApiClient(conf))
+
+ end = args.end
+ if end is None:
+ latest = api.get_changelog(limit=1)[0]
+ end = latest.index
+
+ for i in range(args.start, end):
+ entry = api.get_changelog_entry(id=i)
+ args.json_output.write(json.dumps(entry.to_dict()) + "\n")
+
+def main():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--debug',
+ action='store_true',
+ help="enable debugging interface")
+ parser.add_argument('--host-url',
+ default="http://localhost:9411/v0",
+ help="connect to this host/port")
+ subparsers = parser.add_subparsers()
+
+ sub_releases = subparsers.add_parser('releases')
+ sub_releases.set_defaults(func=run_export_releases)
+ sub_releases.add_argument('ident_file',
+ help="TSV list of fatcat release idents to dump",
+ default=sys.stdin, type=argparse.FileType('r'))
+ sub_releases.add_argument('json_output',
+ help="where to send output",
+ default=sys.stdout, type=argparse.FileType('w'))
+
+ sub_changelog = subparsers.add_parser('changelog')
+ sub_changelog.set_defaults(func=run_export_changelog)
+ sub_changelog.add_argument('--start',
+ help="index to start dumping at",
+ default=1, type=int)
+ sub_changelog.add_argument('--end',
+ help="index to stop dumping at (else detect most recent)",
+ default=None, type=int)
+ sub_changelog.add_argument('json_output',
+ help="where to send output",
+ default=sys.stdout, type=argparse.FileType('w'))
+
+ args = parser.parse_args()
+ if not args.__dict__.get("func"):
+ print("tell me what to do!")
+ sys.exit(-1)
+ args.func(args)
+
+if __name__ == '__main__':
+ main()