Skip to content

Commit d4d6412

Browse files
author
Jianghao Lu
committed
Update publish tool to use Python
1 parent a20a39e commit d4d6412

File tree

2 files changed

+100
-55
lines changed

2 files changed

+100
-55
lines changed

tools/getPackages.sh

Lines changed: 0 additions & 55 deletions
This file was deleted.

tools/publish.py

Lines changed: 100 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,100 @@
1+
#!/usr/bin/python
2+
import sys
3+
import os
4+
import fnmatch
5+
import shutil
6+
import re
7+
8+
9+
def main(argv):
10+
# validation
11+
if len(argv) < 4:
12+
print "Usage: " + get_usage()
13+
exit(1)
14+
# figure out source dir
15+
folder = os.path.dirname(os.path.realpath(__file__))
16+
if len(argv) == 5:
17+
folder = argv[4]
18+
if not os.path.isdir(folder):
19+
print "Cannot find directory " + folder
20+
exit(1)
21+
folder = folder.strip('/')
22+
# make working dir
23+
version = argv[1]
24+
working = folder + "/" + version
25+
if os.path.exists(working):
26+
print "Cowardly exiting because " + working + " already exists"
27+
exit(1)
28+
os.mkdir(working)
29+
# copy over all jars
30+
for i in get_jars(folder):
31+
shutil.copy(i, working)
32+
# copy over all poms
33+
pkgs = []
34+
for i in get_poms(folder):
35+
assert isinstance(i, str)
36+
parts = i.rsplit("\\")
37+
pkg_name = parts[len(parts) - 2]
38+
if len(parts) == len(folder.rsplit("\\")) + 1:
39+
# root folder
40+
shutil.copyfile(i, "%s/%s-%s.pom" % (working, "azure-bom", version))
41+
pkg_name = "azure-bom"
42+
elif pkg_name == "azure":
43+
# parent folder
44+
shutil.copyfile(i, "%s/%s-%s.pom" % (working, "azure-parent", version))
45+
pkg_name = "azure-parent"
46+
else:
47+
shutil.copyfile(i, "%s/%s-%s.pom" % (working, pkg_name, version))
48+
pkgs.append(pkg_name)
49+
# filter out packages
50+
print "Publishing the following: "
51+
to_pub = []
52+
for pkg in pkgs:
53+
if re.match(argv[3], pkg) is not None:
54+
to_pub.append(os.path.join(working, pkg))
55+
print pkg
56+
if len(to_pub) == 0:
57+
print "No compiled package matches the regex. Exiting."
58+
exit(1)
59+
for pkg in to_pub:
60+
cmd = "mvn gpg:sign-and-deploy-file"
61+
cmd += " -Durl=https://oss.sonatype.org/service/local/staging/deploy/maven2/"
62+
cmd += " -DrepositoryId=sonatype-nexus-staging -DpomFile=%s-%s.pom" % (pkg, version)
63+
assert isinstance(pkg, str)
64+
if pkg.endswith("azure-parent") or pkg.endswith("azure-bom"):
65+
cmd += " -Dfile=%s-%s.pom -Dgpg.passphrase=%s" % (pkg, version, argv[2])
66+
os.system(cmd)
67+
else:
68+
os.system(cmd + " -Dfile=%s-%s.jar -Dgpg.passphrase=%s" % (pkg, version, argv[2]))
69+
os.system(cmd + " -Dfile=%s-%s-javadoc.jar -Dgpg.passphrase=%s" % (pkg, version, argv[2]))
70+
os.system(cmd + " -Dfile=%s-%s-sources.jar -Dgpg.passphrase=%s" % (pkg, version, argv[2]))
71+
print "Finished."
72+
73+
74+
def mvn_package():
75+
cmd = "mvn package source:jar javadoc:jar"
76+
print "Shell: " + cmd
77+
os.system(cmd)
78+
79+
80+
def get_poms(folder):
81+
matches = []
82+
for root, dirnames, filenames in os.walk(folder):
83+
for filename in fnmatch.filter(filenames, 'pom.xml'):
84+
matches.append(os.path.join(root, filename))
85+
return matches
86+
87+
88+
def get_jars(folder):
89+
matches = []
90+
for root, dirnames, filenames in os.walk(folder):
91+
for filename in fnmatch.filter(filenames, '*.jar'):
92+
matches.append(os.path.join(root, filename))
93+
return matches
94+
95+
96+
def get_usage():
97+
return "publish.py version gpg_passphrase package_grep_string [root_directory]"
98+
99+
100+
main(sys.argv)

0 commit comments

Comments
 (0)