Repository files navigation

ScoopInstaller/GithubActions

Set of GitHub Actions for Scoop ecosystem.

CIreleaselicensediscord

In this repository, you can find a set of GitHub Actions that are used in Scoop ecosystem, especially for Scoop bucket maintainers to maintain buckets in a less manual way.

Getting started

We recommend using the ScoopInstaller/BucketTemplate repository to create your own bucket repository if you are a new bucket maintainer. It is a template repository that contains all the necessary files and configurations, including GitHub Actions from this repository, to help you get started quickly.

Actions

Excavator

The Excavator action is responsible for automating the update process of Scoop manifests. It checks for new versions of software and updates the corresponding manifests periodically.

# .github/workflows/excavator.ymlname: Excavatoron:
schedule:
- cron: '20 */4 * * *'# Runs every 4 hourspermissions:
contents: writejobs:
excavate:
name: Excavateruns-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Excavateuses: ScoopInstaller/GithubActions@mainenv:
SKIP_UPDATED: 1

Issues

The Issues action triages issues in the bucket repository. It is executed when a new issue is created or the label verify is added to an existing issue.

# .github/workflows/issues.ymlname: Issueon:
issues:
types: [opened, labeled]permissions:
# Auto hash fixing commitscontents: writeissues: writejobs:
issueHandler:
name: IssueHandlerif: github.event.action == 'opened' || (github.event.action == 'labeled' && contains(github.event.issue.labels.*.name, 'verify'))runs-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: IssueHandleruses: ScoopInstaller/GithubActions@main

Based on the issue title, a specific sub-action is executed. It could be one of:

  • Hash check fails
    1. Checkhashes binary is executed for manifest in title
    2. Result is parsed
      1. Hash mismatch
        1. Pull requests with name <manifest>@<version>: Fix hash are listed
          1. There is PR already
            1. The newest one is selected
            2. Description of this PR is updated with closing directive for created issue
            3. Comment to issue is posted with reference to PR
            4. Label duplicate added
          2. If none
            1. New branch <manifest>-hash-fix-<random> is created
            2. Changes are commited
            3. New PR is created from this branch
        2. Labels hash-fix-needed, verified are added
      2. No problem
        1. Comment on issue is posted about hashes being right and possible causes
        2. Label hash-fix-needed is removed
        3. Issue is closed
      3. Binary error
        1. Label manifest-fix-needed is added
  • Download failed
    1. All urls defined in manifest are retrieved
    2. Downloading of all urls is executed
    3. Comment to issue is posted
      1. If there is problematic URL
        1. List of these URLs is attached in comment
        2. Labels manifest-fix-needed, verified, help wanted are added
      2. All URLs could be downloaded without problem
        1. Possible causes are attached in comment
  • Decompression/Extraction error
    1. Comment to issue is posted
      1. If one or more specific extraction tool names (7zip|msi|innounp|dark) are mentioned in the issue description
        1. Only related extraction help tips will be added in comment
      2. None of the specific extraction tool names are mentioned in the issue description
        1. All extraction help tips will be added in comment

Pull Requests

The Pull Requests action validates pull requests in the bucket repository. It is executed when a new pull request is created or a comment starting with /verify is posted to an existing pull request.

# .github/workflows/pull_request.ymlname: Pull Requestson:
# Triggered when a pull request is opened# or a `/verify` comment is posted to an existing pull requestpull_request:
types: [opened]issue_comment:
types: [created]permissions:
contents: readpull-requests: writejobs:
pullRequestHandler:
name: PullRequestHandlerif: github.event_name == 'pull_request' || (github.event.issue.pull_request && startsWith(github.event.comment.body, '/verify'))runs-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: PullRequestHandleruses: ScoopInstaller/GithubActions@main

Multiple validators are executed for each pull request:

  1. JSON standard format check
  2. Required properties (License, Description) are in place
  3. Hashes of files are correct
  4. Checkver functionality
  5. Autoupdate functionality

lint-pr-title

The lint-pr-title action checks if the title of a pull request follows the required format. Check lint-pr-title README for more details.

Environment variables

Following environment variables are available for the main action.

- uses: ScoopInstaller/GithubActions@mainenv:
# `GITHUB_TOKEN`: Optional, `${{ github.token }}` if not specifiedGITHUB_TOKEN: ${{ github.token }}# `USER_EMAIL`: Optional# `41898282+github-actions[bot]@users.noreply.github.com` if not specifiedUSER_EMAIL: ''# `SCOOP_REPO`: Optional# If specified, scoop config 'scoop_repo' will be configured and scoop updatedSCOOP_REPO: ''# `SCOOP_BRANCH`: Optional# If specified, scoop config 'scoop_branch' will be configured and scoop updatedSCOOP_BRANCH: ''# `SKIP_UPDATED`: Optional, `1` to enable# If enabled, log of checkver utility will not print latest versionsSKIP_UPDATED: ''# `THROW_ERROR`: Optional, `1` to enable# If enabled, error from checkver utility will be thrown as exception and cause the run to failTHROW_ERROR: ''# `SPECIAL_SNOWFLAKES`: Optional# List of manifest names joined with `,` used as parameter for auto-pr utility.SPECIAL_SNOWFLAKES: ''

Configuration of composable actions can be found in their respective README files in their subfolders.

License

The project is released under the MIT License.

About

GitHub Actions for Scoop ecosystem

Resources

Code of conduct

Contributing

Security policy

Stars

32 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

