diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..6b0f929 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,7 @@ +[*] +indent_style = tab +indent_size = 4 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +end_of_line = crlf diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..662a152 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,4 @@ +# Since Scoop is a Windows-only tool, we can safely use CRLF line endings for all text files. +# If Git decides that the content is text, its line endings will be normalized to CRLF in the working tree on checkout. +# In the Git index/repository the files will always be stored with LF line endings. This is fine. +* text=auto eol=crlf diff --git a/.github/ISSUE_TEMPLATE/bug-report.yml b/.github/ISSUE_TEMPLATE/bug-report.yml new file mode 100644 index 0000000..9f313b0 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug-report.yml @@ -0,0 +1,113 @@ +name: πŸ› Bug Report +description: Open an issue about a bug that needs fixing. +title: "[Bug]: " +labels: ["bug"] +body: +- type: checkboxes + attributes: + label: Prerequisites + options: + - label: I have written a descriptive issue title. + required: true + - label: I have searched all issues/PRs to ensure it has not already been reported or fixed. + required: true + - label: I have verified that I am using the latest version of Scoop and corresponding bucket. + required: true +- type: input + attributes: + label: Package Name + description: Name of package (install name) which has bug(s) + placeholder: e.g. 7zip (not '7-Zip') + validations: + required: true +- type: textarea + attributes: + label: Expected/Current Behaviour + description: A clear and concise description of what you expected to happen and what actually happen. + placeholder: I am experiencing a problem with X. I think Y should be happening but Z is actually happening. + validations: + required: true +- type: textarea + attributes: + label: Steps to Reproduce + description: List of steps, sample code or failing test that reproduces the behavior. + render: console + placeholder: | + PS> scoop install tests/meson + Installing 'meson' (0.61.1) [64bit] + Loading meson-0.61.1-64.msi from cache. + Checking hash of meson-0.61.1-64.msi ... ok. + Extracting meson-0.61.1-64.msi ... done. + Running installer script... + Linking D:\Scoop\apps\meson\current => D:\Scoop\apps\meson\0.61.1 + Creating shim for 'meson'. + Can't shim 'meson.exe': File doesn't exist. + validations: + required: true +- type: textarea + attributes: + label: Possible Solution + description: Do you have some suggestions on a fix for the bug? + placeholder: I am experiencing a problem with X. I think Y should be happening but Z is actually happening. + validations: + required: true +- type: textarea + attributes: + label: Scoop and Buckets Version + description: Paste verbatim output from `scoop --version` below. + render: console + placeholder: | + PS> scoop --version + Current Scoop version: + c60df9cd (HEAD -> develop, origin/develop) docs(changelog): Prepare for version 0.3.1 (#5248) + + 'extras' bucket: + ea314b213 (HEAD -> master, origin/master, origin/HEAD) lazygit: Update to version 0.36.0 + + 'main' bucket: + c6e688d4d (HEAD -> master, origin/master, origin/HEAD) x265: Update to version 3.5+68-40e37bc + validations: + required: true +- type: textarea + attributes: + label: Scoop Config + description: Paste verbatim output from `scoop config` below. + render: console + placeholder: | + PS> scoop config + + last_update : 2022/11/14 22:05:50 + scoop_repo : https://github.com/ScoopInstaller/Scoop + scoop_branch : develop + use_lessmsi : True + aria2-enabled : True + aria2-warning-enabled : False + validations: + required: true +- type: textarea + attributes: + label: PowerShell Version + description: Paste verbatim output from `$PSVersionTable` below. + render: console + placeholder: | + PS> $PSVersionTable + + Name Value + ---- ----- + PSVersion 7.3.0 + PSEdition Core + GitCommitId 7.3.0 + OS Microsoft Windows 10.0.25236 + Platform Win32NT + PSCompatibleVersions {1.0, 2.0, 3.0, 4.0…} + PSRemotingProtocolVersion 2.3 + SerializationVersion 1.1.0.1 + WSManStackVersion 3.0 + validations: + required: true +- type: textarea + attributes: + label: Additional Softwares + description: List any additional software that you are using and may be related to this bug. + validations: + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 0000000..c8358cd --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,5 @@ +blank_issues_enabled: true +contact_links: + - name: Scoop Community Support + url: https://github.com/ScoopInstaller/Scoop/discussions + about: Please ask Scoop related questions here. diff --git a/.github/ISSUE_TEMPLATE/hash-error.yml b/.github/ISSUE_TEMPLATE/hash-error.yml new file mode 100644 index 0000000..0214fd8 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/hash-error.yml @@ -0,0 +1,19 @@ +name: πŸ”’ Hash Error +description: Open an issue about a package's hash is incorrect. +labels: ["bug"] +body: +- type: checkboxes + attributes: + label: Prerequisites + options: + - label: I have used the predefined issue title. (e.g. "xxx@xxx: hash check failed") + required: true + - label: I have verified that I am using the latest version of Scoop and corresponding bucket. + required: true +- type: input + attributes: + label: Package Name and Version + description: Name and version of package (install name) which has incorrect hash. + placeholder: e.g. 7zip@21.00 (not '7-Zip') + validations: + required: true diff --git a/.github/ISSUE_TEMPLATE/package-request.yml b/.github/ISSUE_TEMPLATE/package-request.yml new file mode 100644 index 0000000..c86901e --- /dev/null +++ b/.github/ISSUE_TEMPLATE/package-request.yml @@ -0,0 +1,52 @@ +name: πŸ“¦ Package Request +description: Open an issue about a missing package. +title: "[Request]: " +labels: ["package-request"] +body: +- type: checkboxes + attributes: + label: Prerequisites + options: + - label: I have searched all issues/PRs to ensure it has not already been reported or fixed. + required: true +- type: checkboxes + attributes: + label: Criteria + description: For a package to be acceptable in this bucket, it should be + options: + - label: Criteria 1 + required: true + - label: Criteria 2 + required: true + - label: Criteria 3 + required: true +- type: input + attributes: + label: Name + description: Name of the package + validations: + required: true +- type: input + attributes: + label: Description + description: Clear and concise details of what it is + validations: + required: true +- type: input + attributes: + label: Homepage + description: URI of the package's homepage + validations: + required: true +- type: input + attributes: + label: Download Link(s) + description: URI(s) of the package's download(s) + validations: + required: true +- type: textarea + attributes: + label: Some Indication of Popularity/Repute + description: GitHub stars/software reviews etc. + validations: + required: true diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md new file mode 100644 index 0000000..f7dd672 --- /dev/null +++ b/.github/pull_request_template.md @@ -0,0 +1,15 @@ + + + + +Closes #XXXX + +Relates to #XXXX + +- [ ] I have read the [Contributing Guide](https://github.com/ScoopInstaller/.github/blob/main/.github/CONTRIBUTING.md). diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..ea23ac3 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,59 @@ +name: Tests + +on: + push: + branches: + - "main" + - "master" + pull_request: + workflow_dispatch: + +jobs: + test_powershell: + name: WindowsPowerShell + runs-on: windows-latest + steps: + - name: Checkout Bucket + uses: actions/checkout@main + with: + fetch-depth: 2 + path: scoop-lucy + - name: Checkout Scoop + uses: actions/checkout@main + with: + repository: ScoopInstaller/Scoop + path: scoop_core + - name: Init Test Suite + uses: potatoqualitee/psmodulecache@v5.1 + with: + modules-to-cache: BuildHelpers + shell: powershell + - name: Test Bucket + shell: powershell + run: | + $env:SCOOP_HOME="$(Convert-Path '.\scoop_core')" + .\scoop-lucy\bin\test.ps1 + test_pwsh: + name: PowerShell + runs-on: windows-latest + steps: + - name: Checkout Bucket + uses: actions/checkout@main + with: + fetch-depth: 2 + path: scoop-lucy + - name: Checkout Scoop + uses: actions/checkout@main + with: + repository: ScoopInstaller/Scoop + path: scoop_core + - name: Init Test Suite + uses: potatoqualitee/psmodulecache@v5.1 + with: + modules-to-cache: BuildHelpers + shell: pwsh + - name: Test Bucket + shell: pwsh + run: | + $env:SCOOP_HOME="$(Convert-Path '.\scoop_core')" + .\scoop-lucy\bin\test.ps1 diff --git a/.github/workflows/excavator.yml b/.github/workflows/excavator.yml new file mode 100644 index 0000000..bbdee26 --- /dev/null +++ b/.github/workflows/excavator.yml @@ -0,0 +1,17 @@ +on: + workflow_dispatch: + schedule: + # run every 4 hours + - cron: "20 */4 * * *" +name: Excavator +jobs: + excavate: + name: Excavate + runs-on: windows-latest + steps: + - uses: actions/checkout@main + - name: Excavate + uses: ScoopInstaller/GithubActions@main + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SKIP_UPDATED: 1 diff --git a/.github/workflows/issue_comment.yml b/.github/workflows/issue_comment.yml new file mode 100644 index 0000000..795ce62 --- /dev/null +++ b/.github/workflows/issue_comment.yml @@ -0,0 +1,15 @@ +on: + issue_comment: + types: [created] +name: Commented Pull Request +jobs: + pullRequestHandler: + name: PullRequestHandler + runs-on: windows-latest + steps: + - uses: actions/checkout@main + - name: PullRequestHandler + uses: ScoopInstaller/GithubActions@main + if: startsWith(github.event.comment.body, '/verify') + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/issues.yml b/.github/workflows/issues.yml new file mode 100644 index 0000000..a7769f4 --- /dev/null +++ b/.github/workflows/issues.yml @@ -0,0 +1,15 @@ +on: + issues: + types: [opened, labeled] +name: Issues +jobs: + issueHandler: + name: IssueHandler + runs-on: windows-latest + steps: + - uses: actions/checkout@main + - name: IssueHandler + uses: ScoopInstaller/GithubActions@main + if: github.event.action == 'opened' || (github.event.action == 'labeled' && contains(github.event.issue.labels.*.name, 'verify')) + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/pull_request.yml b/.github/workflows/pull_request.yml new file mode 100644 index 0000000..3e4d91f --- /dev/null +++ b/.github/workflows/pull_request.yml @@ -0,0 +1,14 @@ +on: + pull_request: + types: [opened] +name: Pull Requests +jobs: + pullRequestHandler: + name: PullRequestHandler + runs-on: windows-latest + steps: + - uses: actions/checkout@main + - name: PullRequestHandler + uses: ScoopInstaller/GithubActions@main + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c221b4a --- /dev/null +++ b/.gitignore @@ -0,0 +1,5 @@ +*.sublime-workspace +*~ +._* +page.html +checkver-*.html diff --git a/.markdownlint.json b/.markdownlint.json new file mode 100644 index 0000000..d9ffe31 --- /dev/null +++ b/.markdownlint.json @@ -0,0 +1,6 @@ +{ + "MD013": false, + "MD024": { + "siblings_only": true + } +} diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..ddf7895 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,3 @@ +{ + "recommendations": ["EditorConfig.EditorConfig", "ms-vscode.PowerShell"] +} diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..67d03c1 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,23 @@ +{ + "[powershell]": { + "editor.formatOnSave": true + }, + "powershell.scriptAnalysis.settingsPath": "PSScriptAnalyzerSettings.psd1", + "powershell.codeFormatting.preset": "OTBS", + "powershell.codeFormatting.alignPropertyValuePairs": true, + "powershell.codeFormatting.ignoreOneLineBlock": true, + "json.schemas": [ + { + "url": "https://raw.githubusercontent.com/ScoopInstaller/Scoop/master/schema.json", + "fileMatch": ["bucket/**/*.json"] + } + ], + "files.exclude": { + "**/.git": true, + "**/.svn": true, + "**/.hg": true, + "**/CVS": true, + "**/.DS_Store": true, + "**/tmp": true + } +} diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..d3061a3 --- /dev/null +++ b/LICENSE @@ -0,0 +1,13 @@ +Zero-Clause BSD +============= + +Permission to use, copy, modify, and/or distribute this software for +any purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED β€œAS IS” AND THE AUTHOR DISCLAIMS ALL +WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE +FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY +DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN +AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT +OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. diff --git a/Scoop-Bucket.Tests.ps1 b/Scoop-Bucket.Tests.ps1 new file mode 100644 index 0000000..5e620e8 --- /dev/null +++ b/Scoop-Bucket.Tests.ps1 @@ -0,0 +1,2 @@ +if (!$env:SCOOP_HOME) { $env:SCOOP_HOME = Resolve-Path (scoop prefix scoop) } +. "$env:SCOOP_HOME\test\Import-Bucket-Tests.ps1" diff --git a/bin/auto-pr.ps1 b/bin/auto-pr.ps1 new file mode 100644 index 0000000..5206042 --- /dev/null +++ b/bin/auto-pr.ps1 @@ -0,0 +1,9 @@ +param( + # overwrite upstream param + [String]$upstream = "/:main" +) + +if (!$env:SCOOP_HOME) { $env:SCOOP_HOME = Convert-Path (scoop prefix scoop) } +$autopr = "$env:SCOOP_HOME/bin/auto-pr.ps1" +$dir = "$PSScriptRoot/../bucket" # checks the parent dir +& $autopr -Dir $dir -Upstream $Upstream @Args diff --git a/bin/checkhashes.ps1 b/bin/checkhashes.ps1 new file mode 100644 index 0000000..6e7e052 --- /dev/null +++ b/bin/checkhashes.ps1 @@ -0,0 +1,4 @@ +if (!$env:SCOOP_HOME) { $env:SCOOP_HOME = Convert-Path (scoop prefix scoop) } +$checkhashes = "$env:SCOOP_HOME/bin/checkhashes.ps1" +$dir = "$PSScriptRoot/../bucket" # checks the parent dir +& $checkhashes -Dir $dir @Args diff --git a/bin/checkurls.ps1 b/bin/checkurls.ps1 new file mode 100644 index 0000000..4895d54 --- /dev/null +++ b/bin/checkurls.ps1 @@ -0,0 +1,4 @@ +if (!$env:SCOOP_HOME) { $env:SCOOP_HOME = Convert-Path (scoop prefix scoop) } +$checkurls = "$env:SCOOP_HOME/bin/checkurls.ps1" +$dir = "$PSScriptRoot/../bucket" # checks the parent dir +& $checkurls -Dir $dir @Args diff --git a/bin/checkver.ps1 b/bin/checkver.ps1 new file mode 100644 index 0000000..9bce8b4 --- /dev/null +++ b/bin/checkver.ps1 @@ -0,0 +1,4 @@ +if (!$env:SCOOP_HOME) { $env:SCOOP_HOME = Convert-Path (scoop prefix scoop) } +$checkver = "$env:SCOOP_HOME/bin/checkver.ps1" +$dir = "$PSScriptRoot/../bucket" # checks the parent dir +& $checkver -Dir $dir @Args diff --git a/bin/formatjson.ps1 b/bin/formatjson.ps1 new file mode 100644 index 0000000..2766bbc --- /dev/null +++ b/bin/formatjson.ps1 @@ -0,0 +1,4 @@ +if (!$env:SCOOP_HOME) { $env:SCOOP_HOME = Convert-Path (scoop prefix scoop) } +$formatjson = "$env:SCOOP_HOME/bin/formatjson.ps1" +$path = "$PSScriptRoot/../bucket" # checks the parent dir +& $formatjson -Dir $path @Args diff --git a/bin/missing-checkver.ps1 b/bin/missing-checkver.ps1 new file mode 100644 index 0000000..e375704 --- /dev/null +++ b/bin/missing-checkver.ps1 @@ -0,0 +1,4 @@ +if (!$env:SCOOP_HOME) { $env:SCOOP_HOME = Convert-Path (scoop prefix scoop) } +$missing_checkver = "$env:SCOOP_HOME/bin/missing-checkver.ps1" +$dir = "$PSScriptRoot/../bucket" # checks the parent dir +& $missing_checkver -Dir $dir @Args diff --git a/bin/test.ps1 b/bin/test.ps1 new file mode 100644 index 0000000..5af0e6a --- /dev/null +++ b/bin/test.ps1 @@ -0,0 +1,15 @@ +#Requires -Version 5.1 +#Requires -Modules @{ ModuleName = 'BuildHelpers'; ModuleVersion = '2.0.1' } +#Requires -Modules @{ ModuleName = 'Pester'; ModuleVersion = '5.2.0' } + +$pesterConfig = New-PesterConfiguration -Hashtable @{ + Run = @{ + Path = "$PSScriptRoot/.." + PassThru = $true + } + Output = @{ + Verbosity = 'Detailed' + } +} +$result = Invoke-Pester -Configuration $pesterConfig +exit $result.FailedCount diff --git a/bucket/byond-beta.json b/bucket/byond-beta.json new file mode 100644 index 0000000..87a69e3 --- /dev/null +++ b/bucket/byond-beta.json @@ -0,0 +1,29 @@ +{ + "$schema": "https://raw.githubusercontent.com/ScoopInstaller/Scoop/master/schema.json", + "version": "515.1620", + "description": "BYOND is a free software suite for creating and playing online games. (Beta version)", + "homepage": "https://secure.byond.com", + "license": "Proprietary", + "url": "https://www.byond.com/download/build/515/515.1620_byond.zip", + "hash": "sha256:a5705cbfd93d67997bedce78908a5da3e5c344be8977d5007c5eb7590c783d6d", + "extract_dir": "byond", + "bin": "bin\\byond.exe", + "notes": "This relies on the normal BYOND package, to avoid conflicting persistent data, as you cannot have separate BYOND userdirs for stable and beta versions.", + "suggest": { + "vcredist": "extras/vcredist" + }, + "shortcuts": [ + ["bin\\byond.exe", "BYOND (Beta)"], + ["bin\\dreamdaemon.exe", "Dream Daemon (Beta)"], + ["bin\\dreamseeker.exe", "Dream Seeker (Beta)"], + ["bin\\dreammaker.exe", "Dream Maker (Beta)"] + ], + "checkver": { + "url": "https://secure.byond.com/download/version.txt", + "regex": "^(?[0-9]{3})\\.(?[0-9]{4})[\\n\\r]{1,2}(?[0-9]{3})\\.(?[0-9]{4})$", + "replace": "${beta_major}.${beta_minor}" + }, + "autoupdate": { + "url": "https://www.byond.com/download/build/$majorVersion/$version_byond.zip" + } +} diff --git a/bucket/byond.json b/bucket/byond.json new file mode 100644 index 0000000..8a6037f --- /dev/null +++ b/bucket/byond.json @@ -0,0 +1,33 @@ +{ + "$schema": "https://raw.githubusercontent.com/ScoopInstaller/Scoop/master/schema.json", + "version": "514.1589", + "description": "BYOND is a free software suite for creating and playing online games.", + "homepage": "https://secure.byond.com", + "license": "Proprietary", + "url": "https://www.byond.com/download/build/514/514.1589_byond.zip", + "hash": "sha256:3a6764c63e3ea0d4c5386ed0873fe999aa99a3fbbbec29dd18835391337a9864", + "extract_dir": "byond", + "bin": "bin\\byond.exe", + "suggest": { + "vcredist": "extras/vcredist" + }, + "shortcuts": [ + ["bin\\byond.exe", "BYOND"], + ["bin\\dreamdaemon.exe", "Dream Daemon"], + ["bin\\dreamseeker.exe", "Dream Seeker"], + ["bin\\dreammaker.exe", "Dream Maker"] + ], + "persist": ["data"], + "env_add_path": "bin", + "post_install": [ + "New-ItemProperty -Path \"HKCU:\\Software\\Dantom\\BYOND\" -Name \"userpath\" -Value \"$persist_dir\\data\" -PropertyType String -Force" + ], + "checkver": { + "url": "https://secure.byond.com/download/version.txt", + "regex": "^(?[0-9]{3})\\.(?[0-9]{4})[\\n\\r]{1,2}(?[0-9]{3})\\.(?[0-9]{4})$", + "replace": "${stable_major}.${stable_minor}" + }, + "autoupdate": { + "url": "https://www.byond.com/download/build/$majorVersion/$version_byond.zip" + } +} diff --git a/deprecated/.gitkeep b/deprecated/.gitkeep new file mode 100644 index 0000000..0a1c7c4 --- /dev/null +++ b/deprecated/.gitkeep @@ -0,0 +1,2 @@ +# This directory stores all the deprecated JSON manifests, which are not meant to be installed. +# Delete this '.gitkeep' file once this directory has any files. diff --git a/scripts/.gitkeep b/scripts/.gitkeep new file mode 100644 index 0000000..2f6a3f6 --- /dev/null +++ b/scripts/.gitkeep @@ -0,0 +1,2 @@ +# This directory stores helper files like shell scripts, registry entries etc. for installable applications. +# Delete this '.gitkeep' file once this directory has any files.