FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
setup-python/src/utils.ts at main · ExternalRepositories/setup-python · GitHub
Uh oh!
There was an error while loading.
Please reload this page
.
ExternalRepositories
/
setup-python
Public
forked from
actions/setup-python
Notifications
You must be signed in to change notification settings
Fork
0
Star
0
Code
Pull requests
0
Actions
Projects
Security and quality
0
Insights
Additional navigation options
Code
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
setup-python
/
src
/
utils.ts
Copy path
More file actions
More file actions
Latest commit
History
History
History
94 lines (82 loc) · 2.8 KB
Breadcrumbs
setup-python
/
src
/
utils.ts
Copy path
File metadata and controls
94 lines (82 loc) · 2.8 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
84
85
86
87
88
89
90
91
92
93
94
import
fs
from
'fs'
;
import
*
as
path
from
'path'
;
import
*
as
semver
from
'semver'
;
export
const
IS_WINDOWS
=
process
.
platform
===
'win32'
;
export
const
IS_LINUX
=
process
.
platform
===
'linux'
;
export
const
WINDOWS_ARCHS
=
[
'x86'
,
'x64'
]
;
export
const
WINDOWS_PLATFORMS
=
[
'win32'
,
'win64'
]
;
const
PYPY_VERSION_FILE
=
'PYPY_VERSION'
;
export
interface
IPyPyManifestAsset
{
filename
:
string
;
arch
:
string
;
platform
:
string
;
download_url
:
string
;
}
export
interface
IPyPyManifestRelease
{
pypy_version
:
string
;
python_version
:
string
;
stable
:
boolean
;
latest_pypy
:
boolean
;
files
:
IPyPyManifestAsset
[
]
;
}
/** create Symlinks for downloaded PyPy
* It should be executed only for downloaded versions in runtime, because
* toolcache versions have this setup.
*/
export
function
createSymlinkInFolder
(
folderPath
:
string
,
sourceName
:
string
,
targetName
:
string
,
setExecutable
=
false
)
{
const
sourcePath
=
path
.
join
(
folderPath
,
sourceName
)
;
const
targetPath
=
path
.
join
(
folderPath
,
targetName
)
;
if
(
fs
.
existsSync
(
targetPath
)
)
{
return
;
}
fs
.
symlinkSync
(
sourcePath
,
targetPath
)
;
if
(
!
IS_WINDOWS
&&
setExecutable
)
{
fs
.
chmodSync
(
targetPath
,
'755'
)
;
}
}
export
function
validateVersion
(
version
:
string
)
{
return
isNightlyKeyword
(
version
)
||
Boolean
(
semver
.
validRange
(
version
)
)
;
}
export
function
isNightlyKeyword
(
pypyVersion
:
string
)
{
return
pypyVersion
===
'nightly'
;
}
export
function
getPyPyVersionFromPath
(
installDir
:
string
)
{
return
path
.
basename
(
path
.
dirname
(
installDir
)
)
;
}
/**
* In tool-cache, we put PyPy to '<toolcache_root>/PyPy/<python_version>/x64'
* There is no easy way to determine what PyPy version is located in specific folder
* 'pypy --version' is not reliable enough since it is not set properly for preview versions
* "7.3.3rc1" is marked as '7.3.3' in 'pypy --version'
* so we put PYPY_VERSION file to PyPy directory when install it to VM and read it when we need to know version
* PYPY_VERSION contains exact version from 'versions.json'
*/
export
function
readExactPyPyVersionFile
(
installDir
:
string
)
{
let
pypyVersion
=
''
;
let
fileVersion
=
path
.
join
(
installDir
,
PYPY_VERSION_FILE
)
;
if
(
fs
.
existsSync
(
fileVersion
)
)
{
pypyVersion
=
fs
.
readFileSync
(
fileVersion
)
.
toString
(
)
;
}
return
pypyVersion
;
}
export
function
writeExactPyPyVersionFile
(
installDir
:
string
,
resolvedPyPyVersion
:
string
)
{
const
pypyFilePath
=
path
.
join
(
installDir
,
PYPY_VERSION_FILE
)
;
fs
.
writeFileSync
(
pypyFilePath
,
resolvedPyPyVersion
)
;
}
/**
* Python version should be specified explicitly like "x.y" (2.7, 3.6, 3.7)
* "3.x" or "3" are not supported
* because it could cause ambiguity when both PyPy version and Python version are not precise
*/
export
function
validatePythonVersionFormatForPyPy
(
version
:
string
)
{
const
re
=
/
^
\d
+
\.
\d
+
$
/
;
return
re
.
test
(
version
)
;
}
Back
|
FazBrowse Home
|
New Git URL