ScoopInstaller/GithubActions

Set of GitHub Actions for Scoop ecosystem.

CIreleaselicensediscord

In this repository, you can find a set of GitHub Actions that are used in Scoop ecosystem, especially for Scoop bucket maintainers to maintain buckets in a less manual way.

Getting started

We recommend using the ScoopInstaller/BucketTemplate repository to create your own bucket repository if you are a new bucket maintainer. It is a template repository that contains all the necessary files and configurations, including GitHub Actions from this repository, to help you get started quickly.

Actions

Excavator

The Excavator action is responsible for automating the update process of Scoop manifests. It checks for new versions of software and updates the corresponding manifests periodically.

# .github/workflows/excavator.ymlname: Excavatoron:
schedule:
- cron: '20 */4 * * *'# Runs every 4 hourspermissions:
contents: writejobs:
excavate:
name: Excavateruns-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Excavateuses: ScoopInstaller/GithubActions@mainenv:
SKIP_UPDATED: 1

Issues

The Issues action triages issues in the bucket repository. It is executed when a new issue is created or the label verify is added to an existing issue.

# .github/workflows/issues.ymlname: Issueon:
issues:
types: [opened, labeled]permissions:
# Auto hash fixing commitscontents: writeissues: writejobs:
issueHandler:
name: IssueHandlerif: github.event.action == 'opened' || (github.event.action == 'labeled' && contains(github.event.issue.labels.*.name, 'verify'))runs-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: IssueHandleruses: ScoopInstaller/GithubActions@main

Based on the issue title, a specific sub-action is executed. It could be one of:

  • Hash check fails
    1. Checkhashes binary is executed for manifest in title
    2. Result is parsed
      1. Hash mismatch
        1. Pull requests with name <manifest>@<version>: Fix hash are listed
          1. There is PR already
            1. The newest one is selected
            2. Description of this PR is updated with closing directive for created issue
            3. Comment to issue is posted with reference to PR
            4. Label duplicate added
          2. If none
            1. New branch <manifest>-hash-fix-<random> is created
            2. Changes are commited
            3. New PR is created from this branch
        2. Labels hash-fix-needed, verified are added
      2. No problem
        1. Comment on issue is posted about hashes being right and possible causes
        2. Label hash-fix-needed is removed
        3. Issue is closed
      3. Binary error
        1. Label manifest-fix-needed is added
  • Download failed
    1. All urls defined in manifest are retrieved
    2. Downloading of all urls is executed
    3. Comment to issue is posted
      1. If there is problematic URL
        1. List of these URLs is attached in comment
        2. Labels manifest-fix-needed, verified, help wanted are added
      2. All URLs could be downloaded without problem
        1. Possible causes are attached in comment
  • Decompression/Extraction error
    1. Comment to issue is posted
      1. If one or more specific extraction tool names (7zip|msi|innounp|dark) are mentioned in the issue description
        1. Only related extraction help tips will be added in comment
      2. None of the specific extraction tool names are mentioned in the issue description
        1. All extraction help tips will be added in comment

Pull Requests

The Pull Requests action validates pull requests in the bucket repository. It is executed when a new pull request is created or a comment starting with /verify is posted to an existing pull request.

# .github/workflows/pull_request.ymlname: Pull Requestson:
# Triggered when a pull request is opened# or a `/verify` comment is posted to an existing pull requestpull_request:
types: [opened]issue_comment:
types: [created]permissions:
contents: readpull-requests: writejobs:
pullRequestHandler:
name: PullRequestHandlerif: github.event_name == 'pull_request' || (github.event.issue.pull_request && startsWith(github.event.comment.body, '/verify'))runs-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: PullRequestHandleruses: ScoopInstaller/GithubActions@main

Multiple validators are executed for each pull request:

  1. JSON standard format check
  2. Required properties (License, Description) are in place
  3. Hashes of files are correct
  4. Checkver functionality
  5. Autoupdate functionality

lint-pr-title

The lint-pr-title action checks if the title of a pull request follows the required format. Check lint-pr-title README for more details.

Environment variables

Following environment variables are available for the main action.

- uses: ScoopInstaller/GithubActions@mainenv:
# `GITHUB_TOKEN`: Optional, `${{ github.token }}` if not specifiedGITHUB_TOKEN: ${{ github.token }}# `USER_EMAIL`: Optional# `41898282+github-actions[bot]@users.noreply.github.com` if not specifiedUSER_EMAIL: ''# `SCOOP_REPO`: Optional# If specified, scoop config 'scoop_repo' will be configured and scoop updatedSCOOP_REPO: ''# `SCOOP_BRANCH`: Optional# If specified, scoop config 'scoop_branch' will be configured and scoop updatedSCOOP_BRANCH: ''# `SKIP_UPDATED`: Optional, `1` to enable# If enabled, log of checkver utility will not print latest versionsSKIP_UPDATED: ''# `THROW_ERROR`: Optional, `1` to enable# If enabled, error from checkver utility will be thrown as exception and cause the run to failTHROW_ERROR: ''# `SPECIAL_SNOWFLAKES`: Optional# List of manifest names joined with `,` used as parameter for auto-pr utility.SPECIAL_SNOWFLAKES: ''

Configuration of composable actions can be found in their respective README files in their subfolders.

License

The project is released under the MIT License.

About

GitHub Actions for Scoop ecosystem

Resources

Code of conduct

Contributing

Security policy

Stars

32 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ScoopInstaller/GithubActions

