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)
2019-01-12 01:24:10 +00:00
[![Swift 4.2 ](https://img.shields.io/badge/Language-Swift_4.2-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 00:23:50 +00:00
⚠️ Note that macOS 10.13 (High Sierra) is required to install mas from the core Homebrew formula.
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
Starting with [mas 2.0.0 ](https://github.com/mas-cli/mas/releases/tag/v2.0.0 ), if you get
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:
it must already be in the Purchased tab of the App Store.
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