8000 Improve `README.md` by rgoldberg · Pull Request #812 · mas-cli/mas · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

Improve README.md #812

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

Merged
merged 5 commits into from
Apr 25, 2025
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 71 additions & 52 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,31 +38,33 @@ sudo port install mas

#### 🍻 Custom Homebrew tap

We provide a [custom Homebrew tap](https://github.com/mas-cli/homebrew-tap) with pre-built bottles
for all macOS versions since 10.11 (El Capitan). The newest versions of mas, however, are only available
for macOS 10.15+ (Catalina or newer).
The [mas custom Homebrew tap](https://github.com/mas-cli/homebrew-tap) provides pre-built
bottles for all macOS versions since 10.11 (El Capitan). The newest versions of mas, however,
are only available for macOS 10.15+ (Catalina or newer).

To install mas from our tap:
To install mas from the custom tap:

```shell
brew install mas-cli/tap/mas
```

#### 🐙 GitHub Releases

Alternatively, binaries & sources are available from the [GitHub Releases](https://github.com/mas-cli/mas/releases).
Alternatively, binaries & sources are available from the
[GitHub Releases](https://github.com/mas-cli/mas/releases).

#### 🕊 Swift 5 Runtime Support

mas requires Swift 5 runtime support. macOS 10.14.4 (Mojave) & newer include it, but earlier releases do not.
Without it, running mas might report errors similar to:
mas requires Swift 5 runtime support. macOS 10.14.4 (Mojave) & newer include it, but earlier
releases do not. Without it, running mas might report errors similar to:

> dyld: Symbol not found: _$s11SubSequenceSlTl

To get Swift 5 support on macOS versions older than 10.14.4 (Mojave), you can:

- Upgrade to macOS 10.14.4 (Mojave) or newer.
- Install the [Swift 5 Runtime Support for Command Line Tools](https://support.apple.com/en-us/106446).
- Install the
[Swift 5 Runtime Support for Command Line Tools](https://support.apple.com/en-us/106446).
- Install Xcode 10.2 or newer to `/Applications/Xcode.app`.

## 🤳 Usage
Expand All @@ -84,7 +86,7 @@ Alternatively, to find an app's app ID:
### 🛍 Info from the Mac App Store

None of the commands in this section require you to be logged into an Apple Account,
neither for your macOS user, nor in the Mac App Store.
neither for your macOS user nor in the Mac App Store.

#### `mas search`

Expand All @@ -95,13 +97,13 @@ Providing the `--price` flag includes each app's price in the output.
$ mas search Xcode
497799835 Xcode
688199928 Docs for Xcode
449589707 Dash 3 - API Docs & Snippets. Integrates with Xcode, Alfred, TextWrangler and many more.
[...]
```

#### `mas info`

`mas info <app-id>` displays more detailed information about an application available from the Mac App Store.
`mas info <app-id>` displays more detailed information about an application available from the
Mac App Store.

```console
$ mas info 497799835
Expand All @@ -115,7 +117,8 @@ From: https://apps.apple.com/us/app/xcode/id497799835?mt=12&uo=4

### 📚 Info from Your Local App Library

All the commands in this section require you to be logged into an Apple Account for your macOS user.
All the commands in this section require you to be logged into an Apple Account for your macOS
user.

#### `mas list`

Expand All @@ -130,7 +133,8 @@ $ mas list

#### `mas outdated`

`mas outdated` displays all applications installed from the Mac App Store on your computer that have pending upgrades.
`mas outdated` displays all applications installed from the Mac App Store on your Mac that have
pending upgrades.

```console
$ mas outdated
Expand All @@ -142,14 +146,17 @@ Run [`mas upgrade`](#mas-upgrade) to install pending upgrades.

### ⬇️ Installing Apps

All the commands in this section require you to be logged into an Apple Account in the Mac App Store.
All the commands in this section require you to be logged into an Apple Account in the Mac App
Store.

> Depending on your Apple Account settings, you might need to re-authenticate yourself in the Mac App Store to perform a
> purchase, install, lucky, or upgrade, even if you are already signed in to an Apple Account in the Mac App Store.
> Depending on your Apple Account settings, you might need to re-authenticate yourself in the
> Mac App Store to perform a purchase, install, lucky, or upgrade, even if you are already
> signed in to an Apple Account in the Mac App Store.

#### `mas purchase`

`mas purchase <app-id>…` installs free applications that you haven't yet gotten/"purchased" from the Mac App Store.
`mas purchase <app-id>…` installs free applications that you haven't yet gotten/"purchased" from
the Mac App Store.

> `purchase` is currently a misnomer, because it currently can only "purchase" free
> apps. To purchase apps that cost money, please purchase them directly in the Mac App Store.
Expand All @@ -162,8 +169,9 @@ $ mas purchase 497799835

#### `mas install`

`mas install <app-id>…` installs apps that you have already gotten/"purchased" from the Mac App Store.
Providing the `--force` flag re-installs the app even if it is already installed on your computer.
`mas install <app-id>…` installs apps that you have already gotten/"purchased" from the Mac App
Store. Providing the `--force` flag re-installs the app even if it is already installed on your
Mac.

```console
$ mas install 497799835
Expand All @@ -173,8 +181,9 @@ $ mas install 497799835

#### `mas lucky`

`mas lucky <search-term>` installs the first result that would be returned by `mas search <search-term>`.
Like `mas install`, `mas lucky` can only install apps that have previously been gotten/"purchased".
`mas lucky <search-term>` installs the first result that would be returned by `mas search
<search-term>`. Like `mas install`, `mas lucky` can only install apps that have previously been
gotten/"purchased".

```console
$ mas lucky Xcode
Expand All @@ -184,16 +193,18 @@ $ mas lucky Xcode

### 🆕 Upgrading Apps

All the commands in this section require you to be logged into an Apple Account in the Mac App Store.
All the commands in this section require you to be logged into an Apple Account in the Mac App
Store.

> mas only installs/upgrades applications from the Mac App Store.
>
> Use [`softwareupdate(8)`](https://www.unix.com/man-page/osx/8/softwareupdate) to install system updates (e.g., Xcode
> Command Line Tools, Safari, etc.)
> Use [`softwareupdate(8)`](https://www.unix.com/man-page/osx/8/softwareupdate) to install
> system updates (e.g., Xcode Command Line Tools, Safari, etc.)

#### `mas upgrade`

`mas upgrade` upgrades outdated apps installed from the Mac App Store. Without any arguments, it upgrades all such apps.
`mas upgrade` upgrades outdated apps installed from the Mac App Store. Without any arguments, it
upgrades all such apps.

```console
$ mas upgrade
Expand All @@ -218,15 +229,18 @@ Xcode (15.4) -> (16.0)

### Mac App Store Account Management

All the commands in this section interact with the Apple Account for which you are signed in to the Mac App Store.
These commands do not interact with the Apple Account for which your macOS user is signed in.
All the commands in this section interact with the Apple Account for which you are signed in to
the Mac App Store. These commands do not interact with the Apple Account for which your macOS
user is signed in.

#### `mas signin`

> ⛔ The `signin` command is not supported on macOS 10.13 (High Sierra) or newer. On those macOS versions, please
> sign in via the Mac App Store instead. Please see [Known Issues](#known-issues).
> ⛔ The `signin` command is not supported on macOS 10.13 (High Sierra) or newer. On those macOS
> versions, please sign in via the Mac App Store instead. Please see
> [Known Issues](#known-issues).

On macOS 10.12 (Sierra) or older, `mas signin <apple-id>` signs in to the specified Apple Account in the Mac App Store.
On macOS 10.12 (Sierra) or older, `mas signin <apple-id>` signs in to the specified Apple
Account in the Mac App Store.

```console
$ mas signin mas@example.com
Expand Down Expand Up @@ -261,7 +275,8 @@ docs for more details.
### 💥 Changed Apple Private Frameworks

mas uses multiple undocumented Apple private frameworks to implement much of its functionality.
Over time, Apple has silently changed these frameworks, breaking some functionality. Known issues include:
Over time, Apple has silently changed these frameworks, breaking some functionality. Known
issues include:

- ⛔ The `signin` command is not supported on macOS 10.13 (High Sierra) or newer. [#164](
https://github.com/mas-cli/mas/issues/164
Expand All @@ -272,13 +287,15 @@ Over time, Apple has silently changed these frameworks, breaking some functional

### ⏳ Eventual Consistency

The Mac App Store operates on eventual consistency, so the versions seen by various parts of mas or the Mac App Store
might be inconsistent for short periods of time. This might cause symptoms like
[#384](https://github.com/mas-cli/mas/issues/384) & [#387](https://github.com/mas-cli/mas/issues/387).
The Mac App Store operates on eventual consistency, so the versions seen by various parts of mas
or the Mac App Store might be inconsistent for short periods of time. This might cause symptoms
like [#384](https://github.com/mas-cli/mas/issues/384) &
[#387](https://github.com/mas-cli/mas/issues/387).

### 📱 iOS & iPadOS Apps

Apple Silicon Macs can install & run iOS & iPadOS apps from the Mac App Store. mas does not yet support such apps.
Apple Silicon Macs can install & run iOS & iPadOS apps from the Mac App Store. mas does not yet
support such apps.
[#321](https://github.com/mas-cli/mas/issues/321)

### 📺 Using `tmux`
Expand All @@ -287,24 +304,24 @@ mas operates via the same system services as the Mac App Store. These exist as
separate processes with communication through XPC. As a result of this, mas
experiences similar problems as the pasteboard when running inside `tmux`. A
[wrapper tool exists](https://github.com/ChrisJohnsen/tmux-MacOSX-pasteboard) to
fix pasteboard behaviour which also works for mas.
fix pasteboard behavior which also works for mas.

You should consider configuring `tmux` to use the wrapper but if you do not wish
to do this it can be used on a one-off basis as follows:
You should consider configuring `tmux` to use the wrapper, but, if you do not wish
to do this, it can be used on a one-off basis as follows:

```shell
brew install reattach-to-user-namespace
reattach-to-user-namespace mas install
```

### `mas list` returns no results
### 📭 `mas list`, `mas outdated`, `mas uninstall`, or `mas upgrade` does not detect installed apps

mas 2.0.0+ sources data for installed MAS apps from masOS's Spotlight metadata store.
mas 2.0.0+ sources data for installed Mac App Store apps from macOS's Spotlight metadata store.

mas can only interact with MAS apps if they have been indexed by the Spotlight Metadata Server
(aka MDS) background processes.
mas can only interact with installed Mac App Store apps if they have been indexed by the
Spotlight Metadata Server (aka MDS) background processes.

You can check if an MAS app has been indexed in the metadata store by running:
You can check if a Mac App Store app has been indexed in the metadata store by running:

```console
## General format:
Expand All @@ -325,23 +342,24 @@ $ mdfind 'kMDItemAppStoreAdamID == 310633997'
/Applications/WhatsApp.app
```

If any of your MAS apps are not indexed, you can enable/rebuild the metadata store for all file
system volumes by running:
If any of your Mac App Store apps are not indexed, you can enable/rebuild the metadata store for
all file system volumes by running:

```shell
sudo mdutil -Eai on
```

## 🚫 When something doesn't work

If you see the following error, it's probably because you haven't yet "purchased" the app through the Mac App Store.
If you see the following error, it's probably because you haven't yet "purchased" the app
through the Mac App Store.
See [#46](https://github.com/mas-cli/mas/issues/46#issuecomment-248581233).
> This redownload is not available for this Apple Account either because it was bought by a different user or the
> item was refunded or cancelled.
> This redownload is not available for this Apple Account either because it was bought by a
> different user or the item was refunded or canceled.

If mas doesn't work for you as expected (e.g. you can't install/upgrade apps), run `mas reset`, then try again.
If the issue persists, please [file a bug](https://github.com/mas-cli/mas/issues/new).
All feedback is much appreciated! ✨
If mas doesn't work for you as expected (e.g., you can't install/upgrade apps), run `mas reset`,
then try again. If the issue persists, please
[file a bug](https://github.com/mas-cli/mas/issues/new). All feedback is much appreciated! ✨

## 🏗 Build from source

Expand All @@ -355,7 +373,8 @@ Build output can be found in the `.build` directory within the project.

## 🧪 Tests

Tests are written using [Quick](https://github.com/Quick/Quick) & [Nimble](https://github.com/Quick/Nimble).
Tests are written using [Quick](https://github.com/Quick/Quick) &
[Nimble](https://github.com/Quick/Nimble).

```shell
script/test
Expand Down
0