/
publish.sh
executable file
·189 lines (138 loc) · 5.04 KB
/
publish.sh
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
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
#!/bin/bash
set -e
read -p "Enter new version number:" VERSION
echo -e "npm package: generator-sudograph, prepare and publish"
cd generator-sudograph
sed -E -i "s/(\"version\": \")(.*)(\")/\1$VERSION\3/" package.json
npm install
cd generators/app/templates/canisters
cd frontend
sed -E -i "s/(\"sudograph\": \")(.*)(\")/\1$VERSION\3/" package.json
cd ..
cd graphql
sed -E -i "s/(^sudograph = \")(.*)(\")/\1$VERSION\3/" Cargo.toml
cd ..
cd playground
sed -E -i "s/(\"sudograph\": \")(.*)(\")/\1$VERSION\3/" package.json
cd ../../../../..
if [[ "$VERSION" == *"-beta."* ]];
then
npm publish --tag beta
else
npm publish
fi
# TODO instead of sleeping we could probably poll in a loop using some kind of npm API check
echo -e "sleeping for 30 seconds to ensure generator-sudograph is fully registered on npm"
sleep 30
cd ..
echo -e "npm package: sudograph, prepare and publish"
cd client
sed -E -i "s/(\"version\": \")(.*)(\")/\1$VERSION\3/" package.json
sed -E -i "s/(\"generator-sudograph\": \")(.*)(\")/\1$VERSION\3/" package.json
npm install
if [[ "$VERSION" == *"-beta."* ]];
then
npm publish --tag beta
else
npm publish
fi
cd ..
echo -e "example: basic"
cd examples/basic/canisters/graphql
sed -E -i "s/(^sudograph = \{ version = \")(.*)(\", path = \"\.\.\/\.\.\/\.\.\/\.\.\/\.\.\/sudograph\" \})/\1$VERSION\3/" Cargo.toml
cd ../frontend
sed -E -i "s/(\"sudograph\": \")(.*)(\")/\1$VERSION\3/" package.json
npm install
cd ../playground
sed -E -i "s/(\"sudograph\": \")(.*)(\")/\1$VERSION\3/" package.json
npm install
cd ../../../..
echo -e "example: files"
cd examples/files/canisters/graphql
sed -E -i "s/(^sudograph = \{ version = \")(.*)(\", path = \"\.\.\/\.\.\/\.\.\/\.\.\/\.\.\/sudograph\" \})/\1$VERSION\3/" Cargo.toml
cd ../files
sed -E -i "s/(\"sudograph\": \")(.*)(\")/\1$VERSION\3/" package.json
npm install
cd ../playground
sed -E -i "s/(\"sudograph\": \")(.*)(\")/\1$VERSION\3/" package.json
npm install
cd ../../../..
echo -e "example: intermediate"
cd examples/intermediate/canisters/graphql
sed -E -i "s/(^sudograph = \{ version = \")(.*)(\", path = \"\.\.\/\.\.\/\.\.\/\.\.\/\.\.\/sudograph\" \})/\1$VERSION\3/" Cargo.toml
cd ../playground
sed -E -i "s/(\"sudograph\": \")(.*)(\")/\1$VERSION\3/" package.json
npm install
cd ../../../..
echo -e "example: motoko-client"
cd examples/motoko-client/canisters/graphql
sed -E -i "s/(^sudograph = \{ version = \")(.*)(\", path = \"\.\.\/\.\.\/\.\.\/\.\.\/\.\.\/sudograph\" \})/\1$VERSION\3/" Cargo.toml
cd ../playground
sed -E -i "s/(\"sudograph\": \")(.*)(\")/\1$VERSION\3/" package.json
npm install
cd ../../../..
echo -e "example: motoko-custom-resolvers"
cd examples/motoko-custom-resolvers/canisters/graphql
sed -E -i "s/(^sudograph = \{ version = \")(.*)(\", path = \"\.\.\/\.\.\/\.\.\/\.\.\/\.\.\/sudograph\" \})/\1$VERSION\3/" Cargo.toml
cd ../playground
sed -E -i "s/(\"sudograph\": \")(.*)(\")/\1$VERSION\3/" package.json
npm install
cd ../../../..
echo -e "example: rust-client"
cd examples/rust-client/canisters/graphql
sed -E -i "s/(^sudograph = \{ version = \")(.*)(\", path = \"\.\.\/\.\.\/\.\.\/\.\.\/\.\.\/sudograph\" \})/\1$VERSION\3/" Cargo.toml
cd ../playground
sed -E -i "s/(\"sudograph\": \")(.*)(\")/\1$VERSION\3/" package.json
npm install
cd ../../../..
echo -e "example: rust-custom-resolvers"
cd examples/rust-custom-resolvers/canisters/graphql
sed -E -i "s/(^sudograph = \{ version = \")(.*)(\", path = \"\.\.\/\.\.\/\.\.\/\.\.\/\.\.\/sudograph\" \})/\1$VERSION\3/" Cargo.toml
cd ../playground
sed -E -i "s/(\"sudograph\": \")(.*)(\")/\1$VERSION\3/" package.json
npm install
cd ../../../..
echo -e "canister: The Sudograph Book"
npm run book-build
cd sudograph-book
dfx deploy --network ic
cd ..
echo -e "crate: sudodb, prepare"
cd sudodb
sed -E -i "s/(^version = \")(.*)(\")/\1$VERSION\3/" Cargo.toml
cargo build
cd ..
echo -e "crate: sudograph-generate, prepare"
cd sudograph-generate
sed -E -i "s/(^version = \")(.*)(\")/\1$VERSION\3/" Cargo.toml
cargo build
cd ..
echo -e "crate: sudograph, prepare"
sed -E -i "s/(^version = \")(.*)(\")/\1$VERSION\3/" Cargo.toml
sed -E -i "s/(^sudodb = \{ version = \")(.*)(\", path = \"\.\/sudodb\" \})/\1$VERSION\3/" Cargo.toml
sed -E -i "s/(^sudograph-generate = \{ version = \")(.*)(\", path = \"\.\/sudograph-generate\" \})/\1$VERSION\3/" Cargo.toml
cargo build
echo -e "commit and push final changes"
git add --all
git commit -am "updating to version $VERSION"
git push origin main
echo -e "create and push git tag"
git tag v$VERSION
git push origin v$VERSION
echo -e "crate: sudodb, publish"
cd sudodb
cargo publish --dry-run
cargo publish
cd ..
echo -e "crate: sudograph-generate, publish"
cd sudograph-generate
cargo publish --dry-run
cargo publish
cd ..
# TODO instead of sleeping we could probably poll in a loop using some kind of crates.io API check
echo -e "sleeping for 30 seconds before final publish to ensure sudodb and sudograph-generate crates are fully registered on crates.io"
sleep 30
echo -e "crate: sudograph, publish"
cargo publish --dry-run
cargo publish
echo -e "All packages, crates, and canisters have been published to version $VERSION"