Set of GitHub Actions for Scoop ecosystem.

CIreleaselicensediscord

In this repository, you can find a set of GitHub Actions that are used in Scoop ecosystem, especially for Scoop bucket maintainers to maintain buckets in a less manual way.

Getting started

We recommend using the ScoopInstaller/BucketTemplate repository to create your own bucket repository if you are a new bucket maintainer. It is a template repository that contains all the necessary files and configurations, including GitHub Actions from this repository, to help you get started quickly.

Actions

Excavator

The Excavator action is responsible for automating the update process of Scoop manifests. It checks for new versions of software and updates the corresponding manifests periodically.

# .github/workflows/excavator.ymlname: Excavatoron:
schedule:
- cron: '20 */4 * * *'# Runs every 4 hourspermissions:
contents: writejobs:
excavate:
name: Excavateruns-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Excavateuses: ScoopInstaller/GithubActions@mainenv:
SKIP_UPDATED: 1

Issues

The Issues action triages issues in the bucket repository. It is executed when a new issue is created or the label verify is added to an existing issue.

# .github/workflows/issues.ymlname: Issueon:
issues:
types: [opened, labeled]permissions:
# Auto hash fixing commitscontents: writeissues: writejobs:
issueHandler:
name: IssueHandlerif: github.event.action == 'opened' || (github.event.action == 'labeled' && contains(github.event.issue.labels.*.name, 'verify'))runs-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: IssueHandleruses: ScoopInstaller/GithubActions@main

Based on the issue title, a specific sub-action is executed. It could be one of:

  • Hash check fails
    1. Checkhashes binary is executed for manifest in title
    2. Result is parsed
      1. Hash mismatch
        1. Pull requests with name <manifest>@<version>: Fix hash are listed
          1. There is PR already
            1. The newest one is selected
            2. Description of this PR is updated with closing directive for created issue
            3. Comment to issue is posted with reference to PR
            4. Label duplicate added
          2. If none
            1. New branch <manifest>-hash-fix-<random> is created
            2. Changes are commited
            3. New PR is created from this branch
        2. Labels hash-fix-needed, verified are added
      2. No problem
        1. Comment on issue is posted about hashes being right and possible causes
        2. Label hash-fix-needed is removed
        3. Issue is closed
      3. Binary error
        1. Label manifest-fix-needed is added
  • Download failed
    1. All urls defined in manifest are retrieved
    2. Downloading of all urls is executed
    3. Comment to issue is posted
      1. If there is problematic URL
        1. List of these URLs is attached in comment
        2. Labels manifest-fix-needed, verified, help wanted are added
      2. All URLs could be downloaded without problem
        1. Possible causes are attached in comment
  • Decompression/Extraction error
    1. Comment to issue is posted
      1. If one or more specific extraction tool names (7zip|msi|innounp|dark) are mentioned in the issue description
        1. Only related extraction help tips will be added in comment
      2. None of the specific extraction tool names are mentioned in the issue description
        1. All extraction help tips will be added in comment

Pull Requests

The Pull Requests action validates pull requests in the bucket repository. It is executed when a new pull request is created or a comment starting with /verify is posted to an existing pull request.

# .github/workflows/pull_request.ymlname: Pull Requestson:
# Triggered when a pull request is opened# or a `/verify` comment is posted to an existing pull requestpull_request:
types: [opened]issue_comment:
types: [created]permissions:
contents: readpull-requests: writejobs:
pullRequestHandler:
name: PullRequestHandlerif: github.event_name == 'pull_request' || (github.event.issue.pull_request && startsWith(github.event.comment.body, '/verify'))runs-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: PullRequestHandleruses: ScoopInstaller/GithubActions@main

Multiple validators are executed for each pull request:

  1. JSON standard format check
  2. Required properties (License, Description) are in place
  3. Hashes of files are correct
  4. Checkver functionality
  5. Autoupdate functionality

lint-pr-title

The lint-pr-title action checks if the title of a pull request follows the required format. Check lint-pr-title README for more details.

Environment variables

Following environment variables are available for the main action.

- uses: ScoopInstaller/GithubActions@mainenv:
# `GITHUB_TOKEN`: Optional, `${{ github.token }}` if not specifiedGITHUB_TOKEN: ${{ github.token }}# `USER_EMAIL`: Optional# `41898282+github-actions[bot]@users.noreply.github.com` if not specifiedUSER_EMAIL: ''# `SCOOP_REPO`: Optional# If specified, scoop config 'scoop_repo' will be configured and scoop updatedSCOOP_REPO: ''# `SCOOP_BRANCH`: Optional# If specified, scoop config 'scoop_branch' will be configured and scoop updatedSCOOP_BRANCH: ''# `SKIP_UPDATED`: Optional, `1` to enable# If enabled, log of checkver utility will not print latest versionsSKIP_UPDATED: ''# `THROW_ERROR`: Optional, `1` to enable# If enabled, error from checkver utility will be thrown as exception and cause the run to failTHROW_ERROR: ''# `SPECIAL_SNOWFLAKES`: Optional# List of manifest names joined with `,` used as parameter for auto-pr utility.SPECIAL_SNOWFLAKES: ''

Configuration of composable actions can be found in their respective README files in their subfolders.

License

The project is released under the MIT License.

About

GitHub Actions for Scoop ecosystem

Resources

Code of conduct

Contributing

Security policy

Stars

32 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ScoopInstaller/GithubActions

