5 Commits

Author SHA1 Message Date
Richard Kuhnt
bc08222f3d Remove unused function 2017-06-10 03:01:38 +02:00
Richard Kuhnt
8b8279b9d3 Add php-fpm and caddy services 2017-06-10 02:33:28 +02:00
Richard Kuhnt
495e3adb61 Add scoop services command
Allows installing windows services using WinSW (See #1526)
2017-06-10 02:30:57 +02:00
Richard Kuhnt
68265633fc Add winsw manifest 2017-06-10 02:29:34 +02:00
Richard Kuhnt
80aa5f4df1 Add servicedir function 2017-06-10 02:29:22 +02:00
375 changed files with 11244 additions and 12151 deletions

View File

@@ -12,14 +12,10 @@ 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}]
[[Mm]akefile{,.*}]
# TAB-style indentation
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

3
.gitignore vendored
View File

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

View File

@@ -1,6 +0,0 @@
{
"recommendations": [
"EditorConfig.EditorConfig",
"ms-vscode.PowerShell"
]
}

18
.vscode/settings.json vendored
View File

@@ -1,18 +0,0 @@
// Configure PSScriptAnalyzer settings
{
"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,
"files.exclude": {
"**/.git": true,
"**/.svn": true,
"**/.hg": true,
"**/CVS": true,
"**/.DS_Store": true,
"**/tmp": 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,28 +0,0 @@
@{
# 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')
# Analyze **only** the following rules. Use IncludeRules when you want
# to invoke only a small subset of the defualt rules.
# IncludeRules = @('PSAvoidDefaultValueSwitchParameter',
# 'PSMisleadingBacktick',
# 'PSMissingModuleManifestField',
# 'PSReservedCmdletChar',
# 'PSReservedParams',
# 'PSShouldProcess',
# 'PSUseApprovedVerbs',
# 'PSAvoidUsingCmdletAliases',
# 'PSUseDeclaredVarsMoreThanAssignments')
# Do not analyze the following rules. Use ExcludeRules when you have
# commented out the IncludeRules settings above and want to include all
# the default rules except for those you exclude below.
# Note: if a rule is in both IncludeRules and ExcludeRules, the rule
# will be excluded.
ExcludeRules = @(
# Currently Scoop widely uses Write-Host to output colored text.
'PSAvoidUsingWriteHost'
)
}

165
README.md
View File

@@ -1,148 +1,65 @@
<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>
</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" />
</a>
<a href="https://github.com/ScoopInstaller/Scoop">
<img src="https://img.shields.io/github/repo-size/ScoopInstaller/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>
<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>
</p>
Scoop [![Build status](https://ci.appveyor.com/api/projects/status/05foxatmrqo0l788?svg=true)](https://ci.appveyor.com/project/lukesampson/scoop) [![Gitter chat](https://badges.gitter.im/lukesampson/scoop.png)](https://gitter.im/lukesampson/scoop)
=====
Scoop is a command-line installer for Windows.
## What does Scoop do?
Requirements:
Scoop installs apps from the command line with a minimal amount of friction. It:
* [PowerShell 3](https://www.microsoft.com/en-us/download/details.aspx?id=34595)
* PowerShell must be enabled for your user account e.g. `set-executionpolicy remotesigned -s cu`
- 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.
To install:
Scoop is quite script-friendly. Your environment can become the way you like by using repeatable setups. For example:
iex (new-object net.webclient).downloadstring('https://get.scoop.sh')
```console
Once installed, run `scoop help` for instructions.
What does Scoop do?
-------------------
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
Scoop is very scriptable, so you can run repeatable setups to get your environment just the way you like, e.g.:
```powershell
scoop install sudo
sudo scoop install 7zip git openssh --global
scoop install aria2 curl grep sed less touch
scoop install curl grep sed less tail 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.
## Installation
### [Documentation](https://github.com/lukesampson/scoop/wiki)
Run the following commands from a regular (non-admin) PowerShell terminal to install Scoop:
Inspiration
-----------
```powershell
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
Invoke-RestMethod -Uri https://get.scoop.sh | Invoke-Expression
```
* [Homebrew](http://mxcl.github.io/homebrew/)
* [sub](https://github.com/37signals/sub#readme)
**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.
What sort of apps can Scoop install?
------------------------------------
It will install Scoop to its default location:
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.
`C:\Users\<YOUR USERNAME>\scoop`
Since installers are common, Scoop supports them too (and their uninstallers).
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.
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.
## 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.
Support this project
--------------------
```console
scoop install aria2
```
If you find Scoop useful and would like to support ongoing development and maintenance, here's how:
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`.
* [PayPal](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=DM2SUH9EUXSKJ) (one-time donation)
* [Gratipay](https://gratipay.com/~lukesampson) (ongoing donations)
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)
## 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.
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.
### Contribute to this project
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:
- [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).
[![](http://img.shields.io/gratipay/user/lukesampson.svg)]()

View File

@@ -1,35 +1,17 @@
version: "{build}-{branch}"
branches:
except:
- gh-pages
build: false
deploy: false
clone_depth: 2
image: Visual Studio 2022
environment:
matrix:
- PowerShell: 5
- PowerShell: 7
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
init:
- ps: (get-psprovider 'FileSystem').Home = $(pwd)
- ps: "if($env:APPVEYOR_CHOCO_PESTER_OPTIONS -ne $null) { write-host -f yellow 'NOTE: customized `pester` installation is being used' }"
- ps: choco install -y pester $env:APPVEYOR_CHOCO_PESTER_OPTIONS
build: off
test_script:
- ps: $result = invoke-pester -path test/ -outputfile TestResults.xml -outputformat NUnitXML -passthru; $env:failedcount = $result.failedcount
- ps: (new-object net.webclient).uploadfile("https://ci.appveyor.com/api/testresults/nunit/$($env:APPVEYOR_JOB_ID)", (resolve-path ./TestResults.xml))
- ps: if($env:failedcount -gt 0) { exit $env:failedcount }

View File

@@ -1,222 +1,157 @@
<#
.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.
.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'.
.PARAMETER Request
Create pull-requests on 'upstream branch' 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
.EXAMPLE
PS BUCKETROOT > .\bin\auto-pr.ps1 -Push
Update all manifests inside 'bucket/' directory.
#>
# Usage: .\bin\auto-pr.ps1 [options]
# Summary: Updates manifests and pushes them or creates pull-requests
# Help: Updates manifests and pushes them to directly the master branch or creates pull-requests for upstream
#
# Options:
# -p, --push push updates directly to 'origin master'
# -r, --request create pull-requests on 'upstream master' for each update
# -u, --upstream <upstream> upstream repository with target branch
# only used if -r is set (default: lukesampson/scoop:master)
param(
[Parameter(Mandatory = $true)]
[ValidateScript( {
if (!($_ -match '^(.*)\/(.*):(.*)$')) {
throw 'Upstream must be in this format: <user>/<repo>:<branch>'
}
$true
})]
[String] $Upstream,
[String] $OriginBranch = 'master',
[String] $App = '*',
[String] $CommitMessageFormat = '<app>: Update to version <version>',
[ValidateScript( {
if (!(Test-Path $_ -Type Container)) {
throw "$_ is not a directory!"
} else {
$true
}
})]
[String] $Dir,
[Switch] $Push,
[Switch] $Request,
[Switch] $Help,
[string[]] $SpecialSnowflakes,
[Switch] $SkipUpdated,
[Switch] $ThrowError
[String]$upstream = "lukesampson/scoop:master",
[String]$dir,
[Switch]$push = $false,
[Switch]$request = $false,
[Switch]$help = $false
)
. "$PSScriptRoot\..\lib\manifest.ps1"
. "$PSScriptRoot\..\lib\json.ps1"
if(!$dir) { $dir = "$psscriptroot\..\bucket" }
$dir = resolve-path $dir
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!"
}
. "$psscriptroot\..\lib\manifest.ps1"
. "$psscriptroot\..\lib\json.ps1"
. "$psscriptroot\..\lib\unix.ps1"
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
Optional options:
-u, -upstream upstream repository with target branch
-o, -originbranch origin (local) branch name
-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
Write-Host -f yellow "Please install hub ('brew install hub' or visit: https://hub.github.com/)"
exit 1
}
} else {
if (!(scoop which hub)) {
Write-Host "Please install hub 'scoop install hub'" -ForegroundColor Yellow
Write-Host -f yellow "Please install hub 'scoop install hub'"
exit 1
}
}
if ((!$push -and !$request) -or $help) {
Write-Host ""
Write-Host "Usage: auto-pr.ps1 [OPTION]"
Write-Host ""
Write-Host "Mandatory options:"
Write-Host " -p, -push push updates directly to 'origin master'"
Write-Host " -r, -request create pull-requests on 'upstream master' for each update"
Write-Host ""
Write-Host "Optional options:"
Write-Host " -u, -upstream upstream repository with target branch"
Write-Host " only used if -r is set (default: lukesampson/scoop:master)"
Write-Host " -h, -help"
Write-Host ""
exit 0
}
if(!($upstream -match "^(.*)\/(.*):(.*)$")) {
Write-Host -f DarkRed "Upstream must have this format: <user>/<repo>:<branch>"
exit 1
}
function execute($cmd) {
Write-Host $cmd -ForegroundColor Green
$output = Invoke-Command ([scriptblock]::Create($cmd))
Write-Host -f Green $cmd
$output = iex $cmd
if ($LASTEXITCODE -gt 0) {
abort "^^^ Error! See above ^^^ (last command: $cmd)"
if($LASTEXITCODE -gt 0) {
Write-Host -f Red "^^^ Error! See above ^^^ (last command: $cmd)"
exit 1
}
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"
Write-Host "hub rev-parse --verify $branch" -ForegroundColor Green
execute "hub checkout master"
Write-Host -f Green "hub rev-parse --verify $branch"
hub rev-parse --verify $branch
if ($LASTEXITCODE -eq 0) {
Write-Host "Skipping update $app ($version) ..." -ForegroundColor Yellow
if($LASTEXITCODE -eq 0) {
Write-Host -f Yellow "Skipping update $app ($version) ..."
return
}
Write-Host "Creating update $app ($version) ..." -ForegroundColor DarkCyan
Write-Host -f DarkCyan "Creating update $app ($version) ..."
execute "hub checkout -b $branch"
execute "hub add $manifest"
execute "hub commit -m '$commitMessage"
Write-Host "Pushing update $app ($version) ..." -ForegroundColor DarkCyan
execute "hub commit -m 'Update $app to version $version'"
Write-Host -f DarkCyan "Pushing update $app ($version) ..."
execute "hub push origin $branch"
if ($LASTEXITCODE -gt 0) {
error "Push failed! (hub push origin $branch)"
execute 'hub reset'
if($LASTEXITCODE -gt 0) {
Write-Host -f DarkRed "Push failed! (hub push origin $branch)"
execute "hub reset"
return
}
Start-Sleep 1
Write-Host "Pull-Request update $app ($version) ..." -ForegroundColor DarkCyan
Write-Host "hub pull-request -m '<msg>' -b '$upstream' -h '$branch'" -ForegroundColor Green
$msg = @"
$commitMessage
Hello lovely humans,
a new version of [$app]($homepage) is available.
| State | Update :rocket: |
| :---------- | :-------------- |
| New version | $version |
"@
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')"
Write-Host -f DarkCyan "Pull-Request update $app ($version) ..."
Write-Host -f green "hub pull-request -m '<msg>' -b '$upstream' -h '$branch'"
$msg = "Update $app to version $version`n`n"
$msg += "Hello lovely humans,`n"
$msg += "a new version of [$app]($homepage) is available.`n"
$msg += "<table>"
$msg += "<tr><th align=left>State</th><td>Update :rocket:</td></tr>"
$msg += "<tr><th align=left>New version</td><td>$version</td></tr>"
$msg += "</table>"
hub pull-request -m "$msg" -b '$upstream' -h '$branch'
if($LASTEXITCODE -gt 0) {
Write-Host -f DarkRed "Pull Request failed! (hub pull-request -m 'Update $app to version $version' -b '$upstream' -h '$branch')"
execute "hub reset"
exit 1
}
}
Write-Host 'Updating ...' -ForegroundColor DarkCyan
if ($Push) {
execute "hub pull origin $OriginBranch"
execute "hub checkout $OriginBranch"
Write-Host -f DarkCyan "Updating ..."
if($push -eq $true) {
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
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" * -update -dir $dir
hub diff --name-only | ForEach-Object {
hub diff --name-only | % {
$manifest = $_
if (!$manifest.EndsWith('.json')) {
if(!$manifest.EndsWith(".json")) {
return
}
$app = ([System.IO.Path]::GetFileNameWithoutExtension($manifest))
$json = parse_json $manifest
if (!$json.version) {
error "Invalid manifest: $manifest ..."
if(!$json.version) {
Write-Host -f Red "Invalid manifest: $manifest ..."
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'"
} else {
Write-Host "Skipping $app because only LF/CRLF changes were detected ..." -ForegroundColor Yellow
}
if($push -eq $true) {
Write-Host -f DarkCyan "Creating update $app ($version) ..."
execute "hub add $manifest"
execute "hub commit -m 'Update $app to version $version'"
} 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"
if($push -eq $true) {
Write-Host -f DarkCyan "Pushing updates ..."
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 -f DarkCyan "Returning to master branch and removing unstaged files ..."
execute "hub checkout -f master"
}
execute 'hub reset --hard'
execute "hub reset"

View File

@@ -1,190 +0,0 @@
<#
.SYNOPSIS
Check if ALL urls inside manifest have correct hashes.
.PARAMETER App
Manifest to be checked.
Wildcard is supported.
.PARAMETER Dir
Where to search for manifest(s).
.PARAMETER Update
When there are mismatched hashes, manifest will be updated.
.PARAMETER ForceUpdate
Manifest will be updated all the time. Not only when there are mismatched hashes.
.PARAMETER SkipCorrect
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.
.EXAMPLE
PS BUCKETROOT> .\bin\checkhashes.ps1
Check all manifests for hash mismatch.
.EXAMPLE
PS BUCKETROOT> .\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!"
} else {
$true
}
})]
[String] $Dir,
[Switch] $Update,
[Switch] $ForceUpdate,
[Switch] $SkipCorrect,
[Alias('k')]
[Switch] $UseCache
)
. "$PSScriptRoot\..\lib\core.ps1"
. "$PSScriptRoot\..\lib\manifest.ps1"
. "$PSScriptRoot\..\lib\buckets.ps1"
. "$PSScriptRoot\..\lib\autoupdate.ps1"
. "$PSScriptRoot\..\lib\json.ps1"
. "$PSScriptRoot\..\lib\versions.ps1"
. "$PSScriptRoot\..\lib\install.ps1"
$Dir = Convert-Path $Dir
if ($ForceUpdate) { $Update = $true }
# Cleanup
if (!$UseCache) { Remove-Item "$cachedir\*HASH_CHECK*" -Force }
function err ([String] $name, [String[]] $message) {
Write-Host "$name`: " -ForegroundColor Red -NoNewline
Write-Host ($message -join "`r`n") -ForegroundColor Red
}
$MANIFESTS = @()
foreach ($single in Get-ChildItem $Dir -Filter "$App.json" -Recurse) {
$name = $single.BaseName
$file = $single.FullName
$manifest = parse_json $file
# Skip nighly manifests, since their hash validation is skipped
if ($manifest.version -eq 'nightly') { continue }
$urls = @()
$hashes = @()
if ($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
}
# Number of URLS and Hashes is different
if ($urls.Length -ne $hashes.Length) {
err $name 'URLS and hashes count mismatch.'
continue
}
$MANIFESTS += @{
app = $name
file = $file
manifest = $manifest
urls = $urls
hashes = $hashes
}
}
# clear any existing events
Get-Event | ForEach-Object { Remove-Event $_.SourceIdentifier }
foreach ($current in $MANIFESTS) {
$count = 0
# Array of indexes mismatched hashes.
$mismatched = @()
# Array of computed hashes
$actuals = @()
$current.urls | ForEach-Object {
$algorithm, $expected = get_hash $current.hashes[$count]
if ($UseCache) {
$version = $current.manifest.version
} else {
$version = 'HASH_CHECK'
}
Invoke-CachedDownload $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()
# Append type of algorithm to both expected and actual if it's not sha256
if ($algorithm -ne 'sha256') {
$actual_hash = "$algorithm`:$actual_hash"
$expected = "$algorithm`:$expected"
}
$actuals += $actual_hash
if ($actual_hash -ne $expected) {
$mismatched += $count
}
$count++
}
if ($mismatched.Length -eq 0 ) {
if (!$SkipCorrect) {
Write-Host "$($current.app): " -NoNewline
Write-Host 'OK' -ForegroundColor Green
}
} else {
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[$_])"
if (Test-Path $file) {
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
}
}
if ($Update) {
if ($current.manifest.url -and $current.manifest.hash) {
$current.manifest.hash = $actuals
} else {
$platforms = ($current.manifest.architecture | Get-Member -MemberType NoteProperty).Name
# 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
$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)]
}
}
Write-Host "Writing updated $($current.app) manifest" -ForegroundColor DarkGreen
$current.manifest = $current.manifest | ConvertToPrettyJson
$path = Convert-Path $current.file
[System.IO.File]::WriteAllLines($path, $current.manifest)
}
}

View File

@@ -1,141 +1,115 @@
<#
.SYNOPSIS
List manifests which do not have valid URLs.
.PARAMETER App
Manifest name to search.
Placeholder is supported.
.PARAMETER Dir
Where to search for manifest(s).
.PARAMETER Timeout
How long (seconds) the request can be pending before it times out.
.PARAMETER SkipValid
Manifests will all valid URLs will not be shown.
#>
# list manifests which do not specify a checkver regex
param(
[String] $App = '*',
[Parameter(Mandatory = $true)]
[ValidateScript( {
if (!(Test-Path $_ -Type Container)) {
throw "$_ is not a directory!"
} else {
$true
}
})]
[String] $Dir,
[Int] $Timeout = 5,
[Switch] $SkipValid
[String]$app,
[String]$dir,
[Int]$timeout = 5
)
. "$PSScriptRoot\..\lib\core.ps1"
. "$PSScriptRoot\..\lib\manifest.ps1"
. "$PSScriptRoot\..\lib\install.ps1"
if(!$dir) { $dir = "$psscriptroot\..\bucket" }
$dir = resolve-path $dir
$Dir = Convert-Path $Dir
$Queue = @()
$search = "*"
if($app) { $search = $app }
Get-ChildItem $Dir -Filter "$App.json" -Recurse | ForEach-Object {
$manifest = parse_json $_.FullName
$Queue += , @($_.BaseName, $manifest)
. "$psscriptroot\..\lib\core.ps1"
. "$psscriptroot\..\lib\manifest.ps1"
. "$psscriptroot\..\lib\install.ps1"
if(!$dir) { $dir = "$psscriptroot\..\bucket" }
$dir = resolve-path $dir
# get apps to check
$queue = @()
gci $dir "$search.json" | % {
$manifest = parse_json "$dir\$_"
$queue += ,@($_, $manifest)
}
Write-Host '[' -NoNewLine
Write-Host 'U' -NoNewLine -ForegroundColor Cyan
Write-Host ']RLs'
Write-Host ' | [' -NoNewLine
Write-Host 'O' -NoNewLine -ForegroundColor Green
Write-Host ']kay'
Write-Host ' | | [' -NoNewLine
Write-Host 'F' -NoNewLine -ForegroundColor Red
Write-Host ']ailed'
Write-Host ' | | |'
$original = use_any_https_protocol
function test_dl([String] $url, $cookies) {
# Trim renaming suffix, prevent getting 40x response
$url = ($url -split '#/')[0]
write-host "[" -nonewline
write-host -f cyan "U" -nonewline
write-host "]RLs"
write-host " | [" -nonewline
write-host -f green "O" -nonewline
write-host "]kay"
write-host " | | [" -nonewline
write-host -f red "F" -nonewline
write-host "]ailed"
write-host " | | |"
$wreq = [Net.WebRequest]::Create($url)
$wreq.Timeout = $Timeout * 1000
if ($wreq -is [Net.HttpWebRequest]) {
$wreq.UserAgent = Get-UserAgent
$wreq.Referer = strip_filename $url
if ($cookies) {
$wreq.Headers.Add('Cookie', (cookie_header $cookies))
function test_dl($url, $cookies) {
$wreq = [net.webrequest]::create($url)
$wreq.timeout = $timeout * 1000
if($wreq -is [net.httpwebrequest]) {
$wreq.useragent = 'Scoop/1.0'
$wreq.referer = strip_filename $url
if($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()
return $url, $wres.StatusCode, $null
$wres = $wreq.getresponse()
return $url, $wres.statuscode, $null
} catch {
$e = $_.Exception
if ($e.InnerException) { $e = $e.InnerException }
return $url, 'Error', $e.Message
$e = $_.exception
if($e.innerexception) { $e = $e.innerexception }
return $url, "Error", $e.message
} finally {
if ($null -ne $wres -and $wres -isnot [Net.FtpWebResponse]) {
$wres.Close()
if($wres -ne $null -and $wres -isnot [net.ftpwebresponse]) {
$wres.close()
}
}
}
foreach ($man in $Queue) {
$name, $manifest = $man
$queue | % {
$name, $manifest = $_
$urls = @()
$ok = 0
$failed = 0
$errors = @()
if ($manifest.url) {
$manifest.url | ForEach-Object { $urls += $_ }
if($manifest.url) {
$manifest.url | % { $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" | % { $urls += $_ }
url $manifest "32bit" | % { $urls += $_ }
}
$urls | ForEach-Object {
$urls | % {
$url, $status, $msg = test_dl $_ $manifest.cookie
if ($msg) { $errors += "$msg ($url)" }
if ($status -eq 'OK' -or $status -eq 'OpeningData') { $ok += 1 } else { $failed += 1 }
if($msg) { $errors += "$msg ($url)" }
if($status -eq "OK" -or $status -eq "OpeningData") { $ok += 1 } else { $failed += 1 }
}
if (($ok -eq $urls.Length) -and $SkipValid) { continue }
write-host "[" -nonewline
write-host -f cyan -nonewline $urls.length
write-host "]" -nonewline
# URLS
Write-Host '[' -NoNewLine
Write-Host $urls.Length -NoNewLine -ForegroundColor Cyan
Write-Host ']' -NoNewLine
# Okay
Write-Host '[' -NoNewLine
if ($ok -eq $urls.Length) {
Write-Host $ok -NoNewLine -ForegroundColor Green
} elseif ($ok -eq 0) {
Write-Host $ok -NoNewLine -ForegroundColor Red
write-host "[" -nonewline
if($ok -eq $urls.length) {
write-host -f green -nonewline $ok
} elseif($ok -eq 0) {
write-host -f red -nonewline $ok
} else {
Write-Host $ok -NoNewLine -ForegroundColor Yellow
write-host -f yellow -nonewline $ok
}
Write-Host ']' -NoNewLine
write-host "]" -nonewline
# Failed
Write-Host '[' -NoNewLine
if ($failed -eq 0) {
Write-Host $failed -NoNewLine -ForegroundColor Green
write-host "[" -nonewline
if($failed -eq 0) {
write-host -f green -nonewline $failed
} else {
Write-Host $failed -NoNewLine -ForegroundColor Red
write-host -f red -nonewline $failed
}
Write-Host '] ' -NoNewLine
Write-Host $name
write-host "] " -nonewline
write-host (strip_ext $name)
$errors | ForEach-Object {
Write-Host " > $_" -ForegroundColor DarkRed
$errors | % {
write-host -f darkred " > $_"
}
}
set_https_protocols $original

View File

@@ -1,420 +1,217 @@
<#
.SYNOPSIS
Check manifest for a newer version.
.DESCRIPTION
Checks websites for newer versions using an (optional) regular expression defined in the manifest.
.PARAMETER App
Manifest name to search.
Placeholders are supported.
.PARAMETER Dir
Where to search for manifest(s).
.PARAMETER Update
Update given manifest
.PARAMETER ForceUpdate
Update given manifest(s) even when there is no new version.
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
Check all manifest inside default directory.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 -SkipUpdated
Check all manifest inside default directory (list only outdated manifests).
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 -Update
Check all manifests and update All outdated manifests.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 APP
Check manifest APP.json inside default directory.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 APP -Update
Check manifest APP.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.
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 APP -Update -Version VER
Check manifest APP.json and update, using version VER
.EXAMPLE
PS BUCKETROOT > .\bin\checkver.ps1 APP DIR
Check manifest APP.json inside ./DIR directory.
.EXAMPLE
PS BUCKETROOT > .\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.
#>
# checks websites for newer versions using an (optional) regular expression defined in the manifest
# use $dir to specify a manifest directory to check from, otherwise ./bucket is used
param(
[String] $App = '*',
[ValidateScript( {
if (!(Test-Path $_ -Type Container)) {
throw "$_ is not a directory!"
} else {
$true
}
})]
[String] $Dir,
[Switch] $Update,
[Switch] $ForceUpdate,
[Switch] $SkipUpdated,
[String] $Version = '',
[Switch] $ThrowError
[String]$app,
[String]$dir,
[Switch]$update = $false,
[Switch]$forceUpdate = $false
)
. "$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
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!"
if (!$app -and $update) {
# While developing the feature we only allow specific updates
Write-Host "[ERROR] AUTOUPDATE CAN ONLY BE USED WITH A APP SPECIFIED" -f DarkRed
exit
}
$GitHubToken = Get-GitHubToken
. "$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"
# don't use $Version with $App = '*'
if ($App -eq '*' -and $Version -ne '') {
throw "Don't use '-Version' with '-App *'!"
}
if(!$dir) { $dir = "$psscriptroot\..\bucket" }
$dir = resolve-path $dir
$search = "*"
if($app) { $search = $app }
# get apps to check
$Queue = @()
$json = ''
$files | ForEach-Object {
$file = $_.FullName
$json = parse_json $file
if ($json.checkver) {
$Queue += , @($_.BaseName, $json, $file)
$queue = @()
gci $dir "$search.json" | % {
$json = parse_json "$dir\$_"
if($json.checkver) {
$queue += ,@($_, $json)
}
}
# clear any existing events
Get-Event | Remove-Event
Get-EventSubscriber | Unregister-Event
get-event | % {
remove-event $_.sourceidentifier
}
$original = use_any_https_protocol
# start all downloads
$Queue | ForEach-Object {
$name, $json, $file = $_
$queue | % {
$wc = new-object net.webclient
$wc.Headers.Add("user-agent", "Scoop/1.0 (+http://scoop.sh/) (Windows NT 6.1; WOW64)")
register-objectevent $wc downloadstringcompleted -ea stop | out-null
$substitutions = Get-VersionSubstitution $json.version # 'autoupdate.ps1'
$name, $json = $_
$wc = New-Object Net.Webclient
if ($json.checkver.useragent) {
$wc.Headers.Add('User-Agent', (substitute $json.checkver.useragent $substitutions))
} else {
$wc.Headers.Add('User-Agent', (Get-UserAgent))
}
Register-ObjectEvent $wc downloadDataCompleted -ErrorAction Stop | Out-Null
$githubRegex = "\/releases\/tag\/(?:v)?([\d.]+)"
# Not Specified
if ($json.checkver.url) {
$url = $json.homepage
if($json.checkver.url) {
$url = $json.checkver.url
} else {
$url = $json.homepage
}
$regex = ""
$jsonpath = ""
if ($json.checkver.re) {
$regex = $json.checkver.re
} elseif ($json.checkver.regex) {
$regex = $json.checkver.regex
} else {
$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"
if ($json.checkver -eq "github") {
if (!$json.homepage.StartsWith("https://github.com/")) {
write-host "ERROR: $name checkver expects the homepage to be a github repository" -f DarkYellow
}
$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 -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.re) {
$regex = $json.checkver.re
}
if ($json.checkver.jp) {
if($json.checkver.jp) {
$jsonpath = $json.checkver.jp
}
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`
$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")
$state = new-object psobject @{
app = (strip_ext $name);
url = $url;
regex = $regex;
json = $json;
jsonpath = $jsonpath;
}
$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
}
}
$wc.Headers.Add('Referer', (strip_filename $url))
$wc.DownloadDataAsync($url, $state)
}
function next($er) {
Write-Host "$App`: " -NoNewline
Write-Host $er -ForegroundColor DarkRed
$wc.headers.add('Referer', (strip_filename $url))
$wc.downloadstringasync($url, $state)
}
# wait for all to complete
$in_progress = $Queue.length
while ($in_progress -gt 0) {
$ev = Wait-Event
Remove-Event $ev.SourceIdentifier
$in_progress = $queue.length
while($in_progress -gt 0) {
$ev = wait-event
remove-event $ev.sourceidentifier
$in_progress--
$state = $ev.SourceEventArgs.UserState
$result = $ev.SourceEventArgs.Result
$state = $ev.sourceeventargs.userstate
$app = $state.app
$file = $state.file
$json = $state.json
$url = $state.url
$expected_ver = $json.version
$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 = ""
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
}
$err = $ev.sourceeventargs.error
$page = $ev.sourceeventargs.result
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'
}
write-host "$app`: " -nonewline
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
}
}
# 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
# version hasn't changed (step over if forced update)
if ($ver -eq $expected_ver -and !$ForceUpdate) {
Write-Host $ver -ForegroundColor DarkGreen
if($err) {
write-host -f darkred $err.message
write-host -f darkred "URL $url is not valid"
continue
}
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
if ($json.autoupdate -and $update_available) {
Write-Host ' autoupdate available' -ForegroundColor Cyan
} else {
Write-Host ''
if($jsonpath -and $regexp) {
write-host -f darkred "'jp' and 're' shouldn't be used together"
continue
}
# forcing an update implies updating, right?
if ($ForceUpdate) { $Update = $true }
if ($Update -and $json.autoupdate) {
if ($ForceUpdate) {
Write-Host 'Forcing autoupdate!' -ForegroundColor DarkMagenta
if($jsonpath) {
$ver = json_path ($page | ConvertFrom-Json -ea stop) $jsonpath
if(!$ver) {
write-host -f darkred "couldn't find '$jsonpath' in $url"
continue
}
try {
Invoke-AutoUpdate $app $file $json $ver $matchesHashtable # 'autoupdate.ps1'
} catch {
if ($ThrowError) {
throw $_
} else {
error $_.Exception.Message
}
if($regexp) {
if($page -match $regexp) {
$ver = $matches[1]
if(!$ver) {
$ver = $matches['version']
}
} else {
write-host -f darkred "couldn't match '$regexp' in $url"
continue
}
}
if(!$ver) {
write-host -f darkred "couldn't find new version in $url"
continue
}
if($ver -eq $expected_ver) {
write-host "$ver" -f darkgreen
if ($forceUpdate -and $json.autoupdate) {
Write-Host "Forcing autoupdate!" -f DarkMagenta
try {
autoupdate $app $dir $json $ver $matches
} catch {
write-host -f darkred $_.exception.message
}
}
} else {
write-host "$ver" -f darkred -nonewline
write-host " (scoop version is $expected_ver)" -NoNewline
$update_available = (compare_versions $expected_ver $ver) -eq -1
if ($json.autoupdate -and $update_available) {
Write-Host " autoupdate available" -f Cyan
} else {
Write-Host ""
}
if ($update -and $update_available -and $json.autoupdate) {
try {
autoupdate $app $dir $json $ver $matches
} catch {
write-host -f darkred $_.exception.message
}
}
}
}
set_https_protocols $original
<#
write-host "checking $(strip_ext (fname $_))..." -nonewline
$expected_ver = $json.version
$url = $json.checkver.url
if(!$url) { $url = $json.homepage }
$regexp = $json.checkver.re
if(!$regexp) { $regexp = $json.checkver }
$page = $wc.downloadstring($url)
if($page -match $regexp) {
$ver = $matches[1]
if($ver -eq $expected_ver) {
write-host "$ver" -f darkgreen
} else {
write-host "$ver" -f darkred -nonewline
write-host " (scoop version is $expected_ver)"
}
} else {
write-host "couldn't match '$regexp' in $url" -f darkred
}
#>

View File

@@ -1,64 +1,50 @@
<#
.SYNOPSIS
Search for application description on homepage.
.PARAMETER App
Manifest name to search.
Placeholders are supported.
.PARAMETER Dir
Where to search for manifest(s).
#>
param(
[String] $App = '*',
[Parameter(Mandatory = $true)]
[ValidateScript( {
if (!(Test-Path $_ -Type Container)) {
throw "$_ is not a directory!"
} else {
$true
}
})]
[String] $Dir
)
param($app, $dir)
. "$PSScriptRoot\..\lib\core.ps1"
. "$PSScriptRoot\..\lib\manifest.ps1"
. "$PSScriptRoot\..\lib\description.ps1"
. "$psscriptroot\..\lib\core.ps1"
. "$psscriptroot\..\lib\manifest.ps1"
. "$psscriptroot\..\lib\description.ps1"
$Dir = Convert-Path $Dir
$Queue = @()
if(!$dir) {
$dir = "$psscriptroot\..\bucket"
}
$dir = resolve-path $dir
Get-ChildItem $Dir -Filter "$App.json" -Recurse | ForEach-Object {
$manifest = parse_json $_.FullName
$Queue += , @($_.BaseName, $manifest)
$search = "*"
if($app) { $search = $app }
# get apps to check
$apps = @()
gci $dir "$search.json" | % {
$json = parse_json "$dir\$_"
$apps += ,@(($_ -replace '\.json$', ''), $json)
}
$Queue | ForEach-Object {
$name, $manifest = $_
Write-Host "$name`: " -NoNewline
$apps |% {
$app, $json = $_
write-host "$app`: " -nonewline
if (!$manifest.homepage) {
Write-Host "`nNo homepage set." -ForegroundColor Red
if(!$json.homepage) {
write-host "`nNo homepage set." -fore red
return
}
# get description from homepage
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 = (new-object net.webclient).downloadstring($json.homepage)
} catch {
Write-Host "`n$($_.Exception.Message)" -ForegroundColor Red
write-host "`n$($_.exception.message)" -fore red
return
}
$description, $descr_method = find_description $manifest.homepage $home_html
if (!$description) {
Write-Host "`nDescription not found ($($manifest.homepage))" -ForegroundColor Red
$description, $descr_method = find_description $json.homepage $home_html
if(!$description) {
write-host -fore red "`nDescription not found ($($json.homepage))"
return
}
$description = clean_description $description
Write-Host "(found by $descr_method)"
Write-Host " ""$description""" -ForegroundColor Green
write-host "(found by $descr_method)"
write-host " ""$description""" -fore green
}

View File

@@ -1,44 +1,31 @@
<#
.SYNOPSIS
Format manifest.
.PARAMETER App
Manifest to format.
# reformat manifest json
param($path)
Wildcards are supported.
.PARAMETER Dir
Where to search for manifest(s).
.EXAMPLE
PS BUCKETROOT> .\bin\formatjson.ps1
Format all manifests inside bucket directory.
.EXAMPLE
PS BUCKETROOT> .\bin\formatjson.ps1 7zip
Format manifest '7zip' inside bucket directory.
#>
param(
[String] $App = '*',
[Parameter(Mandatory = $true)]
[ValidateScript( {
if (!(Test-Path $_ -Type Container)) {
throw "$_ is not a directory!"
} else {
$true
}
})]
[String] $Dir
)
. "$psscriptroot\..\lib\core.ps1"
. "$psscriptroot\..\lib\manifest.ps1"
. "$psscriptroot\..\lib\json.ps1"
. "$PSScriptRoot\..\lib\core.ps1"
. "$PSScriptRoot\..\lib\manifest.ps1"
. "$PSScriptRoot\..\lib\json.ps1"
if(!$path) { $path = "$psscriptroot\..\bucket" }
$path = resolve-path $path
$Dir = Convert-Path $Dir
$dir = ""
$type = Get-Item $path
if ($type -is [System.IO.DirectoryInfo]) {
$dir = "$path\"
$files = Get-ChildItem $path "*.json"
} elseif ($type -is [System.IO.FileInfo]) {
$files = @($path)
} else {
Write-Error "unknown item"
exit
}
Get-ChildItem $Dir -Filter "$App.json" -Recurse | ForEach-Object {
$file = $_.FullName
$files | % {
# 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)
$json = $json -replace "`t",' '
[System.IO.File]::WriteAllLines("$dir$_", $json)
}

View File

@@ -1,2 +1,46 @@
#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')
$erroractionpreference='stop' # quit if anything goes wrong
# show notification to change execution policy:
if((get-executionpolicy) -gt 'RemoteSigned') {
"PowerShell requires an execution policy of 'RemoteSigned' to run Scoop."
"To make this change please run:"
"'Set-ExecutionPolicy RemoteSigned -scope CurrentUser'"
break
}
# get core functions
$core_url = 'https://raw.github.com/lukesampson/scoop/master/lib/core.ps1'
echo 'Initializing...'
iex (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"
echo 'Downloading...'
dl $zipurl $zipfile
'Extracting...'
unzip $zipfile "$dir\_tmp"
cp "$dir\_tmp\scoop-master\*" $dir -r -force
rm "$dir\_tmp" -r -force
rm $zipfile
echo 'Creating shim...'
shim "$dir\bin\scoop.ps1" $false
ensure_robocopy_in_path
ensure_scoop_in_path
success 'Scoop was installed successfully!'
echo "Type 'scoop help' for instructions."

View File

@@ -1,52 +1,36 @@
<#
.SYNOPSIS
Check if manifest contains checkver and autoupdate property.
.PARAMETER App
Manifest name.
Wirldcard is supported.
.PARAMETER Dir
Location of manifests.
.PARAMETER SkipSupported
Manifests with checkver and autoupdate will not be presented.
#>
# list manifests which do not specify a checkver regex
param(
[String] $App = '*',
[Parameter(Mandatory = $true)]
[ValidateScript( {
if (!(Test-Path $_ -Type Container)) {
throw "$_ is not a directory!"
} else {
$true
}
})]
[String] $Dir,
[Switch] $SkipSupported
[String]$dir,
[Switch]$skipSupported = $false
)
. "$PSScriptRoot\..\lib\core.ps1"
. "$PSScriptRoot\..\lib\manifest.ps1"
. "$psscriptroot\..\lib\core.ps1"
. "$psscriptroot\..\lib\manifest.ps1"
$Dir = Convert-Path $Dir
if(!$dir) { $dir = "$psscriptroot\..\bucket" }
$dir = resolve-path $dir
Write-Host '[' -NoNewLine
Write-Host 'C' -NoNewLine -ForegroundColor Green
Write-Host ']heckver'
Write-Host ' | [' -NoNewLine
Write-Host 'A' -NoNewLine -ForegroundColor Cyan
Write-Host ']utoupdate'
Write-Host ' | |'
write-host "[" -nonewline
write-host -f green "C" -nonewline
write-host "]heckver"
write-host " | [" -nonewline
write-host -f cyan "A" -nonewline
write-host "]utoupdate"
write-host " | |"
Get-ChildItem $Dir -Filter "$App.json" -Recurse | ForEach-Object {
$json = parse_json $_.FullName
gci $dir "*.json" | % {
$json = parse_json "$dir\$_"
if ($SkipSupported -and $json.checkver -and $json.autoupdate) { return }
if ($skipSupported -and $json.checkver -and $json.autoupdate) {
return
}
Write-Host '[' -NoNewLine
Write-Host $(if ($json.checkver) { 'C' } else { ' ' }) -NoNewLine -ForegroundColor Green
Write-Host ']' -NoNewLine
write-host "[" -nonewline
write-host -f green -nonewline $( If ($json.checkver) {"C"} Else {" "} )
write-host "]" -nonewline
Write-Host '[' -NoNewLine
Write-Host $(if ($json.autoupdate) { 'A' } else { ' ' }) -NoNewLine -ForegroundColor Cyan
Write-Host '] ' -NoNewLine
Write-Host $_.BaseName
write-host "[" -nonewline
write-host -f cyan -nonewline $( If ($json.autoupdate) {"A"} Else {" "} )
write-host "] " -nonewline
write-host (strip_ext $_)
}

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
@@ -10,9 +10,10 @@ if("$src" -eq "$dest") { abort "$(strip_ext $myinvocation.mycommand.name) is for
'copying files...'
$output = robocopy $src $dest /mir /njh /njs /nfl /ndl /xd .git tmp /xf .DS_Store last_updated
$output | Where-Object { $_ -ne "" }
$output | ? { $_ -ne "" }
Write-Output 'creating shim...'
echo 'creating shim...'
shim "$dest\bin\scoop.ps1" $false
ensure_scoop_in_path
success 'scoop was refreshed!'

View File

@@ -1,53 +1,15 @@
#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\core.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)"
}
Write-Host ''
$commands = commands
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
}
}
if (@($null, '-h', '--help', '/?') -contains $cmd) { 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
echo "Uninstalling '$app'"
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
rm -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
rm -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) {
installed_apps $true | ForEach-Object { # global apps
if($global) {
installed_apps $true | % { # global apps
do_uninstall $_ $true
}
}
installed_apps $false | ForEach-Object { # local apps
installed_apps $false | % { # 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."

28
bucket/7zip.json Normal file
View File

@@ -0,0 +1,28 @@
{
"homepage": "http://www.7-zip.org/",
"license": "http://www.7-zip.org/license.txt",
"version": "16.04",
"architecture": {
"64bit": {
"url": "http://7-zip.org/a/7z1604-x64.msi",
"hash": "b3885b2f090f1e9b5cf2b9f802b07fe88e472d70d60732db9f830209ac296067"
},
"32bit": {
"url": "http://7-zip.org/a/7z1604.msi",
"hash": "d9b62c0ed0eb48d2df86d8b83394048414a2a4e1d64a50adb9abcff643471d20"
}
},
"extract_dir": "Files/7-Zip",
"bin": "7z.exe",
"checkver": "Download 7-zip ([^\\ ]+)",
"autoupdate": {
"architecture": {
"64bit": {
"url": "http://7-zip.org/a/7z$cleanVersion-x64.msi"
},
"32bit": {
"url": "http://7-zip.org/a/7z$cleanVersion.msi"
}
}
}
}

17
bucket/ack.json Normal file
View File

@@ -0,0 +1,17 @@
{
"homepage": "http://beyondgrep.com/",
"license": "http://opensource.org/licenses/Artistic-2.0",
"version": "2.18",
"url": "http://beyondgrep.com/ack-2.18-single-file#/ack-single-file",
"hash": "6e41057c8f50f661d800099471f769209480efa53b8a886969d7ec6db60a2208",
"bin": "ack.bat",
"depends": "perl",
"pre_install": "Set-Content -Value '@perl.exe %~dp0ack-single-file %*' -Path $dir\\ack.bat",
"checkver": {
"url": "http://beyondgrep.com/install/",
"re": "The current stable version of ack is version ([\\d.]+),"
},
"autoupdate": {
"url": "http://beyondgrep.com/ack-$version-single-file#/ack-single-file"
}
}

10
bucket/acmesharp.json Normal file
View File

@@ -0,0 +1,10 @@
{
"version": "0.8.1.0",
"homepage": "https://github.com/ebekker/ACMESharp",
"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"
}
}

17
bucket/adb.json Normal file
View File

@@ -0,0 +1,17 @@
{
"version": "26.0.0",
"homepage": "https://developer.android.com/studio/releases/platform-tools.html",
"url": "https://dl.google.com/android/repository/platform-tools_r26.0.0-windows.zip",
"hash": "48da3dac63b90756e1af1b489a3fb0fc81b956fe58791b260b7b18188c6cc5a0",
"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"
}
}

9
bucket/ag.json Normal file
View File

@@ -0,0 +1,9 @@
{
"homepage": "http://geoff.greer.fm/ag/",
"license": "Apache 2.0",
"version": "0.29.1",
"url": "https://kjkpub.s3.amazonaws.com/software/the_silver_searcher/rel/0.29.1-1641/ag.zip",
"hash": "0f2643b925df66a56df82d419262c88c076ba257ab3a57c77291fce7b4479530",
"bin": "ag.exe",
"checkver": "the_silver_searcher-([\\d.]+).tar.gz"
}

25
bucket/allure.json Normal file
View File

@@ -0,0 +1,25 @@
{
"homepage": "https://github.com/allure-framework/allure2",
"version": "2.1.0",
"license": "https://github.com/allure-framework/allure2/blob/master/LICENSE",
"url": "https://dl.bintray.com/qameta/generic/io/qameta/allure/allure/2.1.0/allure-2.1.0.zip",
"hash": "9a3ec0e52bacb7fe7f38fa720f01e2fde4784f204de6457f2896cd987d399c22",
"extract_dir": "allure-2.1.0",
"bin": "bin\\allure.bat",
"env_set": {
"ALLURE_HOME": "$dir"
},
"persist": [
"config",
"plugins"
],
"checkver": "github",
"autoupdate": {
"url": "https://dl.bintray.com/qameta/generic/io/qameta/allure/allure/$version/allure-$version.zip",
"extract_dir": "allure-$version",
"hash": {
"mode": "extract",
"url": "$url.sha256"
}
}
}

29
bucket/ant.json Normal file
View File

@@ -0,0 +1,29 @@
{
"homepage": "http://ant.apache.org/",
"version": "1.10.1",
"license": "Apache 2.0",
"url": "http://www-us.apache.org/dist/ant/binaries/apache-ant-1.10.1-bin.zip",
"hash": "sha512:cf85d2b52ac379eaf83ae98544fd0317833a57811764cb1f5082f1ef046ba4f069bddf980f594ca00a93e1b37b4e646fdc8885a37651c5c9e8fc5d2b595256f6",
"extract_dir": "apache-ant-1.10.1",
"env_add_path": "bin",
"env_set": {
"ANT_HOME": "$dir"
},
"suggest": {
"JDK": [
"extras/oraclejdk",
"openjdk"
]
},
"checkver": {
"url": "https://ant.apache.org/bindownload.cgi",
"re": "Currently, Apache Ant (?:[\\d.]+ and )?([\\d.]+) (?:is|are) the best"
},
"autoupdate": {
"url": "http://www-us.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",
"version": "2.4.25",
"license": "Apache 2.0",
"architecture": {
"64bit": {
"url": "https://www.apachelounge.com/download/VC14/binaries/httpd-2.4.25-win64-VC14.zip",
"hash": "E03A43B53F00320DE27D9B7046F5E317D06268795592EF32353CE857D7AA4D76"
},
"32bit": {
"url": "https://www.apachelounge.com/download/VC14/binaries/httpd-2.4.25-win32-VC14.zip",
"hash": "7773F8B02E367D4F7853292DC2B4FCB4085F509C85D9851030CC1F3C453FD4D2"
}
},
"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://www.apachelounge.com/download/",
"re": "Apache ([\\d.]+) Win32"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://www.apachelounge.com/download/VC14/binaries/httpd-$version-win64-VC14.zip"
},
"32bit": {
"url": "https://www.apachelounge.com/download/VC14/binaries/httpd-$version-win32-VC14.zip"
}
},
"hash": {
"url": "$url.txt",
"find": "SHA256-Checksum for: (?:$basename):\\s+([a-fA-F0-9]{64})"
}
}
}

30
bucket/apex.json Normal file
View File

@@ -0,0 +1,30 @@
{
"homepage": "http://apex.run/",
"license": "https://github.com/apex/apex/blob/master/LICENSE",
"version": "0.13.1",
"architecture": {
"64bit": {
"url": "https://github.com/apex/apex/releases/download/v0.13.1/apex_windows_amd64.exe#/apex.exe",
"hash": "b7274c8eec1f367604c92204b4ddafa93b06b71561b1421c3b5086c7bea1b1b7"
},
"32bit": {
"url": "https://github.com/apex/apex/releases/download/v0.13.1/apex_windows_386.exe#/apex.exe",
"hash": "b7f866b5056cd6505a757af15e2004ff119d0e908fe1e88f64ccf2ec19ac0266"
}
},
"extract_dir": "apex",
"bin": "apex.exe",
"checkver": {
"github": "https://github.com/apex/apex"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/apex/apex/releases/download/v$version/apex_windows_amd64.exe#/apex.exe"
},
"32bit": {
"url": "https://github.com/apex/apex/releases/download/v$version/apex_windows_386.exe#/apex.exe"
}
}
}
}

12
bucket/apngasm.json Normal file
View File

@@ -0,0 +1,12 @@
{
"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"
]
]
}

31
bucket/aria2.json Normal file
View File

@@ -0,0 +1,31 @@
{
"homepage": "https://aria2.github.io/",
"license": "GPL2 or later",
"version": "1.32.0",
"architecture": {
"32bit": {
"url": "https://github.com/aria2/aria2/releases/download/release-1.32.0/aria2-1.32.0-win-32bit-build1.zip",
"hash": "39ae48b561a5e72576592b5776ea57fb04cbf43f67fad1433b0e90d54d251dc2",
"extract_dir": "aria2-1.32.0-win-32bit-build1"
},
"64bit": {
"url": "https://github.com/aria2/aria2/releases/download/release-1.32.0/aria2-1.32.0-win-64bit-build1.zip",
"hash": "d42f733f18e400bbb7684feeec0f3a487ee73d248435404b4215166513ecb693",
"extract_dir": "aria2-1.32.0-win-64bit-build1"
}
},
"bin": "aria2c.exe",
"checkver": "<p>Download <a href=\"https://github.com/aria2/aria2[^\"]+\">version ([^<]+)</a>",
"autoupdate": {
"architecture": {
"32bit": {
"url": "https://github.com/aria2/aria2/releases/download/release-$version/aria2-$version-win-32bit-build1.zip",
"extract_dir": "aria2-$version-win-32bit-build1"
},
"64bit": {
"url": "https://github.com/aria2/aria2/releases/download/release-$version/aria2-$version-win-64bit-build1.zip",
"extract_dir": "aria2-$version-win-64bit-build1"
}
}
}
}

33
bucket/autoit.json Normal file
View File

@@ -0,0 +1,33 @@
{
"homepage": "https://www.autoitscript.com/site/autoit/",
"license": "https://www.autoitscript.com/autoit3/docs/license.htm",
"version": "3.3.14.2",
"url": "https://www.autoitscript.com/files/autoit3/autoit-v3.zip",
"hash": "44a2ba6b723cbc5eec389ea07ac43d696aeff01f0f1a62788aed1d1ce992a886",
"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": "Latest version:</strong> v([\\d.]+)"
},
"autoupdate": {
"url": "https://www.autoitscript.com/files/autoit3/autoit-v3.zip"
}
}

7
bucket/axel.json Normal file
View File

@@ -0,0 +1,7 @@
{
"version": "2.4",
"url": "https://github.com/ghuntley/cygwin-axel/raw/master/release/axel-2.4.zip",
"homepage": "https://github.com/ghuntley/cygwin-axel/",
"hash": "3cce621da5f17ea03e4fcf51916dd4f8928759766f88b4ca5643131d2dd3fed2",
"bin": "axel.exe"
}

28
bucket/bfg.json Normal file
View File

@@ -0,0 +1,28 @@
{
"homepage": "https://rtyley.github.io/bfg-repo-cleaner/",
"license": "GPL",
"version": "1.12.15",
"url": "https://repo1.maven.org/maven2/com/madgag/bfg/1.12.15/bfg-1.12.15.jar",
"hash": "330af214a0fed320c591afc1046b0f31e8a438f290da09672973aeaa6411b09d",
"suggest": {
"JDK": [
"extras/oraclejdk",
"openjdk"
]
},
"bin": "bfg.ps1",
"env_set": {
"BFG_HOME": "$dir"
},
"pre_install": "
$exe = 'java -jar $env:BFG_HOME\\bfg-$version.jar $args'
write-output $exe | out-file -filepath $dir\\bfg.ps1
",
"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"
}
}

37
bucket/bochs.json Normal file
View File

@@ -0,0 +1,37 @@
{
"homepage": "http://bochs.sourceforge.net/",
"version": "2.6.9",
"license": "LGPL",
"architecture": {
"64bit": {
"url": "https://sourceforge.net/projects/bochs/files/bochs/2.6.9/bochs-2.6.9-win64.zip",
"hash": "01f185885794f7c6b4dab920d6c51685a44ed7c7e5205a806e54df4a61ae2cf9",
"bin": [
"bochs-win64.exe",
"bochsdbg-win64.exe"
]
},
"32bit": {
"url": "https://sourceforge.net/projects/bochs/files/bochs/2.6.9/bochs-p4-smp-2.6.9-win32.zip",
"hash": "2c01495d55cc788105165c3f9f1d68699a884fdbbf7ecbb1d0df9b9641c0c5e9",
"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://sourceforge.net/projects/bochs/files/bochs/$version/bochs-$version-win64.zip"
},
"32bit": {
"url": "https://sourceforge.net/projects/bochs/files/bochs/$version/bochs-p4-smp-$version-win32.zip"
}
}
}
}

652
bucket/busybox.json Normal file
View File

@@ -0,0 +1,652 @@
{
"homepage": "https://frippery.org/busybox",
"version": "1.26.0-FRP-756",
"license": "GPL2",
"url": "https://frippery.org/files/busybox/busybox-w32-FRP-756-g9fa1e49.exe#/busybox.exe",
"hash": "260c6e2ac8a71a12aca2decfb9475a05a64cbbd734406fa964b5ff2528d7cc85",
"bin": [
"busybox.exe",
[
"busybox.exe",
"ar",
"ar"
],
[
"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",
"catv",
"catv"
],
[
"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",
"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",
"od",
"od"
],
[
"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",
"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",
"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",
"wget",
"wget"
],
[
"busybox.exe",
"which",
"which"
],
[
"busybox.exe",
"whoami",
"whoami"
],
[
"busybox.exe",
"whois",
"whois"
],
[
"busybox.exe",
"xargs",
"xargs"
],
[
"busybox.exe",
"xz",
"xz"
],
[
"busybox.exe",
"xzcat",
"xzcat"
],
[
"busybox.exe",
"yes",
"yes"
],
[
"busybox.exe",
"zcat",
"zcat"
]
],
"post_install": "
if(!(test-path ~/.profile)) {
'creating ~/.profile'
@\"
if [ -e ~/.bashrc ]
then
source ~/.bashrc
fi
\"@ | out-file -en oem ~/.profile
}
"
}

22
bucket/bzip2.json Normal file
View File

@@ -0,0 +1,22 @@
{
"version": "1.0.6",
"homepage": "http://www.bzip.org/",
"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": "The current version is <b>([\\d.]+)"
}

15
bucket/cacert.json Normal file
View File

@@ -0,0 +1,15 @@
{
"version": "2017-06-07",
"homepage": "https://curl.haxx.se/docs/caextract.html",
"license": "MPL 2.0",
"url": "https://curl.haxx.se/ca/cacert-2017-06-07.pem#/cacert.pem",
"hash": "e78c8ab7b4432bd466e64bb942d988f6c0ac91cd785017e465bdc96d42fe9dd0",
"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"
}
}

31
bucket/caddy.json Normal file
View File

@@ -0,0 +1,31 @@
{
"version": "0.10.3",
"homepage": "http://caddyserver.com",
"license": "https://github.com/mholt/caddy/blob/master/LICENSE.txt",
"architecture": {
"64bit": {
"url": "https://github.com/mholt/caddy/releases/download/v0.10.3/caddy_v0.10.3_windows_amd64.zip",
"hash": "28da9b257c288e819f24fb40fecf0b792fc325e274a5f1b4bbc45de20379f70b"
},
"32bit": {
"url": "https://github.com/mholt/caddy/releases/download/v0.10.3/caddy_v0.10.3_windows_386.zip",
"hash": "51d2de0ebebfa3519062772f144632de4b6d0348fcb3a394ed5a98e04ab24031"
}
},
"service": "caddy",
"bin": "caddy.exe",
"post_install": "if(!(test-path \"$persist_dir\\Caddyfile\")) { \"localhost:2015\" | Out-File -encoding \"ASCII\" \"$persist_dir\\Caddyfile\" }",
"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"
}
}
}
}

19
bucket/casperjs.json Normal file
View File

@@ -0,0 +1,19 @@
{
"version": "1.1.4",
"license": "https://github.com/n1k0/casperjs/blob/master/LICENSE.md",
"url": "https://github.com/casperjs/casperjs/archive/1.1.4.zip",
"hash": "2d98eecf417f6034394c0ec2dcefb25f47e49342801b2ed21e85b21a4dd0eddc",
"homepage": "http://casperjs.org/",
"extract_dir": "casperjs-1.1.4",
"bin": "bin\\casperjs.exe",
"notes": "Requires an installation of phantomjs 1.x
phantom19 is available in the versions bucket (scoop bucket add versions)",
"checkver": {
"github": "https://github.com/n1k0/casperjs"
},
"autoupdate": {
"url": "https://github.com/casperjs/casperjs/archive/$version.zip",
"extract_dir": "casperjs-$version"
}
}

35
bucket/cdrtools.json Normal file
View File

@@ -0,0 +1,35 @@
{
"architecture": {
"32bit": {
"extract_dir": "win32"
},
"64bit": {
"extract_dir": "win64"
}
},
"autoupdate": {
"url": "https://sourceforge.net/projects/tumagcc/files/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": "CDDL-1.0/GPL-2.0/LGPL-2.1",
"url": "https://sourceforge.net/projects/tumagcc/files/schily-cdrtools-3.01.7z",
"version": "3.01"
}

11
bucket/chromedriver.json Normal file
View File

@@ -0,0 +1,11 @@
{
"version": "2.30",
"homepage": "https://sites.google.com/a/chromium.org/chromedriver/",
"url": "https://chromedriver.storage.googleapis.com/2.30/chromedriver_win32.zip",
"hash": "c2f7acc1a49aac791a7692f0ea4a54e4f231e2c1f95428b36049882784b82a10",
"bin": "chromedriver.exe",
"checkver": "Latest Release: <a href=\"[^\"]+\">ChromeDriver ([\\d.]+)",
"autoupdate": {
"url": "https://chromedriver.storage.googleapis.com/$version/chromedriver_win32.zip"
}
}

14
bucket/clink.json Normal file
View File

@@ -0,0 +1,14 @@
{
"homepage": "https://mridgers.github.io/clink/",
"url": "https://github.com/mridgers/clink/releases/download/0.4.8/clink_0.4.8.zip",
"version": "0.4.8",
"hash": "cc1e07c1000e95ebbe1c6480df53487261e6457a733b925e13665740c14e15aa",
"extract_dir": "clink_0.4.8",
"bin": [
"clink.bat"
],
"notes": [
"Run 'clink inject' to start clink on the current cmd",
"Run 'clink autorun' to auto start clink"
]
}

46
bucket/cmake.json Normal file
View File

@@ -0,0 +1,46 @@
{
"homepage": "https://cmake.org/",
"version": "3.8.2",
"license": "https://cmake.org/licensing/",
"architecture": {
"64bit": {
"url": "https://cmake.org/files/v3.8/cmake-3.8.2-win64-x64.zip",
"hash": "202c2416c964fb7199e5d7ce92336a44c7ba65d5ccca36246f41d7d09bd8ffe2",
"extract_dir": "cmake-3.8.2-win64-x64"
},
"32bit": {
"url": "https://cmake.org/files/v3.8/cmake-3.8.2-win32-x86.zip",
"hash": "3fa45a8ad473a8e0579ec826b3355f864750a7455987ed425a9c6fdf4820b5f2",
"extract_dir": "cmake-3.8.2-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"
}
}
}
}

27
bucket/cmder.json Normal file
View File

@@ -0,0 +1,27 @@
{
"homepage": "http://cmder.net",
"version": "1.3.2",
"license": "MIT",
"persist": [
"config"
],
"url": "https://github.com/cmderdev/cmder/releases/download/v1.3.2/cmder_mini.zip",
"hash": "477fb784b7b3f382f7de9cd40a4d46a86dc2286b8036e68ad188abebbaea4ad6",
"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"
}
}

40
bucket/composer.json Normal file
View File

@@ -0,0 +1,40 @@
{
"homepage": "https://getcomposer.org/",
"license": "https://github.com/composer/composer/blob/master/LICENSE",
"version": "1.4.2",
"url": "https://getcomposer.org/download/1.4.2/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 -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": "6b1945c3ee477f12be508a5bb41a5025d57de5510bcf94855ae6a4d59f3d86f4",
"checkver": {
"github": "https://github.com/composer/composer"
},
"autoupdate": {
"url": "https://getcomposer.org/download/$version/composer.phar"
}
}

8
bucket/concfg.json Normal file
View File

@@ -0,0 +1,8 @@
{
"homepage": "https://github.com/lukesampson/concfg",
"version": "0.2016.11.01",
"url": "https://github.com/lukesampson/concfg/archive/cb27880092e629e1152c41b122ab591c7ca50332.zip",
"hash": "be624dc4e251ccab1a0479d2a55b27c2caac2beaa93bfafed10880f0eaacc4c1",
"extract_dir": "concfg-cb27880092e629e1152c41b122ab591c7ca50332",
"bin": "bin\\concfg.ps1"
}

65
bucket/coreutils.json Normal file
View File

@@ -0,0 +1,65 @@
{
"homepage": "http://www.mingw.org/wiki/msys",
"license": "GPL2",
"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"
]
}

10
bucket/cowsay.json Normal file
View File

@@ -0,0 +1,10 @@
{
"version": "0.2013.07.19",
"homepage": "https://github.com/lukesampson/cowsay-psh",
"url": "https://github.com/lukesampson/cowsay-psh/archive/master.zip",
"extract_dir": "cowsay-psh-master",
"bin": [
"cowsay.ps1",
"cowthink.ps1"
]
}

10
bucket/csvtosql.json Normal file
View File

@@ -0,0 +1,10 @@
{
"version": "v0.1.1-alpha",
"license": "https://raw.githubusercontent.com/deevus/CsvToSql/master/UNLICENSE.txt",
"url": "https://github.com/deevus/CsvToSql/archive/v0.1.1-alpha.zip",
"depends": "gow",
"homepage": "https://github.com/deevus/CsvToSql",
"hash": "eb248d286cf5fd06c8ff99d527759e153513396baf08f0398a6d34fa1cba1116",
"bin": "ConvertCsvTo-Sql.ps1",
"extract_dir": "CsvToSql-0.1.1-alpha"
}

10
bucket/ctags.json Normal file
View File

@@ -0,0 +1,10 @@
{
"homepage": "http://ctags.sourceforge.net/",
"version": "5.8",
"url": "https://sourceforge.net/projects/ctags/files/ctags/5.8/ctags58.zip",
"extract_dir": "ctags58",
"bin": "ctags.exe",
"hash": "e1f5909ec0c7a58fd2149139fa6a1dc532070a3d919dd183671c57a32f8b243d",
"license": "GPL2",
"checkver": "Version ([\\d.]+)"
}

44
bucket/curl.json Normal file
View File

@@ -0,0 +1,44 @@
{
"homepage": "https://curl.haxx.se/",
"version": "7.54.0",
"license": "MIT",
"architecture": {
"64bit": {
"url": "https://dl.bintray.com/vszakats/generic/curl-7.54.0-win64-mingw.7z",
"hash": "f7d3fd25979489614f8804f9df3b318b369b6b0e1a6860316b86e1386ad2ec8b",
"extract_dir": "curl-7.54.0-win64-mingw"
},
"32bit": {
"url": "https://dl.bintray.com/vszakats/generic/curl-7.54.0-win32-mingw.7z",
"hash": "4ef9977ace6a3dfaad87eb4047c0cc0602cf78d70bcf7300671f80d15dfa3b7f",
"extract_dir": "curl-7.54.0-win32-mingw"
}
},
"bin": "bin\\curl.exe",
"checkver": {
"url": "https://curl.haxx.se/download.html",
"re": "curl ([\\d.]+)"
},
"suggest": {
"cacert": [
"cacert"
]
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://dl.bintray.com/vszakats/generic/curl-$version-win64-mingw.7z",
"extract_dir": "curl-$version-win64-mingw"
},
"32bit": {
"url": "https://dl.bintray.com/vszakats/generic/curl-$version-win32-mingw.7z",
"extract_dir": "curl-$version-win32-mingw"
}
},
"hash": {
"url": "https://api.bintray.com/search/file?subject=vszakats&repo=generic&name=$basename",
"mode": "json",
"jp": "$.[0].sha256"
}
}
}

33
bucket/dart-sass.json Normal file
View File

@@ -0,0 +1,33 @@
{
"homepage": "https://github.com/sass/dart-sass",
"version": "1.0.0-beta.1",
"license": "https://raw.githubusercontent.com/sass/dart-sass/master/LICENSE",
"architecture": {
"64bit": {
"url": "https://github.com/sass/dart-sass/releases/download/1.0.0-beta.1/dart-sass-1.0.0-beta.1-windows-x64.zip",
"hash": "18032cff748cd93da143a058d9207b7da9d98dac4c6efdfcb566d9cb2f38b2f0"
},
"32bit": {
"url": "https://github.com/sass/dart-sass/releases/download/1.0.0-beta.1/dart-sass-1.0.0-beta.1-windows-ia32.zip",
"hash": "3532eb10231223e7c59753f8d8c1c2acc76c757923b69b3d1acd25839ef08539"
}
},
"extract_dir": "dart-sass",
"bin": [
"dart-sass.bat"
],
"checkver": {
"url": "https://github.com/sass/dart-sass/releases/latest",
"re": "/releases/tag/(?:v)?([\\d\\w.-]+)"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/sass/dart-sass/releases/download/$version/dart-sass-$version-windows-x64.zip"
},
"32bit": {
"url": "https://github.com/sass/dart-sass/releases/download/$version/dart-sass-$version-windows-ia32.zip"
}
}
}
}

36
bucket/dart.json Normal file
View File

@@ -0,0 +1,36 @@
{
"version": "1.23.0",
"license": "BSD",
"homepage": "https://www.dartlang.org/",
"extract_dir": "dart-sdk",
"env_add_path": [
"bin"
],
"architecture": {
"64bit": {
"url": "https://storage.googleapis.com/dart-archive/channels/stable/release/1.23.0/sdk/dartsdk-windows-x64-release.zip",
"hash": "97f799cd84899d090d8619348c8daf96dc1c3b53f8bab059ba1bf1d4c82074c6"
},
"32bit": {
"url": "https://storage.googleapis.com/dart-archive/channels/stable/release/1.23.0/sdk/dartsdk-windows-ia32-release.zip",
"hash": "e154ab0ba06a0b47d6d080e4c7de74a78076daed2be908ff49bac1691ceff09e"
}
},
"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"
}
}
}

9
bucket/dd.json Normal file
View File

@@ -0,0 +1,9 @@
{
"homepage": "http://www.chrysocome.net/dd",
"license": "http://www.chrysocome.net/gpl",
"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"
}

16
bucket/devd.json Normal file
View File

@@ -0,0 +1,16 @@
{
"homepage": "http://corte.si/posts/devd/intro/index.html",
"license": "https://github.com/cortesi/devd/blob/master/LICENSE",
"version": "0.7",
"url": "https://github.com/cortesi/devd/releases/download/v0.7/devd-0.7-windows64.zip",
"hash": "b5a513c89f9fd6fed0984d7cc65bd5c8a1754e2304813135b44443a3ab30ded3",
"extract_dir": "devd-0.7-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"
}
}

40
bucket/diffutils.json Normal file
View File

@@ -0,0 +1,40 @@
{
"homepage": "http://www.msys2.org",
"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"
]
}

21
bucket/dig.json Normal file
View File

@@ -0,0 +1,21 @@
{
"homepage": "https://www.isc.org/",
"license": "https://www.isc.org/downloads/software-support-policy/isc-license/",
"version": "9.11.0",
"architecture": {
"64bit": {
"url": "ftp://ftp.isc.org/isc/bind9/9.11.0/BIND9.11.0.x64.zip",
"hash": "2cbc44127bbc9d17ed7a2a23c9c1cd5a055c90dcffd8c3384e7f8efe39ed790f"
},
"32bit": {
"url": "ftp://ftp.isc.org/isc/bind9/9.11.0/BIND9.11.0.x86.zip",
"hash": "7b92b9e3f9fe4cca69feeed73305151f4bdc09c9cbb5858671da2b7fd8a05fe2"
}
},
"bin": "dig.exe",
"suggest": {
"vcredist": [
"extras/vcredist2012"
]
}
}

11
bucket/dnvm.json Normal file
View File

@@ -0,0 +1,11 @@
{
"version": "latest",
"license": "Apache 2.0",
"url": "https://raw.githubusercontent.com/aspnet/Home/danroth27/restorednvm/dnvm.ps1",
"homepage": "https://github.com/aspnet/Home",
"env_set": {
"DNX_HOME": "$dir\\.dnx",
"DNX_USER_HOME": "$dir\\.dnx"
},
"bin": "dnvm.ps1"
}

View File

@@ -0,0 +1,25 @@
{
"homepage": "https://github.com/docker/compose",
"version": "1.13.0",
"license": "Apache",
"architecture": {
"64bit": {
"url": "https://github.com/docker/compose/releases/download/1.13.0/docker-compose-Windows-x86_64.exe#/docker-compose.exe",
"hash": "b933e653cd77f1d990d4dda598f1cc8fe8f128d66485569e828c0976602a8d5e"
}
},
"bin": [
[
"docker-compose.exe",
"docker-compose"
]
],
"checkver": "github",
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/docker/compose/releases/download/$version/docker-compose-Windows-x86_64.exe#/docker-compose.exe"
}
}
}
}

View File

@@ -0,0 +1,35 @@
{
"homepage": "https://github.com/docker/machine",
"version": "0.12.0",
"license": "Apache",
"architecture": {
"64bit": {
"url": "https://github.com/docker/machine/releases/download/v0.12.0/docker-machine-Windows-x86_64.exe#/docker-machine.exe",
"hash": "ba2eeee57aa1774e9841ebcb918212ea559e08587e13b152f3f2ca7d9c6f7a25"
},
"32bit": {
"url": "https://github.com/docker/machine/releases/download/v0.12.0/docker-machine-Windows-i386.exe#/docker-machine.exe",
"hash": "253e63571ce613d4ab835c4199ffffaa1daf1dbc8bcf284995bc60de1fa67d8c"
}
},
"bin": [
[
"docker-machine.exe",
"docker-machine"
]
],
"checkver": "github",
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/docker/machine/releases/download/v$version/docker-machine-Windows-x86_64.exe#/docker-machine.exe"
},
"32bit": {
"url": "https://github.com/docker/machine/releases/download/v$version/docker-machine-Windows-i386.exe#/docker-machine.exe"
}
},
"hash": {
"url": "$baseurl/sha256sum.txt"
}
}
}

41
bucket/docker.json Normal file
View File

@@ -0,0 +1,41 @@
{
"version": "17.05.0-ce",
"license": "https://github.com/docker/docker/blob/master/LICENSE",
"architecture": {
"64bit": {
"url": "https://get.docker.com/builds/Windows/x86_64/docker-17.05.0-ce.zip",
"hash": "cbb0b47b511023a98dd0c83d76c1f30b315b8381b85b67be355eca4748229031"
},
"32bit": {
"url": "https://get.docker.com/builds/Windows/i386/docker-17.05.0-ce.zip",
"hash": "99820746a362466700718d33ee727b9aea993b9c2e05fb2c53ed606e9f6780f1"
}
},
"homepage": "https://docker.com",
"extract_dir": "docker",
"bin": [
"docker.exe"
],
"checkver": {
"url": "https://github.com/docker/docker/releases/latest",
"re": "/releases/tag/(?:v)?([\\d\\w.-]+)"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://get.docker.com/builds/Windows/x86_64/docker-$version.zip"
},
"32bit": {
"url": "https://get.docker.com/builds/Windows/i386/docker-$version.zip"
}
}
},
"notes": [
"This is the docker client only. Until the docker daemon can run natively",
"on Windows you will need a Virtual Machine such as Boot2Docker or",
"Docker Machine",
"",
"Boot2Docker: https://github.com/boot2docker/windows-installer/releases/",
"Docker Machine: http://docs.docker.com/machine/"
]
}

