Перечислите мои приложения, которые можно установить с помощью brew-cask - PullRequest
0 голосов
/ 15 апреля 2020

Я хочу знать, какие из моих приложений доступны для установки с помощью команды brew cask.
Как я могу это сделать?


Спецификация
Что Я хочу извлечь из всех приложений в /Applications приложения, которые также доступны в brew-cask, и перечислить их имена пакетов.

# /Applications
Alfred 4.app
App Store.app
AppCleaner.app
Automator.app
Be Focused Pro.app
BetterTouchTool.app
Bitdefender
Bluetooth Explorer.app
Books.app
Calculator.app
Calendar.app
CheatSheet.app
Chess.app
Clipy.app
...
# package names of apps available on brew-cask
alfred
appcleaner
bettertouchtool
calibre
cheatsheet
clip
...

Ответы [ 2 ]

2 голосов
/ 18 апреля 2020

Это возможно, используя JSON API Homebrew, а также некоторые jq волхвы c (brew install jq).

1- Предполагая, что ни один из ваших .app имена файлов содержат новую строку (очень маловероятно), вы можете получить список в виде JSON массива с командой, объединяющей ls и jq. Однако, поскольку мы будем использовать этот список для поиска, лучше вместо этого создать объект:

ls /Applications | \grep '\.app$' | jq -Rsc 'split("\n")[:-1]|map({(.):1})|add'

Это создает объект с каждым приложением в качестве ключа и 1 в качестве значения (значение не имеет важность здесь). Он выводит что-то вроде:

{"1Password 7.app":1,"Amphetamine.app":1, "Firefox.app":1, …}

2 - Вы можете перечислить все 3500+ устанавливаемых бочек, используя brew search --casks. Чтобы получить JSON, описывающий одну или несколько бочек, включая .app, которые они устанавливают, вы можете использовать brew cask info --json=v1 <cask> ….

Комбинируя эти два, мы можем получить огромное JSON описание всех устанавливаемых бочек с помощью:

brew search --casks | xargs brew cask info --json=v1 > allcasks.json

Эта команда занимает ~ 10 секунд на моем компьютере, поэтому сохранение ее в файл - хорошая идея.

3 - Теперь мы можем отфильтровать этот список для извлечения только бочки, которые устанавливают .app s из нашего предыдущего списка:

cat allcasks.json | jq -r --argjson list '{…the list…}' '.[]|(.artifacts|map(.[]?|select(type=="string")|select(in($list)))|first) as $app|select($app)|"\(.token): \($app)"'

Замените {…the list…} на объект, который мы создали ранее.

Это печатает что-то вроде:

1password: 1Password 7.app
firefox: Firefox.app
google-chrome: Google Chrome.app
…

Если вы чувствуете себя авантюрным, вот одна строка, которая выполняет все эти команды одновременно:

brew search --casks|xargs brew cask info --json=v1|jq -r --argjson l "$(ls /Applications|\grep '\.app$'|jq -Rsc 'split("\n")[:-1]|map({(.):1})|add')" '.[]|(.artifacts|map(.[]?|select(type=="string")|select(in($l)))|first) as $a|select($a)|"\(.token): \($a)"'

Разбивка команды jq:

.[] # flatten the list
 |  # then for each element:
   ( # take its artifacts
     .artifacts
      # then for each one of them
      | map(
         # take only arrays
         .[]?
         # select their string elements
         | select(type=="string")
         # that are also in the list
         | select(in($list)
       )
   )
   # take the first matching artifact
   | first)
   # and store it in $app
   as $app
 # then take only the elements with a non-empty $app
 | select($app)
 # and print their name (.token) and the app ($app)
 |"\(.token): \($app)"
0 голосов
/ 15 апреля 2020

Вы можете использовать brew search на своем терминале, как в следующих примерах:

  • brew search vlc
  • brew search mamp
  • brew search slack
  • ... et c

Вы получите доступные бочки для варки, соответствующие вашему запросу, и можете установить их с помощью brew cask install mamp (замените mamp на ваше собственное приложение)

Вы также можете go на этой странице https://formulae.brew.sh/cask/, чтобы увидеть все доступные бочки.

Если ваше приложение уже установлено, вам нужно использовать brew cask install --force mamp для принудительной переустановки и связать уже установленное приложение.

Для получения более подробных объяснений вы можете go здесь https://sourabhbajaj.com/mac-setup/Homebrew/Cask.html.

...