Set of GitHub Actions for Scoop ecosystem.

CIreleaselicensediscord

In this repository, you can find a set of GitHub Actions that are used in Scoop ecosystem, especially for Scoop bucket maintainers to maintain buckets in a less manual way.

Getting started

We recommend using the ScoopInstaller/BucketTemplate repository to create your own bucket repository if you are a new bucket maintainer. It is a template repository that contains all the necessary files and configurations, including GitHub Actions from this repository, to help you get started quickly.

Actions

Excavator

The Excavator action is responsible for automating the update process of Scoop manifests. It checks for new versions of software and updates the corresponding manifests periodically.

# .github/workflows/excavator.ymlname: Excavatoron:
schedule:
- cron: '20 */4 * * *'# Runs every 4 hourspermissions:
contents: writejobs:
excavate:
name: Excavateruns-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Excavateuses: ScoopInstaller/GithubActions@mainenv:
SKIP_UPDATED: 1

Issues

The Issues action triages issues in the bucket repository. It is executed when a new issue is created or the label verify is added to an existing issue.

# .github/workflows/issues.ymlname: Issueon:
issues:
types: [opened, labeled]permissions:
# Auto hash fixing commitscontents: writeissues: writejobs:
issueHandler:
name: IssueHandlerif: github.event.action == 'opened' || (github.event.action == 'labeled' && contains(github.event.issue.labels.*.name, 'verify'))runs-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: IssueHandleruses: ScoopInstaller/GithubActions@main

Based on the issue title, a specific sub-action is executed. It could be one of:

  • Hash check fails
    1. Checkhashes binary is executed for manifest in title
    2. Result is parsed
      1. Hash mismatch
        1. Pull requests with name <manifest>@<version>: Fix hash are listed
          1. There is PR already
            1. The newest one is selected
            2. Description of this PR is updated with closing directive for created issue
            3. Comment to issue is posted with reference to PR
            4. Label duplicate added
          2. If none
            1. New branch <manifest>-hash-fix-<random> is created
            2. Changes are commited
            3. New PR is created from this branch
        2. Labels hash-fix-needed, verified are added
      2. No problem
        1. Comment on issue is posted about hashes being right and possible causes
        2. Label hash-fix-needed is removed
        3. Issue is closed
      3. Binary error
        1. Label manifest-fix-needed is added
  • Download failed
    1. All urls defined in manifest are retrieved
    2. Downloading of all urls is executed
    3. Comment to issue is posted
      1. If there is problematic URL
        1. List of these URLs is attached in comment
        2. Labels manifest-fix-needed, verified, help wanted are added
      2. All URLs could be downloaded without problem
        1. Possible causes are attached in comment
  • Decompression/Extraction error
    1. Comment to issue is posted
      1. If one or more specific extraction tool names (7zip|msi|innounp|dark) are mentioned in the issue description
        1. Only related extraction help tips will be added in comment
      2. None of the specific extraction tool names are mentioned in the issue description
        1. All extraction help tips will be added in comment

Pull Requests

The Pull Requests action validates pull requests in the bucket repository. It is executed when a new pull request is created or a comment starting with /verify is posted to an existing pull request.

# .github/workflows/pull_request.ymlname: Pull Requestson:
# Triggered when a pull request is opened# or a `/verify` comment is posted to an existing pull requestpull_request:
types: [opened]issue_comment:
types: [created]permissions:
contents: readpull-requests: writejobs:
pullRequestHandler:
name: PullRequestHandlerif: github.event_name == 'pull_request' || (github.event.issue.pull_request && startsWith(github.event.comment.body, '/verify'))runs-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: PullRequestHandleruses: ScoopInstaller/GithubActions@main

Multiple validators are executed for each pull request:

  1. JSON standard format check
  2. Required properties (License, Description) are in place
  3. Hashes of files are correct
  4. Checkver functionality
  5. Autoupdate functionality

lint-pr-title

The lint-pr-title action checks if the title of a pull request follows the required format. Check lint-pr-title README for more details.

Environment variables

Following environment variables are available for the main action.

- uses: ScoopInstaller/GithubActions@mainenv:
# `GITHUB_TOKEN`: Optional, `${{ github.token }}` if not specifiedGITHUB_TOKEN: ${{ github.token }}# `USER_EMAIL`: Optional# `41898282+github-actions[bot]@users.noreply.github.com` if not specifiedUSER_EMAIL: ''# `SCOOP_REPO`: Optional# If specified, scoop config 'scoop_repo' will be configured and scoop updatedSCOOP_REPO: ''# `SCOOP_BRANCH`: Optional# If specified, scoop config 'scoop_branch' will be configured and scoop updatedSCOOP_BRANCH: ''# `SKIP_UPDATED`: Optional, `1` to enable# If enabled, log of checkver utility will not print latest versionsSKIP_UPDATED: ''# `THROW_ERROR`: Optional, `1` to enable# If enabled, error from checkver utility will be thrown as exception and cause the run to failTHROW_ERROR: ''# `SPECIAL_SNOWFLAKES`: Optional# List of manifest names joined with `,` used as parameter for auto-pr utility.SPECIAL_SNOWFLAKES: ''

Configuration of composable actions can be found in their respective README files in their subfolders.

License

The project is released under the MIT License.

About

GitHub Actions for Scoop ecosystem

Resources

Code of conduct

Contributing

Security policy

Stars

32 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

ScoopInstaller/GithubActions

Set of GitHub Actions for Scoop ecosystem.