19
bucket/dosbox.json Normal file
View File

@@ -0,0 +1,19 @@
{
"homepage": "https://www.dosbox.com/",
"version": "0.74",
"license": "GPL",
"url": "https://sourceforge.net/projects/dosbox/files/dosbox/0.74/DOSBox0.74-win32-installer.exe",
"hash": "c149cb85f732beb95bf6564d72bdfdd9306f7050edfd9d2cd475420efe3b84fc",
"installer": {
"args": [
"/S",
"/D=$dir"
]
},
"bin": [
"DOSBox.exe",
"SDL.dll",
"SDL_net.dll"
],
"checkver": "Latest version:\\s+<a[^>]+>([\\d.]+)"
}

15
bucket/dotnet.json Normal file
View File

@@ -0,0 +1,15 @@
{
"version": "1.1.1",
"homepage": "https://www.microsoft.com/net/core#windows",
"architecture": {
"64bit": {
"url": "https://go.microsoft.com/fwlink/?linkid=843454#/dl.7z",
"hash": "e729afcf3cc69f17ec7968468b399c843b8b8327523e62c03450e4653115cf76"
},
"32bit": {
"url": "https://go.microsoft.com/fwlink/?linkid=843458#/dl.7z",
"hash": "3a8d7316dd774d54e27a332c5d1e73d7813fecd10b670249f480ae917226e444"
}
},
"bin": "dotnet.exe"
}

