mas

by mas-cli

mas-cli /mas

:package: Mac App Store command line interface

7.4K Stars 188 Forks Last release: 24 days ago (v1.7.1) MIT License 849 Commits 25 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

mas-cli

mas-cli

A simple command line interface for the Mac App Store. Designed for scripting and automation.

Software License Swift 5 GitHub Release Reviewed by Hound Pipeline Status

πŸ“² Install

🍺 Homebrew

Homebrew is the preferred way to install:

brew install mas

MacPorts

MacPorts works as well:

sudo port install mas

⚠️ Note that macOS 10.14 (Mojave) is required to install mas from MacPorts or the core Homebrew formula.

☎️ Older macOS Versions

We provide a custom Homebrew tap with pre-built bottles for all macOS versions since 10.11.

To install mas from our tap:

brew install mas-cli/tap/mas

Known Installation Issues On macOS Before 10.14.4

Starting with mas 1.7.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.

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

πŸ™ GitHub Releases

Alternatively, binaries are available in the GitHub Releases

🀳🏻 Usage

Each application in the Mac App Store has a product identifier which is also used for mas-cli commands. Using

mas list
will show all installed applications and their product identifiers.
$ mas list
446107677 Screens
407963104 Pixelmator
497799835 Xcode

It is possible to search for applications by name using

mas search
which will search the Mac App Store and return matching identifiers. Include the
--price
flag to include prices in the result.
$ mas search Xcode
497799835 Xcode
688199928 Docs for Xcode
449589707 Dash 3 - API Docs & Snippets. Integrates with Xcode, Alfred, TextWrangler and many more.
[...]

To install or update an application simply run

mas install
with an application identifier:
$ mas install 808809998
==> Downloading PaintCode 2
==> Installed PaintCode 2

If you want to install the first result that the

search
command returns, use the
lucky
command.
$ mas lucky twitter
==> Downloading Twitter
==> Installed Twitter

Please note that this command will not allow you to install (or even purchase) an app for the first time: use the

purchase
command in that case.
$ 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.

Use

mas outdated
to list all applications with pending updates.
$ mas outdated
497799835 Xcode (7.0)
446107677 Screens VNC - Access Your Computer From Anywhere (3.6.7)

mas
is only able to install/update applications that are listed in the Mac App Store itself. Use
softwareupdate(8)
utility for downloading system updates (like iTunes, Xcode Command Line Tools, etc)

To install all pending updates run

mas upgrade
.
$ 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

Updates can be performed selectively by providing the app identifier(s) to

mas upgrade
$ mas upgrade 715768417
Upgrading 1 outdated application:
Xcode (8.0)
==> Downloading Xcode
==> Installed Xcode

🚏πŸ“₯ Sign-in

To sign into the Mac App Store for the first time run

mas signin
.
$ mas signin [email protected]
==> Signing in to Apple ID: [email protected]
Password:

⚠️ 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+ β›”. For more information on this issue, see #164.

If you experience issues signing in this way, you can ask to signin using a graphical dialog (provided by Mac App Store application):

$ mas signin --dialog [email protected]
==> Signing in to Apple ID: [email protected]

You can also embed your password in the command.

$ mas signin [email protected] 'ZdkM4f$gzF;gX3ABXNLf8KcCt.x.np'
==> Signing in to Apple ID: [email protected]

Use

mas signout
to sign out from the Mac App Store.

🍺 Homebrew integration

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 docs for more details.

πŸ’₯ When something doesn't work

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.

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! All your feedback is much appreciated ✨

πŸ“Ί Using
tmux

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 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:
brew install reattach-to-user-namespace
reattach-to-user-namespace mas install

ℹ️ Build from source

You can now build from Xcode by opening

mas-cli.xcodeproj
, or from the Terminal:
script/build

Build output can be found in the

build/
directory within the project.

βœ… Tests

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.

πŸ“„ License

mas-cli was created by @argon. Code is under the MIT license.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.