CIreleaselicensediscord

In this repository, you can find a set of GitHub Actions that are used in Scoop ecosystem, especially for Scoop bucket maintainers to maintain buckets in a less manual way.

Getting started

We recommend using the ScoopInstaller/BucketTemplate repository to create your own bucket repository if you are a new bucket maintainer. It is a template repository that contains all the necessary files and configurations, including GitHub Actions from this repository, to help you get started quickly.

Actions

Excavator

The Excavator action is responsible for automating the update process of Scoop manifests. It checks for new versions of software and updates the corresponding manifests periodically.

# .github/workflows/excavator.ymlname: Excavatoron:
schedule:
- cron: '20 */4 * * *'# Runs every 4 hourspermissions:
contents: writejobs:
excavate:
name: Excavateruns-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Excavateuses: ScoopInstaller/GithubActions@mainenv:
SKIP_UPDATED: 1

Issues

The Issues action triages issues in the bucket repository. It is executed when a new issue is created or the label verify is added to an existing issue.

# .github/workflows/issues.ymlname: Issueon:
issues:
types: [opened, labeled]permissions:
# Auto hash fixing commitscontents: writeissues: writejobs:
issueHandler:
name: IssueHandlerif: github.event.action == 'opened' || (github.event.action == 'labeled' && contains(github.event.issue.labels.*.name, 'verify'))runs-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: IssueHandleruses: ScoopInstaller/GithubActions@main

Based on the issue title, a specific sub-action is executed. It could be one of:

  • Hash check fails
    1. Checkhashes binary is executed for manifest in title
    2. Result is parsed
      1. Hash mismatch
        1. Pull requests with name <manifest>@<version>: Fix hash are listed
          1. There is PR already
            1. The newest one is selected
            2. Description of this PR is updated with closing directive for created issue
            3. Comment to issue is posted with reference to PR
            4. Label duplicate added
          2. If none
            1. New branch <manifest>-hash-fix-<random> is created
            2. Changes are commited
            3. New PR is created from this branch
        2. Labels hash-fix-needed, verified are added
      2. No problem
        1. Comment on issue is posted about hashes being right and possible causes
        2. Label hash-fix-needed is removed
        3. Issue is closed
      3. Binary error
        1. Label manifest-fix-needed is added
  • Download failed
    1. All urls defined in manifest are retrieved
    2. Downloading of all urls is executed
    3. Comment to issue is posted
      1. If there is problematic URL
        1. List of these URLs is attached in comment
        2. Labels manifest-fix-needed, verified, help wanted are added
      2. All URLs could be downloaded without problem
        1. Possible causes are attached in comment
  • Decompression/Extraction error
    1. Comment to issue is posted
      1. If one or more specific extraction tool names (7zip|msi|innounp|dark) are mentioned in the issue description
        1. Only related extraction help tips will be added in comment
      2. None of the specific extraction tool names are mentioned in the issue description
        1. All extraction help tips will be added in comment

Pull Requests

The Pull Requests action validates pull requests in the bucket repository. It is executed when a new pull request is created or a comment starting with /verify is posted to an existing pull request.

# .github/workflows/pull_request.ymlname: Pull Requestson:
# Triggered when a pull request is opened# or a `/verify` comment is posted to an existing pull requestpull_request:
types: [opened]issue_comment:
types: [created]permissions:
contents: readpull-requests: writejobs:
pullRequestHandler:
name: PullRequestHandlerif: github.event_name == 'pull_request' || (github.event.issue.pull_request && startsWith(github.event.comment.body, '/verify'))runs-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: PullRequestHandleruses: ScoopInstaller/GithubActions@main

Multiple validators are executed for each pull request:

  1. JSON standard format check
  2. Required properties (License, Description) are in place
  3. Hashes of files are correct
  4. Checkver functionality
  5. Autoupdate functionality

lint-pr-title

The lint-pr-title action checks if the title of a pull request follows the required format. Check lint-pr-title README for more details.

Environment variables

Following environment variables are available for the main action.

- uses: ScoopInstaller/GithubActions@mainenv:
# `GITHUB_TOKEN`: Optional, `${{ github.token }}` if not specifiedGITHUB_TOKEN: ${{ github.token }}# `USER_EMAIL`: Optional# `41898282+github-actions[bot]@users.noreply.github.com` if not specifiedUSER_EMAIL: ''# `SCOOP_REPO`: Optional# If specified, scoop config 'scoop_repo' will be configured and scoop updatedSCOOP_REPO: ''# `SCOOP_BRANCH`: Optional# If specified, scoop config 'scoop_branch' will be configured and scoop updatedSCOOP_BRANCH: ''# `SKIP_UPDATED`: Optional, `1` to enable# If enabled, log of checkver utility will not print latest versionsSKIP_UPDATED: ''# `THROW_ERROR`: Optional, `1` to enable# If enabled, error from checkver utility will be thrown as exception and cause the run to failTHROW_ERROR: ''# `SPECIAL_SNOWFLAKES`: Optional# List of manifest names joined with `,` used as parameter for auto-pr utility.SPECIAL_SNOWFLAKES: ''

Configuration of composable actions can be found in their respective README files in their subfolders.

License

The project is released under the MIT License.

About

GitHub Actions for Scoop ecosystem

Resources

Code of conduct

Contributing

Security policy

Stars

32 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ScoopInstaller/GithubActions

Set of GitHub Actions for Scoop ecosystem.