34
bucket/doxygen.json Normal file
View File

@@ -0,0 +1,34 @@
{
"homepage": "http://www.doxygen.nl/",
"license": "GPL2",
"version": "1.8.13",
"architecture": {
"64bit": {
"url": "http://ftp.stack.nl/pub/users/dimitri/doxygen-1.8.13.windows.x64.bin.zip",
"hash": "c59e92ab9f82e156723dd3efb9433948dcb84facc21d6efb50f4d6c2d7aa6c5c"
},
"32bit": {
"url": "http://ftp.stack.nl/pub/users/dimitri/doxygen-1.8.13.windows.bin.zip",
"hash": "215800d19d0e77fa400694af74685bbd3000463f0d7f18b6c7b743d2d6a1422f"
}
},
"bin": [
"doxygen.exe",
"doxyindexer.exe",
"doxysearch.cgi.exe"
],
"checkver": {
"url": "http://www.doxygen.nl/download.html",
"re": "The latest version of doxygen is ([\\d.]+)"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "http://ftp.stack.nl/pub/users/dimitri/doxygen-$version.windows.x64.bin.zip"
},
"32bit": {
"url": "http://ftp.stack.nl/pub/users/dimitri/doxygen-$version.windows.bin.zip"
}
}
}
}

15
bucket/editorconfig.json Normal file
View File

