summaryrefslogtreecommitdiffstats
path: root/.github/workflows/docutils_setup.py
diff options
context:
space:
mode:
Diffstat (limited to '.github/workflows/docutils_setup.py')
-rwxr-xr-x.github/workflows/docutils_setup.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/.github/workflows/docutils_setup.py b/.github/workflows/docutils_setup.py
new file mode 100755
index 0000000..9d74522
--- /dev/null
+++ b/.github/workflows/docutils_setup.py
@@ -0,0 +1,56 @@
+#!/usr/bin/env python3
+"""Script to convert package setup to myst-docutils."""
+import sys
+
+import tomlkit
+
+
+def modify_toml(content: str) -> str:
+ """Modify `pyproject.toml`."""
+ doc = tomlkit.parse(content)
+
+ # change name of package
+ doc["project"]["name"] = "myst-docutils"
+
+ # move dependency on docutils and sphinx to extra
+ dependencies = []
+ sphinx_extra = []
+ for dep in doc["project"]["dependencies"]:
+ if dep.startswith("docutils") or dep.startswith("sphinx"):
+ sphinx_extra.append(dep)
+ else:
+ dependencies.append(dep)
+ doc["project"]["dependencies"] = dependencies
+ doc["project"]["optional-dependencies"]["sphinx"] = sphinx_extra
+
+ return tomlkit.dumps(doc)
+
+
+def modify_readme(content: str) -> str:
+ """Modify README.md."""
+ content = content.replace("myst-parser", "myst-docutils")
+ content = content.replace(
+ "# MyST-Parser",
+ "# MyST-Parser\n\nNote: myst-docutils is identical to myst-parser, "
+ "but without installation requirements on sphinx",
+ )
+ content = content.replace("myst-docutils.readthedocs", "myst-parser.readthedocs")
+ content = content.replace(
+ "readthedocs.org/projects/myst-docutils", "readthedocs.org/projects/myst-parser"
+ )
+ return content
+
+
+if __name__ == "__main__":
+ project_path = sys.argv[1]
+ readme_path = sys.argv[2]
+ with open(project_path) as f:
+ content = f.read()
+ content = modify_toml(content)
+ with open(project_path, "w") as f:
+ f.write(content)
+ with open(readme_path) as f:
+ content = f.read()
+ content = modify_readme(content)
+ with open(readme_path, "w") as f:
+ f.write(content)