-
Notifications
You must be signed in to change notification settings - Fork 175
/
tasks.py
85 lines (67 loc) · 1.94 KB
/
tasks.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
"""
Deployment file to facilitate releases.
Copyright (c) Pymatgen Development Team.
Distributed under the terms of the MIT License.
"""
import json
import os
import webbrowser
import requests
from invoke import task
from monty.os import cd
from atomate import __version__
__author__ = "Shyue Ping Ong, Anubhav Jain"
__email__ = "[email protected]"
__date__ = "Sep 1, 2014"
@task
def make_doc(ctx):
with cd("docs_rst"):
ctx.run("sphinx-apidoc -o . -f ../atomate")
ctx.run("make html")
ctx.run("cp _static/* ../docs/html/_static")
with cd("docs"):
ctx.run("cp -r html/* .")
ctx.run("rm -r html")
ctx.run("rm -r doctrees")
# Avoid the use of jekyll so that _dir works as intended.
ctx.run("touch .nojekyll")
@task
def update_doc(ctx):
make_doc(ctx)
with cd("docs"):
ctx.run("git add .")
ctx.run(f'git commit -a -m "Update to v{__version__}"')
ctx.run("git push")
@task
def publish(ctx):
ctx.run("python setup.py release")
@task
def release_github(ctx):
payload = {
"tag_name": "v" + __version__,
"target_commitish": "main",
"name": "v" + __version__,
"body": "",
"draft": False,
"prerelease": False,
}
# For this to work properly, you need to go to your Github profile, generate
# a "Personal access token". Then do export GITHUB_RELEASES_TOKEN="xyz1234"
# (or add it to your bash_profile).
response = requests.post(
"https://api.github.com/repos/hackingmaterials/atomate/releases",
data=json.dumps(payload),
headers={"Authorization": "token " + os.environ["GITHUB_RELEASES_TOKEN"]},
)
print(response.text)
@task
def release(ctx, nosetest=False):
if nosetest:
ctx.run("nosetests")
publish(ctx)
update_doc(ctx)
release_github(ctx)
@task
def open_doc(ctx):
pth = os.path.abspath("docs/index.html")
webbrowser.open("file://" + pth)