@@ -0,0 +1,15 @@
{
"version": "0.12.1",
"extract_dir": "editorconfig-0.12.1-Windows-x86",
"url": "https://excellmedia.dl.sourceforge.net/project/editorconfig/EditorConfig-C-Core/0.12.1/binary-Windows/editorconfig-0.12.1-Windows-x86.zip",
"homepage": "http://editorconfig.org/",
"hash": "aaf8977253dd72dd12aec2986c822498c1fa1fa96bf8a404b9facfbf9757ff3b",
"bin": "bin/editorconfig.exe",
"checkver": {
"github": "https://github.com/editorconfig/editorconfig-core-c"
},
"autoupdate": {
"url": "https://excellmedia.dl.sourceforge.net/project/editorconfig/EditorConfig-C-Core/$version/binary-Windows/editorconfig-$version-Windows-x86.zip",
"extract_dir": "editorconfig-$version-Windows-x86"
}
}

19
bucket/elixir.json Normal file
View File

@@ -0,0 +1,19 @@
{
"homepage": "http://elixir-lang.org/",
"version": "1.4.4",
"depends": "erlang",
"url": "https://github.com/elixir-lang/elixir/releases/download/v1.4.4/Precompiled.zip",
"hash": "3fc2cc2ec39315d9894a81b9d167029e4a9cfa5bb22edb3d7e0e66971d4e43ed",
"bin": [
"bin\\elixir.bat",
"bin\\elixirc.bat",
"bin\\iex.bat",
"bin\\mix.bat"
],
"checkver": {
"github": "https://github.com/elixir-lang/elixir"
},
"autoupdate": {
"url": "https://github.com/elixir-lang/elixir/releases/download/v$version/Precompiled.zip"
}
}

