-
Notifications
You must be signed in to change notification settings - Fork 0
/
workspace2repo.py
89 lines (75 loc) · 2.76 KB
/
workspace2repo.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
86
87
88
89
#!/usr/bin/env python 3
"""
workspace2repo.py:
Setup an AccuRev workspace to become a git repository. Adds, commits, and tags repository.
Example args:
--dirname C:\\repositories\\gitRepo
--tag ExampleTag
"""
import os
import getopt
import sys
import time
from subprocess import call
__author__ = "James Newkirk"
__copyright__ = "Copyright 2018, PTC, Inc."
ERR_PARSING_ARGS = 1 # Encounter an error parsing arguments
ERR_SETTING_WORKING_DIR = 2 # Encounter an error setting the working directory
ERR_GIT = 3 # Encounter an error calling a git command
ERR_UNKNOWN = 4 # An unknown error as occured
def parse_arguments(argv):
try:
print("Importing arguments")
opts, args = getopt.getopt(argv, "", ["dirname=",
"tag=",])
except Exception as e:
print(e)
sys.exit(ERR_PARSING_ARGS)
for opt, arg in opts:
if opt == '--dirname':
dirname = arg
elif opt == '--tag':
tag = arg
print("Finished importing arguments")
return {'dirname': dirname, 'tag': tag}
def gitCaller(cmd, dirname):
try:
returnCode = call(["git", "-C", dirname] + cmd)
if returnCode == 0:
print("Successfully executed command: git " + " ".join(cmd))
else:
print("Failed to execute command: git " + " ".join(cmd))
sys.exit(ERR_GIT)
except Exception as e:
print(e)
sys.exit(ERR_UNKNOWN)
# Take in path to workspace. Add and commit to git
def commitRepo(dirname, tag, message=""):
gitAdd = ["add", dirname]
gitCaller(gitAdd, dirname)
if tag == "":
gitCommit = ["commit", "--allow-empty", "-m", 'Added Maint', '--author="GeneralUser <GeneralUser@ptc.com>"']
elif tag == None:
gitCommit = ["commit", "--allow-empty", "-m", message, '--author="GeneralUser <GeneralUser@ptc.com>"']
else:
gitCommit = ["commit", "--allow-empty", "-m", 'Added ' + tag, '--author="GeneralUser <GeneralUser@ptc.com>"']
gitCaller(gitCommit, dirname)
# Add specified tag to repo
def addTag(tag, dirname):
if tag not in ["", None]:
gitTag = ["tag", tag]
gitCaller(gitTag, dirname)
# Take in path to workspace. Initialize, add, and commit to git. Add specified tag to repo
def main(dirname, tag, message):
print("Starting workspace2repo.py: %s" % time.strftime("%I:%M:%S"))
try:
commitRepo(dirname, tag, message)
addTag(tag, dirname)
except Exception as e:
print(e)
sys.exit(ERR_UNKNOWN)
finally:
print("Finishing workspace2repo.py: %s" % time.strftime("%I:%M:%S"))
if __name__ == '__main__':
arguments = parse_arguments(sys.argv[1:])
main(arguments['dirname'], arguments['tag'])