forked from smooth80/defold
-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathcopy_from_private_repo.py
107 lines (81 loc) · 2.8 KB
/
copy_from_private_repo.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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#!/usr/bin/env python
import os, sys, shutil, subprocess
PLATFORMS=[]
for p in ['nx64', 'ps4']:
PLATFORMS.append(p)
PLATFORMS.append(p.upper())
FILE_PATTERNS=[]
FILE_PATTERNS.append('private.py')
FILE_PATTERNS.append('private.sh')
FILE_PATTERNS.append('private.yml')
# Until we've move the platform specific changes to _<platform>.appmanifest
FILE_PATTERNS.append('private.appmanifest')
FILE_PATTERNS.append('.appmanifest')
FILE_PATTERNS.append('SwitchBundler.java') # todo: Rename to "NX64Bundler.java"
FILE_PATTERNSS.append('switch')
FILE_PATTERNS.append('meta.edn') # TODO: create meta.edn plugins for extensions
FILE_PATTERNS.append('meta.properties') # TODO: create meta.edn plugins for extensions
FILE_PATTERNS.append('build.xml') # TODO: make a strategy here
FILE_PATTERNS.append('com.dynamo.cr.bob') # TODO: until we've fixed the above bob cases
LOCAL_PATTERNS=[]
LOCAL_PATTERNS.append('.pyc')
LOCAL_PATTERNS.append('.git/')
LOCAL_PATTERNS.append('generated/')
LOCAL_PATTERNS.append('dist/')
LOCAL_PATTERNS.append('build/')
LOCAL_PATTERNS.append('editor/target/classes/')
LOCAL_PATTERNS.append('dynamo_home')
def is_local_file(path):
for pattern in LOCAL_PATTERNS:
if pattern in path:
return True
return False
def is_private_file(path):
for pattern in PLATFORMS+FILE_PATTERNS:
if pattern in path:
print "Skipping", path
return True
return False
def is_git_tracked(path, cwd):
#oldcwd = os.getcwd()
#os.chdir(cwd)
cmd = 'git ls-files --error-unmatch %s' % path
#r = os.system(cmd)
process = subprocess.Popen(cmd.split(), cwd=cwd)
process.wait()
#output = process.communicate()[0]
return process.returncode == 0
#os.chdir(oldcwd)
#return r == 0
def copy_file(src, tgt):
dirname = os.path.dirname(tgt)
if not os.path.exists(dirname):
os.makedirs(dirname)
shutil.copy2(src, tgt)
def Usage():
print("Usage: ./copy_from_private_repo.py <src> <tgt>")
if __name__ == '__main__':
if len(sys.argv) < 3:
Usage()
exit(1)
src = sys.argv[1]
tgt = sys.argv[2]
for root, dirs, files in os.walk(src):
for f in files:
path = os.path.join(root, f)
path = path.replace('\\', '/')
if is_local_file(path):
continue
if is_private_file(path):
continue
relative_path = os.path.relpath(path, src)
relative_path = relative_path.replace('\\', '/')
tgtfile = tgt + '/' + relative_path
#print "path", path
#print "relative_path", relative_path
#print "tgtfile", tgtfile
if not is_git_tracked(relative_path, src):
continue
copy_file(path, tgtfile)
#exit(1)
print("Done!")