Repository files navigation

Lean Update

A GitHub Action that attempts to update Lean and dependencies of a Lean project. This is basically a fork of oliver-butterley/lean-update but more feature-rich.

Quick Setup

Create a file named update.yml in the .github/workflows directory.

If you want to keep dependencies always up-to-date

To keep dependencies always up-to-date, you might want to configure as follows:

name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectuses: leanprover-community/lean-update@main

When you only want to update when there is a new Lean version

If you want to skip updates unless there is a change to the lean-toolchain file, you might want to configure as follows:

name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectuses: leanprover-community/lean-update@mainwith:
update_if_modified: lean-toolchain

If you want to receive notifications on Zulip when the update fails

  1. First, create a bot in Zulip and note its API key. Be careful not to create a new account - Zulip has a dedicated feature for "creating a bot".
  2. Next, register the bot's API key as a secret named ZULIP_API_KEY in your repository. You can set up secrets from the repository's "Settings".
  3. Prepare a workflow file like the following:
name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectid: lean-updateuses: leanprover-community/lean-update@mainwith:
on_update_fails: "silent"
- name: Notificationif: steps.lean-update.outputs.result == 'update-fail' # only send a message when the update failsuses: zulip/github-actions-zulip/send-message@v1with:
api-key: ${{ secrets.ZULIP_API_KEY }} # Zulip API key of your botemail: "***-bot@leanprover.zulipchat.com"# your Zulip bot's emailorganization-url: 'https://leanprover.zulipchat.com'to: "123456"# user_idtype: "private"# private messagecontent: | ❌ The update of ${{ github.repository }} has failed - [See Action Run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) - [See Commit](https://github.com/${{ github.repository }}/commit/${{ github.sha }})

Description of Functionality

  1. This Action first installs elan and runs lake update. This fetches the latest Lean release and updates all dependent packages to their latest versions.

  2. If lake update determines that all dependencies are already up to date, this Action does nothing further.

  3. Subsequently, this GitHub Action validates the updated code. This performs the build process, runs tests if a test driver is configured, and executes lint checks if a lint driver is set up. You can configure what build arguments are passed to lake build using the build_args option.

  4. This Action classifies the post-update validation results into two categories: success or failure.

    1. If successful, it behaves according to the setting specified in the on_update_succeeds option. By default, this is set to pr, which submits the updated code as a pull request. However, if the update_if_modified option is set to lean-toolchain, the Action does nothing unless the Lean version has been updated.
    2. If it fails, it behaves according to the setting specified in the on_update_fails option. By default, this is set to issue, which submits an issue indicating that the update failed.

Details of Option

See action.yml for details.

About

GitHub Action which automatically updates Lean projects

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

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

Lean Update

A GitHub Action that attempts to update Lean and dependencies of a Lean project. This is basically a fork of oliver-butterley/lean-update but more feature-rich.

Quick Setup

Create a file named update.yml in the .github/workflows directory.

If you want to keep dependencies always up-to-date

To keep dependencies always up-to-date, you might want to configure as follows:

name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectuses: leanprover-community/lean-update@main

When you only want to update when there is a new Lean version

If you want to skip updates unless there is a change to the lean-toolchain file, you might want to configure as follows:

name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectuses: leanprover-community/lean-update@mainwith:
update_if_modified: lean-toolchain

If you want to receive notifications on Zulip when the update fails

  1. First, create a bot in Zulip and note its API key. Be careful not to create a new account - Zulip has a dedicated feature for "creating a bot".
  2. Next, register the bot's API key as a secret named ZULIP_API_KEY in your repository. You can set up secrets from the repository's "Settings".
  3. Prepare a workflow file like the following:
name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectid: lean-updateuses: leanprover-community/lean-update@mainwith:
on_update_fails: "silent"
- name: Notificationif: steps.lean-update.outputs.result == 'update-fail' # only send a message when the update failsuses: zulip/github-actions-zulip/send-message@v1with:
api-key: ${{ secrets.ZULIP_API_KEY }} # Zulip API key of your botemail: "***-bot@leanprover.zulipchat.com"# your Zulip bot's emailorganization-url: 'https://leanprover.zulipchat.com'to: "123456"# user_idtype: "private"# private messagecontent: | ❌ The update of ${{ github.repository }} has failed - [See Action Run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) - [See Commit](https://github.com/${{ github.repository }}/commit/${{ github.sha }})