49
bucket/erlang.json Normal file
View File

@@ -0,0 +1,49 @@
{
"homepage": "http://www.erlang.org",
"version": "19.3",
"license": "http://www.apache.org/licenses/LICENSE-2.0",
"architecture": {
"64bit": {
"url": "http://erlang.org/download/otp_win64_19.3.exe",
"hash": "e38074ec99da22a04bd00cda83d412e07294dbaf031c2369c195f712caa0cc70"
},
"32bit": {
"url": "http://erlang.org/download/otp_win32_19.3.exe",
"hash": "a33964be7e98304a331d294921bea31b45cefa365c5049cc1a3764980b1347cf"
}
},
"bin": [
"bin\\erl.exe",
"bin\\erlc.exe",
"bin\\escript.exe"
],
"env_set": {
"ERLANG_HOME": "$dir"
},
"installer": {
"args": [
"/S",
"/D=$dir"
]
},
"uninstaller": {
"file": "Uninstall.exe",
"args": [
"/S"
]
},
"checkver": {
"url": "http://www.erlang.org/downloads",
"re": "DOWNLOAD\\s+OTP ([\\d.]+)"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "http://erlang.org/download/otp_win64_$version.exe"
},
"32bit": {
"url": "http://erlang.org/download/otp_win32_$version.exe"
}
}
}
}

