Commit d4b1a15

Issac Lin <issaclin32@gmail.com>
2021-12-27 19:08:29
Initial commit
.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
.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,6 @@
+# yaml-language-server: $schema=https://json.schemastore.org/github-issue-config.json
+blank_issues_enabled: true
+contact_links:
+  - name: Scoop Community Support
+    url: https://github.com/ScoopInstaller/Scoop/discussions
+    about: Please ask Scoop related questions here.
.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&#58; 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
.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
.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: my_bucket
+      - name: Checkout Scoop
+        uses: actions/checkout@main
+        with:
+          repository: ScoopInstaller/Scoop
+          path: scoop_core
+      - name: Init Test Suite
+        uses: potatoqualitee/psmodulecache@main
+        with:
+          modules-to-cache: BuildHelpers
+          shell: powershell
+      - name: Test Bucket
+        shell: powershell
+        run: |
+          $env:SCOOP_HOME="$(Convert-Path '.\scoop_core')"
+          .\my_bucket\bin\test.ps1
+  test_pwsh:
+    name: PowerShell
+    runs-on: windows-latest
+    steps:
+      - name: Checkout Bucket
+        uses: actions/checkout@main
+        with:
+          fetch-depth: 2
+          path: my_bucket
+      - name: Checkout Scoop
+        uses: actions/checkout@main
+        with:
+          repository: ScoopInstaller/Scoop
+          path: scoop_core
+      - name: Init Test Suite
+        uses: potatoqualitee/psmodulecache@main
+        with:
+          modules-to-cache: BuildHelpers
+          shell: pwsh
+      - name: Test Bucket
+        shell: pwsh
+        run: |
+          $env:SCOOP_HOME="$(Convert-Path '.\scoop_core')"
+          .\my_bucket\bin\test.ps1
.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
.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 }}
.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 }}
.github/workflows/pull_request.yml
@@ -0,0 +1,14 @@
+on:
+  pull_request_target:
+    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 }}
.github/pull_request_template.md
@@ -0,0 +1,15 @@
+<!-- Provide a general summary of your changes in the title above -->
+
+<!--
+  By opening this PR you confirm that you have searched for similar issues/PRs here already.
+  Failing to do so will most likely result in closing of this PR without any explanation.
+  It is also mandatory to open a relevant issue (either Package Request or Bug Report) for
+  discussion with the maintainers, before creating any new PR.
+  Read the contributing guide first to save both your and our time.
+-->
+
+Closes #XXXX
+<!-- or -->
+Relates to #XXXX
+
+- [ ] I have read the [Contributing Guide](https://github.com/ScoopInstaller/.github/blob/main/.github/CONTRIBUTING.md).
.vscode/extensions.json
@@ -0,0 +1,6 @@
+{
+    "recommendations": [
+        "EditorConfig.EditorConfig",
+        "ms-vscode.PowerShell"
+    ]
+}
.vscode/settings.json
@@ -0,0 +1,27 @@
+// Configure PSScriptAnalyzer settings
+{
+    "[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.insertFinalNewline": true,
+    "files.exclude": {
+        "**/.git": true,
+        "**/.svn": true,
+        "**/.hg": true,
+        "**/CVS": true,
+        "**/.DS_Store": true,
+        "**/tmp": true
+    }
+}
bin/auto-pr.ps1
@@ -0,0 +1,9 @@
+param(
+    # overwrite upstream param
+    [String]$upstream = "<username>/<bucketname>: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
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
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
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
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
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
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
bucket/app-name.json.template
@@ -0,0 +1,63 @@
+{
+    "##": "This file is a template. Fill the blanks and add or remove fields as necessary.",
+    "version": "",
+    "description": "",
+    "homepage": "",
+    "license": "",
+    "notes": "",
+    "architecture": {
+        "64bit": {
+            "url": "",
+            "hash": ""
+        },
+        "32bit": {
+            "url": "",
+            "hash": ""
+        },
+        "arm64": {
+            "url": "",
+            "hash": ""
+        }
+    },
+    "pre_install": "",
+    "installer": {
+        "script": ""
+    },
+    "post_install": [
+        "",
+        ""
+    ],
+    "uninstaller": {
+        "script": ""
+    },
+    "bin": "",
+    "env_add_path": [
+        "",
+        ""
+    ],
+    "persist": [
+        "",
+        ""
+    ],
+    "checkver": {
+        "url": "",
+        "regex": ""
+    },
+    "autoupdate": {
+        "architecture": {
+            "64bit": {
+                "url": ""
+            },
+            "32bit": {
+                "url": ""
+            },
+            "arm64": {
+                "url": ""
+            }
+        },
+        "hash": {
+            "url": "",
+            "regex": ""
+        }
+    }
+}
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.
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.
.editorconfig
@@ -0,0 +1,16 @@
+# EditorConfig (is awesome): http://EditorConfig.org
+
+# * top-most EditorConfig file
+root = true
+
+# default style settings
+[*]
+charset = utf-8
+end_of_line = crlf
+indent_size = 4
+indent_style = space
+insert_final_newline = true
+trim_trailing_whitespace = true
+
+[*.{yml,yaml}]
+indent_size = 2
.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
.gitignore
@@ -0,0 +1,5 @@
+*.sublime-workspace
+*~
+._*
+page.html
+checkver-*.html
.markdownlint.json
@@ -0,0 +1,6 @@
+{
+  "MD013": false,
+  "MD024": {
+    "siblings_only": true
+  }
+}
LICENSE
@@ -0,0 +1,24 @@
+This is free and unencumbered software released into the public domain.
+
+Anyone is free to copy, modify, publish, use, compile, sell, or
+distribute this software, either in source code form or as a compiled
+binary, for any purpose, commercial or non-commercial, and by any
+means.
+
+In jurisdictions that recognize copyright laws, the author or authors
+of this software dedicate any and all copyright interest in the
+software to the public domain. We make this dedication for the benefit
+of the public at large and to the detriment of our heirs and
+successors. We intend this dedication to be an overt act of
+relinquishment in perpetuity of all present and future rights to this
+software under copyright law.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+For more information, please refer to <https://unlicense.org>
README.md
@@ -0,0 +1,42 @@
+# Scoop Bucket Template
+
+<!-- Uncomment the following line after replacing placeholders -->
+<!-- [![Tests](https://github.com/<username>/<bucketname>/actions/workflows/ci.yml/badge.svg)](https://github.com/<username>/<bucketname>/actions/workflows/ci.yml) [![Excavator](https://github.com/<username>/<bucketname>/actions/workflows/excavator.yml/badge.svg)](https://github.com/<username>/<bucketname>/actions/workflows/excavator.yml) -->
+
+Template bucket for [Scoop](https://scoop.sh), the Windows command-line installer.
+
+## How do I use this template?
+
+1. Generate your own copy of this repository with the "Use this template"
+   button.
+2. Allow all GitHub Actions:
+   - Navigate to `Settings` - `Actions` - `General` - `Actions permissions`.
+   - Select `Allow all actions and reusable workflows`.
+   - Then `Save`.
+3. Allow writing to the repository from within GitHub Actions:
+   - Navigate to `Settings` - `Actions` - `General` - `Workflow permissions`.
+   - Select `Read and write permissions`.
+   - Then `Save`.
+4. Document the bucket in `README.md`.
+5. Replace the placeholder repository string in `bin/auto-pr.ps1`.
+6. Create new manifests by copying `bucket/app-name.json.template` to
+   `bucket/<app-name>.json`.
+7. Commit and push changes.
+8. If you'd like your bucket to be indexed on `https://scoop.sh`, add the
+   topic `scoop-bucket` to your repository.
+
+## How do I install these manifests?
+
+After manifests have been committed and pushed, run the following:
+
+```pwsh
+scoop bucket add <bucketname> https://github.com/<username>/<bucketname>
+scoop install <bucketname>/<manifestname>
+```
+
+## How do I contribute new manifests?
+
+To make a new manifest contribution, please read the [Contributing
+Guide](https://github.com/ScoopInstaller/.github/blob/main/.github/CONTRIBUTING.md)
+and [App Manifests](https://github.com/ScoopInstaller/Scoop/wiki/App-Manifests)
+wiki page.
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"