Description of Functionality

  1. This Action first installs elan and runs lake update. This fetches the latest Lean release and updates all dependent packages to their latest versions.

  2. If lake update determines that all dependencies are already up to date, this Action does nothing further.

  3. Subsequently, this GitHub Action validates the updated code. This performs the build process, runs tests if a test driver is configured, and executes lint checks if a lint driver is set up. You can configure what build arguments are passed to lake build using the build_args option.

  4. This Action classifies the post-update validation results into two categories: success or failure.

    1. If successful, it behaves according to the setting specified in the on_update_succeeds option. By default, this is set to pr, which submits the updated code as a pull request. However, if the update_if_modified option is set to lean-toolchain, the Action does nothing unless the Lean version has been updated.
    2. If it fails, it behaves according to the setting specified in the on_update_fails option. By default, this is set to issue, which submits an issue indicating that the update failed.

Details of Option

See action.yml for details.

About

GitHub Action which automatically updates Lean projects

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

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

Lean Update

A GitHub Action that attempts to update Lean and dependencies of a Lean project. This is basically a fork of oliver-butterley/lean-update but more feature-rich.

Quick Setup

Create a file named update.yml in the .github/workflows directory.

If you want to keep dependencies always up-to-date

To keep dependencies always up-to-date, you might want to configure as follows:

name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectuses: leanprover-community/lean-update@main

When you only want to update when there is a new Lean version

If you want to skip updates unless there is a change to the lean-toolchain file, you might want to configure as follows:

name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectuses: leanprover-community/lean-update@mainwith:
update_if_modified: lean-toolchain

If you want to receive notifications on Zulip when the update fails

  1. First, create a bot in Zulip and note its API key. Be careful not to create a new account - Zulip has a dedicated feature for "creating a bot".
  2. Next, register the bot's API key as a secret named ZULIP_API_KEY in your repository. You can set up secrets from the repository's "Settings".
  3. Prepare a workflow file like the following:
name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectid: lean-updateuses: leanprover-community/lean-update@mainwith:
on_update_fails: "silent"
- name: Notificationif: steps.lean-update.outputs.result == 'update-fail' # only send a message when the update failsuses: zulip/github-actions-zulip/send-message@v1with:
api-key: ${{ secrets.ZULIP_API_KEY }} # Zulip API key of your botemail: "***-bot@leanprover.zulipchat.com"# your Zulip bot's emailorganization-url: 'https://leanprover.zulipchat.com'to: "123456"# user_idtype: "private"# private messagecontent: | ❌ The update of ${{ github.repository }} has failed - [See Action Run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) - [See Commit](https://github.com/${{ github.repository }}/commit/${{ github.sha }})

Description of Functionality

  1. This Action first installs elan and runs lake update. This fetches the latest Lean release and updates all dependent packages to their latest versions.

  2. If lake update determines that all dependencies are already up to date, this Action does nothing further.

  3. Subsequently, this GitHub Action validates the updated code. This performs the build process, runs tests if a test driver is configured, and executes lint checks if a lint driver is set up. You can configure what build arguments are passed to lake build using the build_args option.

  4. This Action classifies the post-update validation results into two categories: success or failure.

    1. If successful, it behaves according to the setting specified in the on_update_succeeds option. By default, this is set to pr, which submits the updated code as a pull request. However, if the update_if_modified option is set to lean-toolchain, the Action does nothing unless the Lean version has been updated.
    2. If it fails, it behaves according to the setting specified in the on_update_fails option. By default, this is set to issue, which submits an issue indicating that the update failed.

Details of Option

See action.yml for details.

About

GitHub Action which automatically updates Lean projects

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

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

Lean Update

A GitHub Action that attempts to update Lean and dependencies of a Lean project. This is basically a fork of oliver-butterley/lean-update but more feature-rich.

Quick Setup

Create a file named update.yml in the .github/workflows directory.

If you want to keep dependencies always up-to-date

To keep dependencies always up-to-date, you might want to configure as follows:

name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectuses: leanprover-community/lean-update@main

When you only want to update when there is a new Lean version

If you want to skip updates unless there is a change to the lean-toolchain file, you might want to configure as follows:

name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectuses: leanprover-community/lean-update@mainwith:
update_if_modified: lean-toolchain

