Por mais que usuários de macOS façam poucas formatações do zero (pelo menos os que já conheci), a ideia de ter uma opção que instale todos os seus softwares diretamente da Mac Apple Store através de uma CLI é incrivel e abre as portas do mundo da automação, com essa premissa surge o mas.

Instalação

Para uma instalação utilizando os gerenciadores de pacotes deste post é necessário macOS 10.14 (Mojave).

O mas pode ser instalado preferencialmente utilizando Homebrew:

$ brew install mas

Também oferece instalação por meio do MacPorts:

$ sudo port install mas

Signin

O login deve ser feito manualmente, já que uma API interna que possibilitava a integração com o mas foi desabilitada no macOS High Sierra (10.13+), registrada como #164. Com isso abra a App Store do seu macOS e faça o login. O comando utilizado para isso antes de ser desativado por tempo indeterminado seria:

$ mas signin <email> '<password>'

Uma variação interessante sem registrar sua senha no histórico do terminal seria:

$ mas signin --dialog <email>

Onde <email> e <password> são relacionadas ao seu Apple ID.

Signout

Para remover suas credenciais do Apple ID da Mac App Store do sistema que está utilizando, precisando fazer novamente o login manual. Utilize o comando:

$ mas signout

Checando a conta em uso

Esta opção exibe o email vinculado a loja e que está sendo utilizado no mas:

$ mas account

Essa informação também fica visível no software da Mac App Store.

Busca

A busca de um software importante, para isso utilizamos:

$ mas search <name>

Sendo <name> o nome do software que gostariamos de encontrar, na prática seria algo como:

$ mas search xcode
    <id>  <name>    <version>

Se parar para olhar as URL's da Mac App Store, vai perceber que elas já tem o id que está buscando para utilizar o mas. Abaixo temos um schema da URL:

https://apps.apple.com/<country>/app/<name>/id<id>?mt=12

Onde:

  • <country>: a Apple diferencia a loja por país e alguns softwares tem restrição baseando se nesse parametro;
  • <name>: é o nome do software (na segunda coluna da listagem anterior) com algum slugfy aplicado, isso quer dizer que sempre é tudo minúsculo, espaços viram hífen (-), ç vira c, basicamente é a tabela ASCII sem a parte extendida;
  • <id>: id obtido na listagem anterior, mais precisamente na primeira coluna;
  • mt: o parâmetro que indica o tipo de loja, no caso o código 12 indica que é a Mac App Store.

Depois de inserido na URL fica assim:

https://apps.apple.com/br/app/xcode/id497799835?mt=12

Informações sobre o software

É possível obter informações sobre um software utilizando o comando:

$ mas info <id>

Instalação

Para instalar um software, pode utilizar o comando:

$ mas install <id>

Onde <id> é sempre o item na primeira coluna da listagem.

Um aviso muito importante é o fato de que o comando ìnstall só funciona em software que já foi instalado manualmente e agora é somente uma reinstalaçã

Listar softwares instalados

Podemos listar software instalados utilizando o comando:

$ mas list

Precisam ser atualizados

Para os mais detalhistas ou que gostam de saber os mínimos detalhes de cada atualização, é possível saber quais pacotes estão desatualizados utilizando o comando:

$ mas outdated

Atualizando

Fazer a atualização de algum software pode utilizar o comando:

$ mas upgrade <id>

Onde toda vez que <id> não for informado, todos os software são atualizados.

Integração com Homebrew

Essa integração é feita através do Brewfile, já mencionado em outro post, o schema a ser utilizado é:

mas <name>, id: <id>

Onde ambos podem ser obtidos pelos comandos search e list, adicionados ao Brewfile como demonstrado abaixo:

# Taps
tap "caskroom/cask"
tap "caskroom/fonts"
tap "homebrew/bundle"
tap "homebrew/cask-drivers"

cask_args appdir: "/Applications"

# Binaries
brew "hugo"
brew "tmux"
brew "vim"

# Apps
cask "alacritty", args: { appdir: "~/Applications" }
cask "vlc"

# mas
mas "Xcode", id: 497799835

Referências