CIreleaselicensediscord

In this repository, you can find a set of GitHub Actions that are used in Scoop ecosystem, especially for Scoop bucket maintainers to maintain buckets in a less manual way.

Getting started

We recommend using the ScoopInstaller/BucketTemplate repository to create your own bucket repository if you are a new bucket maintainer. It is a template repository that contains all the necessary files and configurations, including GitHub Actions from this repository, to help you get started quickly.

Actions

Excavator

The Excavator action is responsible for automating the update process of Scoop manifests. It checks for new versions of software and updates the corresponding manifests periodically.

# .github/workflows/excavator.ymlname: Excavatoron:
schedule:
- cron: '20 */4 * * *'# Runs every 4 hourspermissions:
contents: writejobs:
excavate:
name: Excavateruns-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Excavateuses: ScoopInstaller/GithubActions@mainenv:
SKIP_UPDATED: 1

Issues

The Issues action triages issues in the bucket repository. It is executed when a new issue is created or the label verify is added to an existing issue.

# .github/workflows/issues.ymlname: Issueon:
issues:
types: [opened, labeled]permissions:
# Auto hash fixing commitscontents: writeissues: writejobs:
issueHandler:
name: IssueHandlerif: github.event.action == 'opened' || (github.event.action == 'labeled' && contains(github.event.issue.labels.*.name, 'verify'))runs-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: IssueHandleruses: ScoopInstaller/GithubActions@main

Based on the issue title, a specific sub-action is executed. It could be one of:

  • Hash check fails
    1. Checkhashes binary is executed for manifest in title
    2. Result is parsed
      1. Hash mismatch
        1. Pull requests with name <manifest>@<version>: Fix hash are listed
          1. There is PR already
            1. The newest one is selected
            2. Description of this PR is updated with closing directive for created issue
            3. Comment to issue is posted with reference to PR
            4. Label duplicate added
          2. If none
            1. New branch <manifest>-hash-fix-<random> is created
            2. Changes are commited
            3. New PR is created from this branch
        2. Labels hash-fix-needed, verified are added
      2. No problem
        1. Comment on issue is posted about hashes being right and possible causes
        2. Label hash-fix-needed is removed
        3. Issue is closed
      3. Binary error
        1. Label manifest-fix-needed is added
  • Download failed
    1. All urls defined in manifest are retrieved
    2. Downloading of all urls is executed
    3. Comment to issue is posted
      1. If there is problematic URL
        1. List of these URLs is attached in comment
        2. Labels manifest-fix-needed, verified, help wanted are added
      2. All URLs could be downloaded without problem
        1. Possible causes are attached in comment
  • Decompression/Extraction error
    1. Comment to issue is posted
      1. If one or more specific extraction tool names (7zip|msi|innounp|dark) are mentioned in the issue description
        1. Only related extraction help tips will be added in comment
      2. None of the specific extraction tool names are mentioned in the issue description
        1. All extraction help tips will be added in comment

Pull Requests

The Pull Requests action validates pull requests in the bucket repository. It is executed when a new pull request is created or a comment starting with /verify is posted to an existing pull request.

# .github/workflows/pull_request.ymlname: Pull Requestson:
# Triggered when a pull request is opened# or a `/verify` comment is posted to an existing pull requestpull_request:
types: [opened]issue_comment:
types: [created]permissions:
contents: readpull-requests: writejobs:
pullRequestHandler:
name: PullRequestHandlerif: github.event_name == 'pull_request' || (github.event.issue.pull_request && startsWith(github.event.comment.body, '/verify'))runs-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: PullRequestHandleruses: ScoopInstaller/GithubActions@main

Multiple validators are executed for each pull request:

  1. JSON standard format check
  2. Required properties (License, Description) are in place
  3. Hashes of files are correct
  4. Checkver functionality
  5. Autoupdate functionality

lint-pr-title

The lint-pr-title action checks if the title of a pull request follows the required format. Check lint-pr-title README for more details.

Environment variables

Following environment variables are available for the main action.

- uses: ScoopInstaller/GithubActions@mainenv:
# `GITHUB_TOKEN`: Optional, `${{ github.token }}` if not specifiedGITHUB_TOKEN: ${{ github.token }}# `USER_EMAIL`: Optional# `41898282+github-actions[bot]@users.noreply.github.com` if not specifiedUSER_EMAIL: ''# `SCOOP_REPO`: Optional# If specified, scoop config 'scoop_repo' will be configured and scoop updatedSCOOP_REPO: ''# `SCOOP_BRANCH`: Optional# If specified, scoop config 'scoop_branch' will be configured and scoop updatedSCOOP_BRANCH: ''# `SKIP_UPDATED`: Optional, `1` to enable# If enabled, log of checkver utility will not print latest versionsSKIP_UPDATED: ''# `THROW_ERROR`: Optional, `1` to enable# If enabled, error from checkver utility will be thrown as exception and cause the run to failTHROW_ERROR: ''# `SPECIAL_SNOWFLAKES`: Optional# List of manifest names joined with `,` used as parameter for auto-pr utility.SPECIAL_SNOWFLAKES: ''

Configuration of composable actions can be found in their respective README files in their subfolders.

License

The project is released under the MIT License.

About

GitHub Actions for Scoop ecosystem

Resources

Code of conduct

Contributing

Security policy

Stars

32 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

ScoopInstaller/GithubActions

Set of GitHub Actions for Scoop ecosystem.

CIreleaselicensediscord