If you want to receive notifications on Zulip when the update fails

  1. First, create a bot in Zulip and note its API key. Be careful not to create a new account - Zulip has a dedicated feature for "creating a bot".
  2. Next, register the bot's API key as a secret named ZULIP_API_KEY in your repository. You can set up secrets from the repository's "Settings".
  3. Prepare a workflow file like the following:
name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectid: lean-updateuses: leanprover-community/lean-update@mainwith:
on_update_fails: "silent"
- name: Notificationif: steps.lean-update.outputs.result == 'update-fail' # only send a message when the update failsuses: zulip/github-actions-zulip/send-message@v1with:
api-key: ${{ secrets.ZULIP_API_KEY }} # Zulip API key of your botemail: "***-bot@leanprover.zulipchat.com"# your Zulip bot's emailorganization-url: 'https://leanprover.zulipchat.com'to: "123456"# user_idtype: "private"# private messagecontent: | ❌ The update of ${{ github.repository }} has failed - [See Action Run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) - [See Commit](https://github.com/${{ github.repository }}/commit/${{ github.sha }})

Description of Functionality

  1. This Action first installs elan and runs lake update. This fetches the latest Lean release and updates all dependent packages to their latest versions.

  2. If lake update determines that all dependencies are already up to date, this Action does nothing further.

  3. Subsequently, this GitHub Action validates the updated code. This performs the build process, runs tests if a test driver is configured, and executes lint checks if a lint driver is set up. You can configure what build arguments are passed to lake build using the build_args option.

  4. This Action classifies the post-update validation results into two categories: success or failure.

    1. If successful, it behaves according to the setting specified in the on_update_succeeds option. By default, this is set to pr, which submits the updated code as a pull request. However, if the update_if_modified option is set to lean-toolchain, the Action does nothing unless the Lean version has been updated.
    2. If it fails, it behaves according to the setting specified in the on_update_fails option. By default, this is set to issue, which submits an issue indicating that the update failed.

Details of Option

See action.yml for details.

About

GitHub Action which automatically updates Lean projects

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

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

Lean Update

A GitHub Action that attempts to update Lean and dependencies of a Lean project. This is basically a fork of oliver-butterley/lean-update but more feature-rich.

Quick Setup

Create a file named update.yml in the .github/workflows directory.

If you want to keep dependencies always up-to-date

To keep dependencies always up-to-date, you might want to configure as follows:

name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectuses: leanprover-community/lean-update@main

When you only want to update when there is a new Lean version

If you want to skip updates unless there is a change to the lean-toolchain file, you might want to configure as follows:

name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectuses: leanprover-community/lean-update@mainwith:
update_if_modified: lean-toolchain

If you want to receive notifications on Zulip when the update fails

  1. First, create a bot in Zulip and note its API key. Be careful not to create a new account - Zulip has a dedicated feature for "creating a bot".
  2. Next, register the bot's API key as a secret named ZULIP_API_KEY in your repository. You can set up secrets from the repository's "Settings".
  3. Prepare a workflow file like the following:
name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectid: lean-updateuses: leanprover-community/lean-update@mainwith:
on_update_fails: "silent"
- name: Notificationif: steps.lean-update.outputs.result == 'update-fail' # only send a message when the update failsuses: zulip/github-actions-zulip/send-message@v1with:
api-key: ${{ secrets.ZULIP_API_KEY }} # Zulip API key of your botemail: "***-bot@leanprover.zulipchat.com"# your Zulip bot's emailorganization-url: 'https://leanprover.zulipchat.com'to: "123456"# user_idtype: "private"# private messagecontent: | ❌ The update of ${{ github.repository }} has failed - [See Action Run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) - [See Commit](https://github.com/${{ github.repository }}/commit/${{ github.sha }})

Description of Functionality

  1. This Action first installs elan and runs lake update. This fetches the latest Lean release and updates all dependent packages to their latest versions.

  2. If lake update determines that all dependencies are already up to date, this Action does nothing further.

  3. Subsequently, this GitHub Action validates the updated code. This performs the build process, runs tests if a test driver is configured, and executes lint checks if a lint driver is set up. You can configure what build arguments are passed to lake build using the build_args option.

  4. This Action classifies the post-update validation results into two categories: success or failure.

    1. If successful, it behaves according to the setting specified in the on_update_succeeds option. By default, this is set to pr, which submits the updated code as a pull request. However, if the update_if_modified option is set to lean-toolchain, the Action does nothing unless the Lean version has been updated.
    2. If it fails, it behaves according to the setting specified in the on_update_fails option. By default, this is set to issue, which submits an issue indicating that the update failed.