24
bucket/eventstore.json Normal file
View File

@@ -0,0 +1,24 @@
{
"homepage": "https://geteventstore.com/",
"license": "BSD 3-Clause",
"version": "4.0.1",
"url": "http://download.geteventstore.com/binaries/EventStore-OSS-Win-v4.0.1.zip",
"hash": "b341e3a7939316a06040e3910c76d01c32f2162781ab81a1bbe28da84bf007cc",
"bin": [
[
"EventStore.ClusterNode.exe",
"eventstore"
],
"EventStore.ClusterNode.exe",
"EventStore.PAdmin.exe",
"EventStore.Query.exe",
"EventStore.TestClient.exe"
],
"checkver": {
"url": "https://geteventstore.com/downloads/",
"re": "Get\\s+Event\\s+Store\\s+(\\d+\\.\\d+\\.\\d+)\\s+for\\s+Windows"
},
"autoupdate": {
"url": "http://download.geteventstore.com/binaries/EventStore-OSS-Win-v$version.zip"
}
}

17
bucket/exiftool.json Normal file
View File

@@ -0,0 +1,17 @@
{
"homepage": "http://www.sno.phy.queensu.ca/~phil/exiftool/index.html",
"version": "10.56",
"license": "http://dev.perl.org/licenses/",
"url": "https://downloads.sourceforge.net/project/exiftool/exiftool-10.56.zip",
"hash": "478d3f122c86210d3f946c57e9f96f7b384754302aa430bdbe3a9cd873ea456c",
"bin": [
[
"exiftool(-k).exe",
"exiftool"
]
],
"checkver": "exiftool-([\\d.]+).zip",
"autoupdate": {
"url": "https://downloads.sourceforge.net/project/exiftool/exiftool-$version.zip"
}
}

