Skip to content

Conversation

SMillerDev
Copy link
Member

  • Have you followed the guidelines in our Contributing document?
  • Have you checked to ensure there aren't other open Pull Requests for the same change?
  • Have you added an explanation of what your changes do and why you'd like us to include them?
  • Have you written new tests for your changes? Here's an example.
  • Have you successfully run brew style with your changes locally?
  • Have you successfully run brew typecheck with your changes locally?
  • Have you successfully run brew tests with your changes locally?

This adds support for the first linux-only cask stanza: app_image.
We should probably add CI for Linux casks, but haven't been able to get that working yet.

@MikeMcQuaid
Copy link
Member

We should probably add CI for Linux casks, but haven't been able to get that working yet.

Need CI before this PR is merged.

Where are the app images installed and is that an expected/sensible location?

Maybe we should reuse app for this on Linux (or is that too confusing)?

@SMillerDev
Copy link
Member Author

Maybe we should reuse app for this on Linux

I considered it, but deemed it too confusing. Especially with it not working on macOS.

Where are the app images installed and is that an expected/sensible location?

In ~/Applications, their docs recommend it.
https://docs.appimage.org/user-guide/faq.html#question-where-do-i-store-my-appimages

@MikeMcQuaid
Copy link
Member

@SMillerDev sounds good 👍🏻

@SMillerDev
Copy link
Member Author

I'm also considering adding a desktop file for these so the various Linux systems can pick it up easily.

Ref: https://specifications.freedesktop.org/desktop-entry-spec/latest/

Copy link

This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.

@github-actions github-actions bot added the stale No recent activity label Aug 23, 2025
@SMillerDev
Copy link
Member Author

This is waiting for the following pieces:

  • Adding integration tests to testbot so I don't break it again
  • Add cask change detection to testbot
  • Adding Linux CI to homebrew/cask

@github-actions github-actions bot removed the stale No recent activity label Aug 23, 2025
Copy link

This pull request has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs.

@github-actions github-actions bot added the stale No recent activity label Sep 14, 2025
@SMillerDev SMillerDev added help wanted We want help addressing this in progress Maintainers are working on this and removed stale No recent activity labels Sep 14, 2025
@SMillerDev
Copy link
Member Author

Not stale, but it is waiting for Linux CI for casks, and that's not going as fast as I'd like. So help would be much appreciated.

@MikeMcQuaid MikeMcQuaid removed help wanted We want help addressing this in progress Maintainers are working on this labels Oct 2, 2025
@SMillerDev
Copy link
Member Author

Okay, now that Linux CI for casks is merged I'm planning to:

  • make a PR that stops requiring --cask in Linux
  • Prepare this PR for review

@SMillerDev SMillerDev marked this pull request as ready for review October 18, 2025 17:58
@Copilot Copilot AI review requested due to automatic review settings October 18, 2025 17:58
Copy link
Contributor

@Copilot Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds AppImage support as a Linux-only cask stanza, extending Homebrew's cross-platform capabilities. It implements a new artifact type app_image that allows Linux users to install AppImage applications through Homebrew casks.

  • Implements AppImage artifact class with symlink functionality
  • Updates OS-specific installer logic to validate platform compatibility
  • Enhances CI matrix generation to support Linux cask testing

Reviewed Changes

Copilot reviewed 10 out of 10 changed files in this pull request and generated 3 comments.

Show a summary per file
File Description
Library/Homebrew/cask/artifact/appimage.rb New AppImage artifact class that extends symlinked artifacts
Library/Homebrew/cask/artifact.rb Registers AppImage in artifact system and defines Linux-only artifacts
Library/Homebrew/cask/config.rb Adds appimagedir configuration option with default path
Library/Homebrew/cli/parser.rb Adds --appimagedir CLI flag for configuring AppImage installation directory
Library/Homebrew/cask/dsl.rb Registers AppImage as an ordinary artifact class in DSL
Library/Homebrew/cask/cask.rb Updates platform support detection logic for macOS and Linux
Library/Homebrew/extend/os/mac/cask/installer.rb New macOS-specific installer validation
Library/Homebrew/extend/os/linux/cask/installer.rb Updates Linux installer validation logic
Library/Homebrew/extend/os/cask/installer.rb Includes macOS-specific installer extensions
Library/Homebrew/dev-cmd/generate-cask-ci-matrix.rb Enhances CI matrix generation for Linux cask support
Comments suppressed due to low confidence (1)

Library/Homebrew/dev-cmd/generate-cask-ci-matrix.rb:1

  • Empty comment should either be removed or expanded to explain why the exception is being silently ignored, unlike the macOS case which logs the error message.
# typed: strict

Tip: Customize your code reviews with copilot-instructions.md. Create the file or learn how to get started.

Comment on lines +70 to +71
# repository = ENV.fetch("GITHUB_REPOSITORY", nil)
repository = "homebrew/homebrew-cask" # For testing outside of GitHub Actions
Copy link

Copilot AI Oct 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This hardcoded repository override for testing should not be committed to production code. Consider using a command-line flag or environment variable for testing instead of commenting out the original code.

Suggested change
# repository = ENV.fetch("GITHUB_REPOSITORY", nil)
repository = "homebrew/homebrew-cask" # For testing outside of GitHub Actions
repository = ENV["HOMEBREW_TEST_REPOSITORY"] || ENV["GITHUB_REPOSITORY"]

Copilot uses AI. Check for mistakes.

refresh
end

return false if !any_loaded
Copy link

Copilot AI Oct 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] Use return false unless any_loaded instead of return false if !any_loaded for better Ruby idiom consistency.

Suggested change
return false if !any_loaded
return false unless any_loaded

Copilot uses AI. Check for mistakes.

refresh
end

return false if !any_loaded
Copy link

Copilot AI Oct 18, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[nitpick] Use return false unless any_loaded instead of return false if !any_loaded for better Ruby idiom consistency.

Suggested change
return false if !any_loaded
return false unless any_loaded

Copilot uses AI. Check for mistakes.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants