Nano Hash - криптовалюты, майнинг, программирование

MacOS, AppleScript и Git

У меня есть проект, который потребует чтения локального репо и сбора diff из самой последней фиксации и предыдущей. Затем мне нужно проделать дополнительную работу с этими различиями (добавить в существующий файл журнала, сделать доступным для технических писателей редактирование существующих документов API с изменениями — можно Slack их или API в Jira и создать билет (например, этот вариант, поскольку он оставляет тропа).

Я могу работать на уровне йомена в AppleScript, вызывая сценарии оболочки, когда это необходимо, затем анализируя данные и передавая очищенные данные в различные приложения/сайты, которые мне нужны. Но другие, менее технические люди, также будут использовать это приложение, и было бы неплохо предоставить им простой пользовательский интерфейс для работы.

Во всяком случае, после долгих поисков в Google, SO и других источниках я смог заставить работать приложение MacOS, которое может вызывать AppleScript, и теперь я столкнулся со стеной...

Я могу запустить этот AppleScript из редактора сценариев, и он отлично работает:

set strGitLog to do shell script "cd ~/Desktop/xxxxxx/Projects/UnifiedSDK/Repo/xxxxxx && git log -p -- file1.html"
"commit c39c6bb004d2e104b3f8e15a6125e3d68a5323ef
Author: Steve <[email protected]>
Date:   Tue Oct 22 15:42:13 2019 -0400

    Added deprecation warning to file1

diff --git a/file1.html b/file1.html
index b7af22b..9fdc781 100644
--- a/file1.html
+++ b/file1.html
@@ -51,6 +51,8 @@
      <h2>Class Description</h2>
      <p style=\"margin-bottom:10px;\">This is the description of the class</p>

+     <p style=\"margin-bottom:10px;\">Warning: This class is scheduled to be deprecated.</p>
+     
      <h3>Arguments:</h3>
      <p style=\"margin-bottom:10px;\">These are the arguments that the class accepts</p>

...

но если я размещу этот скрипт в приложении MacOS:

script gitMessenger

    property parent : class "NSObject"

    to readMessage()
            set strGitLog to do shell script "cd ~/Desktop/xxxxxx/Projects/UnifiedSDK/Repo/xxxxxx && git log -p -- file1.html"
           log strGitLog
    end readMessage

end script

Я получаю это сообщение об ошибке в журнале:

fatal: Unable to read current working directory: Operation not permitted (error 128)

Что после проверки кажется ошибкой разрешений Git. Если я pwd указываю на правильный каталог:

/Users/xxxxxx/Library/Containers/xxxxxx.GitMessenger/Data/Desktop/xxxxxx/Projects/UnifiedSDK/Repo/xxxxxx

и этот каталог был инициирован git:

введите здесь описание изображения

и у него есть разрешение на чтение/запись для всех. Так что я немного в недоумении прямо сейчас, как заставить это работать. Любая помощь или предложения будут оценены.

24.10.2019

  • Скорее всего, это обычная песочница. Вам нужна авторизация пользователя, чтобы заглянуть в произвольную папку, подобную этой. Редактор скриптов имеет авторизацию, а ваше приложение — нет. Вы можете увидеть это на панели Pref Security. 24.10.2019
  • @matt - Плохо, должен был упомянуть, что мой info.plist настроен с Privacy - AppleEvents Sending Usage Description. Есть ли что-то еще, что мне нужно сделать, чтобы избежать песочницы? 24.10.2019
  • Диалог с запросом авторизации действительно возник перед вашими глазами? 24.10.2019
  • Да, первый раз запускал. 24.10.2019
  • Есть ли способ в XCode регистрировать, с какими разрешениями согласился пользователь? 24.10.2019
  • Решил, ты поставил меня на правильный путь. Вы должны зайти в свои права и установить для песочницы значение false, а также запросить разрешение пользователя. Если ты так ответишь, я дам тебе шишку! Спасибо! 24.10.2019
  • Похоже, я просто продублирую свой ответ на этот вопрос stackoverflow.com/questions/55917877/, и это не разрешено при переполнении стека. 24.10.2019

Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..