In this repository, you can find a set of GitHub Actions that are used in Scoop ecosystem, especially for Scoop bucket maintainers to maintain buckets in a less manual way.

Getting started

We recommend using the ScoopInstaller/BucketTemplate repository to create your own bucket repository if you are a new bucket maintainer. It is a template repository that contains all the necessary files and configurations, including GitHub Actions from this repository, to help you get started quickly.

Actions

Excavator

The Excavator action is responsible for automating the update process of Scoop manifests. It checks for new versions of software and updates the corresponding manifests periodically.

# .github/workflows/excavator.ymlname: Excavatoron:
schedule:
- cron: '20 */4 * * *'# Runs every 4 hourspermissions:
contents: writejobs:
excavate:
name: Excavateruns-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Excavateuses: ScoopInstaller/GithubActions@mainenv:
SKIP_UPDATED: 1

Issues

The Issues action triages issues in the bucket repository. It is executed when a new issue is created or the label verify is added to an existing issue.

# .github/workflows/issues.ymlname: Issueon:
issues:
types: [opened, labeled]permissions:
# Auto hash fixing commitscontents: writeissues: writejobs:
issueHandler:
name: IssueHandlerif: github.event.action == 'opened' || (github.event.action == 'labeled' && contains(github.event.issue.labels.*.name, 'verify'))runs-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: IssueHandleruses: ScoopInstaller/GithubActions@main

Based on the issue title, a specific sub-action is executed. It could be one of:

  • Hash check fails
    1. Checkhashes binary is executed for manifest in title
    2. Result is parsed
      1. Hash mismatch
        1. Pull requests with name <manifest>@<version>: Fix hash are listed
          1. There is PR already
            1. The newest one is selected
            2. Description of this PR is updated with closing directive for created issue
            3. Comment to issue is posted with reference to PR
            4. Label duplicate added
          2. If none
            1. New branch <manifest>-hash-fix-<random> is created
            2. Changes are commited
            3. New PR is created from this branch
        2. Labels hash-fix-needed, verified are added
      2. No problem
        1. Comment on issue is posted about hashes being right and possible causes
        2. Label hash-fix-needed is removed
        3. Issue is closed
      3. Binary error
        1. Label manifest-fix-needed is added
  • Download failed
    1. All urls defined in manifest are retrieved
    2. Downloading of all urls is executed
    3. Comment to issue is posted
      1. If there is problematic URL
        1. List of these URLs is attached in comment
        2. Labels manifest-fix-needed, verified, help wanted are added
      2. All URLs could be downloaded without problem
        1. Possible causes are attached in comment
  • Decompression/Extraction error
    1. Comment to issue is posted
      1. If one or more specific extraction tool names (7zip|msi|innounp|dark) are mentioned in the issue description
        1. Only related extraction help tips will be added in comment
      2. None of the specific extraction tool names are mentioned in the issue description
        1. All extraction help tips will be added in comment

Pull Requests

The Pull Requests action validates pull requests in the bucket repository. It is executed when a new pull request is created or a comment starting with /verify is posted to an existing pull request.

# .github/workflows/pull_request.ymlname: Pull Requestson:
# Triggered when a pull request is opened# or a `/verify` comment is posted to an existing pull requestpull_request:
types: [opened]issue_comment:
types: [created]permissions:
contents: readpull-requests: writejobs:
pullRequestHandler:
name: PullRequestHandlerif: github.event_name == 'pull_request' || (github.event.issue.pull_request && startsWith(github.event.comment.body, '/verify'))runs-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: PullRequestHandleruses: ScoopInstaller/GithubActions@main

Multiple validators are executed for each pull request:

  1. JSON standard format check
  2. Required properties (License, Description) are in place
  3. Hashes of files are correct
  4. Checkver functionality
  5. Autoupdate functionality

lint-pr-title

The lint-pr-title action checks if the title of a pull request follows the required format. Check lint-pr-title README for more details.

Environment variables

Following environment variables are available for the main action.

- uses: ScoopInstaller/GithubActions@mainenv:
# `GITHUB_TOKEN`: Optional, `${{ github.token }}` if not specifiedGITHUB_TOKEN: ${{ github.token }}# `USER_EMAIL`: Optional# `41898282+github-actions[bot]@users.noreply.github.com` if not specifiedUSER_EMAIL: ''# `SCOOP_REPO`: Optional# If specified, scoop config 'scoop_repo' will be configured and scoop updatedSCOOP_REPO: ''# `SCOOP_BRANCH`: Optional# If specified, scoop config 'scoop_branch' will be configured and scoop updatedSCOOP_BRANCH: ''# `SKIP_UPDATED`: Optional, `1` to enable# If enabled, log of checkver utility will not print latest versionsSKIP_UPDATED: ''# `THROW_ERROR`: Optional, `1` to enable# If enabled, error from checkver utility will be thrown as exception and cause the run to failTHROW_ERROR: ''# `SPECIAL_SNOWFLAKES`: Optional# List of manifest names joined with `,` used as parameter for auto-pr utility.SPECIAL_SNOWFLAKES: ''

Configuration of composable actions can be found in their respective README files in their subfolders.

License

The project is released under the MIT License.

About

GitHub Actions for Scoop ecosystem

Resources

Code of conduct

Contributing

Security policy

Stars

32 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

ScoopInstaller/GithubActions

Set of GitHub Actions for Scoop ecosystem.

CIreleaselicensediscord

In this repository, you can find a set of GitHub Actions that are used in Scoop ecosystem, especially for Scoop bucket maintainers to maintain buckets in a less manual way.

Getting started

We recommend using the ScoopInstaller/BucketTemplate repository to create your own bucket repository if you are a new bucket maintainer. It is a template repository that contains all the necessary files and configurations, including GitHub Actions from this repository, to help you get started quickly.

Actions

Excavator

The Excavator action is responsible for automating the update process of Scoop manifests. It checks for new versions of software and updates the corresponding manifests periodically.

# .github/workflows/excavator.ymlname: Excavatoron:
schedule:
- cron: '20 */4 * * *'# Runs every 4 hourspermissions:
contents: writejobs:
excavate:
name: Excavateruns-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: Excavateuses: ScoopInstaller/GithubActions@mainenv:
SKIP_UPDATED: 1

Issues

The Issues action triages issues in the bucket repository. It is executed when a new issue is created or the label verify is added to an existing issue.

# .github/workflows/issues.ymlname: Issueon:
issues:
types: [opened, labeled]permissions:
# Auto hash fixing commitscontents: writeissues: writejobs:
issueHandler:
name: IssueHandlerif: github.event.action == 'opened' || (github.event.action == 'labeled' && contains(github.event.issue.labels.*.name, 'verify'))runs-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: IssueHandleruses: ScoopInstaller/GithubActions@main

Based on the issue title, a specific sub-action is executed. It could be one of:

  • Hash check fails
    1. Checkhashes binary is executed for manifest in title
    2. Result is parsed
      1. Hash mismatch
        1. Pull requests with name <manifest>@<version>: Fix hash are listed
          1. There is PR already
            1. The newest one is selected
            2. Description of this PR is updated with closing directive for created issue
            3. Comment to issue is posted with reference to PR
            4. Label duplicate added
          2. If none
            1. New branch <manifest>-hash-fix-<random> is created
            2. Changes are commited
            3. New PR is created from this branch
        2. Labels hash-fix-needed, verified are added
      2. No problem
        1. Comment on issue is posted about hashes being right and possible causes
        2. Label hash-fix-needed is removed
        3. Issue is closed
      3. Binary error
        1. Label manifest-fix-needed is added
  • Download failed
    1. All urls defined in manifest are retrieved
    2. Downloading of all urls is executed
    3. Comment to issue is posted
      1. If there is problematic URL
        1. List of these URLs is attached in comment
        2. Labels manifest-fix-needed, verified, help wanted are added
      2. All URLs could be downloaded without problem
        1. Possible causes are attached in comment
  • Decompression/Extraction error
    1. Comment to issue is posted
      1. If one or more specific extraction tool names (7zip|msi|innounp|dark) are mentioned in the issue description
        1. Only related extraction help tips will be added in comment
      2. None of the specific extraction tool names are mentioned in the issue description
        1. All extraction help tips will be added in comment

Pull Requests

The Pull Requests action validates pull requests in the bucket repository. It is executed when a new pull request is created or a comment starting with /verify is posted to an existing pull request.

# .github/workflows/pull_request.ymlname: Pull Requestson:
# Triggered when a pull request is opened# or a `/verify` comment is posted to an existing pull requestpull_request:
types: [opened]issue_comment:
types: [created]permissions:
contents: readpull-requests: writejobs:
pullRequestHandler:
name: PullRequestHandlerif: github.event_name == 'pull_request' || (github.event.issue.pull_request && startsWith(github.event.comment.body, '/verify'))runs-on: windows-lateststeps:
- name: Checkoutuses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2
- name: PullRequestHandleruses: ScoopInstaller/GithubActions@main

Multiple validators are executed for each pull request:

  1. JSON standard format check
  2. Required properties (License, Description) are in place
  3. Hashes of files are correct
  4. Checkver functionality
  5. Autoupdate functionality

lint-pr-title

The lint-pr-title action checks if the title of a pull request follows the required format. Check lint-pr-title README for more details.

Environment variables

Following environment variables are available for the main action.

- uses: ScoopInstaller/GithubActions@mainenv:
# `GITHUB_TOKEN`: Optional, `${{ github.token }}` if not specifiedGITHUB_TOKEN: ${{ github.token }}# `USER_EMAIL`: Optional# `41898282+github-actions[bot]@users.noreply.github.com` if not specifiedUSER_EMAIL: ''# `SCOOP_REPO`: Optional# If specified, scoop config 'scoop_repo' will be configured and scoop updatedSCOOP_REPO: ''# `SCOOP_BRANCH`: Optional# If specified, scoop config 'scoop_branch' will be configured and scoop updatedSCOOP_BRANCH: ''# `SKIP_UPDATED`: Optional, `1` to enable# If enabled, log of checkver utility will not print latest versionsSKIP_UPDATED: ''# `THROW_ERROR`: Optional, `1` to enable# If enabled, error from checkver utility will be thrown as exception and cause the run to failTHROW_ERROR: ''# `SPECIAL_SNOWFLAKES`: Optional# List of manifest names joined with `,` used as parameter for auto-pr utility.SPECIAL_SNOWFLAKES: ''

Configuration of composable actions can be found in their respective README files in their subfolders.

License

The project is released under the MIT License.

About

GitHub Actions for Scoop ecosystem

Resources

Code of conduct

Contributing

Security policy

Stars

32 stars

Watchers

4 watching

Forks

Releases

Sponsor this project

Used by

Contributors

Languages