Details of Option

See action.yml for details.

About

GitHub Action which automatically updates Lean projects

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

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

Lean Update

A GitHub Action that attempts to update Lean and dependencies of a Lean project. This is basically a fork of oliver-butterley/lean-update but more feature-rich.

Quick Setup

Create a file named update.yml in the .github/workflows directory.

If you want to keep dependencies always up-to-date

To keep dependencies always up-to-date, you might want to configure as follows:

name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectuses: leanprover-community/lean-update@main

When you only want to update when there is a new Lean version

If you want to skip updates unless there is a change to the lean-toolchain file, you might want to configure as follows:

name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectuses: leanprover-community/lean-update@mainwith:
update_if_modified: lean-toolchain

If you want to receive notifications on Zulip when the update fails

  1. First, create a bot in Zulip and note its API key. Be careful not to create a new account - Zulip has a dedicated feature for "creating a bot".
  2. Next, register the bot's API key as a secret named ZULIP_API_KEY in your repository. You can set up secrets from the repository's "Settings".
  3. Prepare a workflow file like the following:
name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectid: lean-updateuses: leanprover-community/lean-update@mainwith:
on_update_fails: "silent"
- name: Notificationif: steps.lean-update.outputs.result == 'update-fail' # only send a message when the update failsuses: zulip/github-actions-zulip/send-message@v1with:
api-key: ${{ secrets.ZULIP_API_KEY }} # Zulip API key of your botemail: "***-bot@leanprover.zulipchat.com"# your Zulip bot's emailorganization-url: 'https://leanprover.zulipchat.com'to: "123456"# user_idtype: "private"# private messagecontent: | ❌ The update of ${{ github.repository }} has failed - [See Action Run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) - [See Commit](https://github.com/${{ github.repository }}/commit/${{ github.sha }})

Description of Functionality

  1. This Action first installs elan and runs lake update. This fetches the latest Lean release and updates all dependent packages to their latest versions.

  2. If lake update determines that all dependencies are already up to date, this Action does nothing further.

  3. Subsequently, this GitHub Action validates the updated code. This performs the build process, runs tests if a test driver is configured, and executes lint checks if a lint driver is set up. You can configure what build arguments are passed to lake build using the build_args option.

  4. This Action classifies the post-update validation results into two categories: success or failure.

    1. If successful, it behaves according to the setting specified in the on_update_succeeds option. By default, this is set to pr, which submits the updated code as a pull request. However, if the update_if_modified option is set to lean-toolchain, the Action does nothing unless the Lean version has been updated.
    2. If it fails, it behaves according to the setting specified in the on_update_fails option. By default, this is set to issue, which submits an issue indicating that the update failed.

Details of Option

See action.yml for details.

About

GitHub Action which automatically updates Lean projects

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

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

Lean Update

A GitHub Action that attempts to update Lean and dependencies of a Lean project. This is basically a fork of oliver-butterley/lean-update but more feature-rich.

Quick Setup

Create a file named update.yml in the .github/workflows directory.

If you want to keep dependencies always up-to-date

To keep dependencies always up-to-date, you might want to configure as follows:

name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectuses: leanprover-community/lean-update@main

When you only want to update when there is a new Lean version

If you want to skip updates unless there is a change to the lean-toolchain file, you might want to configure as follows:

name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectuses: leanprover-community/lean-update@mainwith:
update_if_modified: lean-toolchain

If you want to receive notifications on Zulip when the update fails

  1. First, create a bot in Zulip and note its API key. Be careful not to create a new account - Zulip has a dedicated feature for "creating a bot".
  2. Next, register the bot's API key as a secret named ZULIP_API_KEY in your repository. You can set up secrets from the repository's "Settings".
  3. Prepare a workflow file like the following:
name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectid: lean-updateuses: leanprover-community/lean-update@mainwith:
on_update_fails: "silent"
- name: Notificationif: steps.lean-update.outputs.result == 'update-fail' # only send a message when the update failsuses: zulip/github-actions-zulip/send-message@v1with:
api-key: ${{ secrets.ZULIP_API_KEY }} # Zulip API key of your botemail: "***-bot@leanprover.zulipchat.com"# your Zulip bot's emailorganization-url: 'https://leanprover.zulipchat.com'to: "123456"# user_idtype: "private"# private messagecontent: | ❌ The update of ${{ github.repository }} has failed - [See Action Run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) - [See Commit](https://github.com/${{ github.repository }}/commit/${{ github.sha }})

Description of Functionality

  1. This Action first installs elan and runs lake update. This fetches the latest Lean release and updates all dependent packages to their latest versions.

  2. If lake update determines that all dependencies are already up to date, this Action does nothing further.

  3. Subsequently, this GitHub Action validates the updated code. This performs the build process, runs tests if a test driver is configured, and executes lint checks if a lint driver is set up. You can configure what build arguments are passed to lake build using the build_args option.

  4. This Action classifies the post-update validation results into two categories: success or failure.

    1. If successful, it behaves according to the setting specified in the on_update_succeeds option. By default, this is set to pr, which submits the updated code as a pull request. However, if the update_if_modified option is set to lean-toolchain, the Action does nothing unless the Lean version has been updated.
    2. If it fails, it behaves according to the setting specified in the on_update_fails option. By default, this is set to issue, which submits an issue indicating that the update failed.

Details of Option

See action.yml for details.

About

GitHub Action which automatically updates Lean projects

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

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

Lean Update

A GitHub Action that attempts to update Lean and dependencies of a Lean project. This is basically a fork of oliver-butterley/lean-update but more feature-rich.

Quick Setup

Create a file named update.yml in the .github/workflows directory.

If you want to keep dependencies always up-to-date

To keep dependencies always up-to-date, you might want to configure as follows:

name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectuses: leanprover-community/lean-update@main

When you only want to update when there is a new Lean version

If you want to skip updates unless there is a change to the lean-toolchain file, you might want to configure as follows:

name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectuses: leanprover-community/lean-update@mainwith:
update_if_modified: lean-toolchain

If you want to receive notifications on Zulip when the update fails

  1. First, create a bot in Zulip and note its API key. Be careful not to create a new account - Zulip has a dedicated feature for "creating a bot".
  2. Next, register the bot's API key as a secret named ZULIP_API_KEY in your repository. You can set up secrets from the repository's "Settings".
  3. Prepare a workflow file like the following:
name: Update Lean Projecton:
schedule:
- cron: "0 0 * * *"# every dayworkflow_dispatch: # allows workflow to be triggered manuallyjobs:
update_lean:
# The default GITHUB_TOKEN is read-only, so the write scopes have to be asked for.# Opening the pull request also needs `Allow GitHub Actions to create and approve pull# requests` under Settings > Actions > General > Workflow permissions.permissions:
contents: writepull-requests: writeissues: writeruns-on: ubuntu-lateststeps:
- name: Checkout codeuses: actions/checkout@v6
- name: Update Lean projectid: lean-updateuses: leanprover-community/lean-update@mainwith:
on_update_fails: "silent"
- name: Notificationif: steps.lean-update.outputs.result == 'update-fail' # only send a message when the update failsuses: zulip/github-actions-zulip/send-message@v1with:
api-key: ${{ secrets.ZULIP_API_KEY }} # Zulip API key of your botemail: "***-bot@leanprover.zulipchat.com"# your Zulip bot's emailorganization-url: 'https://leanprover.zulipchat.com'to: "123456"# user_idtype: "private"# private messagecontent: | ❌ The update of ${{ github.repository }} has failed - [See Action Run](https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}) - [See Commit](https://github.com/${{ github.repository }}/commit/${{ github.sha }})

Description of Functionality

  1. This Action first installs elan and runs lake update. This fetches the latest Lean release and updates all dependent packages to their latest versions.

  2. If lake update determines that all dependencies are already up to date, this Action does nothing further.

  3. Subsequently, this GitHub Action validates the updated code. This performs the build process, runs tests if a test driver is configured, and executes lint checks if a lint driver is set up. You can configure what build arguments are passed to lake build using the build_args option.

  4. This Action classifies the post-update validation results into two categories: success or failure.

    1. If successful, it behaves according to the setting specified in the on_update_succeeds option. By default, this is set to pr, which submits the updated code as a pull request. However, if the update_if_modified option is set to lean-toolchain, the Action does nothing unless the Lean version has been updated.
    2. If it fails, it behaves according to the setting specified in the on_update_fails option. By default, this is set to issue, which submits an issue indicating that the update failed.

Details of Option

See action.yml for details.

About

GitHub Action which automatically updates Lean projects

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages