aboutsummaryrefslogtreecommitdiffstats
path: root/python_openapi_client/codegen_python_client.sh
diff options
context:
space:
mode:
Diffstat (limited to 'python_openapi_client/codegen_python_client.sh')
-rwxr-xr-xpython_openapi_client/codegen_python_client.sh104
1 files changed, 104 insertions, 0 deletions
diff --git a/python_openapi_client/codegen_python_client.sh b/python_openapi_client/codegen_python_client.sh
new file mode 100755
index 00000000..c602bc19
--- /dev/null
+++ b/python_openapi_client/codegen_python_client.sh
@@ -0,0 +1,104 @@
+#!/bin/bash
+
+# This script re-generates the fatcat API client (fatcat-openapi-client) from the
+# swagger/openapi2 spec file, using automated tools ("codegen")
+
+set -exu
+set -o pipefail
+
+OUTPUT=`pwd`/codegen-out
+mkdir -p $OUTPUT
+# Strip tags, so entire API is under a single class
+cat ../fatcat-openapi2.yml | grep -v "TAGLINE$" > $OUTPUT/api.yml
+
+docker run \
+ -v $OUTPUT:/tmp/swagger/ \
+ swaggerapi/swagger-codegen-cli:v2.3.1 \
+ generate \
+ --lang python \
+ --input-spec /tmp/swagger/api.yml \
+ --output /tmp/swagger/ \
+ -DpackageName=fatcat_openapi_client
+
+sudo chown -R `whoami`:`whoami` $OUTPUT
+mkdir -p fatcat_openapi_client
+cp -r $OUTPUT/fatcat_openapi_client/* fatcat_openapi_client
+cp $OUTPUT/README.md README.md
+
+# fix an annoying/buggy __del__() in codegen
+patch -p0 << END_PATCH
+--- fatcat_openapi_client/api_client.py
++++ fatcat_openapi_client/api_client.py
+@@ -76,8 +76,11 @@ class ApiClient(object):
+ self.user_agent = 'Swagger-Codegen/1.0.0/python'
+
+ def __del__(self):
+- self.pool.close()
+- self.pool.join()
++ try:
++ self.pool.close()
++ self.pool.join()
++ except:
++ pass
+
+ @property
+ def user_agent(self):
+END_PATCH
+
+# I don't know what they were thinking with this TypeWithDefault stuff, but it
+# caused really gnarly config cross-contamination issues when running mulitple
+# clients in parallel.
+# See also: https://github.com/swagger-api/swagger-codegen/issues/9117
+patch -p0 << END_PATCH
+--- fatcat_openapi_client/configuration.py
++++ fatcat_openapi_client/configuration.py
+@@ -37,7 +37,7 @@ class TypeWithDefault(type):
+ cls._default = copy.copy(default)
+
+
+-class Configuration(six.with_metaclass(TypeWithDefault, object)):
++class Configuration(object):
+ """NOTE: This class is auto generated by the swagger code generator program.
+
+ Ref: https://github.com/swagger-api/swagger-codegen
+END_PATCH
+
+# fix circular import (release/file/fileset/webcapture)
+patch -p0 << END_PATCH
+--- fatcat_openapi_client/models/file_entity.py
++++ fatcat_openapi_client/models/file_entity.py
+@@ -17,7 +17,6 @@ import re # noqa: F401
+ import six
+
+ from fatcat_openapi_client.models.file_url import FileUrl # noqa: F401,E501
+-from fatcat_openapi_client.models.release_entity import ReleaseEntity # noqa: F401,E501
+
+
+ class FileEntity(object):
+--- fatcat_openapi_client/models/fileset_entity.py
++++ fatcat_openapi_client/models/fileset_entity.py
+@@ -18,7 +18,6 @@ import six
+
+ from fatcat_openapi_client.models.fileset_file import FilesetFile # noqa: F401,E501
+ from fatcat_openapi_client.models.fileset_url import FilesetUrl # noqa: F401,E501
+-from fatcat_openapi_client.models.release_entity import ReleaseEntity # noqa: F401,E501
+
+
+ class FilesetEntity(object):
+--- fatcat_openapi_client/models/webcapture_entity.py
++++ fatcat_openapi_client/models/webcapture_entity.py
+@@ -16,7 +16,6 @@ import re # noqa: F401
+
+ import six
+
+-from fatcat_openapi_client.models.release_entity import ReleaseEntity # noqa: F401,E501
+ from fatcat_openapi_client.models.webcapture_cdx_line import WebcaptureCdxLine # noqa: F401,E501
+ from fatcat_openapi_client.models.webcapture_url import WebcaptureUrl # noqa: F401,E501
+END_PATCH
+
+# these tests are basically no-ops
+mkdir -p tests/codegen
+cp -r $OUTPUT/test/* tests/codegen
+
+# ooo, this makes me nervous
+rm -rf $OUTPUT