-
-
Notifications
You must be signed in to change notification settings - Fork 10.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Draft Roadmap: brew cask upgrade
#4678
Comments
Have we considered using the milestones function on GitHub for help with stuff like this? |
It's a good idea, though I don't find them to be that handy in practice. Milestones are like a special type of label which you can apply to an existing issue. I would have to open a bunch of separate new issues for all the notions here, then assign each to the milestone, which is a lot of clicking. Then, each reader has to click on all the items to read them, which makes it harder to see the big picture. In addition, discussion gets scattered into the various sub-issues and sometimes goes un-noticed. Lastly, I included some things in the overview which are related work, but are not blocking the milestone. |
Let's also call upon the mysterious @phinze. |
brew cask upgrade
roadmapbrew cask upgrade
My vote is for following the convention Example: |
@alebcay looks like GitHub made milestones a lot more useful now. |
I've just adapted one of the scripts to just list outdated casks, and realized that I do not want certain apps be upgraded by cask: Google Chrome being a clear example for its automagical self upgrade. This is a minor issue, but maybe it is worth considering adding |
The DSL changes all got done, but I am no longer working on this roadmap. |
Wait. Does this mean there will be no brew cask upgrade in the foreseeable future? |
There are plans (that need a bit more discussion and an official announcement I’ll need to write up) to change homebrew-cask’s behaviour from linking to copying (long story short, linking sucks for GUI apps and we’re just building workarounds on top of workarounds, making it an incredibly broken model), so |
Good to hear that links are going away! Can you link to gh issues surrounding this change? |
There are none yet, @szhu. But don’t worry I didn’t forget about you. At the moment this is just an idea that hopefully will be discussed and set in march soon. I strongly believe it’s the right one, though. |
I actually forgot that I wrote that, thanks :) |
Please wait for open discussion of that before you make up your mind. I'm under no illusion that there's a perfect solution—each option has its strengths and weaknesses—but I find the idea that requiring everyone to keep two copies of every app they install via cask is the best course of action very difficult to swallow. |
Plans will be posted soon (should be today or tomorrow). No one is talking about keeping two copies, though, “copy” is a throwback to how we referred to the feature in the past, it doesn’t mean duplicating stuff (actually, we’ll take less space in some cases). Linking has shown to be a subpar solution for this, so keeping that is not an option. For homebrew-cask to evolve in other areas, we need this change: it’ll solve a bunch of issues right of the bat. Will it introduce new ones? We’ll have see how it evolves. I’ll go into all the reasoning at length in the announcement, though (it’ll be a regular github issue). Please also don’t think there hasn’t been open discussion on this — there has (like the issue I linked to before). A big part of the reasoning to do it the current way has been ideological but that approach isn’t working. The goal of homebrew-cask isn’t changing, though, but it is time to try a different solution. |
+1 |
@salimane Please stop spamming issues. This is closed, don’t |
@vitorgalvao you're right, this was closed :) |
So what is the actual solution??? |
Here's a workaround that mostly works:
I'm pretty sure a propper solution is WIP. |
|
My adhoc solution: https://gist.github.com/tonyseek/afa5902eb2713ca6cfab |
@tonyseek yeah i had implemented a hack one-liner above very similar to your with exception of default path not being checked ;) |
Simple cleaning based on ctime https://gist.github.com/orangeudav/29a58c8df6446a87c50ec035b2b5dfcd |
@orangeudav: What does your scripted alternative to |
Does not my little hack work for you? |
This is a closed issue. There have been already a bunch of workarounds posted by people. No more are needed. What we need is a native solution. Please stop spamming our inboxes with the same alternatives with variable results. Locking. |
Explanation
brew cask upgrade
is frequently brought up on IRC, and there have been a few different issues and PRs where it is discussed (long-running: #309).brew cask upgrade
is a high priority to me. Homebrew-cask is not really a package manager withoutupgrade
. It is also important that when we do ship anupgrade
verb, it actually works.There are many prerequisites for our infrastructure to support a
brew cask upgrade
that works reliably, and a few things that should come along with it.For the benefit of our users, and anyone who wants to participate in coding, here is a general roadmap that shows what some of us have been working on, and where we can go over upcoming months. I plan to edit this comment in-place over time.
Why is so much attention paid to tokens and versioning? Because Homebrew-cask uses a simple filesystem-as-a-datastore approach in which Cask tokens and version numbers are used as directory names. We need to standardize tokens and versions so that files are stored in a predictable place on disk — and because there is no facility to handle renames sensibly.
This is only a draft. It is possible that there is disagreement among the maintainers about certain items.
Current Implementation
Homebrew-cask is very good at installing, inconsistent on uninstalling, and mostly-incapable on upgrading. Part of upgrading is implicit uninstalling, so
uninstall
must be made to work equally well asinstall
does.Roadmap
homebrew-versions
(102)homebrew-unofficial
(8)Standardize tokens for widget Casks (3, unimportant because they don't work)(support for widgets has been removed as of Remove support for widgets #8751)adobe-air.rb
)homebrew-versions
(102)homebrew-unofficial
(8)Standardize version numbers for widget Casks (3, unimportant because they don't work)Support for widgets removed as of Remove support for widgets #8751adobe-air.rb
)generate_cask_token
script to generate tokens (devscript: addcask_namer
#3443)generate_cask_token
scriptgenerate_cask_token
script logic intobrew cask create
generate_cask_token
Info.plist
brew cask create
uninstall
stanzasuninstall
stanza #3322 (almost finished, thanks to @alebcay)brew cask audit
test to keep out any new entries withoutuninstall
uninstall
stanza available to all Cask typesmd5
stanza (remove md5 checksum support #2931)sha1
stanza (Retire support forsha1
stanza. #4264)no_checksum
stanza (retire support forno_checksum
stanza #4689)appcast
stanza to DSL (add optional appcast stanza to DSL #3105)latest
-style Casks #4412, add appcast stanza for 78 Casks #4646, add appcast stanza for 27 Casks #4648, add appcast stanza for 70 Casks #4674, add appcast stanza for 77 Casks #4780, add appcast stanza for 28 Casks #4783, add appcast stanza for 18 Casks #4829)link
Caskslink
CasksSUFeedURL
set toSET_PROGRAMMATICALLY_BY_APPLICATION_HELPER
Info.plist
in unexpected locationbrew cask list
brew cask create
could do this if it is pointed at an app bundle'latest'
-scheme Casks to version numbers as possible'latest'
schemelist_url_attributes_on_file
~/.brewcaskconfig
filebrew cask uninstall
refer to the previously recorded Cask/version, rather than the current repofetch
(CLI - Fetch #2970)stage
brew cask audit --stage
preflight
(fairly unimportant)link
postflight
zap
(new functionality; zap phase not implicit under defaultinstall
)brew cask audit --stage
Info.plist
outdated
([WIP] brew cask outdated #9490)Info.plist
as well as versioned directory namebrew cask cleanup
as suggested in Delete old versions in cleanup #4651upgrade
HACKING.md
re: upgrade verbThe text was updated successfully, but these errors were encountered: