3 Commits

Author SHA1 Message Date
Richard Kuhnt
c2f1e8eeb1 Add new 'persist'-object representation to schema.json
- Deprecates the String representation
- Deprecates the StringArray representation
- Introduces first version of Object representation
2019-03-12 20:43:33 +01:00
Richard Kuhnt
2bcf54422a Create backwards compatible persist_data_old() function
- Extract old persist_data() functionality for backwards compatible with old manifests
- Introduce new persist_data_new() stub
2019-03-12 20:39:09 +01:00
Richard Kuhnt
2f850502e8 Add functions for junction and hardlink handling including Tests
- Add is_junction()
- Add create_junction()
- Add remove_junction()
- Add create_hardlink()
- Add remove_hardlink()
2019-03-12 20:36:43 +01:00
590 changed files with 18544 additions and 9851 deletions

View File

@@ -12,14 +12,9 @@ indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[*.{[Bb][Aa][Tt],[Cc][Mm][Dd]}]
[*.{bat,cmd,[Bb][Aa][Tt],[Cc][Mm][Dd]]
# DOS/Win *requires* BAT/CMD files to have CRLF newlines
end_of_line = crlf
[*.{yml, yaml}]
indent_size = 2
# Makefiles require tab indentation
[{{M,m,GNU}akefile{,.*},*.mak,*.mk}]
indent_style = tab
end_of_line = lf

View File

@@ -1,47 +0,0 @@
---
name: "Bug Report"
about: "I am facing some problems."
title: '[Bug] '
labels: "bug"
---
<!--
IMPORTANT:
If your problem is related to a specific package, open the issue in the relevant bucket,
not here.
By opening this issue you confirm that you have searched for similar issues/PRs here already.
Failing to do so will most likely result in closing of this issue without any explanation.
Incomplete form details below might also result in closing of the issue.
-->
## Bug Report
#### Current Behavior
<!-- A clear and concise description of the behavior. -->
#### Expected Behavior
<!-- A clear and concise description of what you expected to happen. -->
#### Additional context/output
<!-- Add any other context about the problem here. If applicable, paste terminal output here to help explain. -->
#### Possible Solution
<!--- Only if you have suggestions on a fix for the bug -->
### System details
**Windows version:** [e.g. 7, 8, 10, 11]
**OS architecture:** [e.g. 32bit, 64bit, arm64]
**PowerShell version:** [output of `"$($PSVersionTable.PSVersion)"`]
**Additional software:** [(optional) e.g. ConEmu, Git]
#### Scoop Configuration
<!-- Can be found in ~/.config/scoop/config.json -->
```json
//# Your configuration here
```

View File

@@ -1,27 +0,0 @@
---
name: "Feature Request"
about: "I have a suggestion (and may want to implement it)!"
title: '[Feature] '
labels: "enhancement"
---
<!--
IMPORTANT:
If your request is related to a specific package, open the issue in the relevant bucket,
not here.
By opening this issue you confirm that you have searched for similar issues/PRs here already.
Failing to do so will most likely result in closing of this issue without any explanation.
Incomplete form details below might also result in closing of the issue.
-->
## Feature Request
#### Is your feature request related to a problem? Please describe.
<!-- A clear and concise description of what the problem is. Ex. I have an issue when [...] -->
#### Describe the solution you'd like
<!-- A clear and concise description of what you want to happen. Add any considered drawbacks. -->
#### Describe alternatives you've considered
<!-- A clear and concise description of any alternative solutions or features you've considered. -->

View File

@@ -1,2 +0,0 @@
blank_issues_enabled: false

View File

@@ -1,35 +0,0 @@
<!-- Provide a general summary of your changes in the Title above -->
<!-- To help with semantic versioning the PR title should start with one of the conventional commit types. -->
<!-- The conventional commit types for Semantic PR are: feat, fix, docs, style, refactor, perf, test, build, ci, chore, revert -->
<!--
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 for discussion with the maintainers,
before creating any new PR.
Read the contributing guide first to save both your and our time.
-->
#### Description
<!-- Describe your changes in detail -->
#### Motivation and Context
<!-- Why is this change required? What problem does it solve? -->
<!-- If it fixes an open issue, please link to the issue here. -->
Closes #XXXX
<!-- or -->
Relates to #XXXX
#### How Has This Been Tested?
<!-- Please describe in detail how you tested your changes. -->
<!-- Include details of your testing environment, tests ran to see how -->
<!-- your change affects other areas of the code, etc. -->
#### Checklist:
<!-- Go over all the following points, and put an `x` in all the boxes that apply. -->
<!-- If you're unsure about any of these, don't hesitate to ask. We're here to help! -->
- [ ] I have read the [Contributing Guide](https://github.com/ScoopInstaller/.github/blob/main/.github/CONTRIBUTING.md).
- [ ] I have ensured that I am targeting the `develop` branch.
- [ ] I have updated the documentation accordingly.
- [ ] I have updated the tests accordingly.
- [ ] I have added an entry in the CHANGELOG.

View File

@@ -1,8 +0,0 @@
---
# ~/.github/dependabot.yml
version: 2
updates:
- package-ecosystem: "github-actions"
directory: "/" # == /.github/workflows/
schedule:
interval: "daily"

View File

@@ -1,39 +0,0 @@
name: Scoop Core CI Tests
on:
pull_request:
workflow_dispatch:
jobs:
test_powershell:
name: WindowsPowerShell
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@main
with:
fetch-depth: 2
- name: Init Test Suite
uses: potatoqualitee/psmodulecache@main
with:
modules-to-cache: BuildHelpers
shell: powershell
- name: Test Scoop Core
shell: powershell
run: ./test/bin/test.ps1
test_pwsh:
name: PowerShell
runs-on: windows-latest
steps:
- name: Checkout
uses: actions/checkout@main
with:
fetch-depth: 2
- name: Init Test Suite
uses: potatoqualitee/psmodulecache@main
with:
modules-to-cache: BuildHelpers
shell: pwsh
- name: Test Scoop Core
shell: pwsh
run: ./test/bin/test.ps1

2
.gitignore vendored
View File

@@ -1,4 +1,3 @@
*.log
.DS_Store
._.DS_Store
scoop.sublime-workspace
@@ -6,4 +5,3 @@ test/installer/tmp/*
test/tmp/*
*~
TestResults.xml
supporting/sqlite/*

15
.vscode/settings.json vendored
View File

@@ -1,12 +1,21 @@
// Configure PSScriptAnalyzer settings
{
"[powershell]": {
// Disable formating until: https://github.com/PowerShell/vscode-powershell/issues/1019 is fixed
"editor.formatOnSave": false
},
"powershell.scriptAnalysis.settingsPath": "PSScriptAnalyzerSettings.psd1",
"powershell.codeFormatting.preset": "OTBS",
"powershell.codeFormatting.alignPropertyValuePairs": true,
"powershell.codeFormatting.ignoreOneLineBlock": true,
"powershell.codeFormatting.useConstantStrings": true,
"powershell.codeFormatting.useCorrectCasing": true,
"powershell.codeFormatting.whitespaceBetweenParameters": true,
"json.schemas": [
{
"url": "https://raw.githubusercontent.com/lukesampson/scoop/master/schema.json",
"fileMatch": [
"bucket/*.json"
]
}
],
"files.exclude": {
"**/.git": true,
"**/.svn": true,

View File

@@ -1,885 +0,0 @@
## [v0.5.1](https://github.com/ScoopInstaller/Scoop/compare/v0.5.0...v0.5.1) - 2024-07-16
### Bug Fixes
- **scoop-alias:** Pass options correctly ([#6003](https://github.com/ScoopInstaller/Scoop/issues/6003))
- **scoop-virustotal:** Adjust `json_path` parameters to retrieve correct analysis stats ([#6044](https://github.com/ScoopInstaller/Scoop/issues/6044))
- **bucket:** Implement error handling for failed bucket addition ([#6051](https://github.com/ScoopInstaller/Scoop/issues/6051))
- **database:** Fix compatibility with Windows PowerShell ([#6045](https://github.com/ScoopInstaller/Scoop/issues/6045))
- **install:** Expand `env_set` items before setting Environment Variables ([#6050](https://github.com/ScoopInstaller/Scoop/issues/6050))
- **install:** Fix parsing error when installing multiple apps w/ specific version ([#6039](https://github.com/ScoopInstaller/Scoop/issues/6039))
## [v0.5.0](https://github.com/ScoopInstaller/Scoop/compare/v0.4.2...v0.5.0) - 2024-07-01
### Features
- **scoop-search:** Use SQLite for caching apps to speed up local search ([#5851](https://github.com/ScoopInstaller/Scoop/issues/5851), [#5918](https://github.com/ScoopInstaller/Scoop/issues/5918), [#5946](https://github.com/ScoopInstaller/Scoop/issues/5946), [#5949](https://github.com/ScoopInstaller/Scoop/issues/5949), [#5955](https://github.com/ScoopInstaller/Scoop/issues/5955), [#5966](https://github.com/ScoopInstaller/Scoop/issues/5966), [#5967](https://github.com/ScoopInstaller/Scoop/issues/5967), [#5981](https://github.com/ScoopInstaller/Scoop/issues/5981))
- **core:** New cache filename format ([#5929](https://github.com/ScoopInstaller/Scoop/issues/5929), [#5944](https://github.com/ScoopInstaller/Scoop/issues/5944))
- **decompress:** Use innounp-unicode as default Inno Setup Unpacker ([#6028](https://github.com/ScoopInstaller/Scoop/issues/6028))
- **install:** Added the ability to install specific version of app from URL/file link ([#5988](https://github.com/ScoopInstaller/Scoop/issues/5988))
### Bug Fixes
- **scoop-download|install|update:** Use consistent options ([#5956](https://github.com/ScoopInstaller/Scoop/issues/5956))
- **scoop-info:** Fix download size estimating ([#5958](https://github.com/ScoopInstaller/Scoop/issues/5958))
- **scoop-search:** Catch error of parsing invalid manifest ([#5930](https://github.com/ScoopInstaller/Scoop/issues/5930))
- **checkver:** Correct variable 'regex' to 'regexp' ([#5993](https://github.com/ScoopInstaller/Scoop/issues/5993))
- **checkver:** Correct error messages ([#6024](https://github.com/ScoopInstaller/Scoop/issues/6024))
- **core:** Search for Git executable instead of any cmdlet ([#5998](https://github.com/ScoopInstaller/Scoop/issues/5998))
- **core:** Use correct path in 'bash' ([#6006](https://github.com/ScoopInstaller/Scoop/issues/6006))
- **core:** Limit the number of commands to get when search for git executable ([#6013](https://github.com/ScoopInstaller/Scoop/pull/6013))
- **decompress:** Match `extract_dir`/`extract_to` and archives ([#5983](https://github.com/ScoopInstaller/Scoop/issues/5983))
- **json:** Serialize jsonpath return ([#5921](https://github.com/ScoopInstaller/Scoop/issues/5921))
- **shim:** Restore original path for JAR cmd ([#6030](https://github.com/ScoopInstaller/Scoop/issues/6030))
### Code Refactoring
- **decompress:** Use 7zip to extract Zstd archive ([#5973](https://github.com/ScoopInstaller/Scoop/issues/5973))
- **install:** Separate archive extraction from downloader ([#5951](https://github.com/ScoopInstaller/Scoop/issues/5951))
- **install:** Replace 'run_(un)installer()' with 'Invoke-Installer()' ([#5968](https://github.com/ScoopInstaller/Scoop/issues/5968), [#5971](https://github.com/ScoopInstaller/Scoop/issues/5971))
## [v0.4.2](https://github.com/ScoopInstaller/Scoop/compare/v0.4.1...v0.4.2) - 2024-05-14
### Bug Fixes
- **autoupdate:** Copy `PSCustomObject`-type properties within `substitute()` to prevent reference changes ([#5934](https://github.com/ScoopInstaller/Scoop/issues/5934), [#5962](https://github.com/ScoopInstaller/Scoop/issues/5962))
- **core:** Fix `Invoke-ExternalCommand` quoting rules ([#5945](https://github.com/ScoopInstaller/Scoop/issues/5945))
- **system:** Fix argument passing to `Split-PathLikeEnvVar()` in deprecated `strip_path()` ([#5937](https://github.com/ScoopInstaller/Scoop/issues/5937))
## [v0.4.1](https://github.com/ScoopInstaller/Scoop/compare/v0.4.0...v0.4.1) - 2024-04-25
### Bug Fixes
- **core:** Fix `Invoke-ExternalCommand` regression ([#5923](https://github.com/ScoopInstaller/Scoop/issues/5923))
## [v0.4.0](https://github.com/ScoopInstaller/Scoop/compare/v0.3.1...v0.4.0) - 2024-04-18
### Features
- **scoop-update:** Add support for parallel syncing buckets in PowerShell 7 and improve output ([#5122](https://github.com/ScoopInstaller/Scoop/issues/5122))
- **bucket:** Switch nirsoft bucket to ScoopInstaller/Nirsoft ([#5328](https://github.com/ScoopInstaller/Scoop/issues/5328))
- **bucket:** Make official buckets higher priority ([#5398](https://github.com/ScoopInstaller/Scoop/issues/5398))
- **config:** Support portable config file ([#5369](https://github.com/ScoopInstaller/Scoop/issues/5369))
- **core:** Add `-Quiet` switch for `Invoke-ExternalCommand` ([#5346](https://github.com/ScoopInstaller/Scoop/issues/5346))
- **core:** Allow global install of PowerShell modules ([#5611](https://github.com/ScoopInstaller/Scoop/issues/5611))
- **path:** Isolate Scoop apps' PATH ([#5840](https://github.com/ScoopInstaller/Scoop/issues/5840))
### Bug Fixes
- **scoop-alias:** Prevent overwrite existing file when adding alias ([#5577](https://github.com/ScoopInstaller/Scoop/issues/5577))
- **scoop-checkup:** Skip defender check in Windows Sandbox ([#5519](https://github.com/ScoopInstaller/Scoop/issues/5519))
- **scoop-checkup:** Change the message level of helpers from ERROR to WARN ([#5614](https://github.com/ScoopInstaller/Scoop/issues/5614))
- **scoop-checkup:** Don't throw 7zip error when external 7zip is used ([#5703](https://github.com/ScoopInstaller/Scoop/issues/5703))
- **scoop-(un)hold:** Correct output the messages when manifest not found, (already|not) held ([#5519](https://github.com/ScoopInstaller/Scoop/issues/5519))
- **scoop-info:** Fix errors in file size collection when `--verbose` ([#5352](https://github.com/ScoopInstaller/Scoop/issues/5352))
- **scoop-reset:** Don't abort when multiple apps are passed and an app is running ([#5687](https://github.com/ScoopInstaller/Scoop/issues/5687))
- **scoop-update:** Change error message to a better instruction ([#5677](https://github.com/ScoopInstaller/Scoop/issues/5677))
- **scoop-virustotal:** Fix `scoop-virustotal` when `--all` has been passed without app ([#5593](https://github.com/ScoopInstaller/Scoop/issues/5593))
- **scoop-virustotal:** Fix the issue that escape character not available in PowerShell 5.1 ([#5870](https://github.com/ScoopInstaller/Scoop/issues/5870))
- **autoupdate:** Fix file hash extraction ([#5295](https://github.com/ScoopInstaller/Scoop/issues/5295))
- **autoupdate:** Fix bug that 'WebClient' doesn't auto-extract 'gzip' ([#5901](https://github.com/ScoopInstaller/Scoop/issues/5901))
- **buckets:** Avoid error messages for unexpected dir ([#5549](https://github.com/ScoopInstaller/Scoop/issues/5549))
- **config:** Warn users about misconfigured GitHub token ([#5777](https://github.com/ScoopInstaller/Scoop/issues/5777))
- **core:** Fix scripts' calling parameters ([#5365](https://github.com/ScoopInstaller/Scoop/issues/5365))
- **core:** Fix `is_in_dir` under Unix ([#5391](https://github.com/ScoopInstaller/Scoop/issues/5391))
- **core:** Rewrite config file when needed ([#5439](https://github.com/ScoopInstaller/Scoop/issues/5439))
- **core:** Prevents leaking HTTP(S)_PROXY env vars to current sessions after Invoke-Git in parallel execution ([#5436](https://github.com/ScoopInstaller/Scoop/issues/5436))
- **core:** Handle scoop aliases and broken(edited,copied) shim ([#5551](https://github.com/ScoopInstaller/Scoop/issues/5551))
- **core:** Avoid error messages when deleting non-existent environment variable ([#5547](https://github.com/ScoopInstaller/Scoop/issues/5547))
- **core:** Use relative path as fallback of `$scoopdir` ([#5544](https://github.com/ScoopInstaller/Scoop/issues/5544))
- **core:** Fix detection of Git ([#5545](https://github.com/ScoopInstaller/Scoop/issues/5545))
- **core:** Do not call `scoop` externally from inside the code ([#5695](https://github.com/ScoopInstaller/Scoop/issues/5695))
- **core:** Fix arguments parsing method of `Invoke-ExternalCommand()` ([#5839](https://github.com/ScoopInstaller/Scoop/issues/5839))
- **decompress:** Exclude '*.nsis' that may cause error ([#5294](https://github.com/ScoopInstaller/Scoop/issues/5294))
- **decompress:** Remove unused parent dir w/ 'extract_dir' ([#5682](https://github.com/ScoopInstaller/Scoop/issues/5682))
- **decompress:** Use `wix.exe` in WiX Toolset v4+ as primary extractor of `Expand-DarkArchive()` ([#5871](https://github.com/ScoopInstaller/Scoop/issues/5871))
- **env:** Avoid automatic expansion of `%%` in env ([#5395](https://github.com/ScoopInstaller/Scoop/issues/5395), [#5452](https://github.com/ScoopInstaller/Scoop/issues/5452), [#5631](https://github.com/ScoopInstaller/Scoop/issues/5631))
- **getopt:** Stop split arguments in `getopt()` and ensure array by explicit arguments type ([#5326](https://github.com/ScoopInstaller/Scoop/issues/5326))
- **install:** Fix download from private GitHub repositories ([#5361](https://github.com/ScoopInstaller/Scoop/issues/5361))
- **install:** Avoid error when unlinking non-existent junction/hardlink ([#5552](https://github.com/ScoopInstaller/Scoop/issues/5552))
- **manifest:** Correct source of manifest ([#5575](https://github.com/ScoopInstaller/Scoop/issues/5575))
- **shim:** Remove console window for GUI applications ([#5559](https://github.com/ScoopInstaller/Scoop/issues/5559))
- **shim:** Use bash executable directly ([#5433](https://github.com/ScoopInstaller/Scoop/issues/5433))
- **shim:** Check literal path in `Get-ShimPath` ([#5680](https://github.com/ScoopInstaller/Scoop/issues/5680))
- **shim:** Avoid unexpected output of `list` subcommand ([#5681](https://github.com/ScoopInstaller/Scoop/issues/5681))
- **shim:** Allow GUI applications to attach to the shell's console when launched using the GUI shim ([#5721](https://github.com/ScoopInstaller/Scoop/issues/5721))
- **shim:** Run JAR file from app's root directory ([#5872](https://github.com/ScoopInstaller/Scoop/issues/5872))
- **shortcuts:** Output correctly formatted path ([#5333](https://github.com/ScoopInstaller/Scoop/issues/5333))
- **update/uninstall:** Remove items from PATH correctly ([#5833](https://github.com/ScoopInstaller/Scoop/issues/5833))
### Performance Improvements
- **scoop-search:** Improve performance for local search ([#5644](https://github.com/ScoopInstaller/Scoop/issues/5644))
- **scoop-update:** Check for running process before wasting time on download ([#5799](https://github.com/ScoopInstaller/Scoop/issues/5799))
- **decompress:** Disable progress bar to improve `Expand-Archive` performance ([#5410](https://github.com/ScoopInstaller/Scoop/issues/5410))
- **shim:** Update kiennq-shim to v3.1.1 ([#5841](https://github.com/ScoopInstaller/Scoop/issues/5841), [#5847](https://github.com/ScoopInstaller/Scoop/issues/5847))
### Code Refactoring
- **scoop-download:** Output more detailed manifest information ([#5277](https://github.com/ScoopInstaller/Scoop/issues/5277))
- **core:** Cleanup some old codes, e.g., msi section and config migration ([#5715](https://github.com/ScoopInstaller/Scoop/issues/5715), [#5824](https://github.com/ScoopInstaller/Scoop/issues/5824))
- **core:** Rewrite and separate path-related functions to `system.ps1` ([#5836](https://github.com/ScoopInstaller/Scoop/issues/5836), [#5858](https://github.com/ScoopInstaller/Scoop/issues/5858), [#5864](https://github.com/ScoopInstaller/Scoop/issues/5864))
- **core:** Get rid of 'fullpath' ([#3533](https://github.com/ScoopInstaller/Scoop/issues/3533))
- **git:** Use Invoke-Git() with direct path to git.exe to prevent spawning shim subprocesses ([#5122](https://github.com/ScoopInstaller/Scoop/issues/5122), [#5375](https://github.com/ScoopInstaller/Scoop/issues/5375))
- **helper:** Remove 7zip's fallback '7zip-zstd' ([#5548](https://github.com/ScoopInstaller/Scoop/issues/5548))
- **shim:** Remove CS shim codebase ([#5903](https://github.com/ScoopInstaller/Scoop/issues/5903))
### Builds
- **checkver:** Read the private_host config variable ([#5381](https://github.com/ScoopInstaller/Scoop/issues/5381))
- **supporting:** Update Json to 13.0.3, Json.Schema to 3.0.15 ([#5835](https://github.com/ScoopInstaller/Scoop/issues/5835))
### Continuous Integration
- **dependabot:** Add dependabot.yml for GitHub Actions ([#5377](https://github.com/ScoopInstaller/Scoop/issues/5377))
- **module:** Update 'psmodulecache' version to 'main' ([#5828](https://github.com/ScoopInstaller/Scoop/issues/5828))
### Tests
- **bucket:** Skip manifest validation if no manifest changes ([#5270](https://github.com/ScoopInstaller/Scoop/issues/5270))
### Documentation
- **scoop-info:** Fix help message([#5445](https://github.com/ScoopInstaller/Scoop/issues/5445))
- **readme:** Improve documentation language ([#5638](https://github.com/ScoopInstaller/Scoop/issues/5638))
## [v0.3.1](https://github.com/ScoopInstaller/Scoop/compare/v0.3.0...v0.3.1) - 2022-11-15
### Features
- **config:** Allow Scoop to check if apps versioned as 'nightly' are outdated ([#5166](https://github.com/ScoopInstaller/Scoop/issues/5166))
- **checkup:** Add Windows Developer Mode check ([#5233](https://github.com/ScoopInstaller/Scoop/issues/5233))
- **bucket:** Add 'sysinternals' bucket to known ([#5237](https://github.com/ScoopInstaller/Scoop/issues/5237))
### Bug Fixes
- **decompress:** Use PS's default 'Expand-Archive()' ([#5185](https://github.com/ScoopInstaller/Scoop/issues/5185))
- **hash:** Fix SourceForge's hash extraction ([#5189](https://github.com/ScoopInstaller/Scoop/issues/5189))
- **decompress:** Trim ending '/' ([#5195](https://github.com/ScoopInstaller/Scoop/issues/5195))
- **shim:** Exit if shim creating failed 'cause no git ([#5225](https://github.com/ScoopInstaller/Scoop/issues/5225))
- **scoop-import:** Add correct architecture argument ([#5210](https://github.com/ScoopInstaller/Scoop/issues/5210))
- **scoop-config:** Output `[DateTime]` as `[String]` ([#5232](https://github.com/ScoopInstaller/Scoop/issues/5232))
- **shim:** fixed shim add bug related to Resolve-Path ([#5492](https://github.com/ScoopInstaller/Scoop/issues/5492))
### Code Refactoring
- **hash:** Use `Get-FileHash()` directly ([#5177](https://github.com/ScoopInstaller/Scoop/issues/5177))
- **installer:** Drop the old installer ([#5186](https://github.com/ScoopInstaller/Scoop/issues/5186))
- **unix:** Remove `unix.ps1` ([#5235](https://github.com/ScoopInstaller/Scoop/issues/5235))
### Builds
- **auto-pr:** Add `CommitMessageFormat` option ([#5171](https://github.com/ScoopInstaller/Scoop/issues/5171))
- **checkver:** Support XML default namespace ([#5191](https://github.com/ScoopInstaller/Scoop/issues/5191))
- **pssa:** Remove unused 'ExcludeRules' ([#5201](https://github.com/ScoopInstaller/Scoop/issues/5201))
- **schema:** Add 'installer' and 'shortcuts' to 'autoupdate' ([#5220](https://github.com/ScoopInstaller/Scoop/issues/5220))
- **checkhashes:** Use correct version number if `UseCache` ([#5240](https://github.com/ScoopInstaller/Scoop/issues/5240))
### Continuous Integration
- **module:** Update modules version ([#5209](https://github.com/ScoopInstaller/Scoop/issues/5209))
### Tests
- **unix:** Fix tests in Linux and macOS ([#5179](https://github.com/ScoopInstaller/Scoop/issues/5179))
- **pester:** Update to Pester 5 ([#5222](https://github.com/ScoopInstaller/Scoop/issues/5222))
- **bucket:** Use BuildHelpers' EnvVars ([#5226](https://github.com/ScoopInstaller/Scoop/issues/5226))
### Documentation
- **scoop-cat:** Fix help message([#5224](https://github.com/ScoopInstaller/Scoop/issues/5224))
## [v0.3.0](https://github.com/ScoopInstaller/Scoop/compare/v0.2.4...v0.3.0) - 2022-10-10
### Features
- **install:** Add support for ARM64 architecture ([#5154](https://github.com/ScoopInstaller/Scoop/issues/5154))
- **install:** Show the running process ([#5102](https://github.com/ScoopInstaller/Scoop/issues/5102))
- **getopt:** Support option terminator (`--`) ([#5121](https://github.com/ScoopInstaller/Scoop/issues/5121))
- **subdir:** Allow subdir in 'bucket' ([#5119](https://github.com/ScoopInstaller/Scoop/issues/5119))
- **scoop-config:** Allow 'hold_update_until' be set manually ([#5100](https://github.com/ScoopInstaller/Scoop/issues/5100))
- **scoop-(un)hold:** Support `scoop (un)hold scoop` ([#5089](https://github.com/ScoopInstaller/Scoop/issues/5089))
- **scoop-update:** Stash uncommitted changes before update ([#5091](https://github.com/ScoopInstaller/Scoop/issues/5091))
### Bug Fixes
- **config:** Change config option to snake_case in file and SCREAMING_CASE in code ([#5116](https://github.com/ScoopInstaller/Scoop/issues/5116))
- **jsonpath:** Prevent converting date string to DateTime in JSONPath ([#5130](https://github.com/ScoopInstaller/Scoop/issues/5130))
- **psmodule:** Remove folder recursively when unlinking previous module path ([#5127](https://github.com/ScoopInstaller/Scoop/issues/5127))
- **scoop-update:** Add `uninstall_psmodule` to update process ([#5136](https://github.com/ScoopInstaller/Scoop/issues/5136))
### Code Refactoring
- **download:** Rename `dl()` to `Invoke-Download()` ([#5143](https://github.com/ScoopInstaller/Scoop/issues/5143))
- **path:** Use 'Convert-Path()' instead of 'Resolve-Path()' ([#5109](https://github.com/ScoopInstaller/Scoop/issues/5109))
- **scoop-shim:** Use `getopt` to parse arguments ([#5125](https://github.com/ScoopInstaller/Scoop/issues/5125))
### Builds
- **checkver:** Implement SourceForge checkver functionality ([#5113](https://github.com/ScoopInstaller/Scoop/issues/5113), [#5163](https://github.com/ScoopInstaller/Scoop/issues/5163))
- **checkurls:** Allow checking URLs from private_hosts ([#5152](https://github.com/ScoopInstaller/Scoop/issues/5152))
- **schema:** Set manifest schema to be stricter ([#5093](https://github.com/ScoopInstaller/Scoop/issues/5093))
- **vscode:** Tweak VSCode setting ([#5149](https://github.com/ScoopInstaller/Scoop/issues/5149))
## [v0.2.4](https://github.com/ScoopInstaller/Scoop/compare/v0.2.3...v0.2.4) - 2022-08-08
### Features
- **core:** Create no window by default in `Invoke-ExternalCommand` ([#5066](https://github.com/ScoopInstaller/Scoop/issues/5066))
- **core:** Improve argument concatenation in `Invoke-ExternalCommand` ([#5065](https://github.com/ScoopInstaller/Scoop/issues/5065))
- **install:** Show bucket name while installing an app ([#5075](https://github.com/ScoopInstaller/Scoop/issues/5075))
- **scoop-status:** Add flag to disable remote checking ([#5073](https://github.com/ScoopInstaller/Scoop/issues/5073))
- **scoop-update:** Add support for `pre_uninstall` and `post_uninstall` ([#5085](https://github.com/ScoopInstaller/Scoop/issues/5085))
### Bug Fixes
- **core:** Avoid deadlock in `Invoke-ExternalCommand` ([#5064](https://github.com/ScoopInstaller/Scoop/issues/5064))
- **core:** Use 'System.Nullable<bool>' for param 'global' ([#5088](https://github.com/ScoopInstaller/Scoop/issues/5088))
- **install:** Move from cache when `--no-cache` is specified ([#5039](https://github.com/ScoopInstaller/Scoop/issues/5039))
- **scoop-status:** Correct formatting of `Info` output ([#5047](https://github.com/ScoopInstaller/Scoop/issues/5047))
### Builds
- **checkver:** Load page content before running 'script' ([#5080](https://github.com/ScoopInstaller/Scoop/issues/5080))
- **json:** Update Newtonsoft.Json.Schema to 3.0.15-beta2 ([#5053](https://github.com/ScoopInstaller/Scoop/issues/5053))
## [v0.2.3](https://github.com/ScoopInstaller/Scoop/compare/v0.2.2...v0.2.3) - 2022-07-07
### Features
- **chore:** Add missing -a/--all param to all commands ([#5004](https://github.com/ScoopInstaller/Scoop/issues/5004))
- **scoop-status:** Check bucket status, improve output ([#5011](https://github.com/ScoopInstaller/Scoop/issues/5011))
- **scoop-info:** Show app installed/download size ([#4886](https://github.com/ScoopInstaller/Scoop/issues/4886))
- **scoop-import:** Import a Scoop installation from JSON ([#5014](https://github.com/ScoopInstaller/Scoop/issues/5014), [#5034](https://github.com/ScoopInstaller/Scoop/issues/5034))
### Bug Fixes
- **chore:** Update help documentation ([#5002](https://github.com/ScoopInstaller/Scoop/issues/5002), [#5029](https://github.com/ScoopInstaller/Scoop/issues/5029))
- **decompress:** Handle split RAR archives ([#4994](https://github.com/ScoopInstaller/Scoop/issues/4994))
- **shortcuts:** Fix network drive shortcut creation ([#4410](https://github.com/ScoopInstaller/Scoop/issues/4410), [#5006](https://github.com/ScoopInstaller/Scoop/issues/5006))
### Code Refactoring
- **scoop-search:** Output PSObject, use API token ([#4997](https://github.com/ScoopInstaller/Scoop/issues/4997))
### Builds
- **checkver,auto-pr:** Allow passing file path ([#5019](https://github.com/ScoopInstaller/Scoop/issues/5019))
- **checkver:** Exit routine earlier if error ([#5025](https://github.com/ScoopInstaller/Scoop/issues/5025))
- **json:** Update Newton.Json to 13.0.1 ([#5026](https://github.com/ScoopInstaller/Scoop/issues/5026))
### Tests
- **typo:** Fix typo ('formated' -> 'formatted') ([#4217](https://github.com/ScoopInstaller/Scoop/issues/4217))
## [v0.2.2](https://github.com/ScoopInstaller/Scoop/compare/v0.2.1...v0.2.2) - 2022-06-21
### Features
- **core:** Add `Get-Encoding` function to fix missing webclient encoding ([#4956](https://github.com/ScoopInstaller/Scoop/issues/4956))
- **scoop-(un)hold:** Add `-g`/`--global` flag ([#4991](https://github.com/ScoopInstaller/Scoop/issues/4991))
- **scoop-update:** Support `scoop update scoop` ([#4992](https://github.com/ScoopInstaller/Scoop/issues/4992))
- **scoop-virustotal:** Migrate to VirusTotal API v3 ([#4983](https://github.com/ScoopInstaller/Scoop/issues/4983))
### Bug Fixes
- **manifest:** Fix bugs in 'Get-Manifest()' ([#4986](https://github.com/ScoopInstaller/Scoop/issues/4986))
## [v0.2.1](https://github.com/ScoopInstaller/Scoop/compare/v0.2.0...v0.2.1) - 2022-06-10
### Features
- **core:** Add pre_uninstall and post_uninstall hooks ([#4957](https://github.com/ScoopInstaller/Scoop/issues/4957), [#4962](https://github.com/ScoopInstaller/Scoop/issues/4962))
### Bug Fixes
- **bucket:** Make sure `list_buckets` return array ([#4979](https://github.com/ScoopInstaller/Scoop/issues/4979))
- **chore:** Deprecate tls1 and tls1.1 ([#4950](https://github.com/ScoopInstaller/Scoop/issues/4950))
- **chore:** Update Nonportable bucket URL ([#4955](https://github.com/ScoopInstaller/Scoop/issues/4955))
- **core:** Using `Invoke-Command` instead of `Invoke-Expression` ([#4941](https://github.com/ScoopInstaller/Scoop/issues/4941))
- **core:** Load config file before initialization ([#4932](https://github.com/ScoopInstaller/Scoop/issues/4932))
- **core:** Allow to use '_' and '.' in bucket name ([#4952](https://github.com/ScoopInstaller/Scoop/issues/4952))
- **depends:** Avoid digits in archive file extension (except for .7z and .001) ([#4915](https://github.com/ScoopInstaller/Scoop/issues/4915))
- **bucket:** Don't check remote URL of non-git buckets ([#4923](https://github.com/ScoopInstaller/Scoop/issues/4923))
- **bucket:** Don't write message OK before bucket is cloned ([#4925](https://github.com/ScoopInstaller/Scoop/issues/4925))
- **shim:** Add 'Get-CommandPath()' to find git ([#4913](https://github.com/ScoopInstaller/Scoop/issues/4913))
- **shim:** Remove character replacement in .cmd -> .ps1 shims ([#4914](https://github.com/ScoopInstaller/Scoop/issues/4914))
- **scoop:** Pass CLI arguments as string objects ([#4931](https://github.com/ScoopInstaller/Scoop/issues/4931))
- **scoop-info:** Fix error message when manifest is not found ([#4935](https://github.com/ScoopInstaller/Scoop/issues/4935))
- **scoop-search:** Require files in 'bucket' dir for remote known buckets ([#4944](https://github.com/ScoopInstaller/Scoop/issues/4944))
- **update:** Prevent uninstall when update ([#4949](https://github.com/ScoopInstaller/Scoop/issues/4949))
- **scoop-download:** Use correct Args when calling `Get-Manifest` ([#4970](https://github.com/ScoopInstaller/Scoop/issues/4970))
### Code Refactoring
- **manifest:** Rename 'Find-Manifest()' to 'Get-Manifest() ([#4966](https://github.com/ScoopInstaller/Scoop/issues/4966), [#4981](https://github.com/ScoopInstaller/Scoop/issues/4981))
### Documentation
- **readme:** Update license badge ([#4929](https://github.com/ScoopInstaller/Scoop/issues/4929))
## [v0.2.0](https://github.com/ScoopInstaller/Scoop/compare/v0.1.0...v0.2.0) - 2022-05-10
### Features
- **relicense:** Relicense to dual-license (Unlicense or MIT) ([#4903](https://github.com/ScoopInstaller/Scoop/issues/4903), [#4870](https://github.com/ScoopInstaller/Scoop/issues/4870))
- **install:** Allow downloading from private repositories ([#4254](https://github.com/ScoopInstaller/Scoop/issues/4254))
- **scoop-cleanup:** Add `-a/--all` switch to cleanup all apps ([#4906](https://github.com/ScoopInstaller/Scoop/issues/4906))
### Bug Fixes
- **bucket:** Return empty list correctly in `Get-LocalBucket` ([#4885](https://github.com/ScoopInstaller/Scoop/issues/4885))
- **install:** Fix issue with installation inside containers ([#4837](https://github.com/ScoopInstaller/Scoop/issues/4837))
- **installed:** If no `$global`, check both local and global installed ([#4798](https://github.com/ScoopInstaller/Scoop/issues/4798))
- **shim:** Manipulating shims with UTF8 encoding ([#4791](https://github.com/ScoopInstaller/Scoop/issues/4791), [#4813](https://github.com/ScoopInstaller/Scoop/issues/4813))
- **shim:** Correctly quote $@ in sh->ps1 shims ([#4809](https://github.com/ScoopInstaller/Scoop/issues/4809))
- **update:** Skip logs starting with `(chore)` ([#4800](https://github.com/ScoopInstaller/Scoop/issues/4800))
- **scoop-download:** Add failure check ([#4822](https://github.com/ScoopInstaller/Scoop/issues/4822))
- **scoop-list:** Fix date in 'Updated' column showing the months in the place of minutes ([#4880](https://github.com/ScoopInstaller/Scoop/issues/4880))
- **scoop-prefix:** Fix typo that breaks global installed apps ([#4795](https://github.com/ScoopInstaller/Scoop/issues/4795))
### Performance Improvements
- **scoop:** Load libs only once ([#4839](https://github.com/ScoopInstaller/Scoop/issues/4839), [#4884](https://github.com/ScoopInstaller/Scoop/issues/4884))
### Code Refactoring
- **bucket:** Move 'Find-Manifest' and 'list_buckets' to 'buckets' ([#4814](https://github.com/ScoopInstaller/Scoop/issues/4814))
- **relpath:** Use `$PSScriptRoot` instead of `relpath` ([#4793](https://github.com/ScoopInstaller/Scoop/issues/4793))
- **reset_aliases:** Move core function of `reset_aliases` to `scoop` ([#4794](https://github.com/ScoopInstaller/Scoop/issues/4794))
- **config:** Rename checkver_token to gh_token and SCOOP_CHECKVER_TOKEN to SCOOP_GH_TOKEN ([#4832](https://github.com/ScoopInstaller/Scoop/issues/4832), [#4842](https://github.com/ScoopInstaller/Scoop/issues/4842))
### Builds
- **checkver:** Add option to throw error as exception ([#4867](https://github.com/ScoopInstaller/Scoop/issues/4867))
- **schema:** Remove 'description' from required fields ([#4853](https://github.com/ScoopInstaller/Scoop/issues/4853), [#4874](https://github.com/ScoopInstaller/Scoop/issues/4874))
### Documentation
- **changelog:** Rearrange CHANGELOG ([#4897](https://github.com/ScoopInstaller/Scoop/issues/4897))
- **readme:** Update installation instruction ([#4825](https://github.com/ScoopInstaller/Scoop/issues/4825))
- **readme:** Fix badges for Gitter and CI Tests ([#4830](https://github.com/ScoopInstaller/Scoop/issues/4830))
- **scoop-shim:** Fix typo ([#4836](https://github.com/ScoopInstaller/Scoop/issues/4836))
## [v0.1.0](https://github.com/ScoopInstaller/Scoop/compare/2021-12-26...v0.1.0) - 2022-03-01
### Features
- **scoop-bucket:** List more detailed information for buckets ([#4704](https://github.com/ScoopInstaller/Scoop/issues/4704), [#4756](https://github.com/ScoopInstaller/Scoop/issues/4756), [#4759](https://github.com/ScoopInstaller/Scoop/issues/4759))
- **scoop-cache:** Handle multiple apps and show detailed information ([#4738](https://github.com/ScoopInstaller/Scoop/issues/4738))
- **scoop-cat:** Use `bat` to pretty-print JSON ([#4742](https://github.com/ScoopInstaller/Scoop/issues/4742))
- **scoop-config:** Allow Scoop to ignore running processes during reset/uninstall/update ([#4713](https://github.com/ScoopInstaller/Scoop/issues/4713), [#4731](https://github.com/ScoopInstaller/Scoop/issues/4731))
- **scoop-config:** Show all settings ([#4765](https://github.com/ScoopInstaller/Scoop/issues/4765))
- **scoop-download:** Add `scoop download` command ([#4621](https://github.com/ScoopInstaller/Scoop/issues/4621))
- **scoop-(install|virustotal):** Allow skipping update check ([#4634](https://github.com/ScoopInstaller/Scoop/issues/4634))
- **scoop-list:** Allow list manipulation ([#4718](https://github.com/ScoopInstaller/Scoop/issues/4718))
- **scoop-list:** Show last-updated time ([#4723](https://github.com/ScoopInstaller/Scoop/issues/4723))
- **scoop-info:** Revamp details and show more information ([#4747](https://github.com/ScoopInstaller/Scoop/issues/4747))
- **scoop-shim:** Add `scoop shim` to manipulate shims ([#4727](https://github.com/ScoopInstaller/Scoop/issues/4727), [#4736](https://github.com/ScoopInstaller/Scoop/issues/4736))
### Bug Fixes
- **autoupdate:** Allow checksum file that contains whitespaces ([#4619](https://github.com/ScoopInstaller/Scoop/issues/4619))
- **autoupdate:** Rename $response to $res ([#4706](https://github.com/ScoopInstaller/Scoop/issues/4706))
- **config:** Ensure manipulating config with UTF8 encoding ([#4644](https://github.com/ScoopInstaller/Scoop/issues/4644))
- **config:** Allow scoop config use Unicode characters ([#4631](https://github.com/ScoopInstaller/Scoop/issues/4631))
- **config:** Fix `set_config` bugs ([#3681](https://github.com/ScoopInstaller/Scoop/issues/3681))
- **current:** Remove 'current' while it's not a junction ([#4687](https://github.com/ScoopInstaller/Scoop/issues/4687))
- **depends:** Prevent error on no URL ([#4595](https://github.com/ScoopInstaller/Scoop/issues/4595))
- **depends:** Check if extractor is available ([#4042](https://github.com/ScoopInstaller/Scoop/issues/4042))
- **decompress:** Fix nested Zstd archive extraction ([#4608](https://github.com/ScoopInstaller/Scoop/issues/4608), [#4639](https://github.com/ScoopInstaller/Scoop/issues/4639))
- **installed:** Fix 'core/installed' that mark failed app as 'installed' ([#4650](https://github.com/ScoopInstaller/Scoop/issues/4650), [#4676](https://github.com/ScoopInstaller/Scoop/issues/4676), [#4689](https://github.com/ScoopInstaller/Scoop/issues/4689), [#4785](https://github.com/ScoopInstaller/Scoop/issues/4785))
- **no-junctions:** Fix error when `NO_JUNCTIONS` is been set ([#4722](https://github.com/ScoopInstaller/Scoop/issues/4722), [#4726](https://github.com/ScoopInstaller/Scoop/issues/4726))
- **shim:** Fix PS1 shim error when in different drive in PS7 ([#4614](https://github.com/ScoopInstaller/Scoop/issues/4614))
- **shim:** Fix `sh` shim error in WSL ([#4637](https://github.com/ScoopInstaller/Scoop/issues/4637))
- **shim:** Use `-file` instead of `-command` in ps1 script shims ([#4721](https://github.com/ScoopInstaller/Scoop/issues/4721))
- **shim:** Fix exe shim when app path has white spaces ([#4734](https://github.com/ScoopInstaller/Scoop/issues/4734), [#4780](https://github.com/ScoopInstaller/Scoop/issues/4780))
- **versions:** Fix wrong version number when only one version dir ([#4679](https://github.com/ScoopInstaller/Scoop/issues/4679))
- **versions:** Get current version from failed installation if possible ([#4720](https://github.com/ScoopInstaller/Scoop/issues/4720), [#4725](https://github.com/ScoopInstaller/Scoop/issues/4725))
- **scoop-alias:** Fix alias initialization ([#4737](https://github.com/ScoopInstaller/Scoop/issues/4737))
- **scoop-checkup:** Skip 'check_windows_defender' when have not admin privileges ([#4699](https://github.com/ScoopInstaller/Scoop/issues/4699))
- **scoop-cleanup:** Remove apps other than current version ([#4665](https://github.com/ScoopInstaller/Scoop/issues/4665))
- **scoop-search:** Remove redundant 'bucket/' in search result ([#4773](https://github.com/ScoopInstaller/Scoop/issues/4773))
- **scoop-update:** Skip updating non git buckets ([#4670](https://github.com/ScoopInstaller/Scoop/issues/4670), [#4672](https://github.com/ScoopInstaller/Scoop/issues/4672))
### Performance Improvements
- **uninstall:** Avoid checking all files for unlinking persisted data ([#4681](https://github.com/ScoopInstaller/Scoop/issues/4681), [#4763](https://github.com/ScoopInstaller/Scoop/issues/4763))
### Code Refactoring
- **depends:** Rewrite 'depends.ps1' ([#4638](https://github.com/ScoopInstaller/Scoop/issues/4638), [#4673](https://github.com/ScoopInstaller/Scoop/issues/4673))
- **mklink:** Use 'New-Item' instead of 'mklink' ([#4690](https://github.com/ScoopInstaller/Scoop/issues/4690))
- **rmdir:** Use 'Remove-Item' instead of 'rmdir' ([#4691](https://github.com/ScoopInstaller/Scoop/issues/4691))
- **COMSPEC:** Deprecate use of subshell cmd.exe ([#4692](https://github.com/ScoopInstaller/Scoop/issues/4692))
- **git:** Use 'git -C' to specify the work directory instead of 'Push-Location'/'Pop-Location' ([#4697](https://github.com/ScoopInstaller/Scoop/issues/4697))
- **scoop-info:** Use List View for output ([#4741](https://github.com/ScoopInstaller/Scoop/issues/4741))
- **scoop-config:** Use underscores everywhere ([#4745](https://github.com/ScoopInstaller/Scoop/issues/4745))
### Builds
- **checkver:** Fix output with '-Version' ([#3774](https://github.com/ScoopInstaller/Scoop/issues/3774))
- **schema:** Add '$schema' property ([#4623](https://github.com/ScoopInstaller/Scoop/issues/4623))
- **schema:** Add explicit escape to opening bracket matcher in jp/jsonpath regex ([#3719](https://github.com/ScoopInstaller/Scoop/issues/3719))
- **schema:** Fix typo ('note' -> 'notes') ([#4678](https://github.com/ScoopInstaller/Scoop/issues/4678))
- **tests:** Support both AppVeyor and GitHub Actions ([#4655](https://github.com/ScoopInstaller/Scoop/issues/4655))
- **tests:** Run GitHub Actions CI on each commit ([#4664](https://github.com/ScoopInstaller/Scoop/issues/4664))
- **tests:** Use cache in GitHub Actions ([#4671](https://github.com/ScoopInstaller/Scoop/issues/4671))
- **tests:** Disable CI test on 'push' ([#4677](https://github.com/ScoopInstaller/Scoop/issues/4677))
- **vscode-settings:** Remove 'formatOnSave' trigger ([#4635](https://github.com/ScoopInstaller/Scoop/issues/4635))
### Styles
- **test:** Format scripts by VSCode's PowerShell extension ([#4609](https://github.com/ScoopInstaller/Scoop/issues/4609))
- **style:** Use correct casing for `$PSScriptRoot` ([#4775](https://github.com/ScoopInstaller/Scoop/issues/4775))
### Tests
- **test-bin:** Only write output file in CI and fix trailing whitespaces ([#4613](https://github.com/ScoopInstaller/Scoop/issues/4613))
- **manifest:** Fix manifests validation ([#4620](https://github.com/ScoopInstaller/Scoop/issues/4620))
- **zstd:** Fix 'zstd' extraction error in test ([#4651](https://github.com/ScoopInstaller/Scoop/issues/4651))
### Documentation
- **changelog:** Add 'CHANGLOG.md' ([#4600](https://github.com/ScoopInstaller/Scoop/issues/4600))
- **changelog:** Rearrange CHANGELOG ([#4729](https://github.com/ScoopInstaller/Scoop/issues/4729))
- **changelog:** Link CHANGELOG headers to 'releases/tag' ([#4730](https://github.com/ScoopInstaller/Scoop/issues/4730))
## [2021-12-26](https://github.com/ScoopInstaller/Scoop/compare/2021-11-22...2021-12-26)
### Features
- **core:** Redirect 'StandardError' in `Invoke-ExternalCommand()` ([#4570](https://github.com/ScoopInstaller/Scoop/issues/4570), [#4582](https://github.com/ScoopInstaller/Scoop/issues/4582))
- **install:** Add portableapps.com to strip_filename skips ([#3244](https://github.com/ScoopInstaller/Scoop/issues/3244))
- **install:** Show manifest on installation ([#4155](https://github.com/ScoopInstaller/Scoop/issues/4155), [fb496c48](https://github.com/ScoopInstaller/Scoop/commit/fb496c482bec4063e01b328f943224ab703dbbd8), [#4581](https://github.com/ScoopInstaller/Scoop/issues/4581))
- **template:** Add issue/PR templates ([#4572](https://github.com/ScoopInstaller/Scoop/issues/4572))
- **scoop-cat:** Add `scoop cat` command ([#4532](https://github.com/ScoopInstaller/Scoop/issues/4532))
- **scoop-config:** Document all configuration options ([#4579](https://github.com/ScoopInstaller/Scoop/issues/4579))
### Bug Fixes
- **bucket:** Remove JetBrains bucket ([dec25980](https://github.com/ScoopInstaller/Scoop/commit/dec25980525a81c176b3fd5f238e964db00f3be3))
- **bucket:** Remove nightlies bucket ([48b035d7](https://github.com/ScoopInstaller/Scoop/commit/48b035d7f99baa2e81d87ead4ff03a9594e49c3d))
- **core:** Escape '.' in 'parse_app()'. ([#4578](https://github.com/ScoopInstaller/Scoop/issues/4578))
- **core:** Use '-Encoding ASCII' in 'Out-File' ([#4571](https://github.com/ScoopInstaller/Scoop/issues/4571))
- **depends:** Specify function scope ([4d5fee36](https://github.com/ScoopInstaller/Scoop/commit/4d5fee36e1ed13fc850fd22a5414186aec030c6e))
- **install:** Use `Select-CurrentVersion` ([#4535](https://github.com/ScoopInstaller/Scoop/issues/4535))
- **install:** 'env_add_path' doesn't append '.' ([#4550](https://github.com/ScoopInstaller/Scoop/issues/4550))
- **repo:** Update repo links ([cbe29edd](https://github.com/ScoopInstaller/Scoop/commit/cbe29eddb3475e34740300eb1c2c52715446e3be))
- **scoop-update:** Update apps with '--all' ([ac71fccb](https://github.com/ScoopInstaller/Scoop/commit/ac71fccbecb3d4158f249db9c1b9bb043cb8e966))
- **scoop-update:** Fix scoop update -a requiring arguments ([#4531](https://github.com/ScoopInstaller/Scoop/issues/4531))
### Code Refactoring
- **shim:** Rework shimming logic ([#4543](https://github.com/ScoopInstaller/Scoop/issues/4543), [#4555](https://github.com/ScoopInstaller/Scoop/issues/4555), [3c90d1a0](https://github.com/ScoopInstaller/Scoop/commit/3c90d1a0701b0b64730dbf9ebc8d31f9b9c238f1), [2ec00d57](https://github.com/ScoopInstaller/Scoop/commit/2ec00d576c7e594dc5c0f1eac4536c5310ce6f17))
### Builds
- **auto-pr:** Remove hardcoded 'master' branch ([#4567](https://github.com/ScoopInstaller/Scoop/issues/4567))
- **checkver:** Improve JSONPath extraction support ([#4522](https://github.com/ScoopInstaller/Scoop/issues/4522))
- **checkver:** Use GitHub token from environment ([#4557](https://github.com/ScoopInstaller/Scoop/issues/4557))
- **schema:** Enable autoupdate for 'license' ([#4528](https://github.com/ScoopInstaller/Scoop/issues/4528), [#4596](https://github.com/ScoopInstaller/Scoop/issues/4596))
### Documentation
- **readme:** Add link to Contributing Guide ([5e11c94a](https://github.com/ScoopInstaller/Scoop/commit/5e11c94a544ff2adbdbec5072c32a94d3e5acb9c))
- **readme:** Fix links ([3bb7036e](https://github.com/ScoopInstaller/Scoop/commit/3bb7036ee111bfe58e82ba3d0fd39189b058776a))
### Reverts
- **shim:** Revert [#4229](https://github.com/ScoopInstaller/Scoop/issues/4229) ([#4553](https://github.com/ScoopInstaller/Scoop/issues/4553))
## [2021-11-22](https://github.com/ScoopInstaller/Scoop/compare/2020-11-26...2021-11-22)
### Features
- **bucket:** Move extras bucket to [@ScoopInstaller](https://github.com/ScoopInstaller) ([3e9a4d4e](https://github.com/ScoopInstaller/Scoop/commit/3e9a4d4ea0e7e4d6489099c46a763f58db07e633))
- **decompress:** Support Zstandard archive ([#4372](https://github.com/ScoopInstaller/Scoop/issues/4372), [e35ff313](https://github.com/ScoopInstaller/Scoop/commit/e35ff313a5d35cab1049024938c3423a5f6bf060), [47ebc6f1](https://github.com/ScoopInstaller/Scoop/commit/47ebc6f176b0db0afeb51b4ee237a20b2d8649e9))
- **install:** Handle arch-specific env_add_path ([#4013](https://github.com/ScoopInstaller/Scoop/issues/4013))
- **install:** s/lukesamson/ScoopInstaller in install.ps1 ([5226f26f](https://github.com/ScoopInstaller/Scoop/commit/5226f26f18157ed78f1529144404ec682374452e))
- **message:** Add config to disable aria2 warning message ([#4422](https://github.com/ScoopInstaller/Scoop/issues/4422))
- **shim:** Add another alternative shim written in rust ([#4229](https://github.com/ScoopInstaller/Scoop/issues/4229))
- **scoop-prefix:** Remove unused imports and functions ([#4494](https://github.com/ScoopInstaller/Scoop/issues/4494))
- **scoop-install:** Auto uninstall previous failed installation ([#3281](https://github.com/ScoopInstaller/Scoop/issues/3281))
- **scoop-update:** Add flags `--all` as an alternative to '*' to update all ([#3871](https://github.com/ScoopInstaller/Scoop/issues/3871))
### Bug Fixes
- **core:** Change url() scope to avoid conflict with global aliases ([#4342](https://github.com/ScoopInstaller/Scoop/issues/4342), [#4492](https://github.com/ScoopInstaller/Scoop/issues/4492))
- **install:** Fix `aria2`'s resume download feature ([#3292](https://github.com/ScoopInstaller/Scoop/issues/3292))
- **shim:** Fixed trailing whitespace issue ([#4307](https://github.com/ScoopInstaller/Scoop/issues/4307))
- **scoop-reset:** Skip when app instance is running ([#4359](https://github.com/ScoopInstaller/Scoop/issues/4359))
### Code Refactoring
- **versions:** Refactor 'versions.ps1' ([#3721](https://github.com/ScoopInstaller/Scoop/issues/3721), [e6630272](https://github.com/ScoopInstaller/Scoop/commit/e663027299d03ca768a252fa4bcbc51d124d4cae), [ae892138](https://github.com/ScoopInstaller/Scoop/commit/ae892138423bb9bbf54c8f0bed8331b93199f6b8))
### Builds
- **autoupdate:** Add multiple URL/hash/extract_dir... support ([#3518](https://github.com/ScoopInstaller/Scoop/issues/3518), [#4502](https://github.com/ScoopInstaller/Scoop/issues/4502))
- **schema:** Fix Schema to support `+` in version ([#4504](https://github.com/ScoopInstaller/Scoop/issues/4504))
- **supporting:** Update Json to 12.0.3, Json.Schema to 3.0.14 ([#3352](https://github.com/ScoopInstaller/Scoop/issues/3352))
### Documentation
- **readme:** Capitalize to prevent redirect ([#4483](https://github.com/ScoopInstaller/Scoop/issues/4483))
- **readme:** s/lukesampson/ScoopInstaller in readme ([4f5acd72](https://github.com/ScoopInstaller/Scoop/commit/4f5acd72109a98a148d1bfa269c23a2d43644d23))
- **readme:** Update extras bucket url in readme ([f1a46e10](https://github.com/ScoopInstaller/Scoop/commit/f1a46e109596c55c7e83c77fc1fc9daedbe71636))
- **readme:** Update Java bucket text ([#4514](https://github.com/ScoopInstaller/Scoop/issues/4514))
- **readme:** Update notes about the NirSoft bucket ([#4524](https://github.com/ScoopInstaller/Scoop/issues/4524))
## [2020-11-26](https://github.com/ScoopInstaller/Scoop/compare/2020-10-22...2020-11-26)
### Bug Fixes
- **shim:** Fix Makefile typo ([0948824e](https://github.com/ScoopInstaller/Scoop/commit/0948824ec7269c979882d09342d9a269193cd674)) ([227de6cf](https://github.com/ScoopInstaller/Scoop/commit/227de6cfb8433a86ac0f0a279e691327ae04554c))
## [2020-10-22](https://github.com/ScoopInstaller/Scoop/compare/2019-10-23...2020-10-22)
### Features
- **aria2:** Inline progress ([#3987](https://github.com/ScoopInstaller/Scoop/issues/3987))
- **autoupdate:** Add $urlNoExt and $basenameNoExt substitutions ([#3742](https://github.com/ScoopInstaller/Scoop/issues/3742))
- **config:** Add configuration option for default architecture ([#3778](https://github.com/ScoopInstaller/Scoop/issues/3778))
- **install:** Follow HTTP redirections when downloading a file ([#3902](https://github.com/ScoopInstaller/Scoop/issues/3902))
- **install:** Let pathes in 'env_add_path' be added ascendantly ([#3788](https://github.com/ScoopInstaller/Scoop/issues/3788), [#3976](https://github.com/ScoopInstaller/Scoop/issues/3976))
- **list:** Display main bucket name ([#3759](https://github.com/ScoopInstaller/Scoop/issues/3759))
- **shim:** Add alt-shim support ([#3998](https://github.com/ScoopInstaller/Scoop/issues/3998))
- **scoop-checkup:** Add check_envs_requirements ([#3860](https://github.com/ScoopInstaller/Scoop/issues/3860))
### Bug Fixes
- **bucket:** Update scoop-nonportable URL ([#3776](https://github.com/ScoopInstaller/Scoop/issues/3776))
- **download:** Fosshub download ([#4051](https://github.com/ScoopInstaller/Scoop/issues/4051))
- **download:** Progress bar on small files ([96de9c14](https://github.com/ScoopInstaller/Scoop/commit/96de9c14bb483f9278e4b0a9e22b1923ee752901))
- **hold:** Replace "locked" terminology with "held" for consistency ([#3917](https://github.com/ScoopInstaller/Scoop/issues/3917))
- **git:** Don't execute autostart programs when executing git commands ([#3993](https://github.com/ScoopInstaller/Scoop/issues/3993))
- **git:** Enforce pull without rebase ([#3765](https://github.com/ScoopInstaller/Scoop/issues/3765))
- **install:** Aria2 inline progress negative values ([#4053](https://github.com/ScoopInstaller/Scoop/issues/4053))
- **install:** Fix wrong output of 'install/failed' ([#3784](https://github.com/ScoopInstaller/Scoop/issues/3784), [#3867](https://github.com/ScoopInstaller/Scoop/issues/3867))
- **install:** Re-add "Don't send referer to portableapps.com" ([#3961](https://github.com/ScoopInstaller/Scoop/issues/3961))
- **scoop:** Remove temporary code from the scoop executable ([#3898](https://github.com/ScoopInstaller/Scoop/issues/3898))
- **update:** Update outdated PowerShell 5 warning ([#3986](https://github.com/ScoopInstaller/Scoop/issues/3986))
- **scoop-info:** Check bucket of installed app ([#3740](https://github.com/ScoopInstaller/Scoop/issues/3740))
### Builds
- **checkver:** Present script property ([#3900](https://github.com/ScoopInstaller/Scoop/issues/3900))
### Tests
- **init:** Force pester v4 ([#4040](https://github.com/ScoopInstaller/Scoop/issues/4040))
## [2019-10-23](https://github.com/ScoopInstaller/Scoop/compare/2019-10-18...2019-10-23)
### Features
- **update:** Support $persist_dir in uninstaller.script ([#3692](https://github.com/ScoopInstaller/Scoop/issues/3692))
### Bug Fixes
- **core:** Use [Environment]::Is64BitOperatingSystem instead of [intptr]::size ([#3690](https://github.com/ScoopInstaller/Scoop/issues/3690))
- **git:** Remove unnecessary git_proxy_cmd() calls for local commands ([8ee45a57](https://github.com/ScoopInstaller/Scoop/commit/8ee45a57dc01a525dcf8776bf9bb45263992c81f))
- **install:** Check execution policy ([#3619](https://github.com/ScoopInstaller/Scoop/issues/3619))
- **update:** Fix scoop update changelog output ([e997017f](https://github.com/ScoopInstaller/Scoop/commit/e997017f1a03e2eefef2157acdfefe2e4fced896))
## [2019-10-18](https://github.com/ScoopInstaller/Scoop/compare/2019-06-24...2019-10-18)
### Features
- **core:** Tweak Invoke-ExternalCommand parameters ([#3547](https://github.com/ScoopInstaller/Scoop/issues/3547))
- **install:** Use 7zip when available for faster zip file extraction ([#3460](https://github.com/ScoopInstaller/Scoop/issues/3460))
- **install:** Add arch support to `env_add_path` and `env_set` ([#3503](https://github.com/ScoopInstaller/Scoop/issues/3503))
- **install:** Allow $version to be used in uninstaller scripts ([#3592](https://github.com/ScoopInstaller/Scoop/issues/3592))
- **install:** Allow installing specific version if latest is installed ([11c42d78](https://github.com/ScoopInstaller/Scoop/commit/11c42d782f8adb29fbe0d94daa5f121cdda935ab))
- **update:** Allow updating apps from local manifest or URL ([#3685](https://github.com/ScoopInstaller/Scoop/issues/3685))
### Bug Fixes
- **autoupdate:** Decode basename when extract hash ([#3615](https://github.com/ScoopInstaller/Scoop/issues/3615))
- **autoupdate:** Remove any whitespace from hash ([#3579](https://github.com/ScoopInstaller/Scoop/issues/3579))
- **bucket:** Only lookup directories in buckets folder ([#3631](https://github.com/ScoopInstaller/Scoop/issues/3631))
- **comspec:** Escape variables when calling COMSPEC commands ([#3538](https://github.com/ScoopInstaller/Scoop/issues/3538))
- **decompress:** Fix bugs on extract_dir ([#3540](https://github.com/ScoopInstaller/Scoop/issues/3540))
- **editorconfig:** Add missing } to bat/cmd regex ([#3529](https://github.com/ScoopInstaller/Scoop/issues/3529))
- **help:** Rename help() to scoop_help() ([#3564](https://github.com/ScoopInstaller/Scoop/issues/3564))
- **install:** Use Join-Path instead of string gluing. ([#3566](https://github.com/ScoopInstaller/Scoop/issues/3566))
- **scoop-info:** Fix output for single binaries with alias ([#3651](https://github.com/ScoopInstaller/Scoop/issues/3651))
- **scoop-info:** Remove a whitespace ([#3652](https://github.com/ScoopInstaller/Scoop/issues/3652))
### Builds
- **auto-pr:** Fix git status detection ([7decfd4c](https://github.com/ScoopInstaller/Scoop/commit/7decfd4c107b8d8a59d7eedfe8a56e1801120c2f))
- **auto-pr:** Hard reset bucket after running ([79f8538b](https://github.com/ScoopInstaller/Scoop/commit/79f8538b57b9021db71a279879b9032fefd1ae52))
- **checkurls:** Trim renaming suffix in url ([#3677](https://github.com/ScoopInstaller/Scoop/issues/3677))
### Continuous Integration
- **appveyor:** use VS2019 image to fix PS6 issues ([#3646](https://github.com/ScoopInstaller/Scoop/issues/3646))
- **tests:** Do not force maintainers to have SCOOP_HELPERS ([#3604](https://github.com/ScoopInstaller/Scoop/issues/3604))
### Documentation
- **readme:** Improve installation instructions ([#3600](https://github.com/ScoopInstaller/Scoop/issues/3600))
## [2019-06-24](https://github.com/ScoopInstaller/Scoop/compare/2019-05-15...2019-06-24)
### Features
- **decompress:** Add 'ExtractDir' to 'Expand-...' functions ([#3466](https://github.com/ScoopInstaller/Scoop/issues/3466), [#3470](https://github.com/ScoopInstaller/Scoop/issues/3470), [#3472](https://github.com/ScoopInstaller/Scoop/issues/3472))
- **decompress:** Allow 'Expand-InnoArchive -ExtractDir' to accept '{xxx}' ([#3487](https://github.com/ScoopInstaller/Scoop/issues/3487))
### Bug Fixes
- **config:** Show correct output when removing a config value ([#3462](https://github.com/ScoopInstaller/Scoop/issues/3462))
- **decompress:** Change dark.exe parameter order ([6141e46d](https://github.com/ScoopInstaller/Scoop/commit/6141e46d6ae74b3ccf65e02a1c3fc92e1b4d3e7a))
- **proxy:** Rename parameters for Net.NetworkCredential ([#3483](https://github.com/ScoopInstaller/Scoop/issues/3483))
### Code Refactoring
- **core:** `run()` -> 'Invoke-ExternalCommand()' ([#3432](https://github.com/ScoopInstaller/Scoop/issues/3432))
### Builds
- **checkhashes:** Checkhashes downloading twice when architecture properties does hot have url property ([#3479](https://github.com/ScoopInstaller/Scoop/issues/3479))
- **checkhashes:** Do not call scoop directly ([#3527](https://github.com/ScoopInstaller/Scoop/issues/3527))
### Documentation
- **readme:** Add known buckets to end of readme ([2849e0f9](https://github.com/ScoopInstaller/Scoop/commit/2849e0f96099004f761d7d8c715377e0d2c105f2))
- **readme:** Adjust URL of `runat.json` ([#3484](https://github.com/ScoopInstaller/Scoop/issues/3484))
- **readme:** Fix a small typo ([#3512](https://github.com/ScoopInstaller/Scoop/issues/3512))
- **readme:** Fix typo in readme ([03bb07c8](https://github.com/ScoopInstaller/Scoop/commit/03bb07c8231563fa3a2092b9b52d4dde372f2a8e))
- **readme:** Update readme with correct count of nirsoft apps ([e8d0be66](https://github.com/ScoopInstaller/Scoop/commit/e8d0be663b3bab25d9ee55c597b90bf922f4ec5d))
## [2019-05-15](https://github.com/ScoopInstaller/Scoop/compare/2019-05-12...2019-05-15)
### Features
- **manifest:** XPath support in checkver and autoupdate ([#3458](https://github.com/ScoopInstaller/Scoop/issues/3458))
- **update:** Support changing scoop tracking repository ([#3459](https://github.com/ScoopInstaller/Scoop/issues/3459))
### Bug Fixes
- **autoupdate:** Handle xml namespace in xpath mode ([#3465](https://github.com/ScoopInstaller/Scoop/issues/3465))
## [2019-05-12](https://github.com/ScoopInstaller/Scoop/releases/tag/2019-05-12)
### BREAKING CHANGE
- **core:** Finalize bucket extraction ([#3399](https://github.com/ScoopInstaller/Scoop/issues/3399))
- **core:** Bucket extraction and refactoring ([#3449](https://github.com/ScoopInstaller/Scoop/issues/3449))
### Features
- **autoupdate:** Add 'regex' alias for 'find' ([3453487e](https://github.com/ScoopInstaller/Scoop/commit/3453487ed65378cc9ba2efc658ed6bc1431ef463))
- **autoupdate:** Allow simple metalink and meta4 hash extraction ([ecf627c3](https://github.com/ScoopInstaller/Scoop/commit/ecf627c3b8493b3ccf7ddb882b0c946533774d76))
- **autoupdate:** Add version variables to autoupdate.hash.regex ([#2966](https://github.com/ScoopInstaller/Scoop/issues/2996))
- **autoupdate:** Autoupdate improvements ([#1371](https://github.com/ScoopInstaller/Scoop/issues/1371))
- **autoupdate:** Convert base64 encoded hash values ([04c9ddeb](https://github.com/ScoopInstaller/Scoop/commit/04c9ddeb6d3b99496c39543ad468d34f4f1adeff))
- **autoupdate:** Improve base64 hash detection ([310096e2](https://github.com/ScoopInstaller/Scoop/commit/310096e2386ff3bf9082d547b140a98b92b87a83))
- **core:** Add basic WSL support by appending .exe to powershell ([#2323](https://github.com/ScoopInstaller/Scoop/issues/2323))
- **core:** Add Expand-DarkArchive and some other dependency features ([#3450](https://github.com/ScoopInstaller/Scoop/issues/3450))
- **core:** Enable TLS 1.2 in core.ps1 ([#2074](https://github.com/ScoopInstaller/Scoop/issues/2074))
- **core:** Prepare extraction of main bucket ([#3060](https://github.com/ScoopInstaller/Scoop/issues/3060))
- **core:** Support loading basedirs from config ([#3121](https://github.com/ScoopInstaller/Scoop/issues/3121))
- **core:** Update requirement to version 5 or greater ([#3330](https://github.com/ScoopInstaller/Scoop/issues/3330))
- **core:** Use consistent User-Agent Header on all webrequests ([12962acf](https://github.com/ScoopInstaller/Scoop/commit/12962acfa853593e371d09186e51660aece331e5))
- **core:** Warn on shim overwrite ([#2033](https://github.com/ScoopInstaller/Scoop/issues/2033))
- **debug:** Add option to indent debug output ([bf54a978](https://github.com/ScoopInstaller/Scoop/commit/bf54a978a1bc2efcde52513a60ec5bcb7bb1a44e))
- **decompress:** Allow other args to be passthrough ([#3411](https://github.com/ScoopInstaller/Scoop/issues/3411))
- **download:** Add support for multi-connection downloads via aria2c ([#2312](https://github.com/ScoopInstaller/Scoop/issues/2312))
- **download:** Convert sourceforge urls to use downloads mirror ([#3340](https://github.com/ScoopInstaller/Scoop/issues/3340))
- **install:** Add .NET 4.5 check to scoop install script ([e52c24c9](https://github.com/ScoopInstaller/Scoop/commit/e52c24c94ec805a327440cc07aec699afc7cc308))
- **install:** Set file write permission to global persist dir ([#2524](https://github.com/ScoopInstaller/Scoop/issues/2524))
- **json:** Normalize multi-line strings to string arrays on format ([#2444](https://github.com/ScoopInstaller/Scoop/issues/2444))
- **persist:** Support persisting files without a file extension ([#2408](https://github.com/ScoopInstaller/Scoop/issues/2408))
- **shim:** Add '.com'-type shim ([#3366](https://github.com/ScoopInstaller/Scoop/issues/3366))
- **shim:** Enabled applications which require elevated privileges ([#2053](https://github.com/ScoopInstaller/Scoop/issues/2053))
- **shim:** Enabled shimming of external applications ([#2072](https://github.com/ScoopInstaller/Scoop/issues/2072))
- **shim:** Enabled wide characters forwarding in shims ([#2106](https://github.com/ScoopInstaller/Scoop/issues/2106))
- **shim:** Make shim support PowerShell 2.0 ([#2562](https://github.com/ScoopInstaller/Scoop/issues/2562))
- **shim:** Create sh shim ([#1951](https://github.com/ScoopInstaller/Scoop/issues/1951))
- **shortcuts:** Add subdirectories/arguments for shortcuts ([#1945](https://github.com/ScoopInstaller/Scoop/issues/1945))
- **shortcuts:** Allow $dir, $original_dir and $persist_dir substitutions for shortcuts ([f3ddf0c0](https://github.com/ScoopInstaller/Scoop/commit/f3ddf0c0f81ee2a11466edf5d9f6e38a0fc2b9d4))
- **shortcuts:** Get start menu folder location from environment rather than predefined user profile path ([c245a7fe](https://github.com/ScoopInstaller/Scoop/commit/c245a7fe96ffa0b0fba23bd47f31480ea93cc183))
- **uninstall:** Print purge step to console ([#3123](https://github.com/ScoopInstaller/Scoop/issues/3123))
- **uninstall:** Add support for soft/purge uninstalling of scoop itself ([#2781](https://github.com/ScoopInstaller/Scoop/issues/2781))
- **update:** Add hold/unhold command ([#3444](https://github.com/ScoopInstaller/Scoop/issues/3444))
- **scoop-checkup:** Add NTFS check to checkup command ([#1944](https://github.com/ScoopInstaller/Scoop/issues/1944))
- **scoop-checkup:** Check for LongPaths setting ([#3387](https://github.com/ScoopInstaller/Scoop/issues/3387))
- **scoop-info:** Add scoop-info command ([#2165](https://github.com/ScoopInstaller/Scoop/issues/2165))
- **scoop-info:** Support url manifest ([#2538](https://github.com/ScoopInstaller/Scoop/issues/2538))
- **scoop-prefix:** Add scoop prefix command ([#2117](https://github.com/ScoopInstaller/Scoop/issues/2117))
- **scoop-update:** Add notification for new main bucket ([#3392](https://github.com/ScoopInstaller/Scoop/issues/3392))
- **scoop-update:** Show changelog after updating scoop and buckets ([56c35f8f](https://github.com/ScoopInstaller/Scoop/commit/56c35f8f05ed387997ef1a80ec0362adec6e51a5))
- **scoop-which:** Also show other applications in PATH with 'scoop which' ([79bf99c3](https://github.com/ScoopInstaller/Scoop/commit/79bf99c3c110494d799e147263db7b6f2f921d4e))
### Bug Fixes
- **autoupdate:** Fix base64 hash extraction ([98afb999](https://github.com/ScoopInstaller/Scoop/commit/98afb99990561c4f98f1e1334f348e52b4bee4e7))
- **autoupdate:** Fix base64 hash extraction length ([#2852](https://github.com/ScoopInstaller/Scoop/issues/2852))
- **autoupdate:** Fix metalink hash extraction ([2ad54747](https://github.com/ScoopInstaller/Scoop/commit/2ad547477b1432e7a269c90b393d62d88dce9803))
- **autoupdate:** Fix single line hash extraction ([#3015](https://github.com/ScoopInstaller/Scoop/issues/3015))
- **autoupdate:** Improve auto-update hash extraction regex ([21bf0dea](https://github.com/ScoopInstaller/Scoop/commit/21bf0dea561db021aa59bcd9363792436ac7c162))
- **autoupdate:** Linter fix ([c9539b65](https://github.com/ScoopInstaller/Scoop/commit/c9539b6575e8842a8f895d82b4119c3aef01d7c2))
- **autoupdate:** Use normal variable instead of magic $matches variable name ([d74e0a85](https://github.com/ScoopInstaller/Scoop/commit/d74e0a85b4081745bd1ab107a45794f02299737d))
- **bucket:** Change wording of new_issue_msg() ([e82587df](https://github.com/ScoopInstaller/Scoop/commit/e82587dfc41618474e03347df333e847dfaffc70))
- **bucket:** Fix new_issue_msg ([#3375](https://github.com/ScoopInstaller/Scoop/issues/3375))
- **bucket:** Use $_.Name on gci result ([1eb2609d](https://github.com/ScoopInstaller/Scoop/commit/1eb2609db51587772a4b5d1b6f58114f52639568))
- **config:** Enable writing to hidden .scoop file ([#1982](https://github.com/ScoopInstaller/Scoop/issues/1982))
- **config:** Save and load true/false values as booleans in scoops config ([16aec1a4](https://github.com/ScoopInstaller/Scoop/commit/16aec1a40b45ba241ef2ac45ccf89de7206891be))
- **core:** Allowed underscores in package names ([#2930](https://github.com/ScoopInstaller/Scoop/issues/2930))
- **core:** Clean up some error messages ([#2032](https://github.com/ScoopInstaller/Scoop/issues/2032))
- **core:** Change sf regex not to break some manifests ([#2476](https://github.com/ScoopInstaller/Scoop/issues/2476))
- **core:** Check if 7zip installed via Scoop instead of using 7z.exe from PATH ([55ce0c0b](https://github.com/ScoopInstaller/Scoop/commit/55ce0c0b0c481ec3807655cb7aeac6dfcf9ef271))
- **core:** Filter null or empty string from Scoops directory settings ([5d5c7fa9](https://github.com/ScoopInstaller/Scoop/commit/5d5c7fa91c03f05b705d3420618ec96d8e870174))
- **core:** Fix "enable-encryptionscheme" for OSes before Windows 10 ([#2084](https://github.com/ScoopInstaller/Scoop/issues/2084))
- **core:** Fix bug with Start-Process -Wait, exclusive to PowerShell Core on Windows 7 ([#3415](https://github.com/ScoopInstaller/Scoop/issues/3415))
- **core:** Fix for relative paths ([ff9c0c3d](https://github.com/ScoopInstaller/Scoop/commit/ff9c0c3dafb3567ee958379b83205da84a925ecf))
- **core:** Fix robocopy not releasing a directory after moving it ([e2792f2e](https://github.com/ScoopInstaller/Scoop/commit/e2792f2e02adee5947ebb95022a62282fb61024f))
- **core:** Fix substitute() for arrays ([#2048](https://github.com/ScoopInstaller/Scoop/issues/2048))
- **core:** Format hashes to lowercase ([5d56f8ff](https://github.com/ScoopInstaller/Scoop/commit/5d56f8ff5760ddedaf44eaf9652000e833b0944e))
- **core:** Invoke powershell with -noprofile flag from bash shims ([#3165](https://github.com/ScoopInstaller/Scoop/issues/3165))
- **core:** Removed the bucket from the app name when checking directories ([#2435](https://github.com/ScoopInstaller/Scoop/issues/2435))
- **core:** Return true for checking if a directory is 'in' itself ([ac8a1567](https://github.com/ScoopInstaller/Scoop/commit/ac8a156796cb6d3d9cba24a2839271d924ab8fea))
- **core:** Store last update time as String ([e8af15cc](https://github.com/ScoopInstaller/Scoop/commit/e8af15cc0615b707aee79be95f9c00e3ae0bfd9b))
- **decompress:** Add .bz2 files to decompression ([#2085](https://github.com/ScoopInstaller/Scoop/issues/2085))
- **decompress:** Added retry when unzip fail because of AV ([#1822](https://github.com/ScoopInstaller/Scoop/issues/1822))
- **decompress:** Catch unzip failures from bad file names ([#2472](https://github.com/ScoopInstaller/Scoop/issues/2472))
- **decompress:** Compatible Expand-ZipArchive() with Pscx ([#3425](https://github.com/ScoopInstaller/Scoop/issues/3425))
- **decompress:** Correct deprecation function name ([#3406](https://github.com/ScoopInstaller/Scoop/issues/3406))
- **decompress:** Fix dark parameter order ([87a1e784](https://github.com/ScoopInstaller/Scoop/commit/87a1e784d7463fea36fa41fcb7cb5537cbcfdc52))
- **depends:** Don't force adding dark dependency ([#3453](https://github.com/ScoopInstaller/Scoop/issues/3453))
- **depends:** Don't include the requested app in the list of dependencies ([1bc6a479](https://github.com/ScoopInstaller/Scoop/commit/1bc6a479ee969e44e2b0d83ed6ff19efd86c6ae9))
- **depends:** Fix empty bucket name ([#2827](https://github.com/ScoopInstaller/Scoop/issues/2827))
- **depends:** Fix null reference error when no buckets are configured ([88040972](https://github.com/ScoopInstaller/Scoop/commit/88040972a30b459a3859c7c2f883e47e19da9f84))
- **depends:** Show message about missing bucket when installing dependencies ([7a6218c5](https://github.com/ScoopInstaller/Scoop/commit/7a6218c58677170fe32cf1c2bfcfe7488e4c3655))
- **download:** Don't send referer to portableapps.com ([0c2b3da3](https://github.com/ScoopInstaller/Scoop/commit/0c2b3da3ff639722ad3ddf587219bb3155e97c7f))
- **download:** Fix fosshub downloads with aria2c ([803525a8](https://github.com/ScoopInstaller/Scoop/commit/803525a8661ffaa39fc4ad6f0dc776cccad4c45e))
- **download:** Interrupt download causes partial cache file to be used for next install ([5be02865](https://github.com/ScoopInstaller/Scoop/commit/5be0286561398debfee2c0610e51f006ef2dc2fb))
- **download:** Overwrite any existing files when extracting ([58cca68f](https://github.com/ScoopInstaller/Scoop/commit/58cca68f7565bd5e8f63e08ad052c0029b98a23d))
- **download:** Show warning about SourceForge.net hash validation fails ([8504338b](https://github.com/ScoopInstaller/Scoop/commit/8504338bc5faab3235cef2e1c2f41abd7ae496eb))
- **getopt:** Don't try to parse int arguments ([23fe5a53](https://github.com/ScoopInstaller/Scoop/commit/23fe5a5319d4ede84c532df04f576c3854fd5826))
- **getopt:** Don't try to parse array arguments ([9b6e7b5e](https://github.com/ScoopInstaller/Scoop/commit/9b6e7b5e0f7f6ddecdb139f932ad7d582fe639a4))
- **getopt:** Return remaining args, use getopt for scoop install ([b7cfd6fd](https://github.com/ScoopInstaller/Scoop/commit/b7cfd6fdb0e18a623ceacfa6fc824241dabc6d01))
- **getopt:** Skip if arg is $null ([f2d9f0d7](https://github.com/ScoopInstaller/Scoop/commit/f2d9f0d79fdf4a63879c1b87a6c0f5317a40a1d9))
- **getopt:** Skip arg if it's decimal ([5f0c8cfb](https://github.com/ScoopInstaller/Scoop/commit/5f0c8cfb0a34078bb8118a21191cf046ddad18ac))
- **git:** Disable git pager when running git log ([cac99759](https://github.com/ScoopInstaller/Scoop/commit/cac9975924691fe6e608789218b06be56bb8c658))
- **git:** Fix update log output ([0daa25c6](https://github.com/ScoopInstaller/Scoop/commit/0daa25c6300cd2ab605d63b71037d741c9c904c6))
- **json:** Catch JsonReaderException ([fb58e92c](https://github.com/ScoopInstaller/Scoop/commit/fb58e92c13552199f19f5df112801fc41321eee2))
- **install:** Add filename to warning for files without hash in the manifest ([4c9beee8](https://github.com/ScoopInstaller/Scoop/commit/4c9beee8f2df891b2ec314e1efffb2ee9d5cca20))
- **install:** Add multi-line support to pre/post_install ([#1980](https://github.com/ScoopInstaller/Scoop/issues/1980))
- **install:** Added exclusion for sourceforge. [#METR-21516] ([#2109](https://github.com/ScoopInstaller/Scoop/issues/2109))
- **install:** Ignore url fragment for PowerShell Core 6.1.0 ([#2602](https://github.com/ScoopInstaller/Scoop/issues/2602))
- **install:** Fix fail when installing from non-default bucket ([#2247](https://github.com/ScoopInstaller/Scoop/issues/2247))
- **install:** Fix PowerShell core crash ([#2554](https://github.com/ScoopInstaller/Scoop/issues/2554))
- **install:** Option to skip hash validation and error message improvements ([#2260](https://github.com/ScoopInstaller/Scoop/issues/2260))
- **install:** Remove env_ensure_home ([#1967](https://github.com/ScoopInstaller/Scoop/issues/1967))
- **install:** Show first 8 bytes of file in the hash check error message ([e4cbb42e](https://github.com/ScoopInstaller/Scoop/commit/e4cbb42e64843e53b5b24de92f43062bca98c474))
- **persist:** Fix condition for persist_permission() ([eb7b7cbf](https://github.com/ScoopInstaller/Scoop/commit/eb7b7cbf4f30e4122762856723155f3c1e980d1b)) ([1a2598bc](https://github.com/ScoopInstaller/Scoop/commit/1a2598bc3082a2e3fffac1a6bea0b42032e388f0))
- **persist:** Fixed persisting bug when force update app with same version ([#2774](https://github.com/ScoopInstaller/Scoop/issues/2774))
- **persist:** Fix the target didn't be created ([#3008](https://github.com/ScoopInstaller/Scoop/issues/3008))
- **persist:** Prevent directory creation from being output ([#1999](https://github.com/ScoopInstaller/Scoop/issues/1999))
- **scoop:** Force to add new main bucket ([#3419](https://github.com/ScoopInstaller/Scoop/issues/3419))
- **shim:** Fix .ps1 shim parsing logic ([#2564](https://github.com/ScoopInstaller/Scoop/issues/2564))
- **shim:** Fixed ps1/jar->ps1 shims args handling ([#2120](https://github.com/ScoopInstaller/Scoop/issues/2120))
- **shortcuts:** Improve Shortcut creation ([83b82386](https://github.com/ScoopInstaller/Scoop/commit/83b823868f5ef5256d3dcfbecff278bb355fefc8))
- **uninstall:** Better error handling during uninstallation ([#2079](https://github.com/ScoopInstaller/Scoop/issues/2079))
- **uninstall:** Uninstall fails to remove architecture-specific shims ([8b1871b2](https://github.com/ScoopInstaller/Scoop/commit/8b1871b20df4dbf1b603d4066937ba213c03bb32))
- **update:** Rewording PowerShell update notice ([d006fb93](https://github.com/ScoopInstaller/Scoop/commit/d006fb9315b55a9d8e6a36218cf5dbdde51433ec))
- **versions:** Improvements for the reset command to deal with empty current alias dir correctly ([#2896](https://github.com/ScoopInstaller/Scoop/issues/2896))
- **scoop-alias:** Improve "scoop alias list" output ([#2163](https://github.com/ScoopInstaller/Scoop/issues/2163))
- **scoop-cache:** Display help on incorrect cache command ([#3431](https://github.com/ScoopInstaller/Scoop/issues/3431))
- **scoop-cache:** scoop cache command not using $SCOOP_CACHE ([#1990](https://github.com/ScoopInstaller/Scoop/issues/1990))
- **scoop-info:** Improve scoop-info license attributes output ([#2397](https://github.com/ScoopInstaller/Scoop/issues/2397))
- **scoop-install:** Prevent installing programs from JSON multiple times ([936cf9cb](https://github.com/ScoopInstaller/Scoop/commit/936cf9cbb0c4dd3a594fbaf5c696ce519e586d8c))
- **scoop-reset:** Persist data on reset ([#2773](https://github.com/ScoopInstaller/Scoop/issues/2773))
- **scoop-reset:** Re-create shortcuts ([6e5b7e57](https://github.com/ScoopInstaller/Scoop/commit/6e5b7e57bb0628f072872d9a5b8c8a0fa58389e1))
- **scoop-search:** Better handling for invalid query ([bf024705](https://github.com/ScoopInstaller/Scoop/commit/bf024705a8cc38592571aa3026dca2471f19ac5a))
- **scoop-uninstall:** Checked if uninstaller removed its directory ([#2078](https://github.com/ScoopInstaller/Scoop/issues/2078))
- **scoop-update:** Add config option "show_update_log" ([d68cb3ce](https://github.com/ScoopInstaller/Scoop/commit/d68cb3ce52acaa9983f278822febd506f54ebe02))
- **scoop-update:** First scoop update fails because scoop deletes itself too early ([376630fd](https://github.com/ScoopInstaller/Scoop/commit/376630fd80a3f9012fd6e673460b9e28e375e951))
- **scoop-update:** Fix branch switching ([#3372](https://github.com/ScoopInstaller/Scoop/issues/3372))
- **scoop-update:** Fix update with cookies ([#3261](https://github.com/ScoopInstaller/Scoop/issues/3261))
- **scoop-update:** Improve is_scoop_outdated() and add last_scoop_update() ([f3f559c4](https://github.com/ScoopInstaller/Scoop/commit/f3f559c460406689dab2375310fb1026e2be58bd))
- **scoop-update:** Resolve linting, fix appveyor tests error ([#2148](https://github.com/ScoopInstaller/Scoop/issues/2148))
### Code Refactoring
- **bucket:** Move function into lib from lib-exec ([#3062](https://github.com/ScoopInstaller/Scoop/issues/3062))
- **bucket:** Optimize buckets function ([#3341](https://github.com/ScoopInstaller/Scoop/issues/3341))
- **config:** Move configuration handling to core.ps1 ([#3242](https://github.com/ScoopInstaller/Scoop/issues/3242))
- **core:** aria2_path() -> file_path() ([0f464016](https://github.com/ScoopInstaller/Scoop/commit/0f4640168da8d68a52eb2b80af2f3ffa01c9b658))
- **core:** cmd_available() -> Test-CommandAvailable() ([#3314](https://github.com/ScoopInstaller/Scoop/issues/3314))
- **core:** ensure_all_installed() -> Confirm-InstallationStatus() ([#3293](https://github.com/ScoopInstaller/Scoop/issues/3293))
- **core:** Move default_aliases into the scoped function ([#3233](https://github.com/ScoopInstaller/Scoop/issues/3233))
- **core:** Refactor function names and fix installing 7zip locally if already globally available ([#3416](https://github.com/ScoopInstaller/Scoop/issues/3416))
- **core:** Simplified last_scoop_update() ([#2931](https://github.com/ScoopInstaller/Scoop/issues/2931))
- **core:** Tweak SecurityProtocol usage ([#3065](https://github.com/ScoopInstaller/Scoop/issues/3065))
- **decompress:** Refactored (w/ install.ps1, core.ps1) ([#3169](https://github.com/ScoopInstaller/Scoop/issues/3169))
- **decompress:** Refactor extraction handling functions ([#3204](https://github.com/ScoopInstaller/Scoop/issues/3204))
- **download:** Download functionality refactor ([#1329](https://github.com/ScoopInstaller/Scoop/issues/1329))
- **install:** Rename locate() to Find-Manifest() ([9eed3d89](https://github.com/ScoopInstaller/Scoop/commit/9eed3d8914c7a0fa294110eb0761776a01adf034))
### Builds
- **auto-pr:** Add -App parameter ([#3157](https://github.com/ScoopInstaller/Scoop/issues/3157))
- **auto-pr:** Add SkipUpdated parameter ([#3168](https://github.com/ScoopInstaller/Scoop/issues/3168))
- **checkhashes:** Add bin\checkhashes.ps1 ([#2766](https://github.com/ScoopInstaller/Scoop/issues/2766))
- **checkurls:** Add SkipValid Parameter ([#2845](https://github.com/ScoopInstaller/Scoop/issues/2845))
- **checkurls:** Import config.ps1 in checkurls.ps1 ([126e9c97](https://github.com/ScoopInstaller/Scoop/commit/126e9c97d2ef7db537a5137167089a97f343e98e))
- **checkver:** Add 'useragent' property ([8feb3867](https://github.com/ScoopInstaller/Scoop/commit/8feb3867a74ea0340585e3e695934d96cf483a05))
- **checkver:** Add 'jsonpath' alias for 'jp' ([76fdb6b7](https://github.com/ScoopInstaller/Scoop/commit/76fdb6b74c1772bf607d2dad5f6c50269369ff88))
- **checkver:** Add 're' alias 'regex' ([468649c8](https://github.com/ScoopInstaller/Scoop/commit/468649c88dea9c1ff9614f2cdf29a521d572664e))
- **checkver:** Allow using the current version in checkver URL ([607ac9ca](https://github.com/ScoopInstaller/Scoop/commit/607ac9ca7c185da61e2c746ea87d28c2abe62adc))
- **checkver:** Fix example parameters ([#3413](https://github.com/ScoopInstaller/Scoop/issues/3413))
- **checkver:** GitHub checkver case-insensitive version check ([2e2633e9](https://github.com/ScoopInstaller/Scoop/commit/2e2633e9640f6cab5c2f895b680345cd6ca))
- **checkver:** Remove old commented code ([72754036](https://github.com/ScoopInstaller/Scoop/commit/72754036a251fffd2f2eb0e242edfd9895543e3c))
- **checkver:** Resolve issue on Powershell >6.1.0 ([#2592](https://github.com/ScoopInstaller/Scoop/issues/2592))
- **checkver:** Support skipping up to date manifests ([#2624](https://github.com/ScoopInstaller/Scoop/issues/2624))
- **schema:** Add shortcutsArray definition to schema.json ([0c7e6002](https://github.com/ScoopInstaller/Scoop/commit/0c7e60024a06e122331b17a204a158e4c5800a3d))
- **schema:** extract_to property is on active duty (not deprecated) ([59e994c5](https://github.com/ScoopInstaller/Scoop/commit/59e994c5fdeb8dffe6037ca6767d56ad13bf04da))
- **schema:** Improve comments in schema.json ([b5ed0761](https://github.com/ScoopInstaller/Scoop/commit/b5ed0761aef4f3e864533dc0460d110115850ba7))
- **supporting:** Update validator.exe and shim.exe ([#2024](https://github.com/ScoopInstaller/Scoop/issues/2024), [#2034](https://github.com/ScoopInstaller/Scoop/issues/2034))
- **supporting:** Update Newtonsoft.Json to 11.0.2, Newtonsoft.Json.Schema to 3.0.10 ([#3043](https://github.com/ScoopInstaller/Scoop/issues/3043))
- **validator:** Improve error reporting, add support for multiple files ([#3134](https://github.com/ScoopInstaller/Scoop/issues/3134))
### Continuous Integration
- **appveyor:** Rebuild cache ([7311b41b](https://github.com/ScoopInstaller/Scoop/commit/7311b41b8d1e2e010175fb7d079662bbcba5bac8))
- **appveyor:** Run tests for PowerShell 5 and 6 ([#2603](https://github.com/ScoopInstaller/Scoop/issues/2603))
- **test:** Improve installation of lessmsi and innounp ([#3409](https://github.com/ScoopInstaller/Scoop/issues/3409))
### Styles
- **lint:** PSAvoidUsingCmdletAliases ([#2075](https://github.com/ScoopInstaller/Scoop/issues/2075))
### Tests
- **bucket:** Add importable tests for Buckets ([478f52c4](https://github.com/ScoopInstaller/Scoop/commit/478f52c421ca35ea35b5fd0b2df2631cf7d82487))
- **bucket:** Fix manifest tests for buckets ([589303fa](https://github.com/ScoopInstaller/Scoop/commit/589303facc5284f6f95c1305191e0558c0169691))
- **bucket:** Handle JSON.NET schema validation limit exceeded. ([139813a8](https://github.com/ScoopInstaller/Scoop/commit/139813a8f50ace85e2752d9b6c9f82fc64ff3e48))
- **file:** Move style constraints tests to separate test file ([7b7113fc](https://github.com/ScoopInstaller/Scoop/commit/7b7113fc3bf962aaeba625f58341c30a80f0fe6a))
- **linux:** Fix some tests on linux ([#2153](https://github.com/ScoopInstaller/Scoop/issues/2153))
- **manifest:** Expose bucketdir variable in manifest test script ([#2182](https://github.com/ScoopInstaller/Scoop/issues/2182))
- **test:** Add -TestPath param to test.ps1 ([f857dce9](https://github.com/ScoopInstaller/Scoop/commit/f857dce9f59a490f6dd07085c3abaa51e9577fda))
- **test:** Force install PSScriptAnalyzer and BuildHelpers ([7a1b5a18](https://github.com/ScoopInstaller/Scoop/commit/7a1b5a1840e30321951fa0f5333c34d10f57fa94))
- **test:** Require BuildHelpers version 2.0.0 ([ac3ee766](https://github.com/ScoopInstaller/Scoop/commit/ac3ee766722e99c1f15dc60a1f1dfb0a48428c55))
- **test:** Update BuildHelpers to version 2.0.1 ([dde4d0f9](https://github.com/ScoopInstaller/Scoop/commit/dde4d0f93f260191af5524c0ecab927f3e252361))
- **core:** Use Pester 4.0 syntax in core tests ([#2712](https://github.com/ScoopInstaller/Scoop/issues/2712))
- **install:** Use Pester 4.0 syntax to the install tests ([#2713](https://github.com/ScoopInstaller/Scoop/issues/2713))
- **test:** Use Pester 4.0 syntax to multiple files ([#2714](https://github.com/ScoopInstaller/Scoop/issues/2714))
### Documentation
- **readme:** Add discord chat badge ([#3241](https://github.com/ScoopInstaller/Scoop/issues/3241))
- **readme:** Add more details about scoops installation ([#2273](https://github.com/ScoopInstaller/Scoop/issues/2273))
- **readme:** Corrected enable powershell executionpolicy ([#2020](https://github.com/ScoopInstaller/Scoop/issues/2020))
- **readme:** Update Discord invite link ([5f269249](https://github.com/ScoopInstaller/Scoop/commit/5f269249609b43f5c4fa9aba4def999e7ee05fe1))
- **readme:** Update requirements note ([#2509](https://github.com/ScoopInstaller/Scoop/issues/2509))
- **readme:** Fix typo (you -> your), (it's -> its) ([#2698](https://github.com/ScoopInstaller/Scoop/issues/2698))
- **readme:** Remove trailing whitespaces ([d25186bf](https://github.com/ScoopInstaller/Scoop/commit/d25186bf1f833e30d8c5b530b7c260fe399b75ed))
- **readme:** Remove "tail" from example (is coreutils) ([#2158](https://github.com/ScoopInstaller/Scoop/issues/2158))
## *Commits before 2018 are trimmed*

49
LICENSE
View File

@@ -1,27 +1,3 @@
SPDX-License-Identifier: UNLICENSE or MIT
INFORMATION ABOUT THIS PROJECT'S LICENSE (SHORT)
============================================================================================
This project is licensed under the Unlicense or the MIT license,
at your option.
INFORMATION ABOUT THIS PROJECT'S LICENSE (LONG)
============================================================================================
This project ("Scoop") is free software, licensed under the Unlicense or the
MIT license, at your option. Scoop was previously licensed under only the Unlicense,
but was dual-licensed from version 0.2.0.
Scoop comes with ABSOLUTELY NO WARRANTY. Use it at your own risk. Scoop is provided
on an AS-IS BASIS and its contributors disclaim all warranties.
You may use, modify, distribute, sell, copy, compile, or merge Scoop by any means.
Copies of both licenses can be found below.
THE LICENSE OF SCOOP
============================================================================================
Unlicense
---------
This is free and unencumbered software released into the public domain.
Anyone is free to copy, modify, publish, use, compile, sell, or
@@ -46,28 +22,3 @@ 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 <http://unlicense.org/>
MIT license
-----------
The MIT License (MIT)
Copyright (c) 2013-2017 Luke Sampson (https://github.com/lukesampson)
Copyright (c) 2013-present Scoop contributors (https://github.com/ScoopInstaller/Scoop/graphs/contributors)
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
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 OR COPYRIGHT HOLDERS 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.

View File

@@ -1,8 +1,11 @@
# The PowerShell Script Analyzer will generate a warning
# diagnostic record for this file due to a bug -
# https://github.com/PowerShell/PSScriptAnalyzer/issues/472
@{
# Only diagnostic records of the specified severity will be generated.
# Uncomment the following line if you only want Errors and Warnings but
# not Information diagnostic records.
Severity = @('Error')
Severity = @('Error','Warning')
# Analyze **only** the following rules. Use IncludeRules when you want
# to invoke only a small subset of the defualt rules.
@@ -23,6 +26,12 @@
# will be excluded.
ExcludeRules = @(
# Currently Scoop widely uses Write-Host to output colored text.
'PSAvoidUsingWriteHost'
'PSAvoidUsingWriteHost',
# Temporarily allow uses of Invoke-Expression,
# this command is used by some core functions and hard to be removed.
'PSAvoidUsingInvokeExpression',
# PSUseDeclaredVarsMoreThanAssignments doesn't currently work due to:
# https://github.com/PowerShell/PSScriptAnalyzer/issues/636
'PSUseDeclaredVarsMoreThanAssignments'
)
}

151
README.md
View File

@@ -1,34 +1,31 @@
<h1 align="center">Scoop</h1>
<!--<img src="scoop.png" alt="Long live Scoop!"/>-->
<p align="center">
<a href="https://github.com/ScoopInstaller/Scoop#what-does-scoop-do">Features</a>
|
<a href="https://github.com/ScoopInstaller/Scoop#installation">Installation</a>
|
<a href="https://github.com/ScoopInstaller/Scoop/wiki">Documentation</a>
<!--<img src="scoop.png" alt="Long live Scoop!"/>-->
<h1 align="center">Scoop</h1>
</p>
<p align="center">
<b><a href="https://github.com/lukesampson/scoop#what-does-scoop-do">Features</a></b>
|
<b><a href="https://github.com/lukesampson/scoop#installation">Installation</a></b>
|
<b><a href="https://github.com/lukesampson/scoop/wiki">Documentation</a></b>
</p>
---
<p align="center">
<a href="https://github.com/ScoopInstaller/Scoop">
<img src="https://img.shields.io/github/languages/code-size/ScoopInstaller/Scoop.svg" alt="Code Size" />
- - -
<p align="center" >
<a href="https://github.com/lukesampson/scoop">
<img src="https://img.shields.io/github/languages/code-size/lukesampson/scoop.svg" alt="Code Size" />
</a>
<a href="https://github.com/ScoopInstaller/Scoop">
<img src="https://img.shields.io/github/repo-size/ScoopInstaller/Scoop.svg" alt="Repository size" />
<a href="https://github.com/lukesampson/scoop">
<img src="https://img.shields.io/github/repo-size/lukesampson/scoop.svg" alt="Repository size" />
</a>
<a href="https://github.com/ScoopInstaller/Scoop/actions/workflows/ci.yml">
<img src="https://github.com/ScoopInstaller/Scoop/actions/workflows/ci.yml/badge.svg" alt="Scoop Core CI Tests" />
</a>
<a href="https://discord.gg/s9yRQHt">
<img src="https://img.shields.io/badge/chat-on%20discord-7289DA.svg" alt="Discord Chat" />
<a href="https://ci.appveyor.com/project/lukesampson/scoop">
<img src="https://ci.appveyor.com/api/projects/status/05foxatmrqo0l788?svg=true" alt="Build Status" />
</a>
<a href="https://gitter.im/lukesampson/scoop">
<img src="https://badges.gitter.im/lukesampson/scoop.png" alt="Gitter Chat" />
</a>
<a href="./LICENSE">
<img src="https://img.shields.io/badge/license-UNLICENSE%20or%20MIT-blue" alt="License" />
<a href="https://github.com/lukesampson/scoop/blob/master/LICENSE">
<img src="https://img.shields.io/github/license/lukesampson/scoop.svg" alt="License" />
</a>
</p>
@@ -36,113 +33,89 @@ Scoop is a command-line installer for Windows.
## What does Scoop do?
Scoop installs apps from the command line with a minimal amount of friction. It:
Scoop installs programs from the command line with a minimal amount of friction. It tries to eliminate things like:
* Permission popup windows
* GUI wizard-style installers
* Path pollution from installing lots of programs
* Unexpected side-effects from installing and uninstalling programs
* The need to find and install dependencies
* The need to perform extra setup steps to get a working program
- Eliminates [User Account Control](https://learn.microsoft.com/windows/security/application-security/application-control/user-account-control/) (UAC) prompt notifications.
- Hides the graphical user interface (GUI) of wizard-style installers.
- Prevents polluting the `PATH` environment variable. Normally, this variable gets cluttered as different apps are installed on the device.
- Avoids unexpected side effects from installing and uninstalling apps.
- Resolves and installs dependencies automatically.
- Performs all the necessary steps to get an app to a working state.
Scoop is very scriptable, so you can run repeatable setups to get your environment just the way you like, e.g.:
Scoop is quite script-friendly. Your environment can become the way you like by using repeatable setups. For example:
```console
```powershell
scoop install sudo
sudo scoop install 7zip git openssh --global
scoop install aria2 curl grep sed less touch
scoop install python ruby go perl
```
If you have built software that you would like others to use, Scoop is an alternative to building an installer (like MSI or InnoSetup). You just need to compress your app to a `.zip` file and provide a JSON manifest that describes how to install it.
If you've built software that you'd like others to use, Scoop is an alternative to building an installer (e.g. MSI or InnoSetup) — you just need to zip your program and provide a JSON manifest that describes how to install it.
## Requirements
* Windows 7 SP1+ / Windows Server 2008+
* [PowerShell 3](https://www.microsoft.com/en-us/download/details.aspx?id=34595) (or later) and [.NET Framework 4.5+](https://www.microsoft.com/net/download)
* PowerShell must be enabled for your user account e.g. `set-executionpolicy remotesigned -s currentuser`
## Installation
Run the following commands from a regular (non-admin) PowerShell terminal to install Scoop:
Run this command from your PowerShell to install scoop to its default location (`C:\Users\<user>\scoop`)
```powershell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
```
**Note**: The first command makes your device allow running the installation and management scripts. This is necessary because Windows 10 client devices restrict execution of any PowerShell scripts by default.
Once installed, run `scoop help` for instructions.
It will install Scoop to its default location:
The default setup is configured so all user installed programs and Scoop itself live in `C:\Users\<user>\scoop`.
Globally installed programs (`--global`) live in `C:\ProgramData\scoop`.
These settings can be changed through environment variables.
`C:\Users\<YOUR USERNAME>\scoop`
#### Install Scoop to a Custom Directory
```powershell
[environment]::setEnvironmentVariable('SCOOP','D:\Applications\Scoop','User')
$env:SCOOP='D:\Applications\Scoop'
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
```
You can find the complete documentation about the installer, including advanced installation configurations, in [ScoopInstaller/Install](https://github.com/ScoopInstaller/Install). Please create new issues there if you have questions about the installation.
#### Configure Scoop to install global programs to a Custom Directory
```powershell
[environment]::setEnvironmentVariable('SCOOP_GLOBAL','F:\GlobalScoopApps','Machine')
$env:SCOOP_GLOBAL='F:\GlobalScoopApps'
```
## [Documentation](https://github.com/lukesampson/scoop/wiki)
## Multi-connection downloads with `aria2`
Scoop can utilize [`aria2`](https://github.com/aria2/aria2) to use multi-connection downloads. Simply install `aria2` through Scoop and it will be used for all downloads afterward.
```console
```powershell
scoop install aria2
```
By default, `scoop` displays a warning when running `scoop install` or `scoop update` while `aria2` is enabled. This warning can be suppressed by running `scoop config aria2-warning-enabled false`.
You can tweak the following `aria2` settings with the `scoop config` command:
- aria2-enabled (default: true)
- aria2-warning-enabled (default: true)
- [aria2-retry-wait](https://aria2.github.io/manual/en/html/aria2c.html#cmdoption-retry-wait) (default: 2)
- [aria2-split](https://aria2.github.io/manual/en/html/aria2c.html#cmdoption-s) (default: 5)
- [aria2-max-connection-per-server](https://aria2.github.io/manual/en/html/aria2c.html#cmdoption-x) (default: 5)
- [aria2-min-split-size](https://aria2.github.io/manual/en/html/aria2c.html#cmdoption-k) (default: 5M)
- [aria2-options](https://aria2.github.io/manual/en/html/aria2c.html#options) (default: )
## Inspiration
- [Homebrew](https://brew.sh/)
- [Sub](https://signalvnoise.com/posts/3264-automating-with-convention-introducing-sub)
* [Homebrew](http://mxcl.github.io/homebrew/)
* [sub](https://github.com/37signals/sub#readme)
## What sort of apps can Scoop install?
The apps that are most likely to get installed fine with Scoop are those referred to as "portable" apps. These apps are compressed files which can run standalone after being extracted. This type of apps does not produce side effects like changing the Windows Registry or placing files outside the app directory.
The apps that install best with Scoop are commonly called "portable" apps: i.e. compressed program files that run stand-alone when extracted and don't have side-effects like changing the registry or putting files outside the program directory.
Scoop also supports installer files and their uninstallation methods. Likewise, it can handle single-file apps and PowerShell scripts. These do not even need to be compressed. See the [runat](https://github.com/ScoopInstaller/Main/blob/master/bucket/runat.json) package for an example: it is simply a GitHub gist.
Since installers are common, Scoop supports them too (and their uninstallers).
### Contribute to this project
Scoop is also great at handling single-file programs and Powershell scripts. These don't even need to be compressed. See the [runat](https://github.com/lukesampson/scoop/blob/master/bucket/runat.json) package for an example: it's really just a GitHub gist.
If you would like to improve Scoop by adding features or fixing bugs, please read our [Contributing Guide](https://github.com/ScoopInstaller/.github/blob/main/.github/CONTRIBUTING.md).
### Support this project
If you find Scoop useful and would like to support the ongoing development and maintenance of this project, you can donate here:
If you find Scoop useful and would like to support ongoing development and maintenance, here's how:
- [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=DM2SUH9EUXSKJ) (one-time donations)
## Known application buckets
The following buckets are known to Scoop:
- [main](https://github.com/ScoopInstaller/Main) - Default bucket which contains popular non-GUI apps.
- [extras](https://github.com/ScoopInstaller/Extras) - Apps that do not fit the main bucket's [criteria](https://github.com/ScoopInstaller/Scoop/wiki/Criteria-for-including-apps-in-the-main-bucket).
- [games](https://github.com/Calinou/scoop-games) - Open-source and freeware video games and game-related tools.
- [nerd-fonts](https://github.com/matthewjberger/scoop-nerd-fonts) - Nerd Fonts.
- [nirsoft](https://github.com/ScoopInstaller/Nirsoft) - A collection of over 250+ apps from [Nirsoft](https://nirsoft.net).
- [sysinternals](https://github.com/niheaven/scoop-sysinternals) - The Sysinternals suite from [Microsoft](https://learn.microsoft.com/sysinternals/).
- [java](https://github.com/ScoopInstaller/Java) - A collection of Java development kits (JDKs) and Java runtime engines (JREs), Java's virtual machine debugging tools and Java based runtime engines.
- [nonportable](https://github.com/ScoopInstaller/Nonportable) - Non-portable apps (may trigger UAC prompts).
- [php](https://github.com/ScoopInstaller/PHP) - Installers for most versions of PHP.
- [versions](https://github.com/ScoopInstaller/Versions) - Alternative versions of apps found in other buckets.
The `main` bucket is installed by default. You can make use of more buckets by typing:
```console
scoop bucket add <name>
```
For example, to add the `extras` bucket, type:
```console
scoop bucket add extras
```
You would be able to install apps from the `extras` bucket now.
## Other application buckets
Many other application buckets hosted on GitHub can be found on [ScoopSearch](https://scoop.sh/) or via [other search engines](https://rasa.github.io/scoop-directory/#other-search-engines).
* [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=DM2SUH9EUXSKJ) (one-time donation)

View File

@@ -1,35 +1,39 @@
version: "{build}-{branch}"
branches:
except:
- gh-pages
build: false
deploy: false
clone_depth: 2
image: Visual Studio 2022
build: off
deploy: off
clone_depth: 49
image:
- Visual Studio 2017
environment:
matrix:
- PowerShell: 5
- PowerShell: 7
- PowerShell: 6
cache:
- '%USERPROFILE%\Documents\WindowsPowerShell\Modules -> appveyor.yml'
matrix:
fast_finish: true
for:
- matrix:
only:
- PowerShell: 5
cache:
- '%USERPROFILE%\Documents\WindowsPowerShell\Modules -> appveyor.yml, test\bin\*.ps1'
- C:\projects\helpers -> appveyor.yml, test\bin\*.ps1
install:
- ps: .\test\bin\init.ps1
test_script:
- ps: .\test\bin\test.ps1
- matrix:
only:
- PowerShell: 7
cache:
- '%USERPROFILE%\Documents\PowerShell\Modules -> appveyor.yml, test\bin\*.ps1'
- C:\projects\helpers -> appveyor.yml, test\bin\*.ps1
install:
- pwsh: .\test\bin\init.ps1
test_script:
- pwsh: .\test\bin\test.ps1
- matrix:
only:
- PowerShell: 5
install:
- ps: .\test\bin\init.ps1
test_script:
- ps: .\test\bin\test.ps1
- matrix:
only:
- PowerShell: 6
install:
- pwsh: .\test\bin\init.ps1
test_script:
- pwsh: .\test\bin\test.ps1

View File

@@ -2,96 +2,77 @@
.SYNOPSIS
Updates manifests and pushes them or creates pull-requests.
.DESCRIPTION
Updates manifests and pushes them directly to the origin branch or creates pull-requests for upstream.
Updates manifests and pushes them directly to the master branch or creates pull-requests for upstream.
.PARAMETER Upstream
Upstream repository with the target branch.
Must be in format '<user>/<repo>:<branch>'
.PARAMETER OriginBranch
Origin (local) branch name.
.PARAMETER App
Manifest name to search.
Placeholders are supported.
.PARAMETER CommitMessageFormat
The format of the commit message.
<app> will be replaced with the file name of manifest.
<version> will be replaced with the version of the latest manifest.
.PARAMETER Dir
The directory where to search for manifests.
.PARAMETER Push
Push updates directly to 'origin branch'.
Push updates directly to 'origin master'.
.PARAMETER Request
Create pull-requests on 'upstream branch' for each update.
Create pull-requests on 'upstream master' for each update.
.PARAMETER Help
Print help to console.
.PARAMETER SpecialSnowflakes
An array of manifests, which should be updated all the time. (-ForceUpdate parameter to checkver)
.PARAMETER SkipUpdated
Updated manifests will not be shown.
.PARAMETER ThrowError
Throw error as exception instead of just printing it.
.EXAMPLE
PS BUCKETROOT > .\bin\auto-pr.ps1 'someUsername/repository:branch' -Request
PS REPODIR > .\bin\auto-pr.ps1 'someUsername/repository:branch' -Request
.EXAMPLE
PS BUCKETROOT > .\bin\auto-pr.ps1 -Push
PS REPODIR > .\bin\auto-pr.ps1 -Push
Update all manifests inside 'bucket/' directory.
#>
param(
[Parameter(Mandatory = $true)]
[ValidateScript( {
if (!($_ -match '^(.*)\/(.*):(.*)$')) {
throw 'Upstream must be in this format: <user>/<repo>:<branch>'
}
$true
})]
[String] $Upstream,
[String] $OriginBranch = 'master',
[String] $Upstream = 'lukesampson/scoop:master',
[String] $App = '*',
[String] $CommitMessageFormat = '<app>: Update to version <version>',
[ValidateScript( {
if (!(Test-Path $_ -Type Container)) {
throw "$_ is not a directory!"
} else {
$true
}
$true
})]
[String] $Dir,
[String] $Dir = "$PSScriptRoot\..\bucket",
[Switch] $Push,
[Switch] $Request,
[Switch] $Help,
[string[]] $SpecialSnowflakes,
[Switch] $SkipUpdated,
[Switch] $ThrowError
[Switch] $SkipUpdated
)
. "$PSScriptRoot\..\lib\manifest.ps1"
. "$PSScriptRoot\..\lib\json.ps1"
. "$PSScriptRoot\..\lib\unix.ps1"
if ($App -ne '*' -and (Test-Path $App -PathType Leaf)) {
$Dir = Split-Path $App
} elseif ($Dir) {
$Dir = Convert-Path $Dir
} else {
throw "'-Dir' parameter required if '-App' is not a filepath!"
}
$Dir = Resolve-Path $Dir
if ((!$Push -and !$Request) -or $Help) {
Write-Host @'
Usage: auto-pr.ps1 [OPTION]
Mandatory options:
-p, -push push updates directly to 'origin branch'
-r, -request create pull-requests on 'upstream branch' for each update
-p, -push push updates directly to 'origin master'
-r, -request create pull-requests on 'upstream master' for each update
Optional options:
-u, -upstream upstream repository with target branch
-o, -originbranch origin (local) branch name
only used if -r is set (default: lukesampson/scoop:master)
-h, -help
'@
exit 0
}
if ($IsLinux -or $IsMacOS) {
if (is_unix) {
if (!(which hub)) {
Write-Host "Please install hub ('brew install hub' or visit: https://hub.github.com/)" -ForegroundColor Yellow
exit 1
@@ -105,7 +86,7 @@ if ($IsLinux -or $IsMacOS) {
function execute($cmd) {
Write-Host $cmd -ForegroundColor Green
$output = Invoke-Command ([scriptblock]::Create($cmd))
$output = Invoke-Expression $cmd
if ($LASTEXITCODE -gt 0) {
abort "^^^ Error! See above ^^^ (last command: $cmd)"
@@ -114,12 +95,12 @@ function execute($cmd) {
return $output
}
function pull_requests($json, [String] $app, [String] $upstream, [String] $manifest, [String] $commitMessage) {
function pull_requests($json, [String] $app, [String] $upstream, [String] $manifest) {
$version = $json.version
$homepage = $json.homepage
$branch = "manifest/$app-$version"
execute "hub checkout $OriginBranch"
execute 'hub checkout master'
Write-Host "hub rev-parse --verify $branch" -ForegroundColor Green
hub rev-parse --verify $branch
@@ -131,7 +112,7 @@ function pull_requests($json, [String] $app, [String] $upstream, [String] $manif
Write-Host "Creating update $app ($version) ..." -ForegroundColor DarkCyan
execute "hub checkout -b $branch"
execute "hub add $manifest"
execute "hub commit -m '$commitMessage"
execute "hub commit -m '${app}: Update to version $version'"
Write-Host "Pushing update $app ($version) ..." -ForegroundColor DarkCyan
execute "hub push origin $branch"
@@ -146,7 +127,7 @@ function pull_requests($json, [String] $app, [String] $upstream, [String] $manif
Write-Host "hub pull-request -m '<msg>' -b '$upstream' -h '$branch'" -ForegroundColor Green
$msg = @"
$commitMessage
$app`: Update to version $version
Hello lovely humans,
a new version of [$app]($homepage) is available.
@@ -156,27 +137,27 @@ a new version of [$app]($homepage) is available.
| New version | $version |
"@
hub pull-request -m "$msg" -b "$upstream" -h "$branch"
hub pull-request -m "$msg" -b '$upstream' -h '$branch'
if ($LASTEXITCODE -gt 0) {
execute 'hub reset'
abort "Pull Request failed! (hub pull-request -m '$commitMessage' -b '$upstream' -h '$branch')"
abort "Pull Request failed! (hub pull-request -m '${app}: Update to version $version' -b '$upstream' -h '$branch')"
}
}
Write-Host 'Updating ...' -ForegroundColor DarkCyan
if ($Push) {
execute "hub pull origin $OriginBranch"
execute "hub checkout $OriginBranch"
execute 'hub pull origin master'
execute 'hub checkout master'
} else {
execute "hub pull upstream $OriginBranch"
execute "hub push origin $OriginBranch"
execute 'hub pull upstream master'
execute 'hub push origin master'
}
. "$PSScriptRoot\checkver.ps1" -App $App -Dir $Dir -Update -SkipUpdated:$SkipUpdated -ThrowError:$ThrowError
. "$PSScriptRoot\checkver.ps1" -App $App -Dir $Dir -Update -SkipUpdated:$SkipUpdated
if ($SpecialSnowflakes) {
Write-Host "Forcing update on our special snowflakes: $($SpecialSnowflakes -join ',')" -ForegroundColor DarkCyan
$SpecialSnowflakes -split ',' | ForEach-Object {
. "$PSScriptRoot\checkver.ps1" $_ -Dir $Dir -ForceUpdate -ThrowError:$ThrowError
. "$PSScriptRoot\checkver.ps1" $_ -Dir $Dir -ForceUpdate
}
}
@@ -193,30 +174,30 @@ hub diff --name-only | ForEach-Object {
return
}
$version = $json.version
$CommitMessage = $CommitMessageFormat -replace '<app>',$app -replace '<version>',$version
if ($Push) {
Write-Host "Creating update $app ($version) ..." -ForegroundColor DarkCyan
execute "hub add $manifest"
# detect if file was staged, because it's not when only LF or CRLF have changed
$status = execute 'hub status --porcelain -uno'
$status = $status | Where-Object { $_ -match "M\s{2}.*$app.json" }
if ($status -and $status.StartsWith('M ') -and $status.EndsWith("$app.json")) {
execute "hub commit -m '$commitMessage'"
$status = $status | Select-Object -First 1
if ($status -and $status -match "^\x20*M\x20+.*$app.json") {
execute "hub commit -m '${app}: Update to version $version'"
} else {
Write-Host "Skipping $app because only LF/CRLF changes were detected ..." -ForegroundColor Yellow
}
} else {
pull_requests $json $app $Upstream $manifest $CommitMessage
pull_requests $json $app $Upstream $manifest
}
}
if ($Push) {
Write-Host 'Pushing updates ...' -ForegroundColor DarkCyan
execute "hub push origin $OriginBranch"
execute 'hub push origin master'
} else {
Write-Host "Returning to $OriginBranch branch and removing unstaged files ..." -ForegroundColor DarkCyan
execute "hub checkout -f $OriginBranch"
Write-Host 'Returning to master branch and removing unstaged files ...' -ForegroundColor DarkCyan
execute 'hub checkout -f master'
}
execute 'hub reset --hard'
execute 'hub reset'

View File

@@ -14,17 +14,16 @@
Manifests without mismatch will not be shown.
.PARAMETER UseCache
Downloaded files will not be deleted after script finish.
Should not be used, because check should be used for downloading actual version of file (as normal user, not finding in some document from vendors, which could be damaged / wrong (Example: Slack@3.3.1 ScoopInstaller/Extras#1192)), not some previously downloaded.
Should not be used, because check should be used for downloading actual version of file (as normal user, not finding in some document from vendors, which could be damaged / wrong (Example: Slack@3.3.1 lukesampson/scoop-extras#1192)), not some previously downloaded.
.EXAMPLE
PS BUCKETROOT> .\bin\checkhashes.ps1
PS BUCKETDIR> .\bin\checkhashes.ps1
Check all manifests for hash mismatch.
.EXAMPLE
PS BUCKETROOT> .\bin\checkhashes.ps1 MANIFEST -Update
PS BUCKETDIR> .\bin\checkhashes.ps1 MANIFEST -Update
Check MANIFEST and Update if there are some wrong hashes.
#>
param(
[String] $App = '*',
[Parameter(Mandatory = $true)]
[ValidateScript( {
if (!(Test-Path $_ -Type Container)) {
throw "$_ is not a directory!"
@@ -32,7 +31,7 @@ param(
$true
}
})]
[String] $Dir,
[String] $Dir = "$PSScriptRoot\..\bucket",
[Switch] $Update,
[Switch] $ForceUpdate,
[Switch] $SkipCorrect,
@@ -42,16 +41,18 @@ param(
. "$PSScriptRoot\..\lib\core.ps1"
. "$PSScriptRoot\..\lib\manifest.ps1"
. "$PSScriptRoot\..\lib\config.ps1"
. "$PSScriptRoot\..\lib\buckets.ps1"
. "$PSScriptRoot\..\lib\autoupdate.ps1"
. "$PSScriptRoot\..\lib\json.ps1"
. "$PSScriptRoot\..\lib\versions.ps1"
. "$PSScriptRoot\..\lib\install.ps1"
. "$PSScriptRoot\..\lib\unix.ps1"
$Dir = Convert-Path $Dir
$Dir = Resolve-Path $Dir
if ($ForceUpdate) { $Update = $true }
# Cleanup
if (!$UseCache) { Remove-Item "$cachedir\*HASH_CHECK*" -Force }
if (!$UseCache) { scoop cache rm '*HASH_CHECK*' }
function err ([String] $name, [String[]] $message) {
Write-Host "$name`: " -ForegroundColor Red -NoNewline
@@ -59,10 +60,9 @@ function err ([String] $name, [String[]] $message) {
}
$MANIFESTS = @()
foreach ($single in Get-ChildItem $Dir -Filter "$App.json" -Recurse) {
$name = $single.BaseName
$file = $single.FullName
$manifest = parse_json $file
foreach ($single in Get-ChildItem $Dir "$App.json") {
$name = (strip_ext $single.Name)
$manifest = parse_json "$Dir\$($single.Name)"
# Skip nighly manifests, since their hash validation is skipped
if ($manifest.version -eq 'nightly') { continue }
@@ -70,17 +70,15 @@ foreach ($single in Get-ChildItem $Dir -Filter "$App.json" -Recurse) {
$urls = @()
$hashes = @()
if ($manifest.url) {
if ($manifest.architecture) {
# First handle 64bit
url $manifest '64bit' | ForEach-Object { $urls += $_ }
hash $manifest '64bit' | ForEach-Object { $hashes += $_ }
url $manifest '32bit' | ForEach-Object { $urls += $_ }
hash $manifest '32bit' | ForEach-Object { $hashes += $_ }
} elseif ($manifest.url) {
$manifest.url | ForEach-Object { $urls += $_ }
$manifest.hash | ForEach-Object { $hashes += $_ }
} elseif ($manifest.architecture) {
# First handle 64bit
script:url $manifest '64bit' | ForEach-Object { $urls += $_ }
hash $manifest '64bit' | ForEach-Object { $hashes += $_ }
script:url $manifest '32bit' | ForEach-Object { $urls += $_ }
hash $manifest '32bit' | ForEach-Object { $hashes += $_ }
script:url $manifest 'arm64' | ForEach-Object { $urls += $_ }
hash $manifest 'arm64' | ForEach-Object { $hashes += $_ }
} else {
err $name 'Manifest does not contain URL property.'
continue
@@ -94,7 +92,6 @@ foreach ($single in Get-ChildItem $Dir -Filter "$App.json" -Recurse) {
$MANIFESTS += @{
app = $name
file = $file
manifest = $manifest
urls = $urls
hashes = $hashes
@@ -113,16 +110,13 @@ foreach ($current in $MANIFESTS) {
$current.urls | ForEach-Object {
$algorithm, $expected = get_hash $current.hashes[$count]
if ($UseCache) {
$version = $current.manifest.version
} else {
$version = 'HASH_CHECK'
}
$version = 'HASH_CHECK'
$tmp = $expected_hash -split ':'
Invoke-CachedDownload $current.app $version $_ $null $null -use_cache:$UseCache
dl_with_cache $current.app $version $_ $null $null -use_cache:$UseCache
$to_check = cache_path $current.app $version $_
$actual_hash = (Get-FileHash -Path $to_check -Algorithm $algorithm).Hash.ToLower()
$to_check = fullpath (cache_path $current.app $version $_)
$actual_hash = compute_hash $to_check $algorithm
# Append type of algorithm to both expected and actual if it's not sha256
if ($algorithm -ne 'sha256') {
@@ -146,13 +140,13 @@ foreach ($current in $MANIFESTS) {
Write-Host "$($current.app): " -NoNewline
Write-Host 'Mismatch found ' -ForegroundColor Red
$mismatched | ForEach-Object {
$file = cache_path $current.app $version $current.urls[$_]
Write-Host "`tURL:`t`t$($current.urls[$_])"
$file = fullpath (cache_path $current.app $version $current.urls[$_])
Write-Host "`tURL:`t`t$($current.urls[$_])"
if (Test-Path $file) {
Write-Host "`tFirst bytes:`t$((get_magic_bytes_pretty $file ' ').ToUpper())"
Write-Host "`tFirst bytes:`t$((get_magic_bytes_pretty $file ' ').ToUpper())"
}
Write-Host "`tExpected:`t$($current.hashes[$_])" -ForegroundColor Green
Write-Host "`tActual:`t`t$($actuals[$_])" -ForegroundColor Red
Write-Host "`tExpected:`t$($current.urls[$_])" -ForegroundColor Green
Write-Host "`tActual:`t`t$($actuals[$_])" -ForegroundColor Red
}
}
@@ -164,27 +158,23 @@ foreach ($current in $MANIFESTS) {
# Defaults to zero, don't know, which architecture is available
$64bit_count = 0
$32bit_count = 0
$arm64_count = 0
# 64bit is get, donwloaded and added first
if ($platforms.Contains('64bit')) {
$64bit_count = $current.manifest.architecture.'64bit'.hash.Count
# 64bit is get, donwloaded and added first
$current.manifest.architecture.'64bit'.hash = $actuals[0..($64bit_count - 1)]
}
if ($platforms.Contains('32bit')) {
$32bit_count = $current.manifest.architecture.'32bit'.hash.Count
$current.manifest.architecture.'32bit'.hash = $actuals[($64bit_count)..($64bit_count + $32bit_count - 1)]
}
if ($platforms.Contains('arm64')) {
$arm64_count = $current.manifest.architecture.'arm64'.hash.Count
$current.manifest.architecture.'arm64'.hash = $actuals[($64bit_count + $32bit_count)..($64bit_count + $32bit_count + $arm64_count - 1)]
$max = $64bit_count + $32bit_count - 1 # Edge case if manifest contains 64bit and 32bit.
$current.manifest.architecture.'32bit'.hash = $actuals[($64bit_count)..$max]
}
}
Write-Host "Writing updated $($current.app) manifest" -ForegroundColor DarkGreen
$current.manifest = $current.manifest | ConvertToPrettyJson
$path = Convert-Path $current.file
$path = Resolve-Path "$Dir\$($current.app).json"
[System.IO.File]::WriteAllLines($path, $current.manifest)
}
}

View File

@@ -13,7 +13,6 @@
#>
param(
[String] $App = '*',
[Parameter(Mandatory = $true)]
[ValidateScript( {
if (!(Test-Path $_ -Type Container)) {
throw "$_ is not a directory!"
@@ -21,21 +20,22 @@ param(
$true
}
})]
[String] $Dir,
[String] $Dir = "$PSScriptRoot\\..\bucket",
[Int] $Timeout = 5,
[Switch] $SkipValid
)
. "$PSScriptRoot\..\lib\core.ps1"
. "$PSScriptRoot\..\lib\manifest.ps1"
. "$PSScriptRoot\..\lib\config.ps1"
. "$PSScriptRoot\..\lib\install.ps1"
$Dir = Convert-Path $Dir
$Dir = Resolve-Path $Dir
$Queue = @()
Get-ChildItem $Dir -Filter "$App.json" -Recurse | ForEach-Object {
$manifest = parse_json $_.FullName
$Queue += , @($_.BaseName, $manifest)
Get-ChildItem $Dir "$App.json" | ForEach-Object {
$manifest = parse_json "$Dir\$($_.Name)"
$Queue += , @($_.Name, $manifest)
}
Write-Host '[' -NoNewLine
@@ -50,9 +50,6 @@ Write-Host ']ailed'
Write-Host ' | | |'
function test_dl([String] $url, $cookies) {
# Trim renaming suffix, prevent getting 40x response
$url = ($url -split '#/')[0]
$wreq = [Net.WebRequest]::Create($url)
$wreq.Timeout = $Timeout * 1000
if ($wreq -is [Net.HttpWebRequest]) {
@@ -62,13 +59,6 @@ function test_dl([String] $url, $cookies) {
$wreq.Headers.Add('Cookie', (cookie_header $cookies))
}
}
get_config PRIVATE_HOSTS | Where-Object { $_ -ne $null -and $url -match $_.match } | ForEach-Object {
(ConvertFrom-StringData -StringData $_.Headers).GetEnumerator() | ForEach-Object {
$wreq.Headers[$_.Key] = $_.Value
}
}
$wres = $null
try {
$wres = $wreq.GetResponse()
@@ -96,9 +86,8 @@ foreach ($man in $Queue) {
if ($manifest.url) {
$manifest.url | ForEach-Object { $urls += $_ }
} else {
script:url $manifest '64bit' | ForEach-Object { $urls += $_ }
script:url $manifest '32bit' | ForEach-Object { $urls += $_ }
script:url $manifest 'arm64' | ForEach-Object { $urls += $_ }
url $manifest '64bit' | ForEach-Object { $urls += $_ }
url $manifest '32bit' | ForEach-Object { $urls += $_ }
}
$urls | ForEach-Object {
@@ -133,7 +122,7 @@ foreach ($man in $Queue) {
Write-Host $failed -NoNewLine -ForegroundColor Red
}
Write-Host '] ' -NoNewLine
Write-Host $name
Write-Host (strip_ext $name)
$errors | ForEach-Object {
Write-Host " > $_" -ForegroundColor DarkRed

View File

@@ -15,103 +15,85 @@
Useful for hash updates.
.PARAMETER SkipUpdated
Updated manifests will not be shown.
.PARAMETER Version
Update manifest to specific version.
.PARAMETER ThrowError
Throw error as exception instead of just printing it.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1
PS BUCKETDIR > .\bin\checkver.ps1
Check all manifest inside default directory.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 -SkipUpdated
PS BUCKETDIR > .\bin\checkver.ps1 -s
Check all manifest inside default directory (list only outdated manifests).
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 -Update
PS BUCKETDIR > .\bin\checkver.ps1 -u
Check all manifests and update All outdated manifests.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 APP
Check manifest APP.json inside default directory.
PS BUCKETDIR > .\bin\checkver.ps1 MAN
Check manifest MAN.json inside default directory.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 APP -Update
Check manifest APP.json and update, if there is newer version.
PS BUCKETDIR > .\bin\checkver.ps1 MAN -u
Check manifest MAN.json and update, if there is newer version.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 APP -ForceUpdate
Check manifest APP.json and update, even if there is no new version.
PS BUCKETDIR > .\bin\checkver.ps1 MAN -f
Check manifest MAN.json and update, even if there is no new version.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 APP -Update -Version VER
Check manifest APP.json and update, using version VER
PS BUCKETDIR > .\bin\checkver.ps1 MAN -u -v VER
Check manifest MAN.json and update, using version VER
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 APP DIR
Check manifest APP.json inside ./DIR directory.
PS BUCKETDIR > .\bin\checkver.ps1 MAN DIR
Check manifest MAN.json inside ./DIR directory.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 -Dir DIR
PS BUCKETDIR > .\bin\checkver.ps1 -Dir DIR
Check all manifests inside ./DIR directory.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 APP DIR -Update
Check manifest APP.json inside ./DIR directory and update if there is newer version.
PS BUCKETDIR > .\bin\checkver.ps1 MAN DIR -u
Check manifest MAN.json inside ./DIR directory and update if there is newer version.
#>
param(
[String] $App = '*',
[ValidateScript( {
if (!(Test-Path $_ -Type Container)) {
throw "$_ is not a directory!"
} else {
$true
}
$true
})]
[String] $Dir,
[String] $Dir = "$psscriptroot\..\bucket",
[Switch] $Update,
[Switch] $ForceUpdate,
[Switch] $SkipUpdated,
[String] $Version = '',
[Switch] $ThrowError
[String] $Version = ""
)
. "$PSScriptRoot\..\lib\core.ps1"
. "$PSScriptRoot\..\lib\autoupdate.ps1"
. "$PSScriptRoot\..\lib\manifest.ps1"
. "$PSScriptRoot\..\lib\buckets.ps1"
. "$PSScriptRoot\..\lib\json.ps1"
. "$PSScriptRoot\..\lib\versions.ps1"
. "$PSScriptRoot\..\lib\install.ps1" # needed for hash generation
. "$psscriptroot\..\lib\core.ps1"
. "$psscriptroot\..\lib\manifest.ps1"
. "$psscriptroot\..\lib\config.ps1"
. "$psscriptroot\..\lib\buckets.ps1"
. "$psscriptroot\..\lib\autoupdate.ps1"
. "$psscriptroot\..\lib\json.ps1"
. "$psscriptroot\..\lib\versions.ps1"
. "$psscriptroot\..\lib\install.ps1" # needed for hash generation
. "$psscriptroot\..\lib\unix.ps1"
if ($App -ne '*' -and (Test-Path $App -PathType Leaf)) {
$Dir = Split-Path $App
$files = Get-ChildItem $Dir -Filter (Split-Path $App -Leaf)
} elseif ($Dir) {
$Dir = Convert-Path $Dir
$files = Get-ChildItem $Dir -Filter "$App.json" -Recurse
} else {
throw "'-Dir' parameter required if '-App' is not a filepath!"
}
$GitHubToken = Get-GitHubToken
# don't use $Version with $App = '*'
if ($App -eq '*' -and $Version -ne '') {
throw "Don't use '-Version' with '-App *'!"
}
$Dir = Resolve-Path $Dir
$Search = $App
# get apps to check
$Queue = @()
$json = ''
$files | ForEach-Object {
$file = $_.FullName
$json = parse_json $file
Get-ChildItem $Dir "$App.json" | ForEach-Object {
$json = parse_json "$Dir\$($_.Name)"
if ($json.checkver) {
$Queue += , @($_.BaseName, $json, $file)
$Queue += , @($_.Name, $json)
}
}
# clear any existing events
Get-Event | Remove-Event
Get-EventSubscriber | Unregister-Event
Get-Event | ForEach-Object {
Remove-Event $_.SourceIdentifier
}
# start all downloads
$Queue | ForEach-Object {
$name, $json, $file = $_
$name, $json = $_
$substitutions = Get-VersionSubstitution $json.version # 'autoupdate.ps1'
$substitutions = get_version_substitutions $json.version
$wc = New-Object Net.Webclient
if ($json.checkver.useragent) {
@@ -119,81 +101,36 @@ $Queue | ForEach-Object {
} else {
$wc.Headers.Add('User-Agent', (Get-UserAgent))
}
Register-ObjectEvent $wc downloadDataCompleted -ErrorAction Stop | Out-Null
Register-ObjectEvent $wc downloadstringcompleted -ErrorAction Stop | Out-Null
# Not Specified
$githubRegex = '\/releases\/tag\/(?:v|V)?([\d.]+)'
$url = $json.homepage
if ($json.checkver.url) {
$url = $json.checkver.url
} else {
$url = $json.homepage
}
if ($json.checkver.re) {
$regex = $json.checkver.re
} elseif ($json.checkver.regex) {
$regex = $json.checkver.regex
} else {
$regex = ''
}
$regex = ''
$jsonpath = ''
$xpath = ''
$replace = ''
$useGithubAPI = $false
# GitHub
if ($regex) {
$githubRegex = $regex
} else {
$githubRegex = '/releases/tag/(?:v|V)?([\d.]+)'
}
if ($json.checkver -eq 'github') {
if (!$json.homepage.StartsWith('https://github.com/')) {
error "$name checkver expects the homepage to be a github repository"
}
$url = $json.homepage.TrimEnd('/') + '/releases/latest'
$url = $json.homepage + '/releases/latest'
$regex = $githubRegex
$useGithubAPI = $true
}
if ($json.checkver.github) {
$url = $json.checkver.github.TrimEnd('/') + '/releases/latest'
$url = $json.checkver.github + '/releases/latest'
$regex = $githubRegex
if ($json.checkver.PSObject.Properties.Count -eq 1) { $useGithubAPI = $true }
}
# SourceForge
if ($regex) {
$sourceforgeRegex = $regex
} else {
$sourceforgeRegex = '(?!\.)([\d.]+)(?<=\d)'
if ($json.checkver.re) {
$regex = $json.checkver.re
}
if ($json.checkver -eq 'sourceforge') {
if ($json.homepage -match '//(sourceforge|sf)\.net/projects/(?<project>[^/]+)(/files/(?<path>[^/]+))?|//(?<project>[^.]+)\.(sourceforge\.(net|io)|sf\.net)') {
$project = $Matches['project']
$path = $Matches['path']
} else {
$project = strip_ext $name
}
$url = "https://sourceforge.net/projects/$project/rss"
if ($path) {
$url = $url + '?path=/' + $path.TrimStart('/')
}
$regex = "CDATA\[/$path/.*?$sourceforgeRegex.*?\]".Replace('//', '/')
}
if ($json.checkver.sourceforge) {
if ($json.checkver.sourceforge -is [System.String] -and $json.checkver.sourceforge -match '(?<project>[\w-]*)(/(?<path>.*))?') {
$project = $Matches['project']
$path = $Matches['path']
} else {
$project = $json.checkver.sourceforge.project
$path = $json.checkver.sourceforge.path
}
$url = "https://sourceforge.net/projects/$project/rss"
if ($path) {
$url = $url + '?path=/' + $path.TrimStart('/')
}
$regex = "CDATA\[/$path/.*?$sourceforgeRegex.*?\]".Replace('//', '/')
if ($json.checkver.regex) {
$regex = $json.checkver.regex
}
if ($json.checkver.jp) {
@@ -202,49 +139,31 @@ $Queue | ForEach-Object {
if ($json.checkver.jsonpath) {
$jsonpath = $json.checkver.jsonpath
}
if ($json.checkver.xpath) {
$xpath = $json.checkver.xpath
}
if ($json.checkver.replace -is [System.String]) { # If `checkver` is [System.String], it has a method called `Replace`
if ($json.checkver.replace -and $json.checkver.replace.GetType() -eq [System.String]) {
$replace = $json.checkver.replace
}
if (!$jsonpath -and !$regex -and !$xpath) {
if (!$jsonpath -and !$regex) {
$regex = $json.checkver
}
$reverse = $json.checkver.reverse -and $json.checkver.reverse -eq 'true'
if ($url -like '*api.github.com/*') { $useGithubAPI = $true }
if ($useGithubAPI -and ($null -ne $GitHubToken)) {
$url = $url -replace '//(www\.)?github.com/', '//api.github.com/repos/'
$wc.Headers.Add('Authorization', "token $GitHubToken")
}
$url = substitute $url $substitutions
$state = New-Object psobject @{
app = $name
file = $file
url = $url
regex = $regex
json = $json
jsonpath = $jsonpath
xpath = $xpath
reverse = $reverse
replace = $replace
}
get_config PRIVATE_HOSTS | Where-Object { $_ -ne $null -and $url -match $_.match } | ForEach-Object {
(ConvertFrom-StringData -StringData $_.Headers).GetEnumerator() | ForEach-Object {
$wc.Headers[$_.Key] = $_.Value
}
app = (strip_ext $name);
url = $url;
regex = $regex;
json = $json;
jsonpath = $jsonpath;
reverse = $reverse;
replace = $replace;
}
$wc.Headers.Add('Referer', (strip_filename $url))
$wc.DownloadDataAsync($url, $state)
$wc.DownloadStringAsync($url, $state)
}
function next($er) {
@@ -260,129 +179,78 @@ while ($in_progress -gt 0) {
$in_progress--
$state = $ev.SourceEventArgs.UserState
$result = $ev.SourceEventArgs.Result
$app = $state.app
$file = $state.file
$json = $state.json
$url = $state.url
$regexp = $state.regex
$jsonpath = $state.jsonpath
$xpath = $state.xpath
$script = $json.checkver.script
$reverse = $state.reverse
$replace = $state.replace
$expected_ver = $json.version
$ver = $Version
$ver = ''
$err = $ev.SourceEventArgs.Error
$page = $ev.SourceEventArgs.Result
if ($err) {
next "$($err.message)`r`nURL $url is not valid"
continue
}
if (!$regex -and $replace) {
next "'replace' requires 're' or 'regex'"
continue
}
if ($jsonpath) {
$ver = json_path $page $jsonpath
if (!$ver) {
$ver = json_path_legacy $page $jsonpath
}
if (!$ver) {
next "couldn't find '$jsonpath' in $url"
continue
}
}
if ($jsonpath -and $regexp) {
$page = $ver
$ver = ''
}
if ($regexp) {
$regex = New-Object System.Text.RegularExpressions.Regex($regexp)
if ($reverse) {
$match = $regex.Matches($page) | Select-Object -Last 1
} else {
$match = $regex.Matches($page) | Select-Object -First 1
}
if ($match -and $match.Success) {
$matchesHashtable = @{}
$regex.GetGroupNames() | ForEach-Object { $matchesHashtable.Add($_, $match.Groups[$_].Value) }
$ver = $matchesHashtable['1']
if ($replace) {
$ver = $regex.Replace($match.Value, $replace)
}
if (!$ver) {
$ver = $matchesHashtable['version']
}
} else {
next "couldn't match '$regexp' in $url"
continue
}
}
if (!$ver) {
if (!$regexp -and $replace) {
next "'replace' requires 're' or 'regex'"
continue
}
$err = $ev.SourceEventArgs.Error
if ($err) {
next "$($err.message)`r`nURL $url is not valid"
continue
}
if ($url) {
$ms = New-Object System.IO.MemoryStream
$ms.Write($result, 0, $result.Length)
$ms.Seek(0, 0) | Out-Null
if ($result[0] -eq 0x1F -and $result[1] -eq 0x8B) {
$ms = New-Object System.IO.Compression.GZipStream($ms, [System.IO.Compression.CompressionMode]::Decompress)
}
$page = (New-Object System.IO.StreamReader($ms, (Get-Encoding $wc))).ReadToEnd()
}
$source = $url
if ($script) {
$page = Invoke-Command ([scriptblock]::Create($script -join "`r`n"))
$source = 'the output of script'
}
if ($jsonpath) {
# Return only a single value if regex is absent
$noregex = [String]::IsNullOrEmpty($regexp)
# If reverse is ON and regex is ON,
# Then reverse would have no effect because regex handles reverse
# on its own
# So in this case we have to disable reverse
$ver = json_path $page $jsonpath $null ($reverse -and $noregex) $noregex
if (!$ver) {
$ver = json_path_legacy $page $jsonpath
}
if (!$ver) {
next "couldn't find '$jsonpath' in $source"
continue
}
}
if ($xpath) {
$xml = [xml]$page
# Find all `significant namespace declarations` from the XML file
$nsList = $xml.SelectNodes("//namespace::*[not(. = ../../namespace::*)]")
# Then add them into the NamespaceManager
$nsmgr = New-Object System.Xml.XmlNamespaceManager($xml.NameTable)
$nsList | ForEach-Object {
if ($_.LocalName -eq 'xmlns') {
$nsmgr.AddNamespace('ns', $_.Value)
$xpath = $xpath -replace '/([^:/]+)((?=/)|(?=$))', '/ns:$1'
} else {
$nsmgr.AddNamespace($_.LocalName, $_.Value)
}
}
# Getting version from XML, using XPath
$ver = $xml.SelectSingleNode($xpath, $nsmgr).'#text'
if (!$ver) {
next "couldn't find '$($xpath -replace 'ns:', '')' in $source"
continue
}
}
if ($jsonpath -and $regexp) {
$page = $ver
$ver = ''
}
if ($xpath -and $regexp) {
$page = $ver
$ver = ''
}
if ($regexp) {
$re = New-Object System.Text.RegularExpressions.Regex($regexp)
if ($reverse) {
$match = $re.Matches($page) | Select-Object -Last 1
} else {
$match = $re.Matches($page) | Select-Object -First 1
}
if ($match -and $match.Success) {
$matchesHashtable = @{}
$re.GetGroupNames() | ForEach-Object { $matchesHashtable.Add($_, $match.Groups[$_].Value) }
$ver = $matchesHashtable['1']
if ($replace) {
$ver = $re.Replace($match.Value, $replace)
}
if (!$ver) {
$ver = $matchesHashtable['version']
}
} else {
next "couldn't match '$regexp' in $source"
continue
}
}
if (!$ver) {
next "couldn't find new version in $source"
continue
}
next "couldn't find new version in $url"
continue
}
# Skip actual only if versions are same and there is no -f
if (($ver -eq $expected_ver) -and !$ForceUpdate -and $SkipUpdated) { continue }
Write-Host "$app`: " -NoNewline
Write-Host "$App`: " -NoNewline
# version hasn't changed (step over if forced update)
if ($ver -eq $expected_ver -and !$ForceUpdate) {
@@ -392,7 +260,7 @@ while ($in_progress -gt 0) {
Write-Host $ver -ForegroundColor DarkRed -NoNewline
Write-Host " (scoop version is $expected_ver)" -NoNewline
$update_available = (Compare-Version -ReferenceVersion $ver -DifferenceVersion $expected_ver) -ne 0
$update_available = (compare_versions $expected_ver $ver) -eq -1
if ($json.autoupdate -and $update_available) {
Write-Host ' autoupdate available' -ForegroundColor Cyan
@@ -408,13 +276,12 @@ while ($in_progress -gt 0) {
Write-Host 'Forcing autoupdate!' -ForegroundColor DarkMagenta
}
try {
Invoke-AutoUpdate $app $file $json $ver $matchesHashtable # 'autoupdate.ps1'
} catch {
if ($ThrowError) {
throw $_
} else {
error $_.Exception.Message
if ($Version -ne "") {
$ver = $Version
}
autoupdate $App $Dir $json $ver $matchesHashtable
} catch {
error $_.Exception.Message
}
}
}

View File

@@ -9,34 +9,32 @@
#>
param(
[String] $App = '*',
[Parameter(Mandatory = $true)]
[ValidateScript( {
if (!(Test-Path $_ -Type Container)) {
throw "$_ is not a directory!"
} else {
$true
}
$true
})]
[String] $Dir
[String] $Dir = "$PSScriptRoot\..\bucket"
)
. "$PSScriptRoot\..\lib\core.ps1"
. "$PSScriptRoot\..\lib\manifest.ps1"
. "$PSScriptRoot\..\lib\description.ps1"
$Dir = Convert-Path $Dir
$Dir = Resolve-Path $Dir
$Queue = @()
Get-ChildItem $Dir -Filter "$App.json" -Recurse | ForEach-Object {
$manifest = parse_json $_.FullName
$Queue += , @($_.BaseName, $manifest)
Get-ChildItem $Dir "$App.json" | ForEach-Object {
$manifest = parse_json "$Dir\$($_.Name)"
$Queue += , @(($_.Name -replace '\.json$', ''), $manifest)
}
$Queue | ForEach-Object {
$name, $manifest = $_
Write-Host "$name`: " -NoNewline
if (!$manifest.homepage) {
if(!$manifest.homepage) {
Write-Host "`nNo homepage set." -ForegroundColor Red
return
}
@@ -44,15 +42,14 @@ $Queue | ForEach-Object {
try {
$wc = New-Object Net.Webclient
$wc.Headers.Add('User-Agent', (Get-UserAgent))
$homepage = $wc.DownloadData($manifest.homepage)
$home_html = (Get-Encoding($wc)).GetString($homepage)
$home_html = $wc.DownloadString($manifest.homepage)
} catch {
Write-Host "`n$($_.Exception.Message)" -ForegroundColor Red
return
}
$description, $descr_method = find_description $manifest.homepage $home_html
if (!$description) {
if(!$description) {
Write-Host "`nDescription not found ($($manifest.homepage))" -ForegroundColor Red
return
}

View File

@@ -16,29 +16,29 @@
#>
param(
[String] $App = '*',
[Parameter(Mandatory = $true)]
[ValidateScript( {
if (!(Test-Path $_ -Type Container)) {
throw "$_ is not a directory!"
} else {
$true
}
$true
})]
[String] $Dir
[Alias('Path')]
[String] $Dir = "$PSScriptRoot\..\bucket"
)
. "$PSScriptRoot\..\lib\core.ps1"
. "$PSScriptRoot\..\lib\manifest.ps1"
. "$PSScriptRoot\..\lib\json.ps1"
$Dir = Convert-Path $Dir
$Dir = Resolve-Path $Dir
Get-ChildItem $Dir "$App.json" | ForEach-Object {
if ($PSVersionTable.PSVersion.Major -gt 5) { $_ = $_.Name } # Fix for pwsh
Get-ChildItem $Dir -Filter "$App.json" -Recurse | ForEach-Object {
$file = $_.FullName
# beautify
$json = parse_json $file | ConvertToPrettyJson
$json = parse_json "$Dir\$_" | ConvertToPrettyJson
# convert to 4 spaces
$json = $json -replace "`t", ' '
[System.IO.File]::WriteAllLines($file, $json)
[System.IO.File]::WriteAllLines("$Dir\$_", $json)
}

View File

@@ -1,2 +1,64 @@
#Requires -Version 5
Invoke-RestMethod https://get.scoop.sh | Invoke-Expression
# requires -v 3
# remote install:
# iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
$old_erroractionpreference = $erroractionpreference
$erroractionpreference = 'stop' # quit if anything goes wrong
if(($PSVersionTable.PSVersion.Major) -lt 3) {
Write-Output "PowerShell 3 or greater is required to run Scoop."
Write-Output "Upgrade PowerShell: https://docs.microsoft.com/en-us/powershell/scripting/setup/installing-windows-powershell"
break
}
# show notification to change execution policy:
if((Get-ExecutionPolicy) -gt 'RemoteSigned' -or (Get-ExecutionPolicy) -eq 'ByPass') {
Write-Output "PowerShell requires an execution policy of 'RemoteSigned' to run Scoop."
Write-Output "To make this change please run:"
Write-Output "'Set-ExecutionPolicy RemoteSigned -scope CurrentUser'"
break
}
if([System.Enum]::GetNames([System.Net.SecurityProtocolType]) -notcontains 'Tls12') {
Write-Output "Scoop requires at least .NET Framework 4.5"
Write-Output "Please download and install it first:"
Write-Output "https://www.microsoft.com/net/download"
break
}
# get core functions
$core_url = 'https://raw.githubusercontent.com/lukesampson/scoop/master/lib/core.ps1'
Write-Output 'Initializing...'
Invoke-Expression (new-object net.webclient).downloadstring($core_url)
# prep
if(installed 'scoop') {
write-host "Scoop is already installed. Run 'scoop update' to get the latest version." -f red
# don't abort if invoked with iex that would close the PS session
if($myinvocation.mycommand.commandtype -eq 'Script') { return } else { exit 1 }
}
$dir = ensure (versiondir 'scoop' 'current')
# download scoop zip
$zipurl = 'https://github.com/lukesampson/scoop/archive/master.zip'
$zipfile = "$dir\scoop.zip"
Write-Output 'Downloading...'
dl $zipurl $zipfile
'Extracting...'
Add-Type -Assembly "System.IO.Compression.FileSystem"
[IO.Compression.ZipFile]::ExtractToDirectory($zipfile,"$dir\_tmp")
Copy-Item "$dir\_tmp\scoop-master\*" $dir -r -force
Remove-Item "$dir\_tmp" -r -force
Remove-Item $zipfile
Write-Output 'Creating shim...'
shim "$dir\bin\scoop.ps1" $false
ensure_robocopy_in_path
ensure_scoop_in_path
scoop config lastupdate ([System.DateTime]::Now.ToString('o'))
success 'Scoop was installed successfully!'
Write-Output "Type 'scoop help' for instructions."
$erroractionpreference = $old_erroractionpreference # Reset $erroractionpreference to original value

View File

@@ -11,22 +11,14 @@
#>
param(
[String] $App = '*',
[Parameter(Mandatory = $true)]
[ValidateScript( {
if (!(Test-Path $_ -Type Container)) {
throw "$_ is not a directory!"
} else {
$true
}
})]
[String] $Dir,
[String] $Dir = "$PSScriptRoot\..\bucket",
[Switch] $SkipSupported
)
. "$PSScriptRoot\..\lib\core.ps1"
. "$PSScriptRoot\..\lib\manifest.ps1"
$Dir = Convert-Path $Dir
$Dir = Resolve-Path $Dir
Write-Host '[' -NoNewLine
Write-Host 'C' -NoNewLine -ForegroundColor Green
@@ -36,8 +28,8 @@ Write-Host 'A' -NoNewLine -ForegroundColor Cyan
Write-Host ']utoupdate'
Write-Host ' | |'
Get-ChildItem $Dir -Filter "$App.json" -Recurse | ForEach-Object {
$json = parse_json $_.FullName
Get-ChildItem $Dir "$App.json" | ForEach-Object {
$json = parse_json "$Dir\$($_.Name)"
if ($SkipSupported -and $json.checkver -and $json.autoupdate) { return }
@@ -48,5 +40,5 @@ Get-ChildItem $Dir -Filter "$App.json" -Recurse | ForEach-Object {
Write-Host '[' -NoNewLine
Write-Host $(if ($json.autoupdate) { 'A' } else { ' ' }) -NoNewLine -ForegroundColor Cyan
Write-Host '] ' -NoNewLine
Write-Host $_.BaseName
Write-Host (strip_ext $_.Name)
}

View File

@@ -1,7 +1,7 @@
# for development, update the installed scripts to match local source
. "$PSScriptRoot\..\lib\core.ps1"
. "$psscriptroot\..\lib\core.ps1"
$src = "$PSScriptRoot\.."
$src = relpath ".."
$dest = ensure (versiondir 'scoop' 'current')
# make sure not running from the installed directory
@@ -15,4 +15,5 @@ $output | Where-Object { $_ -ne "" }
Write-Output 'creating shim...'
shim "$dest\bin\scoop.ps1" $false
ensure_scoop_in_path
success 'scoop was refreshed!'

View File

@@ -1,53 +1,34 @@
#Requires -Version 5
Set-StrictMode -Off
#requires -v 3
param($cmd)
. "$PSScriptRoot\..\lib\core.ps1"
. "$PSScriptRoot\..\lib\buckets.ps1"
. "$PSScriptRoot\..\lib\commands.ps1"
. "$PSScriptRoot\..\lib\help.ps1"
set-strictmode -off
$subCommand = $Args[0]
. "$psscriptroot\..\lib\config.ps1"
. "$psscriptroot\..\lib\core.ps1"
. "$psscriptroot\..\lib\git.ps1"
. "$psscriptroot\..\lib\buckets.ps1"
. (relpath '..\lib\commands')
# for aliases where there's a local function, re-alias so the function takes precedence
$aliases = Get-Alias | Where-Object { $_.Options -notmatch 'ReadOnly|AllScope' } | ForEach-Object { $_.Name }
Get-ChildItem Function: | Where-Object -Property Name -In -Value $aliases | ForEach-Object {
Set-Alias -Name $_.Name -Value Local:$($_.Name) -Scope Script
}
reset_aliases
switch ($subCommand) {
({ $subCommand -in @($null, '-h', '--help', '/?') }) {
exec 'help'
}
({ $subCommand -in @('-v', '--version') }) {
Write-Host 'Current Scoop version:'
if (Test-GitAvailable -and (Test-Path "$PSScriptRoot\..\.git") -and (get_config SCOOP_BRANCH 'master') -ne 'master') {
Invoke-Git -Path "$PSScriptRoot\.." -ArgumentList @('log', 'HEAD', '-1', '--oneline')
} else {
$version = Select-String -Pattern '^## \[(v[\d.]+)\].*?([\d-]+)$' -Path "$PSScriptRoot\..\CHANGELOG.md"
Write-Host $version.Matches.Groups[1].Value -ForegroundColor Cyan -NoNewline
Write-Host " - Released at $($version.Matches.Groups[2].Value)"
$commands = commands
if ('--version' -contains $cmd -or (!$cmd -and '-v' -contains $args)) {
Push-Location $(versiondir 'scoop' 'current')
write-host "Current Scoop version:"
git_log --oneline HEAD -n 1
write-host ""
Pop-Location
buckets | ForEach-Object {
Push-Location $(bucketdir $_)
if(test-path '.git') {
write-host "'$_' bucket:"
git_log --oneline HEAD -n 1
write-host ""
}
Write-Host ''
Get-LocalBucket | ForEach-Object {
$bucketLoc = Find-BucketDirectory $_ -Root
if (Test-GitAvailable -and (Test-Path "$bucketLoc\.git")) {
Write-Host "'$_' bucket:"
Invoke-Git -Path $bucketLoc -ArgumentList @('log', 'HEAD', '-1', '--oneline')
Write-Host ''
}
}
}
({ $subCommand -in (commands) }) {
[string[]]$arguments = $Args | Select-Object -Skip 1
if ($null -ne $arguments -and $arguments[0] -in @('-h', '--help', '/?')) {
exec 'help' @($subCommand)
} else {
exec $subCommand $arguments
}
}
default {
warn "scoop: '$subCommand' isn't a scoop command. See 'scoop help'."
exit 1
Pop-Location
}
}
elseif (@($null, '--help', '/?') -contains $cmd -or $args[0] -contains '-h') { exec 'help' $args }
elseif ($commands -contains $cmd) { exec $cmd $args }
else { "scoop: '$cmd' isn't a scoop command. See 'scoop help'."; exit 1 }

View File

@@ -1 +1 @@
. "$PSScriptRoot\..\test\bin\test.ps1"
invoke-pester "$psscriptroot\..\test"

View File

@@ -1,107 +1,74 @@
<#
.SYNOPSIS
Uninstall ALL scoop applications and scoop itself.
.PARAMETER global
Global applications will be uninstalled.
.PARAMETER purge
Persisted data will be deleted.
#>
param(
[bool] $global,
[bool] $purge
)
param($global)
. "$PSScriptRoot\..\lib\core.ps1"
. "$PSScriptRoot\..\lib\system.ps1"
. "$PSScriptRoot\..\lib\install.ps1"
. "$PSScriptRoot\..\lib\shortcuts.ps1"
. "$PSScriptRoot\..\lib\versions.ps1"
. "$PSScriptRoot\..\lib\manifest.ps1"
. "$psscriptroot\..\lib\core.ps1"
. "$psscriptroot\..\lib\install.ps1"
. "$psscriptroot\..\lib\shortcuts.ps1"
. "$psscriptroot\..\lib\versions.ps1"
. "$psscriptroot\..\lib\manifest.ps1"
if ($global -and !(is_admin)) {
error 'You need admin rights to uninstall globally.'
exit 1
if($global -and !(is_admin)) {
"ERROR: You need admin rights to uninstall globally."; exit 1
}
if ($purge) {
warn 'This will uninstall Scoop, all the programs that have been installed with Scoop and all persisted data!'
} else {
warn 'This will uninstall Scoop and all the programs that have been installed with Scoop!'
}
$yn = Read-Host 'Are you sure? (yN)'
if ($yn -notlike 'y*') { exit }
warn 'This will uninstall Scoop and all the programs that have been installed with Scoop!'
$yn = read-host 'Are you sure? (yN)'
if($yn -notlike 'y*') { exit }
$errors = $false
# Uninstall given app
function do_uninstall($app, $global) {
$version = Select-CurrentVersion -AppName $app -Global:$global
$version = current_version $app $global
$dir = versiondir $app $version $global
$manifest = installed_manifest $app $version $global
$install = install_info $app $version $global
$architecture = $install.architecture
Write-Output "Uninstalling '$app'"
Invoke-Installer -Path $dir -Manifest $manifest -ProcessorArchitecture $architecture -Uninstall
rm_shims $app $manifest $global $architecture
run_uninstaller $manifest $architecture $dir
rm_shims $manifest $global $architecture
# If a junction was used during install, that will have been used
# as the reference directory. Othewise it will just be the version
# directory.
$refdir = unlink_current (appdir $app $global)
env_rm_path $manifest $refdir $global $architecture
env_rm $manifest $global $architecture
env_rm_path $manifest $refdir $global
env_rm $manifest $global
$appdir = appdir $app $global
try {
Remove-Item $appdir -Recurse -Force -ErrorAction Stop
Remove-Item -r -force $appdir -ea stop
} catch {
$errors = $true
warn "Couldn't remove $(friendly_path $appdir): $_.Exception"
warn "Couldn't remove $(friendly_path $appdir): $_.exception"
}
}
function rm_dir($dir) {
try {
Remove-Item $dir -Recurse -Force -ErrorAction Stop
Remove-Item -r -force $dir -ea stop
} catch {
abort "Couldn't remove $(friendly_path $dir): $_"
}
}
# Remove all folders (except persist) inside given scoop directory.
function keep_onlypersist($directory) {
Get-ChildItem $directory -Exclude 'persist' | ForEach-Object { rm_dir $_ }
}
# Run uninstallation for each app if necessary, continuing if there's
# run uninstallation for each app if necessary, continuing if there's
# a problem deleting a directory (which is quite likely)
if ($global) {
if($global) {
installed_apps $true | ForEach-Object { # global apps
do_uninstall $_ $true
}
}
installed_apps $false | ForEach-Object { # local apps
do_uninstall $_ $false
}
if ($errors) {
abort 'Not all apps could be deleted. Try again or restart.'
if($errors) {
abort "Not all apps could be deleted. Try again or restart."
}
if ($purge) {
rm_dir $scoopdir
if ($global) { rm_dir $globaldir }
} else {
keep_onlypersist $scoopdir
if ($global) { keep_onlypersist $globaldir }
}
rm_dir $scoopdir
if($global) { rm_dir $globaldir }
Remove-Path -Path (shimdir $global) -Global:$global
if (get_config USE_ISOLATED_PATH) {
Remove-Path -Path ('%' + $scoopPathEnvVar + '%') -Global:$global
}
remove_from_path (shimdir $false)
if($global) { remove_from_path (shimdir $true) }
success 'Scoop has been uninstalled.'
success "Scoop has been uninstalled."

41
bucket/7zip.json Normal file
View File

@@ -0,0 +1,41 @@
{
"homepage": "https://www.7-zip.org/",
"description": "A multi-format file archiver with high compression ratios",
"license": {
"identifier": "LGPL-2.0-only,BSD-3-Clause",
"url": "https://www.7-zip.org/license.txt"
},
"version": "19.00",
"architecture": {
"64bit": {
"url": "https://7-zip.org/a/7z1900-x64.msi",
"hash": "a7803233eedb6a4b59b3024ccf9292a6fffb94507dc998aa67c5b745d197a5dc"
},
"32bit": {
"url": "https://7-zip.org/a/7z1900.msi",
"hash": "b49d55a52bc0eab14947c8982c413d9be141c337da1368a24aa0484cbb5e89cd"
}
},
"extract_dir": "Files/7-Zip",
"bin": "7z.exe",
"checkver": {
"url": "https://www.7-zip.org/download.html",
"regex": "Download 7-Zip ([\\d.]+)"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://7-zip.org/a/7z$cleanVersion-x64.msi"
},
"32bit": {
"url": "https://7-zip.org/a/7z$cleanVersion.msi"
}
}
},
"shortcuts": [
[
"7zFM.exe",
"7-Zip"
]
]
}

18
bucket/ack.json Normal file
View File

@@ -0,0 +1,18 @@
{
"homepage": "https://beyondgrep.com/",
"description": "A tool like grep, optimized for programmers",
"license": "Artistic-2.0",
"version": "2.24",
"url": "https://beyondgrep.com/ack-2.24-single-file#/ack-single-file",
"hash": "8361e5a2654bc575db27bfa40470c4182d74d51098d390944d98fe7cd5b20d49",
"bin": "ack.bat",
"depends": "perl",
"pre_install": "Set-Content -Value '@perl.exe %~dp0ack-single-file %*' -Path \"$dir\\ack.bat\"",
"checkver": {
"url": "https://beyondgrep.com/install/",
"re": "The current stable version of ack is version ([\\d.]+),"
},
"autoupdate": {
"url": "https://beyondgrep.com/ack-$version-single-file#/ack-single-file"
}
}

11
bucket/acmesharp.json Normal file
View File

@@ -0,0 +1,11 @@
{
"version": "0.8.1.0",
"homepage": "https://github.com/ebekker/ACMESharp",
"description": "An ACME (Let's Encrypt) client library and PowerShell client for the .NET platform",
"url": "https://github.com/ebekker/ACMESharp/releases/download/v0.8.1.0-EA/ACME-posh.zip",
"hash": "b1da3d39744ba5842bb3a3b97da9a5e4d4c22314b741baa0175e9d0c977ec3f1",
"extract_dir": "Debug/ACMESharp",
"psmodule": {
"name": "ACMESharp"
}
}

18
bucket/adb.json Normal file
View File

@@ -0,0 +1,18 @@
{
"version": "28.0.1",
"homepage": "https://developer.android.com/studio/releases/platform-tools.html",
"description": "Android SDK platform-tools includes tools that interface with the Android platform, such as adb, fastboot, and systrace",
"url": "https://dl.google.com/android/repository/platform-tools_r28.0.1-windows.zip",
"hash": "db78f726d5dc653706dcd15a462ab1b946c643f598df76906c4c1858411c54df",
"bin": [
"platform-tools\\adb.exe",
"platform-tools\\dmtracedump.exe",
"platform-tools\\etc1tool.exe",
"platform-tools\\fastboot.exe",
"platform-tools\\hprof-conv.exe"
],
"checkver": "<h4.*>([\\d.]+) \\(.*\\)</h4>",
"autoupdate": {
"url": "https://dl.google.com/android/repository/platform-tools_r$version-windows.zip"
}
}

31
bucket/ag.json Normal file
View File

@@ -0,0 +1,31 @@
{
"homepage": "https://geoff.greer.fm/ag/",
"description": "A tool for searching code",
"license": "Apache-2.0",
"version": "2.2.0-11-g4f7aca7",
"architecture": {
"64bit": {
"url": "https://github.com/k-takata/the_silver_searcher-win32/releases/download/2019-02-17/2.2.0-11-g4f7aca7/ag-2019-02-17_2.2.0-11-g4f7aca7-x64.zip",
"hash": "91d40247b6c450418a0587d21fd7e08a450d223e3ec173c627cdc64f1752f337"
},
"32bit": {
"url": "https://github.com/k-takata/the_silver_searcher-win32/releases/download/2019-02-17/2.2.0-11-g4f7aca7/ag-2019-02-17_2.2.0-11-g4f7aca7-x86.zip",
"hash": "329fba513ad5685ec705abe53860119f67deab787b84223803db20bd1ac4af50"
}
},
"bin": "ag.exe",
"checkver": {
"url": "https://github.com/k-takata/the_silver_searcher-win32/releases",
"re": "/releases/tag/(?<date>[\\d-]+)%2F(?<version>[\\w.-]+)"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/k-takata/the_silver_searcher-win32/releases/download/$matchDate/$version/ag-$matchDate_$version-x64.zip"
},
"32bit": {
"url": "https://github.com/k-takata/the_silver_searcher-win32/releases/download/$matchDate/$version/ag-$matchDate_$version-x86.zip"
}
}
}
}

15
bucket/ahoy.json Normal file
View File

@@ -0,0 +1,15 @@
{
"homepage": "http://ahoycli.com",
"license": "MIT",
"description": "Automate and organize your workflows, no matter what technology you use",
"version": "2.0.0",
"url": "https://github.com/ahoy-cli/ahoy/releases/download/2.0.0/ahoy-bin-windows-amd64#/ahoy.exe",
"hash": "6a920aa6ac76e176fad548d5c331615ef762555016977a4abaa594815937d933",
"bin": "ahoy.exe",
"checkver": {
"github": "https://github.com/ahoy-cli/ahoy"
},
"autoupdate": {
"url": "https://github.com/ahoy-cli/ahoy/releases/download/$version/ahoy-bin-windows-amd64#/ahoy.exe"
}
}

18
bucket/allure.json Normal file
View File

@@ -0,0 +1,18 @@
{
"homepage": "https://github.com/allure-framework/allure2",
"description": "A flexible lightweight multi-language test report tool",
"version": "2.10.0",
"license": "Apache-2.0",
"url": "https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/2.10.0/allure-commandline-2.10.0.zip",
"hash": "c29957411c5ea34b693fb7c67774f87336d1b88c345f261076cc8c6ea95b62c2",
"extract_dir": "allure-2.10.0",
"bin": "bin\\allure.bat",
"env_set": {
"ALLURE_HOME": "$dir"
},
"checkver": "github",
"autoupdate": {
"url": "https://repo.maven.apache.org/maven2/io/qameta/allure/allure-commandline/$version/allure-commandline-$version.zip",
"extract_dir": "allure-$version"
}
}

21
bucket/ammonite.json Normal file
View File

@@ -0,0 +1,21 @@
{
"version": "1.6.4",
"license": "MIT",
"url": "https://github.com/lihaoyi/Ammonite/releases/download/1.6.4/2.12-1.6.4#/amm.bat",
"bin": "amm.bat",
"homepage": "http://ammonite.io",
"description": "Ammonite lets you use the Scala language for scripting purposes: in the REPL, as scripts, as a library, or as a standalone systems shell.",
"hash": "82d5a3319d6469609d5197b2bebd62c859b1aa21976623fc96a4564ed210bd9a",
"checkver": {
"github": "https://github.com/lihaoyi/Ammonite"
},
"autoupdate": {
"url": "https://github.com/lihaoyi/Ammonite/releases/download/$version/2.12-$version#/amm.bat"
},
"suggest": {
"JDK": [
"java/oraclejdk",
"java/openjdk"
]
}
}

32
bucket/annie.json Normal file
View File

@@ -0,0 +1,32 @@
{
"homepage": "https://github.com/iawia002/annie",
"description": "A fast, simple and clean video downloader built with Go.",
"license": "MIT",
"version": "0.9.3",
"architecture": {
"64bit": {
"url": "https://github.com/iawia002/annie/releases/download/0.9.3/annie_0.9.3_Windows_64-bit.zip",
"hash": "8a1feba060f488d714df32c65541b0fad1eb78a246962782fff05f150b773cf3"
},
"32bit": {
"url": "https://github.com/iawia002/annie/releases/download/0.9.3/annie_0.9.3_Windows_32-bit.zip",
"hash": "e4b5a87f01b26d3c135105a39f70986cc2be6329676da651c871734e26f149b2"
}
},
"bin": "annie.exe",
"depends": "ffmpeg",
"checkver": "github",
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/iawia002/annie/releases/download/$version/annie_$version_Windows_64-bit.zip"
},
"32bit": {
"url": "https://github.com/iawia002/annie/releases/download/$version/annie_$version_Windows_32-bit.zip"
}
},
"hash": {
"url": "$baseurl/annie_$version_checksums.txt"
}
}
}

30
bucket/ant.json Normal file
View File

@@ -0,0 +1,30 @@
{
"homepage": "https://ant.apache.org/",
"description": "Apache Ant is a Java library and command-line tool for compiling, assembling, testing and running Java and non-Java applications.",
"version": "1.10.5",
"license": "Apache-2.0",
"url": "https://www.apache.org/dist/ant/binaries/apache-ant-1.10.5-bin.zip",
"hash": "sha512:2e48f9e429d67708f5690bc307232f08440d01ebe414059292b6543971da9c7cd259c21533b9163b4dd753321c17bd917adf8407d03245a0945fc30a4e633163",
"extract_dir": "apache-ant-1.10.5",
"env_add_path": "bin",
"env_set": {
"ANT_HOME": "$dir"
},
"suggest": {
"JDK": [
"java/oraclejdk",
"java/openjdk"
]
},
"checkver": {
"url": "https://ant.apache.org/bindownload.cgi",
"re": "Currently, Apache Ant (?:[\\d.]+ and )?([\\d.]+) (?:is|are) the best"
},
"autoupdate": {
"url": "https://www.apache.org/dist/ant/binaries/apache-ant-$version-bin.zip",
"extract_dir": "apache-ant-$version",
"hash": {
"url": "$url.sha512"
}
}
}

56
bucket/apache.json Normal file
View File

@@ -0,0 +1,56 @@
{
"homepage": "https://www.apachelounge.com",
"description": "The Apache HTTP Server (\"httpd\")",
"version": "2.4.38",
"license": "Apache-2.0",
"architecture": {
"64bit": {
"url": "https://fossies.org/windows/www/httpd-2.4.38-win64-VC15.zip",
"hash": "6a5381734d4f73583ef4872b3bfd4348a24635bd87b1828a5c4ea2f7a4e3d7ed"
},
"32bit": {
"url": "https://fossies.org/windows/www/httpd-2.4.38-win32-VC15.zip",
"hash": "3ef4c7c155b54ef9d46878d7f140f6c6697ee2367a11d0b3406d97a2f2f075a1"
}
},
"extract_dir": "Apache24",
"persist": [
"htdocs",
"conf"
],
"bin": [
"bin\\ab.exe",
"bin\\abs.exe",
"bin\\htcacheclean.exe",
"bin\\htdbm.exe",
"bin\\htdigest.exe",
"bin\\htpasswd.exe",
"bin\\httpd.exe",
"bin\\httxt2dbm.exe",
"bin\\logresolve.exe",
"bin\\rotatelogs.exe"
],
"post_install": [
"# set directory in httpd.conf",
"$conf = \"$dir/conf/httpd.conf\"",
"$root=(scoop which httpd | split-path -res -par | split-path -par) -replace '\\\\', '/';",
"(gc $conf) | % { $_ -replace 'c:/Apache24', \"$root\" } | sc $conf"
],
"checkver": {
"url": "https://fossies.org/search?q=folder_search&q1=httpd&ad=%2Ffresh%2Fwindows%2Fwww&ca=yes&dp=1",
"re": "httpd-([\\d.]+)-win64-VC15.zip"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://fossies.org/windows/www/httpd-$version-win64-VC15.zip"
},
"32bit": {
"url": "https://fossies.org/windows/www/httpd-$version-win32-VC15.zip"
}
},
"hash": {
"url": "$url_fossies.sha256"
}
}
}

32
bucket/apex.json Normal file
View File

@@ -0,0 +1,32 @@
{
"description": "Lets you build, deploy, and manage AWS Lambda functions.",
"homepage": "http://apex.run/",
"license": "MIT",
"version": "1.0.0-rc3",
"architecture": {
"64bit": {
"url": "https://github.com/apex/apex/releases/download/v1.0.0-rc3/apex_1.0.0-rc3_windows_amd64.tar.gz",
"hash": "0922b7760a5d2a5f1f36006834693680ad6398436cb019c1be410aa87a1efbe5"
},
"32bit": {
"url": "https://github.com/apex/apex/releases/download/v1.0.0-rc3/apex_1.0.0-rc3_windows_386.tar.gz",
"hash": "b7c3d48216304d90a2d3b714672caaa377b18f84f1c32dcd0464d53c51b82607"
}
},
"notes": "This is a pre-release version (release candidate)!",
"bin": "apex.exe",
"checkver": {
"github": "https://github.com/apex/apex",
"re": ">v([a-z\\d.-]+)<"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/apex/apex/releases/download/v$version/apex_$version_windows_amd64.tar.gz"
},
"32bit": {
"url": "https://github.com/apex/apex/releases/download/v$version/apex_$version_windows_386.tar.gz"
}
}
}
}

13
bucket/apngasm.json Normal file
View File

@@ -0,0 +1,13 @@
{
"description": "The next generation of APNG Assembler.",
"homepage": "https://github.com/apngasm/apngasm",
"version": "3.0.0",
"url": "http://files.genshin.org/apngasm/apngasm-cli.7z",
"hash": "cebb7eab13d56b5ade45ef50abd16bae4b63a5505192f032593ad67c1d1f2e2c",
"bin": [
[
"apngasm-cli.exe",
"apngasm"
]
]
}

36
bucket/aria2.json Normal file
View File

@@ -0,0 +1,36 @@
{
"homepage": "https://aria2.github.io/",
"description": "Lightweight multi-protocol & multi-source command-line download utility",
"license": "GPL-2.0-or-later",
"version": "1.34.0-1",
"architecture": {
"32bit": {
"url": "https://github.com/aria2/aria2/releases/download/release-1.34.0/aria2-1.34.0-win-32bit-build1.zip",
"hash": "736e8e54ec21bdf5d4806378107c8b515cd37509bc9dfc1e697fb900ddbe7fad",
"extract_dir": "aria2-1.34.0-win-32bit-build1"
},
"64bit": {
"url": "https://github.com/aria2/aria2/releases/download/release-1.34.0/aria2-1.34.0-win-64bit-build1.zip",
"hash": "2452e15b638be11c2919a5d1c15c0405a83eb8260c0f3853e8d195774dbdde61",
"extract_dir": "aria2-1.34.0-win-64bit-build1"
}
},
"bin": "aria2c.exe",
"checkver": {
"github": "https://github.com/aria2/aria2",
"re": "/release-(?:[\\d.]+)/aria2-(?<version>[\\d.]+)-win-64bit-build(?<build>[\\d]+).zip",
"replace": "${version}-${build}"
},
"autoupdate": {
"architecture": {
"32bit": {
"url": "https://github.com/aria2/aria2/releases/download/release-$matchVersion/aria2-$matchVersion-win-32bit-build$matchBuild.zip",
"extract_dir": "aria2-$matchVersion-win-32bit-build$matchBuild"
},
"64bit": {
"url": "https://github.com/aria2/aria2/releases/download/release-$matchVersion/aria2-$matchVersion-win-64bit-build$matchBuild.zip",
"extract_dir": "aria2-$matchVersion-win-64bit-build$matchBuild"
}
}
}
}

16
bucket/armclient.json Normal file
View File

@@ -0,0 +1,16 @@
{
"homepage": "https://github.com/projectkudu/ARMClient",
"description": "A simple command line tool to invoke the Azure Resource Manager API",
"license": "Apache-2.0",
"version": "1.3",
"url": "https://github.com/projectkudu/ARMClient/releases/download/v1.3/ARMClient.zip",
"hash": "029e54777c863b1b27fc9caf201d0279b1b76f3ba3da882c367f6ec730539b8d",
"bin": [
"ARMClient.exe",
"AADClient.exe"
],
"checkver": "github",
"autoupdate": {
"url": "https://github.com/projectkudu/ARMClient/releases/download/v$version/ARMClient.zip"
}
}

33
bucket/armor.json Normal file
View File

@@ -0,0 +1,33 @@
{
"description": "Uncomplicated, modern HTTP server",
"version": "0.4.12",
"homepage": "https://github.com/labstack/armor",
"license": "MIT",
"architecture": {
"32bit": {
"url": "https://github.com/labstack/armor/releases/download/v0.4.12/armor_0.4.12_windows_32-bit.zip",
"hash": "6cec0d1b63e926851a068460988ccd2202c7650b1d8e2c8d3495c7860653b873"
},
"64bit": {
"url": "https://github.com/labstack/armor/releases/download/v0.4.12/armor_0.4.12_windows_64-bit.zip",
"hash": "d734939d021ecd40f44c7389a2d3dd2234f9584e8c8f31a3fa1964ed254b8a9e"
}
},
"bin": "armor.exe",
"checkver": {
"github": "https://github.com/labstack/armor"
},
"autoupdate": {
"architecture": {
"32bit": {
"url": "https://github.com/labstack/armor/releases/download/v$version/armor_$version_windows_32-bit.zip"
},
"64bit": {
"url": "https://github.com/labstack/armor/releases/download/v$version/armor_$version_windows_64-bit.zip"
}
},
"hash": {
"url": "https://github.com/labstack/armor/releases/download/v$version/armor_checksum.txt"
}
}
}

28
bucket/artifact.json Normal file
View File

@@ -0,0 +1,28 @@
{
"description": "The open source design documentation tool",
"version": "1.0.1",
"homepage": "https://github.com/vitiral/artifact",
"license": "MIT|Apache-2.0",
"bin": "art.exe",
"checkver": "github",
"architecture": {
"64bit": {
"url": "https://github.com/vitiral/artifact/releases/download/1.0.1/artifact-app-1.0.1-x86_64-pc-windows-gnu.zip",
"hash": "f377c360b53528f4599b729dfb33aed788f06bdc782ef190063d786f09799e1b"
},
"32bit": {
"url": "https://github.com/vitiral/artifact/releases/download/1.0.1/artifact-app-1.0.1-i686-pc-windows-gnu.zip",
"hash": "1a7176b7c132ff4789b38545c745819a438dfd06f2013b8f8e66fdc99863bc5c"
}
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/vitiral/artifact/releases/download/$version/artifact-app-$version-x86_64-pc-windows-gnu.zip"
},
"32bit": {
"url": "https://github.com/vitiral/artifact/releases/download/$version/artifact-app-$version-i686-pc-windows-gnu.zip"
}
}
}
}

14
bucket/astyle.json Normal file
View File

@@ -0,0 +1,14 @@
{
"homepage": "http://astyle.sourceforge.net/",
"description": "A Free, Fast, and Small Automatic Formatter for C, C++, C++/CLI, ObjectiveC, C#, and Java Source Code",
"version": "3.1",
"license": "MIT",
"url": "https://downloads.sourceforge.net/project/astyle/astyle/astyle%203.1/AStyle_3.1_windows.zip",
"hash": "sha1:5372ca57577f252cb6efdde12f889329786a72a2",
"extract_dir": "AStyle",
"bin": "bin\\AStyle.exe",
"checkver": "Artistic Style ([\\d.]+)",
"autoupdate": {
"url": "https://downloads.sourceforge.net/project/astyle/astyle/astyle%20$version/AStyle_$version_windows.zip"
}
}

10
bucket/atomicparsley.json Normal file
View File

@@ -0,0 +1,10 @@
{
"homepage": "http://atomicparsley.sourceforge.net/",
"description": "Lightweight command line program for reading, parsing and setting metadata into MPEG-4 files",
"version": "0.9.0",
"license": "GPL-2.0",
"url": "https://downloads.sourceforge.net/project/atomicparsley/atomicparsley/AtomicParsley%20v0.9.0/AtomicParsley-win32-0.9.0.zip",
"hash": "f363630462ea01d7de948c3e4d231159fa91916d8d7f971a7e8b3bc478dbe846",
"extract_dir": "AtomicParsley-win32-0.9.0",
"bin": "AtomicParsley.exe"
}

37
bucket/autoit.json Normal file
View File

@@ -0,0 +1,37 @@
{
"homepage": "https://www.autoitscript.com/site/autoit/",
"description": "Scripting language designed for automating the Windows GUI and general scripting",
"license": {
"identifier": "Freeware",
"url": "https://www.autoitscript.com/autoit3/docs/license.htm"
},
"version": "3.3.14.5",
"url": "https://www.autoitscript.com/files/autoit3/autoit-v3.zip",
"hash": "df9a20022998c7ac11af23fc69f5d42698ed187b4d03b75fa911570c648d9642",
"extract_dir": "install",
"architecture": {
"64bit": {
"bin": [
[
"AutoIt3_x64.exe",
"autoit"
]
]
},
"32bit": {
"bin": [
[
"AutoIt3.exe",
"autoit"
]
]
}
},
"checkver": {
"url": "https://www.autoitscript.com/site/autoit/downloads/",
"re": "<td>v([\\d.]+)</td>"
},
"autoupdate": {
"url": "https://www.autoitscript.com/files/autoit3/autoit-v3.zip"
}
}

View File

@@ -0,0 +1,16 @@
{
"homepage": "https://docs.aws.amazon.com/eks/latest/userguide/install-aws-iam-authenticator.html",
"description": "A tool to use AWS IAM credentials to authenticate to a Kubernetes cluster",
"license": "Apache-2.0",
"version": "2018-12-06",
"url": "https://amazon-eks.s3-us-west-2.amazonaws.com/1.11.5/2018-12-06/bin/windows/amd64/aws-iam-authenticator.exe",
"hash": "4ca7b218c0dec3cb1a396ca6f206bc882071918a6599e6c24ecca486d1fec30d",
"bin": "aws-iam-authenticator.exe",
"checkver": "/(?<kubernetes>[\\d.]+)/(?<version>[\\d-]+)/bin/windows/amd64/aws-iam-authenticator.exe\"",
"autoupdate": {
"url": "https://amazon-eks.s3-us-west-2.amazonaws.com/$matchKubernetes/$version/bin/windows/amd64/aws-iam-authenticator.exe",
"hash": {
"url": "$url.sha256"
}
}
}

13
bucket/aws-vault.json Normal file
View File

@@ -0,0 +1,13 @@
{
"homepage": "https://github.com/99designs/aws-vault",
"description": "A vault for securely storing and accessing AWS credentials in development environments",
"license": "MIT",
"version": "4.5.1",
"url": "https://github.com/99designs/aws-vault/releases/download/v4.5.1/aws-vault-windows-386.exe#/aws-vault.exe",
"hash": "39b46ef9f19cb9b8898eb48f7f42420abf0e514b80811b05ebfa534ccdb30ee7",
"bin": "aws-vault.exe",
"checkver": "github",
"autoupdate": {
"url": "https://github.com/99designs/aws-vault/releases/download/v$version/aws-vault-windows-386.exe#/aws-vault.exe"
}
}

22
bucket/aws.json Normal file
View File

@@ -0,0 +1,22 @@
{
"version": "1.16.122",
"license": "Apache-2.0",
"homepage": "https://aws.amazon.com/cli/",
"description": "The AWS Command Line Interface (CLI) is a unified tool to manage your AWS services. With just one tool to download and configure, you can control multiple AWS services from the command line and automate them through scripts.",
"url": "https://s3.amazonaws.com/aws-cli/AWSCLI64PY3-1.16.122.msi",
"hash": "cd57b5291467cc9cfd1380f5fb0c3660675ac0be24539f5825aa4ed3d7189538",
"extract_dir": "Amazon/AWSCLI",
"bin": [
[
"runtime/python.exe",
"aws",
"-m awscli"
]
],
"checkver": {
"github": "https://github.com/aws/aws-cli"
},
"autoupdate": {
"url": "https://s3.amazonaws.com/aws-cli/AWSCLI64PY3-$version.msi"
}
}

8
bucket/axel.json Normal file
View File

@@ -0,0 +1,8 @@
{
"version": "2.4",
"url": "https://github.com/ghuntley/cygwin-axel/raw/master/release/axel-2.4.zip",
"homepage": "https://github.com/ghuntley/cygwin-axel/",
"description": "Axel tries to accelerate HTTP/FTP downloading process by using multiple connections for one file",
"hash": "3cce621da5f17ea03e4fcf51916dd4f8928759766f88b4ca5643131d2dd3fed2",
"bin": "axel.exe"
}

25
bucket/bat.json Normal file
View File

@@ -0,0 +1,25 @@
{
"homepage": "https://github.com/sharkdp/bat",
"description": "A cat(1) clone with syntax highlighting and Git integration",
"license": "Apache-2.0",
"version": "0.10.0",
"architecture": {
"64bit": {
"url": "https://github.com/sharkdp/bat/releases/download/v0.10.0/bat-v0.10.0-x86_64-pc-windows-msvc.zip",
"hash": "84e6b1408d62811ccddce2361915f0f3bf98b196bfa03498e6c9909da37643fb"
}
},
"bin": "bat.exe",
"suggest": {
"less": "less",
"ccat": "ccat"
},
"checkver": "github",
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/sharkdp/bat/releases/download/v$version/bat-v$version-x86_64-pc-windows-msvc.zip"
}
}
}
}

35
bucket/bazel.json Normal file
View File

@@ -0,0 +1,35 @@
{
"homepage": "https://bazel.build",
"description": "A fast, scalable, multi-language and extensible build system",
"version": "0.23.2",
"license": "Apache-2.0",
"bin": "bazel.exe",
"suggest": {
"MSYS2": "msys2",
"Python27": "versions/python27",
"curl": "curl"
},
"architecture": {
"64bit": {
"url": "https://github.com/bazelbuild/bazel/releases/download/0.23.2/bazel-0.23.2-windows-x86_64.zip",
"hash": "a91c8c2b8d31709e74310e31d0a11ba237c4f4dcff7adc0e1102fbb66a489ffe"
}
},
"checkver": {
"github": "https://github.com/bazelbuild/bazel"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/bazelbuild/bazel/releases/download/$version/bazel-$version-windows-x86_64.zip"
}
},
"hash": {
"mode": "extract",
"url": "$url.sha256"
}
},
"env_set": {
"BAZEL_SH": "$(appdir msys2)\\current\\usr\\bin\\bash.exe"
}
}

25
bucket/bfg.json Normal file
View File

@@ -0,0 +1,25 @@
{
"homepage": "https://rtyley.github.io/bfg-repo-cleaner/",
"description": "BFG Repo-Cleaner removes large or troublesome blobs like git-filter-branch does, but faster",
"license": "GPL-3.0-or-later",
"version": "1.13.0",
"url": "https://repo1.maven.org/maven2/com/madgag/bfg/1.13.0/bfg-1.13.0.jar#/bfg.jar",
"hash": "md5:f437b07a4651c8b549703940de6ce1d2",
"suggest": {
"JDK": [
"java/oraclejdk",
"java/openjdk"
]
},
"bin": "bfg.jar",
"checkver": {
"url": "https://search.maven.org/solrsearch/select/?q=g:com.madgag+AND+a:bfg",
"jp": "$.response.docs[0].latestVersion"
},
"autoupdate": {
"url": "https://repo1.maven.org/maven2/com/madgag/bfg/$version/bfg-$version.jar#/bfg.jar",
"hash": {
"url": "$url.md5"
}
}
}

15
bucket/blink1-tool.json Normal file
View File

@@ -0,0 +1,15 @@
{
"homepage": "https://blink1.thingm.com/",
"description": "Control the blink(1) USB RGB indicator light",
"license": "CC-BY-SA-3.0",
"version": "2.0.2",
"url": "https://github.com/todbot/blink1-tool/releases/download/v2.0.2/blink1-tool-v2.0.2-windows-x86_64.zip",
"hash": "fe67b4446ef340b52668c07b11809985b48817c53de1f685bf72edc3af6d87f2",
"bin": "blink1-tool.exe",
"checkver": {
"github": "https://github.com/todbot/blink1-tool"
},
"autoupdate": {
"url": "https://github.com/todbot/blink1-tool/releases/download/v$version/blink1-tool-v$version-windows-x86_64.zip"
}
}

38
bucket/bochs.json Normal file
View File

@@ -0,0 +1,38 @@
{
"homepage": "http://bochs.sourceforge.net/",
"description": "Open source IA-32 (x86) PC emulator written in C++",
"version": "2.6.9",
"license": "LGPL-2.1",
"architecture": {
"64bit": {
"url": "https://downloads.sourceforge.net/project/bochs/bochs/2.6.9/bochs-2.6.9-win64.zip",
"hash": "sha1:35a590b30c13add8ff6d3271c6aadd293ee4d923",
"bin": [
"bochs-win64.exe",
"bochsdbg-win64.exe"
]
},
"32bit": {
"url": "https://downloads.sourceforge.net/project/bochs/bochs/2.6.9/bochs-p4-smp-2.6.9-win32.zip",
"hash": "sha1:bc2aa106890c649ca2a94e1c073151b1f42ef2bb",
"bin": [
"bochs-p4-smp.exe",
"bochsdbg-p4-smp.exe"
]
}
},
"checkver": {
"url": "http://bochs.sourceforge.net/getcurrent.html",
"re": "<b>Latest release:<\\/b> Bochs ([\\d.]+)"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://downloads.sourceforge.net/project/bochs/bochs/$version/bochs-$version-win64.zip"
},
"32bit": {
"url": "https://downloads.sourceforge.net/project/bochs/bochs/$version/bochs-p4-smp-$version-win32.zip"
}
}
}
}

17
bucket/boxes.json Normal file
View File

@@ -0,0 +1,17 @@
{
"description": "A command line filter program that draws ASCII art boxes around your input text",
"version": "1.3",
"license": "GPL-2.0-or-later",
"url": "https://github.com/ascii-boxes/boxes/releases/download/v1.3/boxes-1.3-intel-win32.zip",
"homepage": "https://boxes.thomasjensen.com/",
"hash": "3f3e158298bcf7bbead18d2ae095083235f117f2eb05cbd1f977e193d56fee41",
"extract_dir": "boxes-1.3",
"bin": "boxes.exe",
"checkver": {
"github": "https://github.com/ascii-boxes/boxes"
},
"autoupdate": {
"url": "https://github.com/ascii-boxes/boxes/releases/download/v$version/boxes-$version-intel-win32.zip",
"extract_dir": "boxes-$version"
}
}

42
bucket/brotli.json Normal file
View File

@@ -0,0 +1,42 @@
{
"version": "1.0.7_2",
"homepage": "https://brotli.org/",
"description": "Lossless compression algorithm",
"architecture": {
"64bit": {
"url": "https://curl.haxx.se/windows/dl-7.64.0_2/brotli-1.0.7_2-win64-mingw.tar.xz",
"hash": "f78e7f797429a393568df335366052e1b1fa61ac0d3a7d4e3a5398a517659ab0",
"extract_dir": "brotli-1.0.7-win64-mingw"
},
"32bit": {
"url": "https://curl.haxx.se/windows/dl-7.64.0_2/brotli-1.0.7_2-win32-mingw.tar.xz",
"hash": "acdca43cd1f135a9db182a7d90e576320c17823951bc41ab29935ce05c85372c",
"extract_dir": "brotli-1.0.7-win32-mingw"
}
},
"bin": [
"bin\\brotli.exe",
"bin\\unbrotli.exe"
],
"pre_install": "Copy-Item \"$dir\\bin\\brotli.exe\" \"$dir\\bin\\unbrotli.exe\"",
"checkver": {
"url": "https://curl.haxx.se/windows/",
"re": "dl-(?<curl>[\\d._]+)/brotli-(?<version>[\\d._]+)-win64-mingw"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://curl.haxx.se/windows/dl-$matchCurl/brotli-$version-win64-mingw.tar.xz",
"extract_dir": "brotli-$matchHead-win64-mingw"
},
"32bit": {
"url": "https://curl.haxx.se/windows/dl-$matchCurl/brotli-$version-win32-mingw.tar.xz",
"extract_dir": "brotli-$matchHead-win32-mingw"
}
},
"hash": {
"url": "$baseurl/hashes.txt",
"find": "SHA256\\($basename\\)=\\s+([a-fA-F\\d]{64})"
}
}
}

23
bucket/buffalo.json Normal file
View File

@@ -0,0 +1,23 @@
{
"homepage": "https://gobuffalo.io",
"description": "A Go web development eco-system, designed to make the life of a Go web developer easier.",
"version": "0.14.1",
"license": "MIT",
"url": "https://github.com/gobuffalo/buffalo/releases/download/v0.14.1/buffalo_0.14.1_windows_amd64.tar.gz",
"hash": "4bcfbb937e2363ad5b5e024c32ad399cdc26b81adae0386718ffe244b438ecf7",
"bin": [
[
"buffalo.exe",
"buffalo"
]
],
"checkver": {
"github": "https://github.com/gobuffalo/buffalo"
},
"autoupdate": {
"url": "https://github.com/gobuffalo/buffalo/releases/download/v$version/buffalo_$version_windows_amd64.tar.gz",
"hash": {
"url": "https://github.com/gobuffalo/buffalo/releases/download/v$version/buffalo_$version_checksums.txt"
}
}
}

710
bucket/busybox.json Normal file
View File

@@ -0,0 +1,710 @@
{
"homepage": "https://frippery.org/busybox",
"description": "BusyBox is a single binary that contains many common Unix tools",
"version": "2962-g9aae70405",
"license": "GPL-2.0",
"architecture": {
"32bit": {
"url": "https://frippery.org/files/busybox/busybox-w32-FRP-2962-g9aae70405.exe#/busybox.exe",
"hash": "af193b369c0360d7b70f975665a453018e3d9c0458af0d252d271c8b8a30e6b5"
},
"64bit": {
"url": "https://frippery.org/files/busybox/busybox-w64-FRP-2962-g9aae70405.exe#/busybox.exe",
"hash": "adb2360905f737cb7e58c915056f18f7b1e0843e99474ed5ce6f4bde042943ef"
}
},
"checkver": {
"url": "https://frippery.org/busybox/",
"re": ">busybox-w32-FRP-([\\w-]+)\\."
},
"autoupdate": {
"architecture": {
"32bit": {
"url": "https://frippery.org/files/busybox/busybox-w32-FRP-$version.exe#/busybox.exe"
},
"64bit": {
"url": "https://frippery.org/files/busybox/busybox-w64-FRP-$version.exe#/busybox.exe"
}
}
},
"post_install": [
"if(!(test-path ~/.profile)) {",
" 'creating ~/.profile'",
"@\"",
"if [ -e ~/.bashrc ]",
"then",
" source ~/.bashrc",
"fi",
"\"@ | out-file -en oem ~/.profile",
"}"
],
"bin": [
"busybox.exe",
[
"busybox.exe",
"ar",
"ar"
],
[
"busybox.exe",
"arch",
"arch"
],
[
"busybox.exe",
"ash",
"ash"
],
[
"busybox.exe",
"awk",
"awk"
],
[
"busybox.exe",
"base64",
"base64"
],
[
"busybox.exe",
"basename",
"basename"
],
[
"busybox.exe",
"bash",
"bash",
"-l"
],
[
"busybox.exe",
"bunzip2",
"bunzip2"
],
[
"busybox.exe",
"bzcat",
"bzcat"
],
[
"busybox.exe",
"bzip2",
"bzip2"
],
[
"busybox.exe",
"cal",
"cal"
],
[
"busybox.exe",
"cat",
"cat"
],
[
"busybox.exe",
"chmod",
"chmod"
],
[
"busybox.exe",
"cksum",
"cksum"
],
[
"busybox.exe",
"clear",
"clear"
],
[
"busybox.exe",
"cmp",
"cmp"
],
[
"busybox.exe",
"comm",
"comm"
],
[
"busybox.exe",
"cp",
"cp"
],
[
"busybox.exe",
"cpio",
"cpio"
],
[
"busybox.exe",
"cut",
"cut"
],
[
"busybox.exe",
"date",
"date"
],
[
"busybox.exe",
"dc",
"dc"
],
[
"busybox.exe",
"dd",
"dd"
],
[
"busybox.exe",
"df",
"df"
],
[
"busybox.exe",
"diff",
"diff"
],
[
"busybox.exe",
"dirname",
"dirname"
],
[
"busybox.exe",
"dos2unix",
"dos2unix"
],
[
"busybox.exe",
"dpkg-deb",
"dpkg-deb"
],
[
"busybox.exe",
"du",
"du"
],
[
"busybox.exe",
"echo",
"echo"
],
[
"busybox.exe",
"ed",
"ed"
],
[
"busybox.exe",
"egrep",
"egrep"
],
[
"busybox.exe",
"env",
"env"
],
[
"busybox.exe",
"expand",
"expand"
],
[
"busybox.exe",
"expr",
"expr"
],
[
"busybox.exe",
"false",
"false"
],
[
"busybox.exe",
"factor",
"factor"
],
[
"busybox.exe",
"fgrep",
"fgrep"
],
[
"busybox.exe",
"find",
"find"
],
[
"busybox.exe",
"fold",
"fold"
],
[
"busybox.exe",
"ftpget",
"ftpget"
],
[
"busybox.exe",
"ftpput",
"ftpput"
],
[
"busybox.exe",
"getopt",
"getopt"
],
[
"busybox.exe",
"grep",
"grep"
],
[
"busybox.exe",
"groups",
"groups"
],
[
"busybox.exe",
"gunzip",
"gunzip"
],
[
"busybox.exe",
"gzip",
"gzip"
],
[
"busybox.exe",
"hd",
"hd"
],
[
"busybox.exe",
"head",
"head"
],
[
"busybox.exe",
"hexdump",
"hexdump"
],
[
"busybox.exe",
"id",
"id"
],
[
"busybox.exe",
"ipcalc",
"ipcalc"
],
[
"busybox.exe",
"kill",
"kill"
],
[
"busybox.exe",
"killall",
"killall"
],
[
"busybox.exe",
"less",
"less"
],
[
"busybox.exe",
"ln",
"ln"
],
[
"busybox.exe",
"logname",
"logname"
],
[
"busybox.exe",
"ls",
"ls"
],
[
"busybox.exe",
"lzcat",
"lzcat"
],
[
"busybox.exe",
"lzma",
"lzma"
],
[
"busybox.exe",
"lzop",
"lzop"
],
[
"busybox.exe",
"lzopcat",
"lzopcat"
],
[
"busybox.exe",
"man",
"man"
],
[
"busybox.exe",
"md5sum",
"md5sum"
],
[
"busybox.exe",
"mkdir",
"mkdir"
],
[
"busybox.exe",
"mktemp",
"mktemp"
],
[
"busybox.exe",
"mv",
"mv"
],
[
"busybox.exe",
"nc",
"nc"
],
[
"busybox.exe",
"nl",
"nl"
],
[
"busybox.exe",
"od",
"od"
],
[
"busybox.exe",
"paste",
"paste"
],
[
"busybox.exe",
"patch",
"patch"
],
[
"busybox.exe",
"pgrep",
"pgrep"
],
[
"busybox.exe",
"pidof",
"pidof"
],
[
"busybox.exe",
"printenv",
"printenv"
],
[
"busybox.exe",
"printf",
"printf"
],
[
"busybox.exe",
"ps",
"ps"
],
[
"busybox.exe",
"pwd",
"pwd"
],
[
"busybox.exe",
"rev",
"rev"
],
[
"busybox.exe",
"rm",
"rm"
],
[
"busybox.exe",
"rmdir",
"rmdir"
],
[
"busybox.exe",
"rpm",
"rpm"
],
[
"busybox.exe",
"rpm2cpio",
"rpm2cpio"
],
[
"busybox.exe",
"sed",
"sed"
],
[
"busybox.exe",
"seq",
"seq"
],
[
"busybox.exe",
"sh",
"sh"
],
[
"busybox.exe",
"sha1sum",
"sha1sum"
],
[
"busybox.exe",
"sha256sum",
"sha256sum"
],
[
"busybox.exe",
"sha3sum",
"sha3sum"
],
[
"busybox.exe",
"sha512sum",
"sha512sum"
],
[
"busybox.exe",
"shuf",
"shuf"
],
[
"busybox.exe",
"sleep",
"sleep"
],
[
"busybox.exe",
"sort",
"sort"
],
[
"busybox.exe",
"split",
"split"
],
[
"busybox.exe",
"stat",
"stat"
],
[
"busybox.exe",
"strings",
"strings"
],
[
"busybox.exe",
"sum",
"sum"
],
[
"busybox.exe",
"tac",
"tac"
],
[
"busybox.exe",
"tail",
"tail"
],
[
"busybox.exe",
"tar",
"tar"
],
[
"busybox.exe",
"tee",
"tee"
],
[
"busybox.exe",
"test",
"test"
],
[
"busybox.exe",
"timeout",
"timeout"
],
[
"busybox.exe",
"touch",
"touch"
],
[
"busybox.exe",
"tr",
"tr"
],
[
"busybox.exe",
"true",
"true"
],
[
"busybox.exe",
"truncate",
"truncate"
],
[
"busybox.exe",
"uname",
"uname"
],
[
"busybox.exe",
"uncompress",
"uncompress"
],
[
"busybox.exe",
"unexpand",
"unexpand"
],
[
"busybox.exe",
"uniq",
"uniq"
],
[
"busybox.exe",
"unix2dos",
"unix2dos"
],
[
"busybox.exe",
"unlink",
"unlink"
],
[
"busybox.exe",
"unlzma",
"unlzma"
],
[
"busybox.exe",
"unlzop",
"unlzop"
],
[
"busybox.exe",
"unxz",
"unxz"
],
[
"busybox.exe",
"unzip",
"unzip"
],
[
"busybox.exe",
"usleep",
"usleep"
],
[
"busybox.exe",
"uudecode",
"uudecode"
],
[
"busybox.exe",
"uuencode",
"uuencode"
],
[
"busybox.exe",
"vi",
"vi"
],
[
"busybox.exe",
"wc",
"wc"
],
[
"busybox.exe",
"watch",
"watch"
],
[
"busybox.exe",
"wget",
"wget"
],
[
"busybox.exe",
"which",
"which"
],
[
"busybox.exe",
"whoami",
"whoami"
],
[
"busybox.exe",
"whois",
"whois"
],
[
"busybox.exe",
"xargs",
"xargs"
],
[
"busybox.exe",
"xxd",
"xxd"
],
[
"busybox.exe",
"xz",
"xz"
],
[
"busybox.exe",
"xzcat",
"xzcat"
],
[
"busybox.exe",
"yes",
"yes"
],
[
"busybox.exe",
"zcat",
"zcat"
]
]
}

25
bucket/bzip2.json Normal file
View File

@@ -0,0 +1,25 @@
{
"version": "1.0.6",
"homepage": "https://github.com/philr/bzip2-windows",
"description": "Freely available, patent free, high-quality data compressor",
"architecture": {
"32bit": {
"url": "https://github.com/philr/bzip2-windows/releases/download/v1.0.6/bzip2-1.0.6-win-x86.zip",
"hash": "e9a6d5908e219def07ae6be73383112c5a571b74fbde9bed42ee7eb1523fd727"
},
"64bit": {
"url": "https://github.com/philr/bzip2-windows/releases/download/v1.0.6/bzip2-1.0.6-win-x64.zip",
"hash": "f5feefa49e7d3e87ba0ba731ed22b4b0e269f635bec2839827127a98d0a2e192"
}
},
"bin": [
"bunzip2.exe",
"bzcat.exe",
"bzip2.exe",
"bzip2recover.exe"
],
"pre_install": "cp \"$dir\\bzip2.exe\" \"$dir\\bunzip2.exe\"; cp \"$dir\\bzip2.exe\" \"$dir\\bzcat.exe\"",
"checkver": {
"github": "https://github.com/philr/bzip2-windows"
}
}

16
bucket/cacert.json Normal file
View File

@@ -0,0 +1,16 @@
{
"version": "2019-01-23",
"homepage": "https://curl.haxx.se/docs/caextract.html",
"description": "CA certificates extracted from the Mozilla CA certificate store, in PEM format",
"license": "MPL-2.0",
"url": "https://curl.haxx.se/ca/cacert-2019-01-23.pem#/cacert.pem",
"hash": "c1fd9b235896b1094ee97bfb7e042f93530b5e300781f59b45edf84ee8c75000",
"checkver": {
"url": "https://curl.haxx.se/docs/caextract.html",
"re": "cacert-([\\d-]{10}).pem"
},
"post_install": "if (Test-Path \"$(appdir curl)\") {cp \"$dir\\cacert.pem\" \"$(appdir curl)\\current\\bin\\curl-ca-bundle.crt\"}",
"autoupdate": {
"url": "https://curl.haxx.se/ca/cacert-$version.pem#/cacert.pem"
}
}

30
bucket/caddy.json Normal file
View File

@@ -0,0 +1,30 @@
{
"version": "0.11.5",
"homepage": "https://caddyserver.com",
"description": "HTTP/2 web server with automatic HTTPS",
"license": "Apache-2.0",
"architecture": {
"64bit": {
"url": "https://github.com/mholt/caddy/releases/download/v0.11.5/caddy_v0.11.5_windows_amd64.zip",
"hash": "3a43f833c30b63be0b985086e15e545a2f0755ff11ae77297880e566405e6746"
},
"32bit": {
"url": "https://github.com/mholt/caddy/releases/download/v0.11.5/caddy_v0.11.5_windows_386.zip",
"hash": "754572ca6fbeddde13afb4b8c12f5539fcf61fda4f2a713938f189e46dbdd2a3"
}
},
"bin": "caddy.exe",
"checkver": {
"github": "https://github.com/mholt/caddy"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/mholt/caddy/releases/download/v$version/caddy_v$version_windows_amd64.zip"
},
"32bit": {
"url": "https://github.com/mholt/caddy/releases/download/v$version/caddy_v$version_windows_386.zip"
}
}
}
}

18
bucket/cake.json Normal file
View File

@@ -0,0 +1,18 @@
{
"homepage": "https://cakebuild.net/",
"description": "Cake (C# Make) is a cross-platform build automation system with a C# DSL",
"version": "0.32.1",
"license": "MIT",
"url": "https://github.com/cake-build/cake/releases/download/v0.32.1/Cake-bin-net461-v0.32.1.zip",
"hash": "fa98c3e22876e30e13df2081c02b5d03686d59a8cea5d28f050de86e7b6f6233",
"bin": "cake.exe",
"suggest": {
"NuGet": "nuget"
},
"checkver": {
"github": "https://github.com/cake-build/cake"
},
"autoupdate": {
"url": "https://github.com/cake-build/cake/releases/download/v$version/Cake-bin-net461-v$version.zip"
}
}

22
bucket/casperjs.json Normal file
View File

@@ -0,0 +1,22 @@
{
"version": "1.1.4-2",
"homepage": "http://casperjs.org/",
"description": "Navigation scripting & testing for PhantomJS and SlimerJS",
"license": "MIT",
"url": "https://github.com/casperjs/casperjs/archive/1.1.4-2.zip",
"hash": "50ecfb26694949006d21b0832f2e62b440b19689aac0282cbaa7a2e6184edf9a",
"extract_dir": "casperjs-1.1.4-2",
"bin": "bin\\casperjs.exe",
"suggest": {
"phantomjs": "phantomjs",
"python": "python"
},
"checkver": {
"github": "https://github.com/casperjs/casperjs/",
"regex": "/tag/([\\d\\.-]+)"
},
"autoupdate": {
"url": "https://github.com/casperjs/casperjs/archive/$version.zip",
"extract_dir": "casperjs-$version"
}
}

32
bucket/ccat.json Normal file
View File

@@ -0,0 +1,32 @@
{
"version": "1.1.0",
"description": "Colorizing `cat` utility.",
"homepage": "https://github.com/jingweno/ccat",
"license": "MIT",
"architecture": {
"64bit": {
"url": "https://github.com/jingweno/ccat/releases/download/v1.1.0/windows-amd64-1.1.0.tar.gz",
"hash": "45b4bff0f6988c72b876cb832af37cbf21ef6f2cf9871f9e1c1afb39c22122f9",
"extract_dir": "windows-amd64-1.1.0"
},
"32bit": {
"url": "https://github.com/jingweno/ccat/releases/download/v1.1.0/windows-386-1.1.0.tar.gz",
"hash": "65fb670b9dd821c9a5d547922ae1314aa449fdf0caa086163de5dd092936d534",
"extract_dir": "windows-386-1.1.0"
}
},
"bin": "ccat.exe",
"checkver": "github",
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/jingweno/ccat/releases/download/v$version/windows-amd64-$version.tar.gz",
"extract_dir": "windows-amd64-$version"
},
"32bit": {
"url": "https://github.com/jingweno/ccat/releases/download/v$version/windows-386-$version.tar.gz",
"extract_dir": "windows-386-$version"
}
}
}
}

38
bucket/cdrtools.json Normal file
View File

@@ -0,0 +1,38 @@
{
"architecture": {
"32bit": {
"extract_dir": "win32"
},
"64bit": {
"extract_dir": "win64"
}
},
"autoupdate": {
"url": "https://downloads.sourceforge.net/project/tumagcc/schily-cdrtools-$version.7z"
},
"bin": [
"btcflash.exe",
"cdda2wav.exe",
"cdrecord.exe",
"devdump.exe",
"isodebug.exe",
"isodump.exe",
"isoinfo.exe",
"isovfy.exe",
"mkhybrid.exe",
"mkisofs.exe",
"readcd.exe",
"rscsi.exe",
"scgcheck.exe",
"scgskeleton.exe"
],
"description": "Burn and read CDs, DVDs, and Blu-ray discs",
"hash": "f534062cab7585b82bd764f02bc65fb0c7c27ac1615786bfc81c35880ce4acc6",
"homepage": "https://sourceforge.net/projects/tumagcc/",
"license": {
"identifier": "CDDL-1.0,GPL-2.0,LGPL-2.1",
"url": "https://github.com/jobermayr/cdrtools/blob/master/COPYING"
},
"url": "https://downloads.sourceforge.net/project/tumagcc/schily-cdrtools-3.01.7z",
"version": "3.01"
}

20
bucket/cfr.json Normal file
View File

@@ -0,0 +1,20 @@
{
"version": "0.140",
"description": "Java decompiler",
"homepage": "https://www.benf.org/other/cfr",
"license": "MIT",
"suggest": {
"JRE": "java/oraclejre8u"
},
"url": "https://www.benf.org/other/cfr/cfr-0.140.jar#/cfr.jar",
"hash": "md5:ff0d7d0d157619e863718bd3bf7bc13a",
"bin": "cfr.jar",
"checkver": "cfr-([\\d\\.]+)\\.jar",
"autoupdate": {
"url": "https://www.benf.org/other/cfr/cfr-$version.jar#/cfr.jar",
"hash": {
"url": "$baseurl",
"find": "md5:\\s+$md5"
}
}
}

31
bucket/chroma.json Normal file
View File

@@ -0,0 +1,31 @@
{
"homepage": "https://github.com/alecthomas/chroma",
"description": "A general purpose syntax highlighter in pure Go",
"version": "0.6.2",
"license": "MIT",
"architecture": {
"64bit": {
"url": "https://github.com/alecthomas/chroma/releases/download/v0.6.2/chroma-0.6.2-windows-amd64.tar.gz",
"hash": "3a8609342bd4d66da529fc0cb4bd741f1ae4a78548d8748d41289715211eb419"
},
"32bit": {
"url": "https://github.com/alecthomas/chroma/releases/download/v0.6.2/chroma-0.6.2-windows-386.tar.gz",
"hash": "82a8e8bfb4e0bee39ec59a17fdc6f6470d8bc840929e37cd99aa78ae0bfa77ee"
}
},
"bin": "chroma.exe",
"checkver": "github",
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/alecthomas/chroma/releases/download/v$version/chroma-$version-windows-amd64.tar.gz"
},
"32bit": {
"url": "https://github.com/alecthomas/chroma/releases/download/v$version/chroma-$version-windows-386.tar.gz"
}
},
"hash": {
"url": "$baseurl/chroma-$version-checksums.txt"
}
}
}

16
bucket/chromedriver.json Normal file
View File

@@ -0,0 +1,16 @@
{
"version": "2.46",
"homepage": "https://sites.google.com/a/chromium.org/chromedriver/",
"description": "An open source tool for automated testing of webapps across many browsers",
"license": "BSD-3-Clause",
"url": "https://chromedriver.storage.googleapis.com/2.46/chromedriver_win32.zip",
"hash": "85a53c6794ea2262a21fa7720158f1434f69e7cd04105fe1be3cb62c59308c37",
"bin": "chromedriver.exe",
"checkver": {
"url": "https://chromedriver.storage.googleapis.com/LATEST_RELEASE",
"re": "([\\d.]+)"
},
"autoupdate": {
"url": "https://chromedriver.storage.googleapis.com/$version/chromedriver_win32.zip"
}
}

15
bucket/cht.json Normal file
View File

@@ -0,0 +1,15 @@
{
"homepage": "https://github.com/tpanj/cht.exe",
"description": "A command line client for https://cht.sh, working examples about various commands, APIs, ... Unified access to the best community driven documentation repositories of the world.",
"license": "GPL-3.0-or-later",
"version": "0.6",
"url": "https://github.com/tpanj/cht.exe/archive/v0.6.zip",
"hash": "771061cefff950be8ec3f2987e0b56e8ec20b79c8d451e24e5f89b7f391629df",
"extract_dir": "cht.exe-0.6/bin",
"bin": "cht.exe",
"checkver": "github",
"autoupdate": {
"url": "https://github.com/tpanj/cht.exe/archive/v$version.zip",
"extract_dir": "cht.exe-$version/bin"
}
}

20
bucket/clink.json Normal file
View File

@@ -0,0 +1,20 @@
{
"homepage": "https://mridgers.github.io/clink/",
"description": "Powerful Bash-style command line editing for cmd.exe",
"url": "https://github.com/mridgers/clink/releases/download/0.4.9/clink_0.4.9.zip",
"version": "0.4.9",
"hash": "57618d5fab9f0f777430fde5beceffdfb99cc81cfbd353ca58f41b7faf84eddc",
"extract_dir": "clink_0.4.9",
"checkver": {
"github": "https://github.com/mridgers/clink/"
},
"bin": "clink.bat",
"notes": [
"Run 'clink inject' to start clink on the current cmd",
"Run 'clink autorun' to auto start clink"
],
"autoupdate": {
"url": "https://github.com/mridgers/clink/releases/download/$version/clink_$version.zip",
"extract_dir": "clink_$version"
}
}

31
bucket/cloak.json Normal file
View File

@@ -0,0 +1,31 @@
{
"homepage": "https://github.com/evansmurithi/cloak",
"description": "a Command Line OTP Authenticator application",
"license": "MIT",
"version": "0.1.0",
"architecture": {
"64bit": {
"url": "https://github.com/evansmurithi/cloak/releases/download/v0.1.0/cloak-v0.1.0-x86_64-pc-windows-msvc.zip",
"hash": "1df16fe865284ad0df3fc64658404abd889162b3604d97b47105f6c5111937b1"
},
"32bit": {
"url": "https://github.com/evansmurithi/cloak/releases/download/v0.1.0/cloak-v0.1.0-i686-pc-windows-msvc.zip",
"hash": "8286f5ad1fb5d8191077e41a13e6e53b70f90d27fad0b0304662284e5da5a09e"
}
},
"bin": "cloak.exe",
"checkver": "github",
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/evansmurithi/cloak/releases/download/v$version/cloak-v$version-x86_64-pc-windows-msvc.zip"
},
"32bit": {
"url": "https://github.com/evansmurithi/cloak/releases/download/v$version/cloak-v$version-i686-pc-windows-msvc.zip"
}
}
},
"suggest": {
"vcredist": "extras/vcredist2015"
}
}

16
bucket/cloc.json Normal file
View File

@@ -0,0 +1,16 @@
{
"homepage": "https://github.com/AlDanial/cloc",
"description": "Counts blank lines, comment lines, and physical lines of source code in many programming languages",
"version": "1.80",
"license": "GPL-2.0",
"url": "https://github.com/AlDanial/cloc/releases/download/1.80/cloc-1.80.exe#/cloc.exe",
"hash": "9e547b01c946aa818ffad43b9ebaf05d3da08ed6ca876ef2b6847be3bf1cf8be",
"bin": "cloc.exe",
"checkver": {
"url": "https://github.com/AlDanial/cloc/releases",
"regex": "/releases/tag/(?:v|V)?([\\d.]+)"
},
"autoupdate": {
"url": "https://github.com/AlDanial/cloc/releases/download/$version/cloc-$version.exe#/cloc.exe"
}
}

50
bucket/cmake.json Normal file
View File

@@ -0,0 +1,50 @@
{
"homepage": "https://cmake.org/",
"description": "Open-source, cross-platform family of tools designed to build, test and package software",
"version": "3.13.4",
"license": "BSD-3-Clause",
"architecture": {
"64bit": {
"url": "https://cmake.org/files/v3.13/cmake-3.13.4-win64-x64.zip",
"hash": "bcd477d49e4a9400b41213d53450b474beaedb264631693c958ef9affa8e5623",
"extract_dir": "cmake-3.13.4-win64-x64"
},
"32bit": {
"url": "https://cmake.org/files/v3.13/cmake-3.13.4-win32-x86.zip",
"hash": "28daf772f55d817a13ef14e25af2a5569f8326dac66a6aa3cc5208cf1f8e943f",
"extract_dir": "cmake-3.13.4-win32-x86"
}
},
"bin": [
"bin/cmake.exe",
"bin/cmcldeps.exe",
"bin/cpack.exe",
"bin/ctest.exe",
"bin/cmake-gui.exe"
],
"checkver": {
"re": "Latest\\s+Release\\s+\\(([\\d+.]+)\\)",
"url": "https://cmake.org/download/"
},
"shortcuts": [
[
"bin/cmake-gui.exe",
"cmake-gui"
]
],
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://cmake.org/files/v$majorVersion.$minorVersion/cmake-$version-win64-x64.zip",
"extract_dir": "cmake-$version-win64-x64"
},
"32bit": {
"url": "https://cmake.org/files/v$majorVersion.$minorVersion/cmake-$version-win32-x86.zip",
"extract_dir": "cmake-$version-win32-x86"
}
},
"hash": {
"url": "$baseurl/cmake-$version-SHA-256.txt"
}
}
}

30
bucket/cmder-full.json Normal file
View File

@@ -0,0 +1,30 @@
{
"homepage": "http://cmder.net",
"description": "Portable console emulator for Windows",
"version": "1.3.11",
"license": "MIT",
"persist": "config",
"url": "https://github.com/cmderdev/cmder/releases/download/v1.3.11/cmder.7z",
"hash": "99d51ad7b1cc518082e7e73a56de24de249cd0d5090c78dae87a591f96e081ba",
"bin": "Cmder.exe",
"shortcuts": [
[
"Cmder.exe",
"Cmder"
]
],
"env_set": {
"CMDER_ROOT": "$dir",
"ConEmuDir": "$dir\\vendor\\conemu-maximus5"
},
"checkver": {
"github": "https://github.com/cmderdev/cmder"
},
"autoupdate": {
"url": "https://github.com/cmderdev/cmder/releases/download/v$version/cmder.7z",
"hash": {
"url": "https://github.com/cmderdev/cmder/releases/download/v$version/hashes.txt",
"find": "$basename\\s+([A-Fa-f\\d]{64})"
}
}
}

30
bucket/cmder.json Normal file
View File

@@ -0,0 +1,30 @@
{
"homepage": "http://cmder.net",
"description": "Portable console emulator for Windows",
"version": "1.3.11",
"license": "MIT",
"persist": "config",
"url": "https://github.com/cmderdev/cmder/releases/download/v1.3.11/cmder_mini.zip",
"hash": "23c938b2495ef620de816747dfb2c0d9ad7884aec1d9923dbb7a94e6c91df849",
"bin": "Cmder.exe",
"shortcuts": [
[
"Cmder.exe",
"Cmder"
]
],
"env_set": {
"CMDER_ROOT": "$dir",
"ConEmuDir": "$dir\\vendor\\conemu-maximus5"
},
"checkver": {
"github": "https://github.com/cmderdev/cmder"
},
"autoupdate": {
"url": "https://github.com/cmderdev/cmder/releases/download/v$version/cmder_mini.zip",
"hash": {
"url": "https://github.com/cmderdev/cmder/releases/download/v$version/hashes.txt",
"find": "$basename\\s+([A-Fa-f\\d]{64})"
}
}
}

26
bucket/cobalt.json Normal file
View File

@@ -0,0 +1,26 @@
{
"homepage": "https://cobalt-org.github.io/",
"description": "Static site generator written in Rust",
"version": "0.15.4",
"license": "MIT",
"architecture": {
"64bit": {
"url": "https://github.com/cobalt-org/cobalt.rs/releases/download/v0.15.4/cobalt-v0.15.4-x86_64-pc-windows-msvc.zip",
"hash": "178d5f003c3ec2f6b36e1314d716feab39d11c8fc2a878bf5b763a31c44bf464"
}
},
"bin": "cobalt.exe",
"checkver": {
"github": "https://github.com/cobalt-org/cobalt.rs"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/cobalt-org/cobalt.rs/releases/download/v$version/cobalt-v$version-x86_64-pc-windows-msvc.zip"
}
}
},
"suggest": {
"vcredist": "extras/vcredist2015"
}
}

21
bucket/cockroachdb.json Normal file
View File

@@ -0,0 +1,21 @@
{
"homepage": "https://www.cockroachlabs.com/",
"description": "The SQL database for global cloud services",
"license": {
"identifier": "Apache-2.0,BSD-3-Clause,MIT,Freeware",
"url": "https://github.com/cockroachdb/cockroach/blob/master/LICENSE"
},
"version": "2.1.6",
"url": "https://binaries.cockroachdb.com/cockroach-v2.1.6.windows-6.2-amd64.zip",
"hash": "52d79d43b7750fe2369eddd2a935bcc1d9ed7d5157e4805000eeeccbf413e9d7",
"extract_dir": "cockroach-v2.1.6.windows-6.2-amd64",
"bin": "cockroach.exe",
"checkver": {
"url": "https://www.cockroachlabs.com/docs/stable/install-cockroachdb.html",
"re": "\"version-name\">v([\\d.]+)<"
},
"autoupdate": {
"url": "https://binaries.cockroachdb.com/cockroach-v$version.windows-6.2-amd64.zip",
"extract_dir": "cockroach-v$version.windows-6.2-amd64"
}
}

16
bucket/colortool.json Normal file
View File

@@ -0,0 +1,16 @@
{
"homepage": "https://github.com/Microsoft/Console/tree/master/tools/ColorTool",
"description": "Utility for helping to set the color palette of the Windows Console",
"version": "1810.02002",
"license": "MIT",
"url": "https://github.com/Microsoft/console/releases/download/1810.02002/colortool.zip",
"hash": "fa3373d02b0835502bf0fa643ef3d7cf247b082357a33c6bceee07416371b672",
"bin": "colortool.exe",
"persist": "schemes",
"checkver": {
"github": "https://github.com/Microsoft/console"
},
"autoupdate": {
"url": "https://github.com/Microsoft/console/releases/download/$version/colortool.zip"
}
}

39
bucket/composer.json Normal file
View File

@@ -0,0 +1,39 @@
{
"homepage": "https://getcomposer.org/",
"description": "Dependency Manager for PHP",
"license": "MIT",
"version": "1.8.4",
"url": "https://getcomposer.org/download/1.8.4/composer.phar",
"bin": "composer.ps1",
"persist": "home",
"env_set": {
"COMPOSER_HOME": "$persist_dir\\home"
},
"env_add_path": "home\\vendor\\bin",
"pre_install": [
"echo 'if($args.length -eq 1 -and ($args -eq \"selfupdate\" -or $args -eq \"self-update\")) { & scoop update composer }' | out-file \"$dir\\composer.ps1\"",
"echo 'else { & php (join-path $psscriptroot \"composer.phar\") @args }' | out-file \"$dir\\composer.ps1\" -append"
],
"post_install": [
"$och = \"$env:APPDATA\\Composer\"",
"if(Test-Path $och) {",
"Write-Host -F yellow \"Moving old 'COMPOSER_HOME' to '$persist_dir\\home'\"",
"Move-Item -Force \"$och\\*\" \"$persist_dir\\home\"",
"Remove-Item -Force \"$och\"",
"}"
],
"suggest": {
"PHP": [
"php",
"php-nts"
]
},
"notes": "'composer selfupdate' is aliased to 'scoop update composer'",
"hash": "1722826c8fbeaf2d6cdd31c9c9af38694d6383a0f2bf476fe6bbd30939de058a",
"checkver": {
"github": "https://github.com/composer/composer"
},
"autoupdate": {
"url": "https://getcomposer.org/download/$version/composer.phar"
}
}

18
bucket/concfg.json Normal file
View File

@@ -0,0 +1,18 @@
{
"homepage": "https://github.com/lukesampson/concfg",
"description": "Import / export Windows console settings",
"version": "0.2019.03.09",
"url": "https://github.com/lukesampson/concfg/archive/a38c23651458ea48e463f7402bf166c65855759f.zip",
"hash": "dfc4796e912c23755028891041034698e7e930119bd44d68e8bd14c51e26b2b5",
"extract_dir": "concfg-a38c23651458ea48e463f7402bf166c65855759f",
"bin": "bin\\concfg.ps1",
"checkver": {
"url": "https://github.com/lukesampson/concfg/commits/master.atom",
"re": "(\\d+)-(\\d+)-(\\d+)[\\S\\s]*?(?<sha>[0-9a-f]{40})",
"replace": "0.${1}.${2}.${3}"
},
"autoupdate": {
"url": "https://github.com/lukesampson/concfg/archive/$matchSha.zip",
"extract_dir": "concfg-$matchSha"
}
}

34
bucket/consul.json Normal file
View File

@@ -0,0 +1,34 @@
{
"homepage": "https://www.consul.io",
"description": "Service Discovery and Configuration",
"license": "MPL-2.0",
"version": "1.4.3",
"architecture": {
"64bit": {
"url": "https://releases.hashicorp.com/consul/1.4.3/consul_1.4.3_windows_amd64.zip",
"hash": "9512d39cfb690918da0f9037834e8517474f548e0b13558977cc8e0ea71db980"
},
"32bit": {
"url": "https://releases.hashicorp.com/consul/1.4.3/consul_1.4.3_windows_386.zip",
"hash": "dfde281db920f8f3c5ed8cac062b74527c92be4e723835278498b48a65bd02fd"
}
},
"bin": "consul.exe",
"checkver": {
"url": "https://releases.hashicorp.com/consul/",
"re": "consul_([\\d.]+)</a>"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://releases.hashicorp.com/consul/$version/consul_$version_windows_amd64.zip"
},
"32bit": {
"url": "https://releases.hashicorp.com/consul/$version/consul_$version_windows_386.zip"
}
},
"hash": {
"url": "$baseurl/consul_$version_SHA256SUMS"
}
}
}

66
bucket/coreutils.json Normal file
View File

@@ -0,0 +1,66 @@
{
"homepage": "http://www.mingw.org/wiki/msys",
"description": "A collection of GNU utilities such as bash, make, gawk and grep",
"license": "GPL-2.0",
"version": "5.97.3",
"url": [
"https://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/msys-1.0.13-2/msysCORE-1.0.13-2-msys-1.0.13-bin.tar.lzma",
"https://sourceforge.net/projects/mingw/files/MSYS/Base/gettext/gettext-0.17-2/libintl-0.17-2-msys-dll-8.tar.lzma",
"https://sourceforge.net/projects/mingw/files/MSYS/Base/libiconv/libiconv-1.13.1-2/libiconv-1.13.1-2-msys-1.0.13-dll-2.tar.lzma",
"https://sourceforge.net/projects/mingw/files/MSYS/Base/termcap/termcap-0.20050421_1-2/libtermcap-0.20050421_1-2-msys-1.0.13-dll-0.tar.lzma",
"https://sourceforge.net/projects/mingw/files/MSYS/Base/coreutils/coreutils-5.97-3/coreutils-5.97-3-msys-1.0.13-bin.tar.lzma",
"https://sourceforge.net/projects/mingw/files/MSYS/Base/coreutils/coreutils-5.97-3/coreutils-5.97-3-msys.RELEASE_NOTES.txt"
],
"hash": [
"41c7d5561662e41da74951f373a08a95db40b27b1246227bbbc13abc44976ea7",
"b533de0ee04dc4d53ca745210e41eb9437044ebd367c001f3615092e7214a4a3",
"f13de6d2e3c428e7f9a7251c6b01d6f7569e20f7ac126c68c028eb5f542473bb",
"62b58fe0880f0972fcc84a819265989b02439c1c5185870227bd25f870f7adb6",
"f8c7990416ea16a74ac336dcfe0f596bc46b8724b2d58cf8a3509414220b2366",
"256208bca7a86a10bc377bdccfe6fb8f1e1f1868d0d1952a6692ee9f1d985abd"
],
"bin": [
"bin\\basename.exe",
"bin\\cat.exe",
"bin\\chmod.exe",
"bin\\comm.exe",
"bin\\cp.exe",
"bin\\cut.exe",
"bin\\date.exe",
"bin\\dirname.exe",
"bin\\echo.exe",
"bin\\env.exe",
"bin\\expr.exe",
"bin\\false.exe",
"bin\\fold.exe",
"bin\\head.exe",
"bin\\id.exe",
"bin\\install.exe",
"bin\\join.exe",
"bin\\ln.exe",
"bin\\ls.exe",
"bin\\md5sum.exe",
"bin\\mkdir.exe",
"bin\\msysmnt.exe",
"bin\\mv.exe",
"bin\\od.exe",
"bin\\paste.exe",
"bin\\printf.exe",
"bin\\ps.exe",
"bin\\pwd.exe",
"bin\\rm.exe",
"bin\\rmdir.exe",
"bin\\sleep.exe",
"bin\\sort.exe",
"bin\\split.exe",
"bin\\stty.exe",
"bin\\tail.exe",
"bin\\tee.exe",
"bin\\touch.exe",
"bin\\tr.exe",
"bin\\true.exe",
"bin\\uname.exe",
"bin\\uniq.exe",
"bin\\wc.exe"
]
}

12
bucket/cowsay.json Normal file
View File

@@ -0,0 +1,12 @@
{
"version": "0.2013.07.19",
"homepage": "https://github.com/lukesampson/cowsay-psh",
"description": "Cowsay/think in Powershell",
"url": "https://github.com/lukesampson/cowsay-psh/archive/master.zip",
"hash": "c65cdfbf43b15f65742831f812003a92abeaa5d416374d5d75a53388d0b59148",
"extract_dir": "cowsay-psh-master",
"bin": [
"cowsay.ps1",
"cowthink.ps1"
]
}

31
bucket/cppcheck.json Normal file
View File

@@ -0,0 +1,31 @@
{
"homepage": "http://cppcheck.sourceforge.net/",
"description": "Static analysis tool for C/C++ code",
"license": "GPL-3.0",
"version": "1.87",
"architecture": {
"64bit": {
"url": "https://github.com/danmar/cppcheck/releases/download/1.87/cppcheck-1.87-x64-Setup.msi",
"hash": "3f44683661f08be7dc5749fdcd9b9a41118cb3533da9ba68645f33d2baa77f14"
},
"32bit": {
"url": "https://github.com/danmar/cppcheck/releases/download/1.87/cppcheck-1.87-x86-Setup.msi",
"hash": "63ed92bc86b5b10710791d5609ae5e7f87ab594b7a7ad32de491680ec5f7f25a"
}
},
"extract_dir": "PFiles/Cppcheck",
"bin": "cppcheck.exe",
"checkver": {
"github": "https://github.com/danmar/cppcheck"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/danmar/cppcheck/releases/download/$version/cppcheck-$version-x64-Setup.msi"
},
"32bit": {
"url": "https://github.com/danmar/cppcheck/releases/download/$version/cppcheck-$version-x86-Setup.msi"
}
}
}
}

27
bucket/cscope.json Normal file
View File

@@ -0,0 +1,27 @@
{
"version": "15.8a",
"description": "Developer's tool for browsing source code.",
"homepage": "http://cscope.sourceforge.net/",
"architecture": {
"64bit": {
"url": "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/cscope-win32/cscope-15.8a-win64rev1-static.zip",
"hash": "649410e79bd2127108b89ee639612615b8e1c4fa427f987b973793430107c69f"
},
"32bit": {
"url": "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/cscope-win32/cscope-15.8a-win32rev1-static.zip",
"hash": "5505a8d707afd5e14599b9e69f10c22eabc82b402a80658c3ba554e442ed00e4"
}
},
"bin": "cscope.exe",
"checkver": "([\\w\\.]+) Released",
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/cscope-win32/cscope-$version-win64rev1-static.zip"
},
"32bit": {
"url": "https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/cscope-win32/cscope-$version-win32rev1-static.zip"
}
}
}
}

11
bucket/csvtosql.json Normal file
View File

@@ -0,0 +1,11 @@
{
"version": "v0.1.1-alpha",
"description": "Converts a comma delimitered CSV to a MSSQL script",
"license": "Unlicense",
"url": "https://github.com/deevus/CsvToSql/archive/v0.1.1-alpha.zip",
"depends": "gow",
"homepage": "https://github.com/deevus/CsvToSql",
"hash": "b58c21aa5e7b2c18e3e184e908d984ff4e9c7002faaf4e737b0ffa1692f5fe03",
"bin": "ConvertCsvTo-Sql.ps1",
"extract_dir": "CsvToSql-0.1.1-alpha"
}

11
bucket/ctags.json Normal file
View File

@@ -0,0 +1,11 @@
{
"homepage": "http://ctags.sourceforge.net/",
"description": "Generates an index (or tag) file of language objects found in source files",
"version": "5.8",
"url": "https://downloads.sourceforge.net/project/ctags/ctags/5.8/ctags58.zip",
"extract_dir": "ctags58",
"bin": "ctags.exe",
"hash": "e1f5909ec0c7a58fd2149139fa6a1dc532070a3d919dd183671c57a32f8b243d",
"license": "GPL-2.0",
"checkver": "Version ([\\d.]+)"
}

39
bucket/curl.json Normal file
View File

@@ -0,0 +1,39 @@
{
"homepage": "https://curl.haxx.se/",
"description": "Command line tool and library for transferring data with URLs",
"version": "7.64.0_2",
"license": "MIT",
"architecture": {
"64bit": {
"url": "https://curl.haxx.se/windows/dl-7.64.0_2/curl-7.64.0_2-win64-mingw.tar.xz",
"hash": "ff4ccfeee738838d4fb5344a736baebd96a0abc72c9c3112f2fbaa1d9f731353",
"extract_dir": "curl-7.64.0-win64-mingw"
},
"32bit": {
"url": "https://curl.haxx.se/windows/dl-7.64.0_2/curl-7.64.0_2-win32-mingw.tar.xz",
"hash": "ddeeea2558fc152f934a7e7a4624411265757eaa0fb9e9eb4d6078f3d60a187c",
"extract_dir": "curl-7.64.0-win32-mingw"
}
},
"bin": "bin\\curl.exe",
"checkver": {
"url": "https://curl.haxx.se/windows/",
"re": "Build<\\/b>:\\s+([\\d._]+)"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://curl.haxx.se/windows/dl-$version/curl-$version-win64-mingw.tar.xz",
"extract_dir": "curl-$matchHead-win64-mingw"
},
"32bit": {
"url": "https://curl.haxx.se/windows/dl-$version/curl-$version-win32-mingw.tar.xz",
"extract_dir": "curl-$matchHead-win32-mingw"
}
},
"hash": {
"url": "$baseurl/hashes.txt",
"find": "SHA256\\($basename\\)=\\s+([a-fA-F\\d]{64})"
}
}
}

36
bucket/cutter.json Normal file
View File

@@ -0,0 +1,36 @@
{
"homepage": "https://github.com/radareorg/cutter",
"description": "A Qt and C++ GUI for radare2 reverse engineering framework",
"license": "GPL-3.0",
"version": "1.7.4",
"architecture": {
"64bit": {
"url": "https://github.com/radareorg/cutter/releases/download/v1.7.4/Cutter-v1.7.4-x64.Windows.zip",
"hash": "4546af355d3825c2405b7e3c393c66ce6b9bfec9fa903433e3d3bc8a4cc7ce6e"
},
"32bit": {
"url": "https://github.com/radareorg/cutter/releases/download/v1.7.4/Cutter-v1.7.4-x86.Windows.zip",
"hash": "b8c3c59e8b440ccc670023197063dc6f30dcc71d45fc8233139ed2339891f4c4"
}
},
"bin": "cutter.exe",
"shortcuts": [
[
"cutter.exe",
"Cutter"
]
],
"checkver": {
"github": "https://github.com/radareorg/cutter"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/radareorg/cutter/releases/download/v$version/Cutter-v$version-x64.Windows.zip"
},
"32bit": {
"url": "https://github.com/radareorg/cutter/releases/download/v$version/Cutter-v$version-x86.Windows.zip"
}
}
}
}

71
bucket/cygwin.json Normal file
View File

@@ -0,0 +1,71 @@
{
"version": "2.895",
"homepage": "https://cygwin.com/",
"description": "A large collection of GNU and Open Source tools which provide functionality similar to a Linux distribution on Windows",
"architecture": {
"64bit": {
"url": "https://cygwin.com/setup-x86_64.exe#/cygwin-setup.exe",
"hash": "sha512:4ddf57775794d7d42e2bccf1f717553ba319010579978087e3e9162a0d12e0a4f665a79c3da1710d84037d9e43851cf858a0c5d965e9a4e32b3d38495b4f8f0e"
},
"32bit": {
"url": "https://cygwin.com/setup-x86.exe#/cygwin-setup.exe",
"hash": "sha512:e0b321c4898416722c6402d86ec00cc8d7f38a541e51bcda9b34da9f71c3255d20566057cb7e3df70aadc6d2d1e6abefe371dce72a86d1b28163f6de97b2f0cd"
}
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://cygwin.com/setup-x86_64.exe#/cygwin-setup.exe"
},
"32bit": {
"url": "https://cygwin.com/setup-x86.exe#/cygwin-setup.exe"
}
},
"hash": {
"url": "https://cygwin.com/sha512.sum"
}
},
"checkver": {
"re": "<a.*href=\"/git/\\?p=cygwin-apps/setup\\.git;a=tag.*\">([\\d.]+)</a>",
"url": "https://cygwin.com/git/?p=cygwin-apps/setup.git;a=tags"
},
"bin": [
[
"root\\bin\\bash.exe",
"cygwin",
"--login -i"
]
],
"installer": {
"args": [
"--no-admin",
"--no-shortcuts",
"--quiet-mode",
"--local-package-dir \"$persist_dir\\packages\"",
"--root \"$persist_dir\\root\"",
"--site \"https://mirrors.kernel.org/sourceware/cygwin/\""
],
"keep": true
},
"notes": "To start a Cygwin shell, type \"cygwin\"",
"pre_install": "persist_data @{persist = @('packages', 'root')} $original_dir $persist_dir",
"shortcuts": [
[
"root\\Cygwin.bat",
"Cygwin",
"",
"root\\Cygwin-Terminal.ico"
],
[
"cygwin-setup.exe",
"Cygwin Setup",
"--no-admin --no-shortcuts --root \"$persist_dir\\root\" --local-package-dir \"$persist_dir\\packages\" --site https://mirrors.kernel.org/sourceware/cygwin/"
],
[
"root\\bin\\mintty.exe",
"Cygwin Terminal",
"-i \"$dir\\root\\Cygwin-Terminal.ico\" -",
"root\\Cygwin-Terminal.ico"
]
]
}

35
bucket/dart.json Normal file
View File

@@ -0,0 +1,35 @@
{
"version": "2.2.0",
"license": "BSD-3-Clause",
"homepage": "https://www.dartlang.org/",
"description": "SDK for the Dart programming language",
"extract_dir": "dart-sdk",
"env_add_path": "bin",
"architecture": {
"64bit": {
"url": "https://storage.googleapis.com/dart-archive/channels/stable/release/2.2.0/sdk/dartsdk-windows-x64-release.zip",
"hash": "f78fd7cccf5a6ec29199d8411db814116953595ac50634a6ee2231eee0e60529"
},
"32bit": {
"url": "https://storage.googleapis.com/dart-archive/channels/stable/release/2.2.0/sdk/dartsdk-windows-ia32-release.zip",
"hash": "a7beb71b181742e62462d53d5a955d67f7be01a67cba498d43affc6a692be55a"
}
},
"checkver": {
"url": "https://storage.googleapis.com/dart-archive/channels/stable/release/latest/VERSION",
"jp": "$.version"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://storage.googleapis.com/dart-archive/channels/stable/release/$version/sdk/dartsdk-windows-x64-release.zip"
},
"32bit": {
"url": "https://storage.googleapis.com/dart-archive/channels/stable/release/$version/sdk/dartsdk-windows-ia32-release.zip"
}
},
"hash": {
"url": "$url.sha256sum"
}
}
}

32
bucket/datamash.json Normal file
View File

@@ -0,0 +1,32 @@
{
"version": "1.3",
"description": "GNU datamash is a command-line program which performs basic numeric, textual and statistical operations on input textual data files",
"license": "GPL-3.0-or-later",
"homepage": "https://www.gnu.org/software/datamash/",
"architecture": {
"64bit": {
"url": "http://download.savannah.gnu.org/releases/datamash/windows-binaries/datamash-1.3-no-locale-64bit.exe#/datamash.exe",
"hash": "4b85e619390b50898911c2c85234aa7306670541b56603d71bfc1e1969c918b8"
},
"32bit": {
"url": "http://download.savannah.gnu.org/releases/datamash/windows-binaries/datamash-1.3-no-locale-32bit.exe#/datamash.exe",
"hash": "ae6ed021819a4cc2481b4b517c25348df4f8ed15c24ba5ff5f2e7fc1b32b69dc"
}
},
"bin": "datamash.exe",
"checkver": {
"url": "http://download-mirror.savannah.gnu.org/releases/datamash/windows-binaries/",
"re": "datamash-([\\d.]+)-no-locale",
"reverse": true
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "http://download.savannah.gnu.org/releases/datamash/windows-binaries/datamash-$version-no-locale-64bit.exe#/datamash.exe"
},
"32bit": {
"url": "http://download.savannah.gnu.org/releases/datamash/windows-binaries/datamash-$version-no-locale-32bit.exe#/datamash.exe"
}
}
}
}

9
bucket/dd.json Normal file
View File

@@ -0,0 +1,9 @@
{
"homepage": "http://www.chrysocome.net/dd",
"license": "GPL-2.0",
"description": "Allows the flexible copying of data in a win32 environment",
"version": "0.6beta3",
"url": "http://www.chrysocome.net/downloads/dd-0.6beta3.zip",
"hash": "c7a6a4cc4a107030b072fb479173d66e6d1d1098cf740c6da4e9378c16b81c17",
"bin": "dd.exe"
}

21
bucket/ddev.json Normal file
View File

@@ -0,0 +1,21 @@
{
"homepage": "https://ddev.readthedocs.io/en/latest/",
"description": "An open source tool that makes it simple to get local PHP development environments up and running in minutes",
"version": "1.6.0",
"license": "Apache-2.0",
"url": "https://github.com/drud/ddev/releases/download/v1.6.0/ddev_windows.v1.6.0.zip",
"hash": "6cfc61d0f9772ba55b01ad8f5b484a8919a746956d96795cfa833c17c7e7f647",
"bin": "ddev.exe",
"suggest": {
"docker": "docker-compose"
},
"checkver": {
"github": "https://github.com/drud/ddev"
},
"autoupdate": {
"url": "https://github.com/drud/ddev/releases/download/v$version/ddev_windows.v$version.zip",
"hash": {
"url": "https://github.com/drud/ddev/releases/download/v$version/ddev_windows.v$version.zip.sha256.txt"
}
}
}

26
bucket/deno.json Normal file
View File

@@ -0,0 +1,26 @@
{
"homepage": "https://github.com/denoland/deno",
"description": "A secure TypeScript runtime on V8",
"version": "0.3.2",
"license": "MIT",
"architecture": {
"64bit": {
"url": "https://github.com/denoland/deno/releases/download/v0.3.2/deno_win_x64.zip",
"hash": "86e7e71be6545d28c6be704a0889a139e3852c8f567ff14480dccd8a89913d79"
}
},
"bin": [
[
"deno.exe",
"deno"
]
],
"checkver": "github",
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/denoland/deno/releases/download/v$version/deno_win_x64.zip"
}
}
}
}

36
bucket/dep.json Normal file
View File

@@ -0,0 +1,36 @@
{
"homepage": "https://github.com/golang/dep",
"description": "Go dependency management tool",
"version": "0.5.1",
"license": "BSD-3-Clause",
"architecture": {
"64bit": {
"url": "https://github.com/golang/dep/releases/download/v0.5.1/dep-windows-amd64.exe#/dep.exe",
"hash": "cc12b97ca5cec38e7b3b1b5813baf2b5874c691b8352e02c86ed3dc2098f4149"
},
"32bit": {
"url": "https://github.com/golang/dep/releases/download/v0.5.1/dep-windows-386.exe#/dep.exe",
"hash": "aa3b4b02a41cef7b4cf6aedc1380b84373cba87273d7055bf398ee2a6b7c06a0"
}
},
"bin": [
[
"dep.exe",
"dep"
]
],
"checkver": "github",
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/golang/dep/releases/download/v$version/dep-windows-amd64.exe#/dep.exe"
},
"32bit": {
"url": "https://github.com/golang/dep/releases/download/v$version/dep-windows-386.exe#/dep.exe"
}
},
"hash": {
"url": "$url.sha256"
}
}
}

17
bucket/devd.json Normal file
View File

@@ -0,0 +1,17 @@
{
"homepage": "https://corte.si/posts/devd/intro/index.html",
"description": "A small, self-contained, command-line-only HTTP server for developers",
"license": "MIT",
"version": "0.9",
"url": "https://github.com/cortesi/devd/releases/download/v0.9/devd-0.9-windows64.zip",
"hash": "650575ac95228dd62fd3bb8a42d640daa476c23ae3bc58ac1ba8931e26096aa2",
"extract_dir": "devd-0.9-windows64",
"bin": "devd.exe",
"checkver": {
"github": "https://github.com/cortesi/devd"
},
"autoupdate": {
"url": "https://github.com/cortesi/devd/releases/download/v$version/devd-$version-windows64.zip",
"extract_dir": "devd-$version-windows64"
}
}

41
bucket/diffutils.json Normal file
View File

@@ -0,0 +1,41 @@
{
"homepage": "http://www.msys2.org",
"description": "A package of several programs related to finding differences between files",
"version": "3.5",
"architecture": {
"64bit": {
"url": [
"http://repo.msys2.org/msys/x86_64/diffutils-3.5-1-x86_64.pkg.tar.xz",
"http://repo.msys2.org/msys/x86_64/msys2-runtime-2.7.0-1-x86_64.pkg.tar.xz",
"http://repo.msys2.org/msys/x86_64/libiconv-1.14-2-x86_64.pkg.tar.xz",
"http://repo.msys2.org/msys/x86_64/libintl-0.19.7-3-x86_64.pkg.tar.xz"
],
"hash": [
"6feba4594fe39180752213673510041d322be87977b573fc933141ddc8cb7f01",
"13921128ec52d0cf14b5b5c518c21c7b937020075607c0b5d96fa49f8eea0bd2",
"de1a5b4974b10ddcf35389c9ede615ed4ab93f86854e7355e66d1f39723ca3c8",
"8bde823a82608b577c31c82759a8410bd503c5f7ae62843385310b2e4c24b48c"
]
},
"32bit": {
"url": [
"http://repo.msys2.org/msys/i686/diffutils-3.5-1-i686.pkg.tar.xz",
"http://repo.msys2.org/msys/i686/msys2-runtime-2.7.0-1-i686.pkg.tar.xz",
"http://repo.msys2.org/msys/i686/libiconv-1.14-2-i686.pkg.tar.xz",
"http://repo.msys2.org/msys/i686/libintl-0.19.7-3-i686.pkg.tar.xz"
],
"hash": [
"3b60c994dfcf8fb8e3a61d1c4aab4b23102e16c5d9c5e080761d969bec414ebe",
"86574f2e9afe9d295f329fb23feb35ec18505070b3682e76961d9c5910764388",
"90502f67f38eb7d709498b9fb4a0e68f2afafafa1fad005e0dec8315d8191b79",
"1285d5788987052e133e18b537d9825a7a3cd4ecb738d8cfd5feddc9886ba58a"
]
}
},
"bin": [
"usr\\bin\\cmp.exe",
"usr\\bin\\diff.exe",
"usr\\bin\\diff3.exe",
"usr\\bin\\sdiff.exe"
]
}

34
bucket/dig.json Normal file
View File

@@ -0,0 +1,34 @@
{
"homepage": "https://www.isc.org/",
"description": "dig (domain information groper) is a flexible tool for interrogating DNS name servers",
"license": "ISC",
"version": "9.12.3-P4",
"architecture": {
"64bit": {
"url": "https://ftp.isc.org/isc/bind9/9.12.3-P4/BIND9.12.3-P4.x64.zip",
"hash": "f365b597b41c49251b5c321a3fbc85db4311040406bb39c8d6671ef2e144c4af"
},
"32bit": {
"url": "https://ftp.isc.org/isc/bind9/9.12.3-P4/BIND9.12.3-P4.x86.zip",
"hash": "4fa633d3393cfdaad38b303dfa723a0e912c29870fba3392552fd8a42313a7b0"
}
},
"bin": "dig.exe",
"checkver": {
"url": "https://www.isc.org/downloads/",
"re": "(?sm)Current-Stable.*?BIND([\\d.]+(?:[-P\\d]*))"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://ftp.isc.org/isc/bind9/$version/BIND$version.x64.zip"
},
"32bit": {
"url": "https://ftp.isc.org/isc/bind9/$version/BIND$version.x86.zip"
}
}
},
"suggest": {
"vcredist": "extras/vcredist2012"
}
}

Some files were not shown because too many files have changed in this diff Show More