29
bucket/far.json Normal file
View File

@@ -0,0 +1,29 @@
{
"homepage": "https://farmanager.com/",
"version": "30b4949",
"architecture": {
"64bit": {
"url": "https://farmanager.com/files/Far30b4949.x64.20170503.7z",
"hash": "a1d924b3157d48c96a9496fd19b9a4a97ae811e2c2dc69a193cdaec33da150e8"
},
"32bit": {
"url": "https://farmanager.com/files/Far30b4949.x86.20170503.7z",
"hash": "c7ab55a6c83e8f547821f799e49f00c47bc7806dee8d265557172d31630711b9"
}
},
"checkver": {
"url": "https://farmanager.com/download.php",
"re": "files/Far(?<version>[b\\d]+).x64.(?<date>\\d+).7z"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://farmanager.com/files/Far$version.x64.$matchDate.7z"
},
"32bit": {
"url": "https://farmanager.com/files/Far$version.x86.$matchDate.7z"
}
}
},
"bin": "far.exe"
}

35
bucket/ffmpeg.json Normal file
View File

@@ -0,0 +1,35 @@
{
"version": "20170605-4705edb",
"homepage": "https://ffmpeg.zeranoe.com/builds/",
"license": "GPL3",
"architecture": {
"64bit": {
"url": "https://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-20170605-4705edb-win64-static.zip",
"hash": "2a9779942b53574a85f0c0ce2fc5f1f75ba027c5e13f2543bde6a3d135477f6e",
"extract_dir": "ffmpeg-20170605-4705edb-win64-static"
},
"32bit": {
"url": "https://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-20170605-4705edb-win32-static.zip",
"hash": "cc62bbe002aafba388427a1af0cccc0e42d11c63b71223c4387bf10a814ae5de",
"extract_dir": "ffmpeg-20170605-4705edb-win32-static"
}
},
"bin": [
"bin\\ffmpeg.exe",
"bin\\ffplay.exe",
"bin\\ffprobe.exe"
],
"checkver": "value=\"([\\d]{8}-[\\d\\w]+)\"",
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-$version-win64-static.zip",
"extract_dir": "ffmpeg-$version-win64-static"
},
"32bit": {
"url": "https://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-$version-win32-static.zip",
"extract_dir": "ffmpeg-$version-win32-static"
}
}
}
}

7
bucket/figlet.json Normal file
View File

@@ -0,0 +1,7 @@
{
"homepage": "https://github.com/lukesampson/figlet",
"version": "1.0-go",
"url": "https://github.com/lukesampson/figlet/releases/download/go-1.0-win/figlet-go-1.0-win.zip",
"hash": "11ee1f4de608d147ab5b61ddb5967730e9b2c1e43f7d2c96582ee260c030e413",
"bin": "figlet.exe"
}

14
bucket/file.json Normal file
View File

@@ -0,0 +1,14 @@
{
"homepage": "http://gnuwin32.sourceforge.net/packages/file.htm",
"version": "5.03",
"license": "GPL2",
"url": [
"https://sourceforge.net/projects/gnuwin32/files/file/5.03/file-5.03-bin.zip",
"https://sourceforge.net/projects/gnuwin32/files/file/5.03/file-5.03-dep.zip"
],
"hash": [
"dbd28e191c1bf7e3db08b983e603e79959295717f6fc1032ba97e7a8680c8cf9",
"2dbf891e42c642e372e5b21b0528bb5ba3c5b6eeb9fb01fb1e9cc77f2f44a091"
],
"bin": "bin\\file.exe"
}

25
bucket/findutils.json Normal file
View File

@@ -0,0 +1,25 @@
{
"homepage": "http://www.mingw.org/wiki/msys",
"version": "4.4.2",
"license": "GPL2",
"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/findutils/findutils-4.4.2-2/findutils-4.4.2-2-msys-1.0.13-bin.tar.lzma",
"https://sourceforge.net/projects/mingw/files/MSYS/Base/findutils/findutils-4.4.2-2/locate-4.4.2-2-msys-1.0.13-bin.tar.lzma"
],
"hash": [
"41c7d5561662e41da74951f373a08a95db40b27b1246227bbbc13abc44976ea7",
"b533de0ee04dc4d53ca745210e41eb9437044ebd367c001f3615092e7214a4a3",
"f13de6d2e3c428e7f9a7251c6b01d6f7569e20f7ac126c68c028eb5f542473bb",
"779e819b7942dc070c45f4cba633e6a9ae4bfe8b506a3541f4ce86ad0595726d",
"3fbb9826feae0698a58c8e1bbaa46caafb2bd07a63c59e33cd4478aee14ee147"
],
"bin": [
"bin\\find.exe",
"bin\\oldfind.exe",
"bin\\xargs.exe",
"bin\\locate.exe"
]
}

14
bucket/flatc.json Normal file
View File

@@ -0,0 +1,14 @@
{
"homepage": "https://google.github.io/flatbuffers/index.html",
"license": "Apache2",
"version": "1.6.0",
"url": "https://github.com/google/flatbuffers/releases/download/v1.6.0/flatc_windows_exe.zip",
"bin": "flatc.exe",
"hash": "e4ac8cdfa5e90c92e77715e998b9210fa86128b84a38a0fe9fec04c5b5f941c9",
"checkver": {
"github": "https://github.com/google/flatbuffers"
},
"autoupdate": {
"url": "https://github.com/google/flatbuffers/releases/download/v$version/flatc_windows_exe.zip"
}
}

15
bucket/flow.json Normal file
View File

@@ -0,0 +1,15 @@
{
"version": "0.47.0",
"license": "BSD",
"url": "https://github.com/facebook/flow/releases/download/v0.47.0/flow-win64-v0.47.0.zip",
"homepage": "https://flowtype.org/",
"hash": "d0f2adbe449f678b5c565b102d2ff6f4953cc39d528ddc3e8e63a0e7e543c0dd",
"bin": "flow.exe",
"extract_dir": "flow",
"checkver": {
"github": "https://github.com/facebook/flow"
},
"autoupdate": {
"url": "https://github.com/facebook/flow/releases/download/v$version/flow-win64-v$version.zip"
}
}

15
bucket/forge.json Normal file
View File

@@ -0,0 +1,15 @@
{
"homepage": "http://forge.run",
"version": "1.4.2",
"url": "https://github.com/fsharp-editing/Forge/releases/download/1.4.2/forge.zip",
"hash": "b977a69a55883a45342e65f940446fadc04895b78b2b92c4aabe3612a89af063",
"bin": [
"bin\\forge.exe"
],
"checkver": {
"github": "https://github.com/fsharp-editing/Forge"
},
"autoupdate": {
"url": "https://github.com/fsharp-editing/Forge/releases/download/$version/forge.zip"
}
}

15
bucket/fossil.json Normal file
View File

@@ -0,0 +1,15 @@
{
"homepage": "https://www.fossil-scm.org/",
"version": "2.2",
"license": "https://www.fossil-scm.org/index.html/doc/trunk/COPYRIGHT-BSD2.txt",
"hash": "507b08fa84d944b08aa30aa1aadc23efea9b049e2848341f6c66e62baa753d05",
"url": "https://www.fossil-scm.org/index.html/uv/fossil-w32-2.2.zip",
"bin": "fossil.exe",
"checkver": {
"url": "https://www.fossil-scm.org/index.html/uv/download.html",
"re": "Version ([\\d.]+)\""
},
"autoupdate": {
"url": "https://www.fossil-scm.org/index.html/uv/fossil-w32-$version.zip"
}
}

29
bucket/fzf.json Normal file
View File

@@ -0,0 +1,29 @@
{
"homepage": "https://github.com/junegunn/fzf",
"version": "0.16.8",
"license": "MIT",
"architecture": {
"64bit": {
"url": "https://github.com/junegunn/fzf-bin/releases/download/0.16.8/fzf-0.16.8-windows_amd64.zip",
"hash": "dc2e2a78b8880522b2ae67ce803f89c229340b85cae3089e2870d872ebbd2b92"
},
"32bit": {
"url": "https://github.com/junegunn/fzf-bin/releases/download/0.16.8/fzf-0.16.8-windows_386.zip",
"hash": "259da25ed6030ba257472b89466d0c67f76df700d8dbbe720a42f818ba3288de"
}
},
"bin": "fzf.exe",
"checkver": {
"github": "https://github.com/junegunn/fzf-bin"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/junegunn/fzf-bin/releases/download/$version/fzf-$version-windows_amd64.zip"
},
"32bit": {
"url": "https://github.com/junegunn/fzf-bin/releases/download/$version/fzf-$version-windows_386.zip"
}
}
}
}

22
bucket/gawk.json Normal file
View File

@@ -0,0 +1,22 @@
{
"homepage": "http://www.mingw.org/wiki/MSYS",
"version": "3.1.7",
"license": "GPL3",
"url": [
"https://sourceforge.net/projects/mingw/files/MSYS/Base/gawk/gawk-3.1.7-2/gawk-3.1.7-2-msys-1.0.13-bin.tar.lzma",
"https://sourceforge.net/projects/mingw/files/MSYS/Base/msys-core/msys-1.0.18-1/msysCORE-1.0.18-1-msys-1.0.18-bin.tar.lzma",
"https://sourceforge.net/projects/mingw/files/MSYS/Base/gettext/gettext-0.18.1.1-1/libintl-0.18.1.1-1-msys-1.0.17-dll-8.tar.lzma",
"https://sourceforge.net/projects/mingw/files/MSYS/Base/libiconv/libiconv-1.14-1/libiconv-1.14-1-msys-1.0.17-dll-2.tar.lzma"
],
"hash": [
"eb15478ea76e75b666ad7fc7049de21b9f487e0e1ea0e96d40953a477e91c3dd",
"4e262a414f238773b311c8bb55a52e62743c06e0e55b319ca5b47e3e306464d5",
"29db8c969661c511fbe2a341ab25c993c5f9c555842a75d6ddbcfa70dec16910",
"196921e8c232259c8e6a6852b9ee8d9ab2d29a91419f0c8dc27ba6f034231683"
],
"bin": [
"bin\\awk.exe",
"bin\\gawk.exe",
"bin\\pgawk.exe"
]
}

20
bucket/gcc.json Normal file
View File

@@ -0,0 +1,20 @@
{
"homepage": "http://mingw-w64.org",
"version": "6.3.0",
"license": "GPL3",
"architecture": {
"64bit": {
"url": "https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win64/Personal%20Builds/mingw-builds/6.3.0/threads-posix/seh/x86_64-6.3.0-release-posix-seh-rt_v5-rev1.7z",
"hash": "2d0e72340ffa14916d4469db25c37889e477f8f1f49ba4f77155830ddc1dca89",
"extract_dir": "mingw64"
},
"32bit": {
"url": "https://sourceforge.net/projects/mingw-w64/files/Toolchains%20targetting%20Win32/Personal%20Builds/mingw-builds/6.3.0/threads-posix/dwarf/i686-6.3.0-release-posix-dwarf-rt_v5-rev1.7z",
"hash": "8f7381e8ed61c438d36d33ae2f514a7ca8065c44dcf6801847fd425f71a9ee1d",
"extract_dir": "mingw32"
}
},
"env_add_path": "bin",
"notes": "The 64bit version is built with Structured Exception Handling (SEH), the 32bit is built with DWARF.
Both 64bit and 32bit support Posix threading model"
}

