2016-09-25 23:31:41 +00:00
[< p align = "center" > < img src = "mas-cli.png" alt = "mas-cli" width = "450" height = "auto" > < / p > ][mas-cli]
2015-09-20 23:47:42 +00:00
# mas-cli
2018-01-27 04:23:03 +00:00
A simple command line interface for the Mac App Store. Designed for scripting and automation.
2019-01-12 01:17:13 +00:00
[![Software License ](https://img.shields.io/badge/license-MIT-lightgrey.svg )](https://github.com/mas-cli/mas/blob/master/LICENSE)
2020-05-24 23:54:21 +00:00
[![Swift 5 ](https://img.shields.io/badge/Language-Swift_5-orange.svg )](https://swift.org)
2019-01-12 01:18:08 +00:00
[![GitHub Release ](https://img.shields.io/github/release/mas-cli/mas.svg )](https://github.com/mas-cli/mas/releases)
2019-01-12 01:14:20 +00:00
[![Reviewed by Hound ](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg )](https://houndci.com)
2019-01-12 01:18:08 +00:00
[![Pipeline Status ](https://jenkins.log-g.co/buildStatus/icon?job=mas-cli/mas/master )](https://jenkins.log-g.co/job/mas-cli/job/mas/job/master/)
2015-09-20 23:47:42 +00:00
2018-08-13 03:43:44 +00:00
## 📲 Install
### 🍺 Homebrew
2015-09-20 23:47:42 +00:00
2016-09-27 12:44:17 +00:00
[Homebrew ](http://brew.sh ) is the preferred way to install:
2015-09-20 23:47:42 +00:00
2019-04-30 13:40:29 +00:00
```bash
brew install mas
```
2015-09-20 23:47:42 +00:00
2019-12-14 01:32:13 +00:00
⚠️ Note that macOS 10.14 (Mojave) is required to install mas from the core Homebrew formula.
2019-12-14 00:23:50 +00:00
2018-08-13 03:44:07 +00:00
### ☎️ Older macOS Versions
2018-08-18 03:23:36 +00:00
We provide a [custom Homebrew tap ](https://github.com/mas-cli/homebrew-tap ) with pre-built bottles
2019-01-04 01:03:47 +00:00
for all macOS versions since 10.11.
2018-08-13 03:44:07 +00:00
2019-12-14 00:23:50 +00:00
To install mas from our tap:
2018-08-13 03:44:07 +00:00
2019-04-30 13:39:28 +00:00
```bash
brew install mas-cli/tap/mas
2018-08-13 03:44:07 +00:00
```
2019-12-14 00:23:50 +00:00
#### Known Installation Issues On macOS Before 10.14.4
2020-05-24 23:54:21 +00:00
Starting with [mas 1.7.0 ](https://github.com/mas-cli/mas/releases/tag/v1.7.0 ), if you get
2019-12-14 00:23:50 +00:00
an error similar to `dyld: Symbol not found: _$s11SubSequenceSlTl` when running mas,
you'll need to install the [Swift 5 Runtime Support for Command Line Tools ](https://support.apple.com/kb/DL1998 ).
Alternatively, you can:
- Update to macOS 10.14.4 or later
- Install Xcode 10.2 or later at `/Applications/Xcode.app`
- Rebuild mas from source using Xcode 10.0 or later
2018-08-13 03:44:07 +00:00
### 🐙 GitHub Releases
2016-10-10 12:12:31 +00:00
Alternatively, binaries are available in the [GitHub Releases ](https://github.com/mas-cli/mas/releases )
2015-09-20 23:47:42 +00:00
2018-08-13 03:44:07 +00:00
## 🤳🏻 Usage
2015-09-20 23:47:42 +00:00
Each application in the Mac App Store has a product identifier which is also
2015-09-20 23:55:58 +00:00
used for mas-cli commands. Using `mas list` will show all installed
applications and their product identifiers.
2015-09-20 23:47:42 +00:00
2019-04-30 13:40:29 +00:00
```bash
$ mas list
446107677 Screens
407963104 Pixelmator
497799835 Xcode
```
2015-09-20 23:47:42 +00:00
2016-04-17 00:26:52 +00:00
It is possible to search for applications by name using `mas search` which
2018-08-11 23:37:36 +00:00
will search the Mac App Store and return matching identifiers.
Include the `--price` flag to include prices in the result.
2016-04-17 00:26:52 +00:00
2019-04-30 13:40:29 +00:00
```bash
$ mas search Xcode
497799835 Xcode
688199928 Docs for Xcode
449589707 Dash 3 - API Docs & Snippets. Integrates with Xcode, Alfred, TextWrangler and many more.
[...]
```
2016-04-17 00:26:52 +00:00
To install or update an application simply run `mas install` with an
application identifier:
2015-09-20 23:47:42 +00:00
2019-04-30 13:40:29 +00:00
```bash
$ mas install 808809998
==> Downloading PaintCode 2
==> Installed PaintCode 2
```
2016-11-03 22:34:33 +00:00
2018-08-11 23:37:36 +00:00
If you want to install the first result that the `search` command returns, use the `lucky` command.
2019-04-30 13:40:29 +00:00
```bash
$ mas lucky twitter
==> Downloading Twitter
==> Installed Twitter
```
2018-08-11 23:37:36 +00:00
> Please note that this command will not allow you to install (or even purchase) an app for the first time:
2020-03-21 13:24:27 +00:00
use the `purchase` command in that case.
```bash
$ mas purchase 768053424
==> Downloading Gapplin
==> Installed Gapplin
```
> Please note that you may have to re-authenticate yourself in the App Store to complete the purchase.
This is the case if the application is not free or if you configured your account not to remember the credentials for free purchases.
2015-09-20 23:47:42 +00:00
Use `mas outdated` to list all applications with pending updates.
2019-04-30 13:40:29 +00:00
```bash
$ mas outdated
497799835 Xcode (7.0)
446107677 Screens VNC - Access Your Computer From Anywhere (3.6.7)
```
2018-07-05 00:29:10 +00:00
2018-08-11 23:37:36 +00:00
> `mas` is only able to install/update applications that are listed in the Mac App Store itself.
2019-04-30 13:40:29 +00:00
Use [`softwareupdate(8)`] utility for downloading system updates (like iTunes, Xcode Command Line Tools, etc)
2015-09-20 23:47:42 +00:00
2015-12-30 21:03:45 +00:00
To install all pending updates run `mas upgrade` .
2019-04-30 13:40:29 +00:00
```bash
$ mas upgrade
Upgrading 2 outdated applications:
Xcode (7.0), Screens VNC - Access Your Computer From Anywhere (3.6.7)
==> Downloading Xcode
==> Installed Xcode
==> Downloading iFlicks
==> Installed iFlicks
```
2015-12-30 21:03:45 +00:00
2016-09-25 23:38:31 +00:00
Updates can be performed selectively by providing the app identifier(s) to
`mas upgrade`
2019-04-30 13:40:29 +00:00
```bash
$ mas upgrade 715768417
Upgrading 1 outdated application:
Xcode (8.0)
==> Downloading Xcode
==> Installed Xcode
```
2016-09-25 23:38:31 +00:00
2018-08-13 03:43:44 +00:00
### 🚏📥 Sign-in
2018-08-11 23:37:36 +00:00
2016-02-14 01:42:18 +00:00
To sign into the Mac App Store for the first time run `mas signin` .
2019-04-30 13:40:29 +00:00
```bash
$ mas signin mas@example.com
==> Signing in to Apple ID: mas@example.com
Password:
```
2016-06-08 20:23:55 +00:00
2018-08-11 23:37:36 +00:00
> ⚠️ Due to breaking changes in the underlying API that mas uses to interact with the Mac App Store,
> the `signin` command has been temporarily disabled on macOS 10.13+ ⛔.
2018-08-12 21:09:58 +00:00
> For more information on this issue, see [#164](https://github.com/mas-cli/mas/issues/164).
2018-08-11 23:37:36 +00:00
2017-06-04 17:09:22 +00:00
If you experience issues signing in this way, you can ask to signin using a graphical dialog (provided by Mac App Store application):
2018-08-11 23:37:36 +00:00
2019-04-30 13:40:29 +00:00
```bash
$ mas signin --dialog mas@example.com
==> Signing in to Apple ID: mas@example.com
```
2016-06-08 20:23:55 +00:00
You can also embed your password in the command.
2019-04-30 13:40:29 +00:00
```bash
$ mas signin mas@example.com 'ZdkM4f$gzF;gX3ABXNLf8KcCt.x.np'
==> Signing in to Apple ID: mas@example.com
```
2016-02-14 01:42:18 +00:00
Use `mas signout` to sign out from the Mac App Store.
2018-08-13 03:43:44 +00:00
## 🍺 Homebrew integration
2016-11-07 20:36:06 +00:00
2019-04-30 13:40:29 +00:00
`mas` is integrated with [homebrew-bundle]. If `mas` is installed, and you run `brew bundle dump` ,
then your Mac App Store apps will be included in the Brewfile created. See the [homebrew-bundle]
2018-08-11 23:37:36 +00:00
docs for more details.
2016-11-07 20:36:06 +00:00
2018-08-13 03:43:44 +00:00
## 💥 When something doesn't work
2016-10-31 11:05:04 +00:00
2017-06-04 17:09:22 +00:00
If you see the error "This redownload is not available for this Apple ID either because it was bought by a different user of the item was refunded or cancelled.", it's probably because you haven't installed the app through the App Store yet. See [#46 ](https://github.com/mas-cli/mas/issues/46#issuecomment-248581233 ).
2016-11-03 22:34:33 +00:00
If `mas` doesn't work for you as expected (e.g. you can't update/download apps), run `mas reset` and try again. If the issue persists, please [file a bug ](https://github.com/mas-cli/mas/issues/new )! All your feedback is much appreciated ✨
2016-10-31 11:05:04 +00:00
2018-08-13 03:43:44 +00:00
## 📺 Using `tmux`
2016-06-15 11:29:01 +00:00
2016-09-25 23:39:59 +00:00
`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` .
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:
2016-06-15 11:29:01 +00:00
2019-04-30 13:40:29 +00:00
```bash
brew install reattach-to-user-namespace
reattach-to-user-namespace mas install
2016-06-15 11:29:01 +00:00
```
2018-08-13 03:43:44 +00:00
## ℹ ️ Build from source
2015-12-30 21:45:36 +00:00
You can now build from Xcode by opening `mas-cli.xcodeproj` , or from the Terminal:
2019-04-30 13:40:29 +00:00
```bash
script/build
2015-12-30 21:45:36 +00:00
```
Build output can be found in the `build/` directory within the project.
2018-11-24 03:57:51 +00:00
## ✅ Tests
2018-02-11 22:39:52 +00:00
2018-11-24 03:57:51 +00:00
The tests in this project are a recent work-in-progress.
Since Xcode does not officially support tests for command-line tool targets,
all logic is part of the MasKit target with tests in MasKitTests.
Tests are written using [Quick].
2018-02-11 22:39:52 +00:00
2018-08-13 03:43:44 +00:00
## 📄 License
2015-09-20 23:47:42 +00:00
2018-01-29 00:20:27 +00:00
mas-cli was created by [@argon ](https://github.com/argon ).
2016-05-05 18:09:47 +00:00
Code is under the [MIT license ](LICENSE ).
2016-09-25 23:32:19 +00:00
2019-04-30 13:40:29 +00:00
[homebrew-bundle]: https://github.com/Homebrew/homebrew-bundle
2016-10-10 12:12:31 +00:00
[mas-cli]: https://github.com/mas-cli/mas
2019-04-30 13:40:29 +00:00
[`softwareupdate(8)`]: https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man8/softwareupdate.8.html
2018-11-24 03:57:51 +00:00
[Quick]: https://github.com/Quick/Quick