mirror of
https://github.com/ScoopInstaller/Scoop.git
synced 2026-05-03 16:21:38 +00:00
1dbab1fee8
Related PRs: - #4531 @filmor -ac71fcc@niheaven - #4535 @rashil2000 - #4522 @pratikpc - #4550 @niheaven - #4528 @niheaven - #4532 @MrNuggelz - #4155 @MrNuggelz Co-authored-by: @rashil2000 - #4581 @niheaven -fb496c4@rashil2000 - #4543 @rashil2000 Co-authored-by: @niheaven - #4555 @rashil2000 -3c90d1a@rashil2000 -2ec00d5@rashil2000 - #4567 @rashil2000 -cbe29ed@rashil2000 - #4570 @niheaven - #4582 @niheaven - #4571 @niheaven - #3244 @nickbudi - #3821 @jfastnacht Co-authored-by: @rasa - #4578 @tukanos - #4579 @rashil2000 Co-authored-by: Hsiao-nan Cheung <niheaven@gmail.com> Co-authored-by: Rashil Gandhi <46838874+rashil2000@users.noreply.github.com> Co-authored-by: Jakub Čábera <cabera.jakub@gmail.com> Co-authored-by: Ross Smith II <ross@smithii.com> Co-authored-by: Benedikt Reinartz <filmor@gmail.com> Co-authored-by: Joris <MrNuggelz@users.noreply.github.com> Co-authored-by: Pratik Chowdhury <pratikc@live.co.uk> Co-authored-by: Rashil Gandhi <rashil2000@gmail.com> Co-authored-by: nickbudi <nickbudi@users.noreply.github.com> Co-authored-by: Julian <github@fastnacht.consulting> Co-authored-by: tukanos <patrik.svestka@gmail.com>
68 lines
1.4 KiB
PowerShell
68 lines
1.4 KiB
PowerShell
# Usage: scoop create <url>
|
|
# Summary: Create a custom app manifest
|
|
# Help: Create your own custom app manifest
|
|
param($url)
|
|
|
|
function create_manifest($url) {
|
|
$manifest = new_manifest
|
|
|
|
$manifest.url = $url
|
|
|
|
$url_parts = $null
|
|
try {
|
|
$url_parts = parse_url $url
|
|
} catch {
|
|
abort "Error: $url is not a valid URL"
|
|
}
|
|
|
|
$name = choose_item $url_parts 'App name'
|
|
$name = if ($name.Length -gt 0) {
|
|
$name
|
|
} else {
|
|
file_name ($url_parts | Select-Object -Last 1)
|
|
}
|
|
|
|
$manifest.version = choose_item $url_parts 'Version'
|
|
|
|
$manifest | ConvertTo-Json | Out-File -FilePath "$name.json" -Encoding ASCII
|
|
$manifest_path = Join-Path $pwd "$name.json"
|
|
Write-Host "Created '$manifest_path'."
|
|
}
|
|
|
|
function new_manifest() {
|
|
@{ 'homepage' = ''; 'license' = ''; 'version' = ''; 'url' = '';
|
|
'hash' = ''; 'extract_dir' = ''; 'bin' = ''; 'depends' = ''
|
|
}
|
|
}
|
|
|
|
function file_name($segment) {
|
|
$segment.substring(0, $segment.lastindexof('.'))
|
|
}
|
|
|
|
function parse_url($url) {
|
|
$uri = New-Object Uri $url
|
|
$uri.pathandquery.substring(1).split('/')
|
|
}
|
|
|
|
function choose_item($list, $query) {
|
|
for ($i = 0; $i -lt $list.count; $i++) {
|
|
$item = $list[$i]
|
|
Write-Host "$($i + 1)) $item"
|
|
}
|
|
$sel = Read-Host $query
|
|
|
|
if ($sel.trim() -match '^[0-9+]$') {
|
|
return $list[$sel - 1]
|
|
}
|
|
|
|
$sel
|
|
}
|
|
|
|
if (!$url) {
|
|
scoop help create
|
|
} else {
|
|
create_manifest $url
|
|
}
|
|
|
|
exit 0
|