mirror of
https://github.com/chickensoft-games/setup-godot.git
synced 2025-08-14 12:55:08 +00:00
feat: add custom url
(cherry picked from commit f101ebc4a56111d275e0d1451cc0cf328155c73c)
This commit is contained in:
parent
300abc3218
commit
c78e5bc100
14
action.yml
14
action.yml
@ -11,7 +11,7 @@ inputs:
|
||||
Godot 4 version: e.g., 4.0.0-beta1, 4.0.0-beta.16, 4.0.0, etc. Must include major, minor, and patch (additional pre-release label is optional). Specify `global` or `global.json` to use the version from the project's global.json file.
|
||||
|
||||
```yaml
|
||||
- uses: chickensoft/setup-godot-action@v1
|
||||
- uses: Mimyr-Games-LTD/setup-godot-custom@v1
|
||||
with:
|
||||
version: global
|
||||
```
|
||||
@ -37,6 +37,18 @@ inputs:
|
||||
<Project Sdk="Godot.NET.Sdk/4.0.0"> <!-- BAD -->
|
||||
```
|
||||
required: true
|
||||
custom_url:
|
||||
description: >-
|
||||
Optional custom URL to download a custom Godot build. If set, the action will
|
||||
download and use this build instead of determining a version from `version`.
|
||||
Example:
|
||||
```yaml
|
||||
- uses: Mimyr-Games-LTD/setup-godot-custom@v1
|
||||
with:
|
||||
custom_url: 'https://example.com/my_custom_godot_build.zip'
|
||||
```
|
||||
required: false
|
||||
default: ''
|
||||
path:
|
||||
description: >-
|
||||
Path to install Godot to, relative to the current working directory of
|
||||
|
34
package-lock.json
generated
34
package-lock.json
generated
@ -16,7 +16,7 @@
|
||||
"normalize-path": "^3.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^20.5.7",
|
||||
"@types/node": "^20.17.10",
|
||||
"@typescript-eslint/parser": "^5.62.0",
|
||||
"@vercel/ncc": "^0.36.1",
|
||||
"eslint": "^8.48.0",
|
||||
@ -26,7 +26,7 @@
|
||||
"js-yaml": "^4.1.0",
|
||||
"prettier": "^2.8.8",
|
||||
"ts-jest": "^29.1.0",
|
||||
"typescript": "^5.2.0"
|
||||
"typescript": "^5.2.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@aashutoshrathi/word-wrap": {
|
||||
@ -1650,11 +1650,12 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/node": {
|
||||
"version": "20.9.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz",
|
||||
"integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==",
|
||||
"version": "20.17.10",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.10.tgz",
|
||||
"integrity": "sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"undici-types": "~5.26.4"
|
||||
"undici-types": "~6.19.2"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/node-fetch": {
|
||||
@ -6680,9 +6681,10 @@
|
||||
}
|
||||
},
|
||||
"node_modules/undici-types": {
|
||||
"version": "5.26.5",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
|
||||
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
|
||||
"version": "6.19.8",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
|
||||
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/update-browserslist-db": {
|
||||
"version": "1.0.10",
|
||||
@ -8265,11 +8267,11 @@
|
||||
"dev": true
|
||||
},
|
||||
"@types/node": {
|
||||
"version": "20.9.0",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz",
|
||||
"integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==",
|
||||
"version": "20.17.10",
|
||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-20.17.10.tgz",
|
||||
"integrity": "sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==",
|
||||
"requires": {
|
||||
"undici-types": "~5.26.4"
|
||||
"undici-types": "~6.19.2"
|
||||
}
|
||||
},
|
||||
"@types/node-fetch": {
|
||||
@ -11895,9 +11897,9 @@
|
||||
}
|
||||
},
|
||||
"undici-types": {
|
||||
"version": "5.26.5",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz",
|
||||
"integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA=="
|
||||
"version": "6.19.8",
|
||||
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
|
||||
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw=="
|
||||
},
|
||||
"update-browserslist-db": {
|
||||
"version": "1.0.10",
|
||||
|
@ -34,7 +34,7 @@
|
||||
"normalize-path": "^3.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/node": "^20.5.7",
|
||||
"@types/node": "^20.17.10",
|
||||
"@typescript-eslint/parser": "^5.62.0",
|
||||
"@vercel/ncc": "^0.36.1",
|
||||
"eslint": "^8.48.0",
|
||||
|
53
src/main.ts
53
src/main.ts
@ -21,11 +21,12 @@ async function run(platform: Platform): Promise<void> {
|
||||
.getInput('downloads-path')
|
||||
.replace(/\s/g, '')
|
||||
let version = core.getInput('version').replace(/\s/g, '')
|
||||
const customUrl = core.getInput('custom_url').trim()
|
||||
const useDotnet = core.getBooleanInput('use-dotnet')
|
||||
const binRelativePath = core.getInput('bin-path').replace(/\s/g, '')
|
||||
const godotSharpRelease = core.getBooleanInput('godot-sharp-release')
|
||||
const checkoutDirectory = process.env['GITHUB_WORKSPACE'] ?? ''
|
||||
const includeTemplates = core.getBooleanInput('include-templates')
|
||||
let includeTemplates = core.getBooleanInput('include-templates')
|
||||
const useCache = core.getBooleanInput('cache')
|
||||
|
||||
const userDir = os.homedir()
|
||||
@ -61,13 +62,38 @@ async function run(platform: Platform): Promise<void> {
|
||||
version = globalJson['msbuild-sdks']['Godot.NET.Sdk'] ?? ''
|
||||
}
|
||||
|
||||
// Compute derived information from Godot version.
|
||||
const versionName = getGodotFilenameFromVersionString(
|
||||
version,
|
||||
platform,
|
||||
useDotnet
|
||||
)
|
||||
const godotUrl = getGodotUrl(version, platform, useDotnet, false)
|
||||
// Определяем значения для godotUrl, versionName и exportTemplateUrl
|
||||
let versionName = ''
|
||||
let godotUrl = ''
|
||||
let exportTemplateUrl = ''
|
||||
|
||||
if (customUrl.length > 0) {
|
||||
// Если задан customUrl, используем его вместо вычислений по версии
|
||||
core.info(`😎 Using custom Godot build from ${customUrl}`)
|
||||
versionName = 'custom_godot'
|
||||
godotUrl = customUrl
|
||||
|
||||
// При использовании customUrl определить экспортные шаблоны нельзя (по умолчанию их нет)
|
||||
// Можно либо запретить, либо проигнорировать includeTemplates.
|
||||
// Тут просто отключаем.
|
||||
if (includeTemplates) {
|
||||
core.info(`⚠️ Templates are not supported with custom builds. Skipping templates.`)
|
||||
}
|
||||
includeTemplates = false
|
||||
exportTemplateUrl = ''
|
||||
} else {
|
||||
// Стандартная логика
|
||||
versionName = getGodotFilenameFromVersionString(
|
||||
version,
|
||||
platform,
|
||||
useDotnet
|
||||
)
|
||||
godotUrl = getGodotUrl(version, platform, useDotnet, false)
|
||||
exportTemplateUrl = includeTemplates
|
||||
? getGodotUrl(version, platform, useDotnet, true)
|
||||
: ''
|
||||
}
|
||||
|
||||
const godotDownloadPath = path.join(downloadsDir, `${versionName}.zip`)
|
||||
const godotInstallationPath = platform.getUnzippedPath(
|
||||
installationDir,
|
||||
@ -75,10 +101,6 @@ async function run(platform: Platform): Promise<void> {
|
||||
useDotnet
|
||||
)
|
||||
const binDir = path.join(userDir, binRelativePath)
|
||||
|
||||
const exportTemplateUrl = includeTemplates
|
||||
? getGodotUrl(version, platform, useDotnet, true)
|
||||
: ''
|
||||
const exportTemplatePath = includeTemplates
|
||||
? getExportTemplatePath(version, platform, useDotnet)
|
||||
: ''
|
||||
@ -174,7 +196,7 @@ async function run(platform: Platform): Promise<void> {
|
||||
core.info(`✅ Files shown`)
|
||||
core.endGroup()
|
||||
|
||||
if (includeTemplates) {
|
||||
if (includeTemplates && exportTemplateUrl) {
|
||||
core.startGroup(
|
||||
`📥 Downloading Export Templates to ${exportTemplateDownloadPath}...`
|
||||
)
|
||||
@ -210,10 +232,7 @@ async function run(platform: Platform): Promise<void> {
|
||||
exportTemplatePath
|
||||
)
|
||||
core.info(
|
||||
`✅ ${path.join(
|
||||
path.dirname(exportTemplateExtractedPath),
|
||||
'templates'
|
||||
)} moved to ${exportTemplatePath}`
|
||||
`✅ templates moved to ${exportTemplatePath}`
|
||||
)
|
||||
core.endGroup()
|
||||
|
||||
|
@ -285,7 +285,7 @@ export async function findExecutablesRecursively(
|
||||
} else {
|
||||
// Test if file is executable. GodotSharp.dll is always considered an
|
||||
// executable.
|
||||
let isExecutable = file.name === 'GodotSharp.dll' ? true : false
|
||||
let isExecutable = file.name === 'GodotSharp.dll'
|
||||
if (!isExecutable) {
|
||||
if (platform instanceof Windows) {
|
||||
// fs.constants.X_OK doesn't seem to work on Windows.
|
||||
|
Loading…
x
Reference in New Issue
Block a user