Initial commit
commit
48a4d2f1c8
|
@ -0,0 +1,35 @@
|
|||
skip_commits:
|
||||
files:
|
||||
- '**/*.md'
|
||||
- '.vscode/**/*'
|
||||
cache:
|
||||
- '%USERPROFILE%\Documents\WindowsPowerShell\Modules -> .appveyor.yml'
|
||||
matrix:
|
||||
fast_finish: true
|
||||
build: 'off'
|
||||
image: Visual Studio 2019
|
||||
environment:
|
||||
SCOOP: C:\projects\scoop
|
||||
SCOOP_HOME: C:\projects\scoop\apps\scoop\current
|
||||
matrix:
|
||||
- PowerShell: 5
|
||||
- PowerShell: 7
|
||||
init:
|
||||
- ps: |
|
||||
(Get-PSProvider 'FileSystem').Home = 'C:\projects\'
|
||||
if(!(Test-Path "$env:SCOOP_HOME")) { git clone -q --depth=1 "https://github.com/lukesampson/scoop" "$env:SCOOP_HOME" }
|
||||
for:
|
||||
- matrix:
|
||||
only:
|
||||
- PowerShell: 5
|
||||
install:
|
||||
- ps: . "$env:SCOOP_HOME\test\bin\init.ps1"
|
||||
test_script:
|
||||
- ps: . "$env:SCOOP_HOME\test\bin\test.ps1" -TestPath "$env:APPVEYOR_BUILD_FOLDER"
|
||||
- matrix:
|
||||
only:
|
||||
- PowerShell: 7
|
||||
install:
|
||||
- pwsh: . "$env:SCOOP_HOME\test\bin\init.ps1"
|
||||
test_script:
|
||||
- pwsh: . "$env:SCOOP_HOME\test\bin\test.ps1" -TestPath "$env:APPVEYOR_BUILD_FOLDER"
|
|
@ -0,0 +1,15 @@
|
|||
root = true
|
||||
|
||||
[*]
|
||||
charset = utf-8
|
||||
end_of_line = crlf
|
||||
indent_size = 4
|
||||
indent_style = space
|
||||
insert_final_newline = true
|
||||
trim_trailing_whitespace = true
|
||||
|
||||
[.git/hooks/*]
|
||||
end_of_line = lf
|
||||
|
||||
[*.{yml,yaml}]
|
||||
indent_size = 2
|
|
@ -0,0 +1,3 @@
|
|||
# retain windows line-endings in case checked out on mac or linux
|
||||
* text eol=crlf
|
||||
.git/hooks/* text eol=lf
|
|
@ -0,0 +1 @@
|
|||
* @Ash258
|
|
@ -0,0 +1,12 @@
|
|||
---
|
||||
name: Hash check fail
|
||||
about: Installation failed due to hash check.
|
||||
title: '%%manifest%%@%%version%%: Hash check failed'
|
||||
---
|
||||
|
||||
<!-- Replace title placeholders with proper information -->
|
||||
<!-- Copy terminal output and paste it into code fence block -->
|
||||
|
||||
```powershell
|
||||
|
||||
```
|
|
@ -0,0 +1,18 @@
|
|||
---
|
||||
name: New manifest request
|
||||
about: Request new manifest to be added into this bucket.
|
||||
title: '[Request] Add %%applicationName%%'
|
||||
labels: request, help wanted
|
||||
---
|
||||
|
||||
<!-- Adjust prefilled title with correct name of application -->
|
||||
<!-- Please provide following information: -->
|
||||
- **URL to application**: <>
|
||||
- **Latest version**:
|
||||
- **Graphical interface**: Yes/No
|
||||
- **Portable version**: Yes/No <!-- if Yes please specify if portable mode needs to be enabled and list files/folders needed to be handled on update -->
|
||||
|
||||
<!-- Is there anything else contributors need to know? -->
|
||||
<!-- Files, folders to persist across updates -->
|
||||
<!-- Installation requirements -->
|
||||
<!-- ... -->
|
|
@ -0,0 +1,16 @@
|
|||
on:
|
||||
issues:
|
||||
types: [ opened, labeled ]
|
||||
name: Issues
|
||||
jobs:
|
||||
issueHandler:
|
||||
runs-on: ubuntu-latest
|
||||
name: Issue Verification
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Verify Issue
|
||||
uses: Ash258/Scoop-GithubActions@stable
|
||||
if: github.event.action == 'opened' || (github.event.action == 'labeled' && contains(github.event.issue.labels.*.name, 'verify'))
|
||||
env:
|
||||
GITH_EMAIL: youremail@email.com
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@ -0,0 +1,16 @@
|
|||
on:
|
||||
issue_comment:
|
||||
types: [ created ]
|
||||
name: Commented Pull Request
|
||||
jobs:
|
||||
pullRequestHandler:
|
||||
name: Pull Request Validator
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Pull Request Validation
|
||||
uses: Ash258/Scoop-GithubActions@stable
|
||||
if: startsWith(github.event.comment.body, '/verify')
|
||||
env:
|
||||
GITH_EMAIL: youremail@email.com
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@ -0,0 +1,15 @@
|
|||
on:
|
||||
pull_request:
|
||||
types: [ opened ]
|
||||
name: Pull Requests
|
||||
jobs:
|
||||
pullRequestHandler:
|
||||
name: Pull Request Validator
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Pull Request Validation
|
||||
uses: Ash258/Scoop-GithubActions@stable
|
||||
env:
|
||||
GITH_EMAIL: youremail@email.com
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@ -0,0 +1,16 @@
|
|||
on:
|
||||
schedule:
|
||||
- cron: '0 * * * *'
|
||||
name: Excavator
|
||||
jobs:
|
||||
excavate:
|
||||
name: Excavator
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@main
|
||||
- name: Excavate
|
||||
uses: Ash258/Scoop-GithubActions@stable
|
||||
env:
|
||||
GITH_EMAIL: youremail@email.com
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
SKIP_UPDATED: '1'
|
|
@ -0,0 +1,3 @@
|
|||
/checkver*
|
||||
/.cache/
|
||||
/.vagrant/
|
|
@ -0,0 +1,133 @@
|
|||
{
|
||||
//#region General Information
|
||||
"##": "Some general comment for other maintainers",
|
||||
"version": "1.0",
|
||||
"description": "Meaningful description.",
|
||||
"homepage": "https://ash258.com",
|
||||
"license": {
|
||||
"identifier": "MIT",
|
||||
"url": "https://ash258.com" // Whenever possible attach a program specific URL, otherwise do not use
|
||||
},
|
||||
"notes": [ // String or Array Of Strings
|
||||
"Some notes shown after installation"
|
||||
],
|
||||
//#endregion General Information
|
||||
//#region Requirements
|
||||
// "depends": "MANIFEST",
|
||||
// or Array of string
|
||||
"depends": [
|
||||
"bucket/someManifest",
|
||||
"manifest"
|
||||
],
|
||||
"suggest": {
|
||||
"COSI": "COSI"
|
||||
// "Array": [
|
||||
// "bucket/manifest",
|
||||
// "manifest",
|
||||
// ]
|
||||
},
|
||||
//#endregion Requirements
|
||||
//#region Downloading
|
||||
"cookie": {
|
||||
"name": "value"
|
||||
},
|
||||
"architecture": { // Or platform specific below (URL, Hash, extract)
|
||||
"64bit": {
|
||||
"url": "https://ash258.com",
|
||||
"hash": "899346f9f283a4fd5aa03015a3f58cde5b9c0b6a5c4d64c2cc74e9b22c1348d7",
|
||||
"extract_dir": "DIRECTORY INSIDE ARCHIVE"
|
||||
},
|
||||
"32bit": {
|
||||
"url": [
|
||||
"https://ash258.com",
|
||||
"https://ash258.com#/cosi.zip"
|
||||
],
|
||||
"hash": [
|
||||
"899346f9f283a4fd5aa03015a3f58cde5b9c0b6a5c4d64c2cc74e9b22c1348d7",
|
||||
"md5:899346f9f283a4fd5aa03015a3f58cde"
|
||||
],
|
||||
"extract_dir": [
|
||||
"DirectoryInFirstURL",
|
||||
"DirectoryInSecondtURL"
|
||||
]
|
||||
}
|
||||
},
|
||||
//#endregion Downloading
|
||||
//#region Extracting
|
||||
"innosetup": true,
|
||||
"extract_dir": "FOLDER",
|
||||
"extract_to": "folder",
|
||||
//#endregion Extracting
|
||||
//#region Installing
|
||||
"pre_install": [ // String or Array Of Strings
|
||||
"Run some powershell commands executed before running installer",
|
||||
"other command"
|
||||
],
|
||||
"installer": {
|
||||
"file": "filename.exe", // Not needed to be specified if installer is downloaded file
|
||||
"args": "ARGUMENT" // String or Array Of Strings
|
||||
},
|
||||
"post_install": "Some powershell commands executed after running installer",
|
||||
//#region UnInstalling
|
||||
"uninstaller": {
|
||||
"file": "uninstaller.exe",
|
||||
"args": "ARGUMENT" // String or Array Of Strings
|
||||
},
|
||||
//$endregion UnInstalling
|
||||
//#endregion Installing
|
||||
//#region Links
|
||||
"bin": [ // String or Array Of Array Of Strings
|
||||
"singlebinary.exe",
|
||||
[
|
||||
"singlebinary.exe",
|
||||
"withOtherName"
|
||||
],
|
||||
[
|
||||
"singlebinary.exe",
|
||||
"withOtherName",
|
||||
"andSomeArguments"
|
||||
],
|
||||
[
|
||||
"singlebinary.exe",
|
||||
"withOtherName",
|
||||
"", // Keep blank if none
|
||||
"withOtherIcon.ico"
|
||||
]
|
||||
],
|
||||
"shortcuts": [ // String or Array Of Array Of Strings (similar to bin)
|
||||
[
|
||||
"",
|
||||
""
|
||||
]
|
||||
],
|
||||
"psmodule": {
|
||||
"name": "moduleName"
|
||||
},
|
||||
"env_add_path": "bin", // String or Array Of Strings
|
||||
"env_set": {
|
||||
"KEY": "value"
|
||||
},
|
||||
"persist": [ // String or Array Of Strings
|
||||
"FOLDERTOPERSIST",
|
||||
"FILETOPERSIST.extension"
|
||||
],
|
||||
//#endregion Links
|
||||
//#region Updating
|
||||
// "checkver": "regex", Match regex inside string on homepage
|
||||
// "checkver": "github", If homepage is set to github repo
|
||||
"checkver": {
|
||||
"url": "https://exampleurl.cz",
|
||||
"jsonpath": "$.cosi",
|
||||
"regex": "REGEXTOMATCH([\\d.]+)",
|
||||
"replace": "$1"
|
||||
},
|
||||
"autoupdate": {
|
||||
"url": "https://ash258.com#/newName.zip",
|
||||
"hash": { // Some vendors do not ship hashes 😭
|
||||
"url": "https://ash258.com",
|
||||
"regex": "do not write regexes for hash algorithms, use variables ($md5, $sha1, $sha256, $sha512, $checksum)"
|
||||
},
|
||||
"note": "Note after autoupdate"
|
||||
}
|
||||
//#endregion Updating
|
||||
}
|
|
@ -0,0 +1,9 @@
|
|||
{
|
||||
"recommendations": [
|
||||
"EditorConfig.EditorConfig",
|
||||
"ms-vscode.PowerShell",
|
||||
"fabiospampinato.vscode-terminals",
|
||||
"usernamehw.errorlens",
|
||||
"redhat.vscode-yaml",
|
||||
],
|
||||
}
|
|
@ -0,0 +1,104 @@
|
|||
{
|
||||
"New app String": {
|
||||
"prefix": "app",
|
||||
"scope": "json,jsonc",
|
||||
"body": [
|
||||
"{",
|
||||
"\t\"version\": \"$1\",",
|
||||
"\t\"description\": \"$2\",",
|
||||
"\t\"homepage\": \"$3\",",
|
||||
"\t\"license\": {\"identifier\": \"$4\"},",
|
||||
"\t\"notes\": \"$5\",",
|
||||
"\t\"depends\": \"$6\",",
|
||||
"\t\"url\": \"$7\",",
|
||||
"\t\"hash\": \"$8\",",
|
||||
"\t\"bin\": \"$9\",",
|
||||
"\t\"shortcuts\": [",
|
||||
"\t\t[",
|
||||
"\t\t\t\"$10.exe\",",
|
||||
"\t\t\t\"$11\"",
|
||||
"\t\t]",
|
||||
"\t],",
|
||||
"\t\"checkver\":\"$12\",",
|
||||
"\t\"autoupdate\": {",
|
||||
"\t\t\"url\": \"$13\"",
|
||||
"\t}",
|
||||
"}\n",
|
||||
],
|
||||
},
|
||||
"New app Arch": {
|
||||
"prefix": "appArch",
|
||||
"scope": "json,jsonc",
|
||||
"body": [
|
||||
"{",
|
||||
"\t\"version\": \"$1\",",
|
||||
"\t\"description\": \"$2\",",
|
||||
"\t\"homepage\": \"$3\",",
|
||||
"\t\"license\": {\"identifier\": \"$4\"},",
|
||||
"\t\"notes\": \"$5\",",
|
||||
"\t\"depends\": \"$6\",",
|
||||
"\t\"architecture\": {",
|
||||
"\t\t\"64bit\": {",
|
||||
"\t\t\t\"url\": \"$7\",",
|
||||
"\t\t\t\"hash\": \"$8\"",
|
||||
"\t\t},",
|
||||
"\t\t\"32bit\": {",
|
||||
"\t\t\t\"url\": \"$9\",",
|
||||
"\t\t\t\"hash\": \"$10\"",
|
||||
"\t\t}",
|
||||
"\t},",
|
||||
"\t\"bin\": \"$11\",",
|
||||
"\t\"shortcuts\": [",
|
||||
"\t\t[",
|
||||
"\t\t\t\"$12.exe\",",
|
||||
"\t\t\t\"$13\"",
|
||||
"\t\t]",
|
||||
"\t]",
|
||||
"}\n",
|
||||
],
|
||||
},
|
||||
"New Architecture": {
|
||||
"prefix": "arch",
|
||||
"scope": "json,jsonc",
|
||||
"body": [
|
||||
"\"architecture\": {",
|
||||
"\t\"64bit\": {",
|
||||
"\t\t\"url\": \"$1\",",
|
||||
"\t\t\"hash\": \"$2\"",
|
||||
"\t},",
|
||||
"\t\"32bit\": {",
|
||||
"\t\t\"url\": \"$3\",",
|
||||
"\t\t\"hash\": \"$4\"",
|
||||
"\t}",
|
||||
"},",
|
||||
],
|
||||
},
|
||||
"New Autoupdate with Arch": {
|
||||
"prefix": "upAr",
|
||||
"scope": "json,jsonc",
|
||||
"body": [
|
||||
"\"autoupdate\": {",
|
||||
"\t\"architecture\": {",
|
||||
"\t\t\"64bit\": {",
|
||||
"\t\t\t\"url\": \"$1\"",
|
||||
"\t\t},",
|
||||
"\t\t\"32bit\": {",
|
||||
"\t\t\t\"url\": \"$2\"",
|
||||
"\t\t}",
|
||||
"\t}",
|
||||
"}",
|
||||
],
|
||||
},
|
||||
"Check for existing persist file": {
|
||||
"prefix": "persistCheck",
|
||||
"scope": "json,jsonc",
|
||||
"body": [
|
||||
"\"\\$file = '$1'\",",
|
||||
"\"if (!(Test-Path \\\"\\$persist_dir\\\\\\\\\\$file\\\")) {\",",
|
||||
"\"\tWrite-Host 'File' \\$file 'does not exists. Creating.' -f Yellow\",",
|
||||
"\"\t\\$CONT = @('$2')\",",
|
||||
"\"\tSet-Content \\\"\\$dir\\\\\\\\\\$file\\\" (\\$CONT -join \\\"`r`n\\\") -Encoding Ascii\",",
|
||||
"\"}\"",
|
||||
],
|
||||
},
|
||||
}
|
|
@ -0,0 +1,54 @@
|
|||
{
|
||||
"json.schemas": [
|
||||
{
|
||||
"url": "https://raw.githubusercontent.com/lukesampson/scoop/master/schema.json",
|
||||
"fileMatch": [
|
||||
".vscode/Template.jsonc",
|
||||
"bucket/*.json",
|
||||
],
|
||||
},
|
||||
],
|
||||
"powershell.codeFormatting.preset": "OTBS",
|
||||
"yaml.format.bracketSpacing": true,
|
||||
"yaml.format.enable": true,
|
||||
"yaml.format.singleQuote": true,
|
||||
"yaml.validate": true,
|
||||
"yaml.schemas": {
|
||||
"http://json.schemastore.org/appveyor": "appveyor.yml",
|
||||
"https://raw.githubusercontent.com/lukesampson/scoop/master/schema.json": [
|
||||
"bucket/*.yml",
|
||||
],
|
||||
},
|
||||
"terminals.terminals": [
|
||||
{
|
||||
"name": "Powershell",
|
||||
"shellPath": "powershell.exe",
|
||||
"shellArgs": [
|
||||
"-NoLogo",
|
||||
"-NoExit",
|
||||
],
|
||||
"focus": true,
|
||||
"open": true,
|
||||
},
|
||||
{
|
||||
"name": "Powershell Core",
|
||||
"shellPath": "pwsh.exe",
|
||||
"shellArgs": [
|
||||
"-NoLogo",
|
||||
"-NoExit",
|
||||
],
|
||||
"focus": true,
|
||||
"open": true,
|
||||
},
|
||||
{
|
||||
"name": "Powershell Core (Preview)",
|
||||
"shellPath": "pwsh-preview.exe",
|
||||
"shellArgs": [
|
||||
"-NoLogo",
|
||||
"-NoExit",
|
||||
],
|
||||
"focus": true,
|
||||
"open": true,
|
||||
},
|
||||
],
|
||||
}
|
|
@ -0,0 +1,293 @@
|
|||
{
|
||||
"version": "2.0.0",
|
||||
"tasks": [
|
||||
{
|
||||
"label": "Check version (Whole repository)",
|
||||
"detail": "Execute checkver for each manifests ini each folder inside repository.",
|
||||
"type": "shell",
|
||||
"options": {
|
||||
"env": {
|
||||
"SCOOP_DEBUG": "true",
|
||||
},
|
||||
},
|
||||
"command": ".\\bin\\checkver.ps1",
|
||||
"args": [
|
||||
"-Recurse",
|
||||
],
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "always",
|
||||
"focus": false,
|
||||
"panel": "shared",
|
||||
"showReuseMessage": false,
|
||||
},
|
||||
"group": "test",
|
||||
"problemMatcher": [],
|
||||
},
|
||||
{
|
||||
// Default (While opened file, Press CTRL+F9 / CTRL+SHIFT+B)
|
||||
"label": "Check and update (Actual)",
|
||||
"detail": "Custom version check with auto commit",
|
||||
"type": "shell",
|
||||
"options": {
|
||||
"env": {
|
||||
"SCOOP_DEBUG": "true",
|
||||
},
|
||||
},
|
||||
"command": ".\\bin\\checkAndPush.ps1",
|
||||
"args": [
|
||||
"'${file}'",
|
||||
"${input:pickUpdateType}",
|
||||
"${input:pickCheckType}",
|
||||
],
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "always",
|
||||
"focus": false,
|
||||
"panel": "shared",
|
||||
"showReuseMessage": false,
|
||||
},
|
||||
"problemMatcher": [],
|
||||
"runOptions": {
|
||||
"reevaluateOnRerun": false,
|
||||
},
|
||||
"group": {
|
||||
"kind": "build",
|
||||
"isDefault": true,
|
||||
},
|
||||
},
|
||||
{
|
||||
"label": "Test",
|
||||
"detail": "Execute Pester tests in repository root directory.",
|
||||
"type": "shell",
|
||||
"command": ".\\bin\\test.ps1",
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "silent",
|
||||
"focus": false,
|
||||
"panel": "shared",
|
||||
"showReuseMessage": false,
|
||||
},
|
||||
"group": "test",
|
||||
"problemMatcher": [],
|
||||
},
|
||||
{
|
||||
"label": "Missing Checkver",
|
||||
"detail": "Check if manifests have checkver and autoupdate properties.",
|
||||
"type": "shell",
|
||||
"command": ".\\bin\\missing-checkver.ps1; .\\bin\\missing-checkver.ps1 -dir \"TODO\"",
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "silent",
|
||||
"focus": false,
|
||||
"panel": "shared",
|
||||
"showReuseMessage": false,
|
||||
},
|
||||
"group": "test",
|
||||
"problemMatcher": [],
|
||||
},
|
||||
{
|
||||
"label": "Push Auto-PR",
|
||||
"detail": "Execute checkver and push updated manifests.",
|
||||
"type": "shell",
|
||||
"options": {
|
||||
"env": {
|
||||
"SCOOP_DEBUG": "true",
|
||||
},
|
||||
},
|
||||
"command": ".\\bin\\auto-pr.ps1",
|
||||
"args": [
|
||||
"-Push",
|
||||
],
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "always",
|
||||
"focus": false,
|
||||
"panel": "shared",
|
||||
"showReuseMessage": true,
|
||||
"clear": false,
|
||||
},
|
||||
"problemMatcher": [],
|
||||
},
|
||||
{
|
||||
"label": "Checkver Actual",
|
||||
"detail": "Check version of currently opened manifest.",
|
||||
"type": "shell",
|
||||
"options": {
|
||||
"env": {
|
||||
"SCOOP_DEBUG": "true",
|
||||
},
|
||||
},
|
||||
"command": ".\\bin\\checkver.ps1",
|
||||
"args": [
|
||||
"-App",
|
||||
"'${fileBasenameNoExtension}'",
|
||||
"-Dir",
|
||||
"'${relativeFileDirname}'",
|
||||
"-Force",
|
||||
],
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "silent",
|
||||
"focus": false,
|
||||
"panel": "shared",
|
||||
"showReuseMessage": false,
|
||||
},
|
||||
"problemMatcher": [],
|
||||
"runOptions": {
|
||||
"instanceLimit": 99,
|
||||
},
|
||||
},
|
||||
{
|
||||
"label": "Checkhashes Actual",
|
||||
"detail": "Check hashes of currently opened manifest.",
|
||||
"type": "shell",
|
||||
"options": {
|
||||
"env": {
|
||||
"SCOOP_DEBUG": "true",
|
||||
},
|
||||
},
|
||||
"command": ".\\bin\\checkhashes.ps1",
|
||||
"args": [
|
||||
"-App",
|
||||
"'${fileBasenameNoExtension}'",
|
||||
"-Dir",
|
||||
"'${relativeFileDirname}'",
|
||||
"-Force",
|
||||
],
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "silent",
|
||||
"focus": false,
|
||||
"panel": "shared",
|
||||
"showReuseMessage": false,
|
||||
},
|
||||
"problemMatcher": [],
|
||||
"runOptions": {
|
||||
"instanceLimit": 99,
|
||||
},
|
||||
},
|
||||
{
|
||||
"label": "Purge Uninstall Actual",
|
||||
"detail": "Uninstall currently opened manifest and remove persisted data.",
|
||||
"type": "shell",
|
||||
"options": {
|
||||
"env": {
|
||||
"SCOOP_DEBUG": "true",
|
||||
},
|
||||
},
|
||||
"command": "scoop",
|
||||
"args": [
|
||||
"uninstall",
|
||||
"'${fileBasenameNoExtension}'",
|
||||
"-p",
|
||||
],
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "silent",
|
||||
"focus": false,
|
||||
"panel": "shared",
|
||||
"showReuseMessage": false,
|
||||
},
|
||||
"problemMatcher": [],
|
||||
"runOptions": {
|
||||
"instanceLimit": 99,
|
||||
},
|
||||
},
|
||||
{
|
||||
"label": "Install Actual",
|
||||
"detail": "Install currently opened manifest.",
|
||||
"type": "shell",
|
||||
"options": {
|
||||
"env": {
|
||||
"SCOOP_DEBUG": "true",
|
||||
},
|
||||
},
|
||||
"command": "scoop",
|
||||
"args": [
|
||||
"install",
|
||||
"'${file}'",
|
||||
],
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "silent",
|
||||
"focus": false,
|
||||
"panel": "shared",
|
||||
"showReuseMessage": false,
|
||||
},
|
||||
"problemMatcher": [],
|
||||
"runOptions": {
|
||||
"instanceLimit": 99,
|
||||
},
|
||||
},
|
||||
{
|
||||
"label": "ReInstall Actual",
|
||||
"detail": "Uninstall (--purge) and install currently opened manifest.",
|
||||
"type": "shell",
|
||||
"options": {
|
||||
"env": {
|
||||
"SCOOP_DEBUG": "true",
|
||||
},
|
||||
},
|
||||
"dependsOn": [
|
||||
"Purge Uninstall Actual",
|
||||
"Install Actual",
|
||||
],
|
||||
"dependsOrder": "sequence",
|
||||
"presentation": {
|
||||
"echo": true,
|
||||
"reveal": "silent",
|
||||
"focus": false,
|
||||
"panel": "shared",
|
||||
"showReuseMessage": false,
|
||||
},
|
||||
"problemMatcher": [],
|
||||
"runOptions": {
|
||||
"instanceLimit": 99,
|
||||
},
|
||||
},
|
||||
{
|
||||
"label": "Force Update Actual",
|
||||
"detail": "Update currently opened manifest.",
|
||||
"type": "shell",
|
||||
"options": {
|
||||
"env": {
|
||||
"SCOOP_DEBUG": "true",
|
||||
},
|
||||
},
|
||||
"command": "scoop",
|
||||
"args": [
|
||||
"update",
|
||||
"'${fileBasenameNoExtension}'",
|
||||
"-f",
|
||||
],
|
||||
"problemMatcher": [],
|
||||
"runOptions": {
|
||||
"instanceLimit": 99,
|
||||
"reevaluateOnRerun": false,
|
||||
},
|
||||
},
|
||||
],
|
||||
"inputs": [
|
||||
{
|
||||
"id": "pickUpdateType",
|
||||
"description": "Select how manifest should be updated.",
|
||||
"type": "pickString",
|
||||
"options": [
|
||||
"-Update",
|
||||
"-ForceUpdate",
|
||||
],
|
||||
"default": "-Update",
|
||||
},
|
||||
{
|
||||
"id": "pickCheckType",
|
||||
"description": "Select what binary should be called. (checkver or checkhashes)",
|
||||
"type": "pickString",
|
||||
"options": [
|
||||
"-Hashes:$false",
|
||||
"-Hashes",
|
||||
],
|
||||
"default": "-Hashes:$false",
|
||||
},
|
||||
],
|
||||
}
|
|
@ -0,0 +1,3 @@
|
|||
if (-not ($env:SCOOP_HOME)) { $env:SCOOP_HOME = scoop prefix scoop | Resolve-Path }
|
||||
|
||||
. "$env:SCOOP_HOME\test\Import-Bucket-Tests.ps1"
|
|
@ -0,0 +1,134 @@
|
|||
# Generic scoop bucket
|
||||
|
||||
❗❗🎉 Repository was converted into Template. See [blog](https://github.blog/2019-06-06-generate-new-repositories-with-repository-templates/?utm_campaign=1559837005&utm_medium=social&utm_source=twitter&utm_content=1559837005) for more information. 🎉❗❗
|
||||
|
||||
In this repository you will find everything you need to know about creating custom bucket with appveyor support.
|
||||
|
||||
- [Files and helpers](#files-and-helpers)
|
||||
- [`bucket` Folder](#bucket-folder)
|
||||
- [`bin` Folder](#bin-folder)
|
||||
- [`Bucket.Tests.ps1` File](#buckettestsps1-file)
|
||||
- [`.vscode` Folder](#vscode-folder)
|
||||
- [`.github` Folder](#github-folder)
|
||||
- [`config files`](#config-files)
|
||||
- [How to use and adopt this bucket](#how-to-use-and-adopt-this-bucket)
|
||||
|
||||
## Files and helpers
|
||||
|
||||
### `bucket` Folder
|
||||
|
||||
- All manifests belong here
|
||||
- `.gitkeep` file could be removed after you push your first manifest
|
||||
|
||||
### `bin` Folder
|
||||
|
||||
Scripts which will save you time while debuging and writing manifests.
|
||||
If you need help how to use them just run `Get-Help .\bin\<BINARY>.ps1`.
|
||||
|
||||
### `Bucket.Tests.ps1` File
|
||||
|
||||
- Test which are executed inside Appveyor pipeline
|
||||
- Could be configured as `pre_commit` hook
|
||||
|
||||
### `.vscode` Folder
|
||||
|
||||
Contains all syntax highlighting, code formating, manifest creating tools you could use.
|
||||
|
||||
- Extensions
|
||||
- All extensions which will save your time while writing manifests are in recommended sections
|
||||
- You will be notified about installing them when you open project
|
||||
- Settings
|
||||
- All settings are set to be compatible with Appveyor pipeline and upstream (official) repositories
|
||||
- No need to worry about formating restrictions between repositories.
|
||||
- Code snippets
|
||||
- > Code snippets are templates that make it easier to enter repeating code patterns, such as loops or conditional-statements.
|
||||
- You could use workspace wide code snippets for speed up manifest creating
|
||||
- While editing json file write partitial name of snippet and press `tab`
|
||||
- Available Json snippets:
|
||||
- `app`
|
||||
- Create default manifest structure
|
||||
- `appArch`
|
||||
- Create default manifest structure with full acrchitecture
|
||||
- `arch`
|
||||
- Create only architecture property with 64bit and 32bit
|
||||
- `upAr`
|
||||
- Create autoupdate property with architecture
|
||||
- `persistCheck`
|
||||
- Installer / pre_install script for checking if file is already persisted or need to be created
|
||||
|
||||
### `.github` Folder
|
||||
|
||||
GitHub repository configuration.
|
||||
|
||||
- `workflows` folder
|
||||
- Linux (legacy) version [GitHub Actions](https://github.com/features/actions) configuration for automatic issue/PR/updates handling.
|
||||
- Windows version of actions could be used for better and future proof implementation (see <https://github.com/Ash258/Scoop-GithubActions/tree/main-win> for updated configs)
|
||||
- `CODEOWNERS`
|
||||
- Pull requests will request review for users defined in this file
|
||||
- `PULL REQUEST TEMPLATE`
|
||||
- Prefilled pull request types with proper titles
|
||||
- `ISSUE TEMPLATE`
|
||||
- The most used issue templates for users to select and prefilled with required information and labels
|
||||
|
||||
### `config files`
|
||||
|
||||
- `.appveyor.yml`
|
||||
- Definition of Appveyor CI pipeline
|
||||
- `.editorconfig`
|
||||
- Universal configuration file, compatible with all types of editors
|
||||
- Defines how files should look
|
||||
- `.gitattributes`
|
||||
- Simplifying line endings for git
|
||||
- No need to configure `auto.clrf` setting on each clone or new workspaces
|
||||
- `Bucket.Tests.ps1`
|
||||
- Test which are executed inside Appveyor pipeline
|
||||
- Could be configured as `pre_commit` hook
|
||||
|
||||
## How to use and adopt this bucket
|
||||
|
||||
1. Click on `Use this template` to create new repository in your account with same files
|
||||
1. Open project settings and **give your bucket in new name**
|
||||
1. Add proper description of repository
|
||||
- Information about what type of manifests could be found here
|
||||
1. Add `scoop-bucket` tag for repository
|
||||
- Your manifests will be automatically available at <https://scoop-docs.now.sh/apps/>
|
||||
1. Enable appveyor CI/CD
|
||||
1. Register / Login to [Appveyor](https://ci.appveyor.com/login)
|
||||
1. Click `New Project`
|
||||
1. From Left Panel, choose your source control variant (Github)
|
||||
1. From Right Panel, choose repository with bucket and click `+ Add`
|
||||
1. 🎉 Project created and ready to build 🎉
|
||||
1. Get Badge URL
|
||||
1. Open Appveyor Project settings
|
||||
1. Navigate to Badges
|
||||
1. Copy `Branch Sample markdown code` snippet for further usage
|
||||
- Only master branch is better, since you can freely test in other branches and do not mystificate users
|
||||
- [You could use alternative styles](https://shields.io/category/build#styles)
|
||||
1. Clone project into some folder
|
||||
- `git clone git@github.com:USER/REPO.git MyAwesomeBucket`
|
||||
- or
|
||||
- `git clone https://github.com/USER/REPO.git MyAwesomeBucket`
|
||||
1. Open vscode with this clone
|
||||
- `code MyAwesomeBucket`
|
||||
1. _[optional]_ Configure remote repository
|
||||
1. `git remote add 'upstream' 'https://github.com/Ash258/GenericBucket.git'`
|
||||
- This step will allow you to synchronize changes with this template repository
|
||||
- If some changes are pushed into this repository and you want to reflect them into your bucket, you can simply do something like:
|
||||
- `git fetch --all`
|
||||
- `git checkout -B upstream-master -t upstream/master`
|
||||
- Do changes
|
||||
- `git merge master` or create PR in github
|
||||
1. Create proper README.md
|
||||
1. [Open this README in the browser for reference](https://github.com/Ash258/GenericBucket/tree/master/README.md)
|
||||
1. Open `README.template.md`
|
||||
1. Replace all `%%templatestring%%` with real and according values
|
||||
1. Replace appveyor status badge with yours
|
||||
- See: <https://appveyor.com/docs/status-badges/>
|
||||
1. Override this README with completed `README.template.md`
|
||||
1. Remove template `README.template.md`
|
||||
1. Repository tweaks
|
||||
1. Open `.github\CODEOWNERS` and change `@Ash258` to desired github username
|
||||
1. Actions
|
||||
1. Open each file in `.github\workflows` and change `youremail@email.com` with your email
|
||||
1. Visit <https://github.com/Ash258/Scoop-GithubActions> for more information
|
||||
1. 🎉🎉 Everything set. High quality and automated bucket is ready for new users 🎉🎉
|
|
@ -0,0 +1,3 @@
|
|||
# Scoop %%BUCKET_NAME%% Bucket %%SAMPLE_MARKDOWN_BADGE_CODE%%
|
||||
|
||||
`scoop bucket add %%NICE_NAME_TO_BE_SHOWN_TO_USER%% '%%HTTPS_GITHUB_REPOSITORY_URL.git%%'`
|
|
@ -0,0 +1,9 @@
|
|||
$ROOT_DIRECTORY = Resolve-Path "$PSScriptRoot\.."
|
||||
$BUCKET_DIRECTORY = Resolve-Path "$ROOT_DIRECTORY\bucket"
|
||||
|
||||
function Get-RecursiveFolder {
|
||||
$folders = @($ROOT_DIRECTORY)
|
||||
$folders += Get-ChildItem $ROOT_DIRECTORY -Directory | Where-Object { $_ -inotmatch '.vscode|bin' }
|
||||
|
||||
return Resolve-Path $folders
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Updates manifests and pushes them or creates pull-requests.
|
||||
.DESCRIPTION
|
||||
Updates manifests and pushes them to directly the master branch or creates pull-requests for upstream.
|
||||
.PARAMETER Manifest
|
||||
Specify manifest to be updated.
|
||||
.PARAMETER Dir
|
||||
Specify directory with manifests.
|
||||
.PARAMETER Upstream
|
||||
Specify upstream repository with target branch.
|
||||
.PARAMETER Push
|
||||
Specify if updates should be directly pushed to 'origin master'.
|
||||
.PARAMETER Request
|
||||
Specify if pull-requests should be created on 'upstream master' for each manifest.
|
||||
.PARAMETER SpecialSnowflakes
|
||||
Specify list of manifests, which should be force updated.
|
||||
#>
|
||||
param(
|
||||
[Alias('App', 'Name')]
|
||||
[String] $Manifest = '*',
|
||||
[ValidateScript( { if ( Test-Path $_ -Type Container) { $true } else { $false } })]
|
||||
[String] $Dir = "$PSScriptRoot\..\bucket",
|
||||
[ValidatePattern('^(.+)\/(.+):(.+)$')]
|
||||
[String] $Upstream = $((git config --get remote.origin.url) -replace '^.+[:/](?<user>.*)\/(?<repo>.*)(\.git)?$', '${user}/${repo}:master'),
|
||||
[Switch] $Push,
|
||||
[Switch] $Request,
|
||||
[string[]] $SpecialSnowflakes
|
||||
)
|
||||
|
||||
begin {
|
||||
if (-not $env:SCOOP_HOME) {
|
||||
if (-not (Get-Command 'scoop' -ErrorAction SilentlyContinue)) { throw 'Scoop installation or SCOOP_HOME environment is required' }
|
||||
$env:SCOOP_HOME = scoop prefix scoop | Resolve-Path
|
||||
}
|
||||
$Params = @{
|
||||
App = $Manifest
|
||||
Dir = Resolve-Path $Dir
|
||||
Upstream = $Upstream
|
||||
Push = $Push
|
||||
Request = $Request
|
||||
SpecialSnowflakes = $SpecialSnowflakes
|
||||
SkipUpdated = $true
|
||||
}
|
||||
}
|
||||
|
||||
process { & "$env:SCOOP_HOME\bin\auto-pr.ps1" @Params }
|
||||
|
||||
end { Write-Host 'DONE' -ForegroundColor Yellow }
|
|
@ -0,0 +1,77 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Update manifest, commit and push.
|
||||
.DESCRIPTION
|
||||
Use as vscode task:
|
||||
1. Open manifest in editor
|
||||
1. Press CTRL+SHIFT+B or CTRL+F9 (IntelliJ)
|
||||
1. Be surprised
|
||||
.PARAMETER Manifest
|
||||
Full Path to manifest. (vscode ${file})
|
||||
.PARAMETER Force
|
||||
Force parameter will be passed to checkver.
|
||||
.PARAMETER Hashes
|
||||
checkhashes.ps1 script will be executed instead of checkver.ps1
|
||||
#>
|
||||
param(
|
||||
[Alias('App')]
|
||||
[String[]] $Manifest,
|
||||
[Alias('ForceUpdate')]
|
||||
[Switch] $Force,
|
||||
[Switch] $Hashes
|
||||
)
|
||||
|
||||
begin {
|
||||
. "$PSScriptRoot\Helpers.ps1"
|
||||
|
||||
if ($Force) { $arg = '-ForceUpdate' } else { $arg = '-Update' }
|
||||
}
|
||||
|
||||
process {
|
||||
foreach ($man in $Manifest) {
|
||||
# TODO: Yaml
|
||||
# if (-not ($man.EndsWith('.yml'))) {
|
||||
# $man += '.yml'
|
||||
# }
|
||||
if (-not ($man.EndsWith('.json'))) {
|
||||
$man += '.json'
|
||||
}
|
||||
$man = Resolve-Path $man
|
||||
$folder = Split-Path $man -Parent
|
||||
$file = Split-Path $man -Leaf
|
||||
$noExt = ($file -split '\.')[0]
|
||||
$cmd = 'checkver'
|
||||
|
||||
if ($Force) { scoop cache rm $noExt }
|
||||
if ($Hashes) { $cmd = 'checkhashes' }
|
||||
|
||||
Invoke-Expression -Command "$PSScriptRoot\$cmd.ps1 '$noExt' '$folder' $arg"
|
||||
|
||||
$updated = @(git status -s)
|
||||
|
||||
if (($updated -match "$noExt").Count -gt 0) {
|
||||
# TODO: Yaml
|
||||
# $manifest = Get-Content $man -Raw -Encoding UTF8 | ConvertFrom-Yaml -Ordered
|
||||
[psobject] $manifest = Get-Content $man -Raw -Encoding UTF8 | ConvertFrom-Json
|
||||
$message = "$noExt`: Bumped to $($manifest.version)"
|
||||
|
||||
if ($Hashes) { $message = "${noExt}: Fixed hashes" }
|
||||
|
||||
Write-Host 'Commiting' -ForegroundColor Green
|
||||
git commit --message $message --only "*$file"
|
||||
$exit = $LASTEXITCODE
|
||||
|
||||
if ($exit -gt 0) {
|
||||
Write-Host 'Pre-commit hook failed.' -ForegroundColor Red
|
||||
exit $exit
|
||||
}
|
||||
|
||||
Write-Host 'Pushing' -ForegroundColor Green
|
||||
git push
|
||||
|
||||
Write-Host 'DONE' -ForegroundColor Yellow
|
||||
} else {
|
||||
Write-Host 'No Changes' -ForegroundColor Yellow
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,68 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Check hashes of all URLs inside manifest.
|
||||
.DESCRIPTION
|
||||
Check hashes of all URLs inside manifest.
|
||||
Script will download every URL and then calculate hash of them.
|
||||
.PARAMETER Manifest
|
||||
Specify the name of manifest to be checked.
|
||||
Placeholders are supported.
|
||||
.PARAMETER Dir
|
||||
Specify the directory with manifests.
|
||||
Default to bucket folder.
|
||||
.PARAMETER Rest
|
||||
-u - Update hashes if there are mismatched ones.
|
||||
-f - Update hashes always (even without mismatch).
|
||||
-k - Use cache.
|
||||
.EXAMPLE
|
||||
PS BUCKETDIR> .\bin\checkhashes.ps1
|
||||
Check URLs of all manifests.
|
||||
.EXAMPLE
|
||||
PS BUCKETDIR> .\bin\checkhashes.ps1 MAN
|
||||
Check URLs of manifests MAN.json inside bucket root.
|
||||
.EXAMPLE
|
||||
PS BUCKETDIR> .\bin\checkhashes.ps1 MAN TODO
|
||||
Check URLs of manifests MAN.json inside folder ./BUCKETROOT/TODO.
|
||||
.EXAMPLE
|
||||
PS BUCKETDIR> .\bin\checkhashes.ps1 MAN -u
|
||||
Check URLs of manifests MAN and update if there are some mismatches.
|
||||
.EXAMPLE
|
||||
PS BUCKETDIR> .\bin\checkhashes.ps1 MAN -f
|
||||
Check URLs of manifests MAN and update even if every hash is correct.
|
||||
.EXAMPLE
|
||||
PS BUCKETDIR> .\bin\checkhashes.ps1 MAN -k
|
||||
Check URLs of manifests MAN and keep it's downloaded files.
|
||||
#>
|
||||
param(
|
||||
[Parameter(ValueFromPipeline = $true)]
|
||||
[Alias('App', 'Name')]
|
||||
[String[]] $Manifest = '*',
|
||||
[ValidateScript( { if ( Test-Path $_ -Type Container) { $true } else { $false } })]
|
||||
[String] $Dir = "$PSScriptRoot\..\bucket",
|
||||
[Switch] $Recurse,
|
||||
[Parameter(ValueFromRemainingArguments)]
|
||||
[String[]] $Rest
|
||||
)
|
||||
|
||||
|
||||
begin {
|
||||
. "$PSScriptRoot\Helpers.ps1"
|
||||
|
||||
if (-not $env:SCOOP_HOME) {
|
||||
if (-not (Get-Command 'scoop' -ErrorAction SilentlyContinue)) { throw 'Scoop installation or SCOOP_HOME environment is required' }
|
||||
$env:SCOOP_HOME = scoop prefix scoop | Resolve-Path
|
||||
}
|
||||
$Dir = Resolve-Path $Dir
|
||||
$Script = "$env:SCOOP_HOME\bin\checkhashes.ps1"
|
||||
$Rest = ($Rest | Select-Object -Unique) -join ' '
|
||||
}
|
||||
|
||||
process {
|
||||
if ($Recurse) {
|
||||
Get-RecursiveFolder | ForEach-Object { Invoke-Expression -Command "$Script -Dir ""$_"" $Rest" }
|
||||
} else {
|
||||
foreach ($man in $Manifest) { Invoke-Expression -Command "$Script -App ""$man"" -Dir ""$Dir"" $Rest" }
|
||||
}
|
||||
}
|
||||
|
||||
end { Write-Host 'DONE' -ForegroundColor Yellow }
|
|
@ -0,0 +1,55 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Check if all urls inside manifest are valid.
|
||||
.PARAMETER Manifest
|
||||
Manifest to check.
|
||||
Wildcard * is supported.
|
||||
.PARAMETER Dir
|
||||
Location where to search manifests.
|
||||
Default to bucket folder.
|
||||
.PARAMETER Timeout
|
||||
How many seconds to wait until mark URL as invalid.
|
||||
.PARAMETER Rest
|
||||
-s - Skip manifests will all URLs valid.
|
||||
.EXAMPLE
|
||||
PS BUCKETROOT > .\bin\checkurls
|
||||
Check urls for all manifests in root of bucket.
|
||||
.EXAMPLE
|
||||
PS BUCKETROOT > .\bin\checkurls cosi
|
||||
Check urls for cosi.json manifest in root of bucket.
|
||||
.EXAMPLE
|
||||
PS BUCKETROOT > .\bin\checkurls cosi TODO
|
||||
Check urls for cosi.json manifest in TODO directory.
|
||||
.EXAMPLE
|
||||
PS BUCKETROOT > .\bin\checkurls cosi TODO 25
|
||||
Check urls for cosi.json manifest in TODO directory with 25 timeout.
|
||||
.EXAMPLE
|
||||
PS BUCKETROOT > .\bin\checkurls -dir TODO
|
||||
Check urls for all manifests in TODO directory.
|
||||
#>
|
||||
param(
|
||||
[Parameter(ValueFromPipeline = $true)]
|
||||
[Alias('App')]
|
||||
[String[]] $Manifest = '*',
|
||||
[ValidateScript( { if ( Test-Path $_ -Type Container) { $true } else { $false } })]
|
||||
[String] $Dir = "$PSScriptRoot\..\bucket",
|
||||
[Int] $Timeout = 5,
|
||||
[Switch] $Recurse,
|
||||
[Parameter(ValueFromRemainingArguments = $true)]
|
||||
[String[]] $Rest = @()
|
||||
)
|
||||
|
||||
begin {
|
||||
if (-not $env:SCOOP_HOME) { $env:SCOOP_HOME = Resolve-Path (scoop prefix scoop) }
|
||||
$Dir = Resolve-Path $Dir
|
||||
$Script = "$env:SCOOP_HOME\bin\checkurls.ps1"
|
||||
$Rest = ($Rest | Select-Object -Unique) -join ' '
|
||||
}
|
||||
|
||||
process {
|
||||
if ($Recurse) {
|
||||
Get-RecursiveFolder | ForEach-Object { Invoke-Expression -Command "$Script -Dir ""$_"" -Timeout $Timeout $Rest" }
|
||||
} else {
|
||||
foreach ($man in $Manifest) { Invoke-Expression -Command "$Script -App ""$man"" -Dir ""$Dir"" -Timeout $Timeout $Rest" }
|
||||
}
|
||||
}
|
|
@ -0,0 +1,82 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Check version of given manifests.
|
||||
.DESCRIPTION
|
||||
Check version of given manifests (If no manifest is present, all manifests in root of repo will be checked).
|
||||
-s Parameter is set to true by default. (use -ns to show all)
|
||||
Few control parameters could be used.
|
||||
-u - Update given manifests
|
||||
-f - Force update given manifests
|
||||
.PARAMETER Manifest
|
||||
Manifest to check.
|
||||
It could be List of manifests, specific manifest or string with placeholder.
|
||||
.PARAMETER Dir
|
||||
Where to search for manifest.
|
||||
Default to bucket folder.
|
||||
.PARAMETER Recurse
|
||||
Manifests in all subdirectories will be checked. (except .vscode and bin)
|
||||
.PARAMETER Rest
|
||||
-s - Skip manifest with latest version
|
||||
-u - Update given manifests
|
||||
-f - Force update given manifests
|
||||
Usefull for hash updates
|
||||
.EXAMPLE
|
||||
PS BUCKETROOT > .\bin\checkver.ps1
|
||||
Check all manifests in root.
|
||||
.EXAMPLE
|
||||
PS BUCKETROOT > .\bin\checkver.ps1 MANIFEST
|
||||
Check manifest with name MANIFEST.json in root.
|
||||
.EXAMPLE
|
||||
PS BUCKETROOT > .\bin\checkver.ps1 -manifest MANIFEST
|
||||
Check manifest with name MANIFEST.json in root.
|
||||
.EXAMPLE
|
||||
PS BUCKETROOT > .\bin\checkver.ps1 -dir TODO -manifest MANIFEST
|
||||
Check manifest with name MANIFEST.json in TODO directory.
|
||||
.EXAMPLE
|
||||
PS BUCKETROOT > .\bin\checkver.ps1 MANIFEST TODO
|
||||
Check manifest with name MANIFEST.json in directory TODO.
|
||||
.EXAMPLE
|
||||
PS BUCKETROOT > .\bin\checkver.ps1 -dir TODO
|
||||
Check all manifests in directory TODO.
|
||||
.EXAMPLE
|
||||
PS BUCKETROOT > .\bin\checkver.ps1 MAN*
|
||||
Check all manifests starting with MAN in root.
|
||||
.EXAMPLE
|
||||
PS BUCKETROOT > .\bin\checkver.ps1 Manifest1, Manifest2, Manifest3
|
||||
Check all manifests (Manifest 1 to 3) in root.
|
||||
.EXAMPLE
|
||||
PS BUCKETROOT > .\bin\checkver.ps1 MANIFEST -u
|
||||
Check manifest with name MANIFEST.json in root and update if there is new version.
|
||||
.EXAMPLE
|
||||
PS BUCKETROOT > .\bin\checkver.ps1 MANIFEST -f
|
||||
Check manifest with name MANIFEST.json in root and update even when there is no new version.
|
||||
#>
|
||||
param(
|
||||
[Parameter(ValueFromPipeline = $true)]
|
||||
[Alias('App')]
|
||||
[String[]] $Manifest = '*',
|
||||
[ValidateScript( { if ( Test-Path $_ -Type Container) { $true } else { $false } })]
|
||||
[String] $Dir = "$PSScriptRoot\..\bucket",
|
||||
[Switch] $Recurse,
|
||||
[Parameter(ValueFromRemainingArguments = $true)]
|
||||
[String[]] $Rest = @()
|
||||
)
|
||||
|
||||
begin {
|
||||
. "$PSScriptRoot\Helpers.ps1"
|
||||
|
||||
if (-not $env:SCOOP_HOME) { $env:SCOOP_HOME = Resolve-Path (scoop prefix scoop) }
|
||||
$Dir = Resolve-Path $Dir
|
||||
$Script = "$env:SCOOP_HOME\bin\checkver.ps1"
|
||||
$Rest = $Rest | Select-Object -Unique # Remove duplicated switches
|
||||
}
|
||||
|
||||
process {
|
||||
if ($Recurse) {
|
||||
Get-RecursiveFolder | ForEach-Object { Invoke-Expression -Command "$Script -Dir ""$_"" $Rest" }
|
||||
} else {
|
||||
foreach ($man in $Manifest) { Invoke-Expression -Command "$Script -App ""$man"" -Dir ""$Dir"" $Rest" }
|
||||
}
|
||||
}
|
||||
|
||||
end { Write-Host 'DONE' -ForegroundColor Yellow }
|
|
@ -0,0 +1,26 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Find description for given manifest
|
||||
.PARAMETER Manifest
|
||||
Manifest to check.
|
||||
It could be List of manifests, specific manifest or string with placeholder.
|
||||
.PARAMETER Dir
|
||||
Where to search for manifest.
|
||||
Default to bucket folder.
|
||||
#>
|
||||
param(
|
||||
[Parameter(ValueFromPipeline = $true)]
|
||||
[Alias('App')]
|
||||
[String[]] $Manifest = '*',
|
||||
[ValidateScript( { if ( Test-Path $_ -Type Container) { $true } else { $false } })]
|
||||
[String] $Dir = "$PSScriptRoot\..\bucket"
|
||||
)
|
||||
|
||||
begin {
|
||||
if (-not $env:SCOOP_HOME) { $env:SCOOP_HOME = Resolve-Path (scoop prefix scoop) }
|
||||
$Dir = Resolve-Path $Dir
|
||||
}
|
||||
|
||||
process { foreach ($man in $Manifest) { Invoke-Expression -Command "$env:SCOOP_HOME\bin\describe.ps1 -App ""$man"" -Dir ""$Dir""" } }
|
||||
|
||||
end { Write-Host 'DONE' -ForegroundColor Yellow }
|
|
@ -0,0 +1,25 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Format manifests using scoop's formatter.
|
||||
.PARAMETER App
|
||||
Manifest name.
|
||||
.PARAMETER Dir
|
||||
Where to search for manifests.
|
||||
Default to bucket folder.
|
||||
#>
|
||||
param(
|
||||
[Parameter(ValueFromPipeline = $true)]
|
||||
[Alias('App')]
|
||||
[String[]] $Manifest = '*',
|
||||
[ValidateScript( { if ( Test-Path $_ -Type Container) { $true } else { $false } })]
|
||||
[String] $Dir = "$PSScriptRoot\..\bucket"
|
||||
)
|
||||
|
||||
begin {
|
||||
if (-not $env:SCOOP_HOME) { $env:SCOOP_HOME = Resolve-Path (scoop prefix scoop) }
|
||||
$Dir = Resolve-Path $Dir
|
||||
}
|
||||
|
||||
process { foreach ($man in $Manifest) { Invoke-Expression -Command "$env:SCOOP_HOME\bin\formatjson.ps1 -App ""$man"" -Dir ""$Dir""" } }
|
||||
|
||||
end { Write-Host 'DONE' -ForegroundColor Yellow }
|
|
@ -0,0 +1,41 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Check if manifests have checkver and autoupdate property.
|
||||
.DESCRIPTION
|
||||
Check if manifests have checkver property.
|
||||
.PARAMETER App
|
||||
Manifest name.
|
||||
.PARAMETER Dir
|
||||
Directory where to search for manfiest.
|
||||
Default to bucket folder.
|
||||
.PARAMETER Rest
|
||||
-s - Skip supported
|
||||
.EXAMPLE
|
||||
PS BUCKETROOT > .\bin\missing-checkver.ps1
|
||||
Check all manifests inside root of bucket.
|
||||
.EXAMPLE
|
||||
PS BUCKETROOT > .\bin\missing-checkver.ps1 TODO
|
||||
Check all manifests inside TODO directory.
|
||||
.EXAMPLE
|
||||
PS BUCKETROOT > .\bin\missing-checkver.ps1 -dir TODO
|
||||
Check all manifests inside TODO directory.
|
||||
#>
|
||||
param(
|
||||
[Parameter(ValueFromPipeline = $true)]
|
||||
[Alias('App')]
|
||||
[String] $Manifest = '*',
|
||||
[ValidateScript( { if ( Test-Path $_ -Type Container) { $true } else { $false } })]
|
||||
[String] $Dir = "$PSScriptRoot\..\bucket",
|
||||
[Parameter(ValueFromRemainingArguments = $true)]
|
||||
[String[]] $Rest = ''
|
||||
)
|
||||
|
||||
begin {
|
||||
if (-not $env:SCOOP_HOME) { $env:SCOOP_HOME = Resolve-Path (scoop prefix scoop) }
|
||||
$Dir = Resolve-Path $Dir
|
||||
$Rest = $Rest -join ' '
|
||||
}
|
||||
|
||||
process { Invoke-Expression -Command "$env:SCOOP_HOME\bin\missing-checkver.ps1 -App ""$Manifest"" -Dir ""$Dir"" $Rest" }
|
||||
|
||||
end { Write-Host 'DONE' -ForegroundColor Yellow }
|
|
@ -0,0 +1,8 @@
|
|||
<#
|
||||
.SYNOPSIS
|
||||
Execute Pester tests in repository root directory.
|
||||
#>
|
||||
|
||||
$result = Invoke-Pester "$PSScriptRoot\.." -PassThru
|
||||
|
||||
exit $result.FailedCount
|
|
@ -0,0 +1 @@
|
|||
Some text to keep CRLF for passing tests without manifest
|
Loading…
Reference in New Issue