aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Strapp <matt@mattstrapp.net>2024-10-28 13:37:20 -0500
committerGitHub <noreply@github.com>2024-10-28 13:37:20 -0500
commit7f1529eb1c6be69318f95f2ce90b09bcf0eec232 (patch)
tree72b1a2adb1ac248f6dda903b89e6c77ee84531a0
downloadscoop-7f1529eb1c6be69318f95f2ce90b09bcf0eec232.tar
scoop-7f1529eb1c6be69318f95f2ce90b09bcf0eec232.tar.gz
scoop-7f1529eb1c6be69318f95f2ce90b09bcf0eec232.tar.bz2
scoop-7f1529eb1c6be69318f95f2ce90b09bcf0eec232.tar.lz
scoop-7f1529eb1c6be69318f95f2ce90b09bcf0eec232.tar.xz
scoop-7f1529eb1c6be69318f95f2ce90b09bcf0eec232.tar.zst
scoop-7f1529eb1c6be69318f95f2ce90b09bcf0eec232.zip
Initial commit
Diffstat (limited to '')
-rw-r--r--.editorconfig16
-rw-r--r--.gitattributes4
-rw-r--r--.github/ISSUE_TEMPLATE/bug-report.yml113
-rw-r--r--.github/ISSUE_TEMPLATE/config.yml6
-rw-r--r--.github/ISSUE_TEMPLATE/hash-error.yml19
-rw-r--r--.github/ISSUE_TEMPLATE/package-request.yml52
-rw-r--r--.github/pull_request_template.md15
-rw-r--r--.github/workflows/ci.yml59
-rw-r--r--.github/workflows/excavator.yml17
-rw-r--r--.github/workflows/issue_comment.yml15
-rw-r--r--.github/workflows/issues.yml15
-rw-r--r--.github/workflows/pull_request.yml14
-rw-r--r--.gitignore5
-rw-r--r--.markdownlint.json6
-rw-r--r--.vscode/extensions.json6
-rw-r--r--.vscode/settings.json27
-rw-r--r--LICENSE24
-rw-r--r--README.md42
-rw-r--r--Scoop-Bucket.Tests.ps12
-rw-r--r--bin/auto-pr.ps19
-rw-r--r--bin/checkhashes.ps14
-rw-r--r--bin/checkurls.ps14
-rw-r--r--bin/checkver.ps14
-rw-r--r--bin/formatjson.ps14
-rw-r--r--bin/missing-checkver.ps14
-rw-r--r--bin/test.ps115
-rw-r--r--bucket/app-name.json.template63
-rw-r--r--deprecated/.gitkeep2
-rw-r--r--scripts/.gitkeep2
29 files changed, 568 insertions, 0 deletions
diff --git a/.editorconfig b/.editorconfig
new file mode 100644
index 0000000..09a7419
--- /dev/null
+++ b/.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
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..2a2a0ff
--- /dev/null
+++ b/.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.
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&#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
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 @@
+<!-- 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).
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
new file mode 100644
index 0000000..7901b19
--- /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: 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
diff --git a/.github/workflows/excavator.yml b/.github/workflows/excavator.yml
new file mode 100644
index 0000000..e5279eb
--- /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..24b9018
--- /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..0c8b859
--- /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..ad312d5
--- /dev/null
+++ b/.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 }}
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..ef592cf
--- /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..a9056e4
--- /dev/null
+++ b/.vscode/extensions.json
@@ -0,0 +1,6 @@
+{
+ "recommendations": [
+ "EditorConfig.EditorConfig",
+ "ms-vscode.PowerShell"
+ ]
+}
diff --git a/.vscode/settings.json b/.vscode/settings.json
new file mode 100644
index 0000000..6a49c46
--- /dev/null
+++ b/.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
+ }
+}
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..fdddb29
--- /dev/null
+++ b/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>
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..a53d3d7
--- /dev/null
+++ b/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.
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..3a91818
--- /dev/null
+++ b/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
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..5c64841
--- /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/app-name.json.template b/bucket/app-name.json.template
new file mode 100644
index 0000000..e3bbbd2
--- /dev/null
+++ b/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": ""
+ }
+ }
+}
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.