17
bucket/gdb.json Normal file
View File

@@ -0,0 +1,17 @@
{
"homepage": "http://tdm-gcc.tdragon.net/",
"version": "7.9.1",
"architecture": {
"64bit": {
"url": "https://sourceforge.net/projects/tdm-gcc/files/GDB/gdb-7.9.1-tdm64-2.zip",
"hash": "89186aa83143f47902b52f5673dd32421ec9c221e53e3227fd065a7e86c8c6f5",
"extract_dir": "gdb64"
},
"32bit": {
"url": "https://sourceforge.net/projects/tdm-gcc/files/GDB/gdb32-7.9.1-tdm-1.zip",
"hash": "715604034bb269ecbfaf4577addac51b8ba798f93b2eca31cb21b114b7bc46e8",
"extract_dir": "gdb32"
}
},
"env_add_path": "bin"
}

44
bucket/ghostscript.json Normal file
View File

@@ -0,0 +1,44 @@
{
"homepage": "http://www.ghostscript.com",
"version": "9.21",
"license": "http://www.gnu.org/licenses/agpl-3.0.html",
"architecture": {
"64bit": {
"url": "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs921/gs921w64.exe#/dl.7z",
"hash": "41bf242d0e4303f329f4b67fc0c556885fe0a5d4012cf5c1e7ddc62a5d25aba9",
"bin": [
"bin\\gswin64.exe",
"bin\\gswin64c.exe"
]
},
"32bit": {
"url": "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs921/gs921w32.exe#/dl.7z",
"hash": "75f5983ac23fbc26760f1033062ec914e7dbafcb029e47e54e77a762ee934089",
"bin": [
"bin\\gswin32.exe",
"bin\\gswin32c.exe"
]
}
},
"env_add_path": [
"bin",
"lib"
],
"checkver": {
"url": "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/latest",
"re": "Ghostscript\\/GhostPDL ([\\d.]+)"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs$cleanVersion/gs$cleanVersionw64.exe#/dl.7z"
},
"32bit": {
"url": "https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs$cleanVersion/gs$cleanVersionw32.exe#/dl.7z"
}
},
"hash": {
"url": "$baseurl/SHA256SUMS"
}
}
}

12
bucket/gibo.json Normal file
View File

@@ -0,0 +1,12 @@
{
"version": "1.0.4",
"homepage": "https://github.com/simonwhitaker/gibo",
"license": "https://github.com/simonwhitaker/gibo/blob/master/UNLICENSE",
"description": "gibo (short for .gitignore boilerplates) is a shell script to help you easily access .gitignore boilerplates from github.com/github/gitignore.",
"url": "https://github.com/simonwhitaker/gibo/archive/1.0.4.zip",
"hash": "868144f463c82ede0159065940b893cd0b586d766b1349caa62faa2ec5d940fc",
"extract_dir": "gibo-1.0.4",
"bin": [
"gibo.bat"
]
}

34
bucket/git-lfs.json Normal file
View File

@@ -0,0 +1,34 @@
{
"homepage": "https://git-lfs.github.com/",
"version": "2.1.1",
"license": "MIT",
"architecture": {
"32bit": {
"url": "https://github.com/github/git-lfs/releases/download/v2.1.1/git-lfs-windows-386-2.1.1.zip",
"hash": "897571c2b8aa777d011e7c5496735e9dcb2da809faa741b113169a5cb04650bd",
"extract_dir": "git-lfs-windows-386-2.1.1"
},
"64bit": {
"url": "https://github.com/github/git-lfs/releases/download/v2.1.1/git-lfs-windows-amd64-2.1.1.zip",
"hash": "0866259d6b097f8ff379326f798a93034b61952382011671b80ecf4cc733de57",
"extract_dir": "git-lfs-windows-amd64-2.1.1"
}
},
"depends": "git",
"bin": "git-lfs.exe",
"checkver": {
"github": "https://github.com/github/git-lfs"
},
"autoupdate": {
"architecture": {
"32bit": {
"url": "https://github.com/github/git-lfs/releases/download/v$version/git-lfs-windows-386-$version.zip",
"extract_dir": "git-lfs-windows-386-$version"
},
"64bit": {
"url": "https://github.com/github/git-lfs/releases/download/v$version/git-lfs-windows-amd64-$version.zip",
"extract_dir": "git-lfs-windows-amd64-$version"
}
}
}
}

30
bucket/git-town.json Normal file
View File

@@ -0,0 +1,30 @@
{
"homepage": "http://www.git-town.com/",
"version": "4.1.2",
"license": "MIT",
"architecture": {
"32bit": {
"url": "https://github.com/Originate/git-town/releases/download/v4.1.2/git-town-windows-386.exe#/git-town.exe",
"hash": "9c62977c264cace211fda085b573137338ff5bb634e795566d1ed546127b21aa"
},
"64bit": {
"url": "https://github.com/Originate/git-town/releases/download/v4.1.2/git-town-windows-amd64.exe#/git-town.exe",
"hash": "7cb289ea9b2880ed580c9ab41de41b2af38cbfd3624a667f4ae0cb4fe9c4ef1e"
}
},
"depends": "git",
"bin": "git-town.exe",
"checkver": {
"github": "https://github.com/Originate/git-town"
},
"autoupdate": {
"architecture": {
"32bit": {
"url": "https://github.com/Originate/git-town/releases/download/v$version/git-town-windows-386.exe#/git-town.exe"
},
"64bit": {
"url": "https://github.com/Originate/git-town/releases/download/v$version/git-town-windows-amd64.exe#/git-town.exe"
}
}
}
}

23
bucket/git-up.json Normal file
View File

@@ -0,0 +1,23 @@
{
"homepage": "https://github.com/msiemens/PyGitUp",
"license": "https://github.com/msiemens/PyGitUp/blob/master/LICENCE",
"version": "1.4.1",
"url": "https://github.com/msiemens/PyGitUp/archive/v1.4.1.zip",
"hash": "6e673c873d8d7fdb81537ae25ae57462f868e4a4348c9c5d12fb17d5f7a7a4a8",
"extract_dir": "PyGitUp-1.4.1",
"depends": "python",
"post_install": "
pushd $dir
try {
scoop reset python
iex \"$(scoop which python) setup.py install\"
}
finally {
popd
}",
"checkver": "github",
"autoupdate": {
"url": "https://github.com/msiemens/PyGitUp/archive/v$version.zip",
"extract_dir": "PyGitUp-$version"
}
}

View File

@@ -0,0 +1,47 @@
{
"_comment": "Maintainers: when updating this manifest to a new version, you might like to also update git.json",
"homepage": "https://git-for-windows.github.io/",
"license": "GPL2",
"version": "2.13.0.windows.1",
"architecture": {
"64bit": {
"url": "https://github.com/git-for-windows/git/releases/download/v2.13.0.windows.1/PortableGit-2.13.0-64-bit.7z.exe#/dl.7z",
"hash": "1d6008cb6fec817a302d4b59921423ba1f6db2677c6b519c20e9ca2cacc7c220"
},
"32bit": {
"url": "https://github.com/git-for-windows/git/releases/download/v2.13.0.windows.1/PortableGit-2.13.0-32-bit.7z.exe#/dl.7z",
"hash": "119c95b4416ca1100a4feee0d75ceaf3d41962b0038620c04a62dd787e80e5f2"
}
},
"bin": [
"cmd\\git.exe",
"cmd\\gitk.exe",
"cmd\\git-gui.exe",
"git-bash.exe",
"usr\\bin\\ssh.exe",
"usr\\bin\\sshd.exe",
"usr\\bin\\scp.exe",
"usr\\bin\\sftp.exe",
"usr\\bin\\ssh-add.exe",
"usr\\bin\\ssh-agent.exe",
"usr\\bin\\ssh-keygen.exe",
"usr\\bin\\ssh-keyscan.exe"
],
"post_install": [
"git config --global credential.helper manager"
],
"checkver": {
"url": "https://github.com/git-for-windows/git/releases/latest",
"re": "v(?<version>[\\d\\w.]+)/PortableGit-(?<short>[\\d.]+).*\\.exe"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/git-for-windows/git/releases/download/v$matchVersion/PortableGit-$matchShort-64-bit.7z.exe#/dl.7z"
},
"32bit": {
"url": "https://github.com/git-for-windows/git/releases/download/v$matchVersion/PortableGit-$matchShort-32-bit.7z.exe#/dl.7z"
}
}
}
}

48
bucket/git.json Normal file
View File

@@ -0,0 +1,48 @@
{
"_comment": "Maintainers: when updating this manifest to a new version, you might like to also update git-with-openssh.json",
"homepage": "https://git-for-windows.github.io/",
"license": "GPL2",
"version": "2.13.0.windows.1",
"architecture": {
"64bit": {
"url": "https://github.com/git-for-windows/git/releases/download/v2.13.0.windows.1/PortableGit-2.13.0-64-bit.7z.exe#/dl.7z",
"hash": "1d6008cb6fec817a302d4b59921423ba1f6db2677c6b519c20e9ca2cacc7c220"
},
"32bit": {
"url": "https://github.com/git-for-windows/git/releases/download/v2.13.0.windows.1/PortableGit-2.13.0-32-bit.7z.exe#/dl.7z",
"hash": "119c95b4416ca1100a4feee0d75ceaf3d41962b0038620c04a62dd787e80e5f2"
}
},
"bin": [
"cmd\\git.exe",
"cmd\\gitk.exe",
"cmd\\git-gui.exe",
"git-bash.exe"
],
"post_install": [
"git config --global credential.helper manager"
],
"notes": "To get Git to recognise OpenSSH, you will need to run
scoop install openssh
[environment]::setenvironmentvariable('GIT_SSH', (resolve-path (scoop which ssh)), 'USER')
and then restart powershell.",
"checkver": {
"url": "https://github.com/git-for-windows/git/releases/latest",
"re": "v(?<version>[\\d\\w.]+)/PortableGit-(?<short>[\\d.]+).*\\.exe"
},
"env_set": {
"GIT_INSTALL_ROOT": "$dir"
},
"autoupdate": {
"architecture": {
"64bit": {
"url": "https://github.com/git-for-windows/git/releases/download/v$matchVersion/PortableGit-$matchShort-64-bit.7z.exe#/dl.7z"
},
"32bit": {
"url": "https://github.com/git-for-windows/git/releases/download/v$matchVersion/PortableGit-$matchShort-32-bit.7z.exe#/dl.7z"
}
}
}
}

14
bucket/git19.json Normal file
View File

@@ -0,0 +1,14 @@
{
"homepage": "https://git-for-windows.github.io/",
"license": "GPL2",
"version": "1.9.5-preview20150319",
"url": "https://github.com/msysgit/msysgit/releases/download/Git-1.9.5-preview20150319/PortableGit-1.9.5-preview20150319.7z",
"hash": "26261872847b18d171a197c8e4b3f4c0e60b4310c4b8ef1f4d9884950288aa7c",
"bin": [
"cmd\\git.exe",
"cmd\\gitk.cmd"
],
"post_install": [
"git config --global credential.helper wincred"
]
}

7
bucket/gitignore.json Normal file
View File

@@ -0,0 +1,7 @@
{
"homepage": "https://github.com/lukesampson/psutils",
"version": "0.2015.08.26",
"url": "https://raw.githubusercontent.com/lukesampson/psutils/3c67dbf56a0e541bf928b9a8811dc4c627d8230c/gitignore.ps1",
"hash": "9a08d37386219add0bf79fe6293ab02f5dfdce6ece95173c003bdb96a8016533",
"bin": "gitignore.ps1"
}

21
bucket/glide.json Normal file
View File

@@ -0,0 +1,21 @@
{
"homepage": "https://glide.sh/",
"license": "https://github.com/Masterminds/glide/blob/master/LICENSE",
"version": "0.12.3",
"architecture": {
"64bit": {
"url": "https://github.com/Masterminds/glide/releases/download/v0.12.3/glide-v0.12.3-windows-amd64.zip",
"hash": "5F10BC68D533269315B510DEA924724A0989598C43228B1D69ED7308B2E80406",
"extract_dir": "windows-amd64"
},
"32bit": {
"url": "https://github.com/Masterminds/glide/releases/download/v0.12.3/glide-v0.12.3-windows-386.zip",
"hash": "6A9082A55F1605EF75EA6862E4849D581D8883E9BF1A76872434928AEA71DE38",
"extract_dir": "windows-386"
}
},
"bin": "glide.exe",
"checkver": {
"github": "https://github.com/Masterminds/glide"
}
}

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