FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
pre-commit/testing/make-archives at v5-install · pre-commit/pre-commit · GitHub
pre-commit
pre-commit
Repository navigation
Code
Issues
17
(17)
Pull requests
8
(8)
Actions
Security and quality
Insights
Expand file tree
Breadcrumbs
pre-commit
/
testing
/
make-archives
Copy path
More file actions
More file actions
Latest commit
History
History
History
executable file
·
83 lines (65 loc) · 2.58 KB
Breadcrumbs
pre-commit
/
testing
/
make-archives
Copy path
File metadata and controls
executable file
·
83 lines (65 loc) · 2.58 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
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
#!/usr/bin/env python3
from
__future__
import
annotations
import
argparse
import
gzip
import
os
.
path
import
shutil
import
subprocess
import
tarfile
import
tempfile
from
collections
.
abc
import
Sequence
# This is a script for generating the tarred resources for git repo
# dependencies. Currently it's just for "vendoring" ruby support packages.
REPOS
=
(
(
'rbenv'
,
'https://github.com/rbenv/rbenv'
,
'10e96bfc'
),
(
'ruby-build'
,
'https://github.com/rbenv/ruby-build'
,
'447468b1'
),
(
'ruby-download'
,
'https://github.com/garnieretienne/rvm-download'
,
'09bd7c6'
,
),
)
def
reset
(
tarinfo
:
tarfile
.
TarInfo
)
->
tarfile
.
TarInfo
:
tarinfo
.
uid
=
tarinfo
.
gid
=
0
tarinfo
.
uname
=
tarinfo
.
gname
=
'root'
tarinfo
.
mtime
=
0
return
tarinfo
def
make_archive
(
name
:
str
,
repo
:
str
,
ref
:
str
,
destdir
:
str
)
->
str
:
output_path
=
os
.
path
.
join
(
destdir
,
f'
{
name
}
.tar.gz'
)
with
tempfile
.
TemporaryDirectory
()
as
tmpdir
:
# this ensures that the root directory has umask permissions
gitdir
=
os
.
path
.
join
(
tmpdir
,
'root'
)
# Clone the repository to the temporary directory
subprocess
.
check_call
((
'git'
,
'clone'
,
repo
,
gitdir
))
subprocess
.
check_call
((
'git'
,
'-C'
,
gitdir
,
'checkout'
,
ref
))
# We don't want the '.git' directory
# It adds a bunch of size to the archive and we don't use it at
# runtime
shutil
.
rmtree
(
os
.
path
.
join
(
gitdir
,
'.git'
))
arcs
=
[(
name
,
gitdir
)]
for
root
,
dirs
,
filenames
in
os
.
walk
(
gitdir
):
for
filename
in
dirs
+
filenames
:
abspath
=
os
.
path
.
abspath
(
os
.
path
.
join
(
root
,
filename
))
relpath
=
os
.
path
.
relpath
(
abspath
,
gitdir
)
arcs
.
append
((
os
.
path
.
join
(
name
,
relpath
),
abspath
))
arcs
.
sort
()
with
gzip
.
GzipFile
(
output_path
,
'wb'
,
mtime
=
0
)
as
gzipf
:
with
tarfile
.
open
(
fileobj
=
gzipf
,
mode
=
'w'
)
as
tf
:
for
arcname
,
abspath
in
arcs
:
tf
.
add
(
abspath
,
arcname
=
arcname
,
recursive
=
False
,
filter
=
reset
,
)
return
output_path
def
main
(
argv
:
Sequence
[
str
]
|
None
=
None
)
->
int
:
parser
=
argparse
.
ArgumentParser
()
parser
.
add_argument
(
'--dest'
,
default
=
'pre_commit/resources'
)
args
=
parser
.
parse_args
(
argv
)
for
archive_name
,
repo
,
ref
in
REPOS
:
print
(
f'Making
{
archive_name
}
.tar.gz for
{
repo
}
@
{
ref
}
'
)
make_archive
(
archive_name
,
repo
,
ref
,
args
.
dest
)
return
0
if
__name__
==
'__main__'
:
raise
SystemExit
(
main
())
Back
|
FazBrowse Home
|
New Git URL