Я пытаюсь создать сценарий рабочего процесса, который может использоваться несколькими пользователями.Пользователь должен указать местоположение для папки dropbox, путь которого должен быть повторно использован в shell и applecript.
Цель рабочего процесса - автоматизировать настройку отслеживаемой папки, отслеживающей изменения файлов (с помощью launchd).При обнаружении изменения должен быть запущен сценарий оболочки, который запускается: npm run generate в родительской папке просматриваемого файла.
Мне удалось создать рабочий процесс с файлом .sh и локальными путями, но теперь яхотите обновить его, чтобы пути, которые запускает скрипт, должны были быть выбраны пользователем, поскольку эти пути различаются для каждого пользователя.См. Шаги для рабочего процесса
- Выберите расположение папки dropbox
- Создайте файл сценария исполняемой оболочки в этой папке
- Добавьте код в этот файл
3a: добавить яблочный скрипт, который использует путь к выбранной папке для запуска команды npm
3b: создать файл запуска в папке пользователей LanchAgents (только для пользователей Mac)
3c: добавить содержимое в этот файл запускас путем выбранной папки
launch launchd file.
touch ~/Dropbox\ \(Folder\ name\)/folder/generate-icon-script.sh && echo "
osascript -e 'tell application \"Terminal\"
do script \"cd ~/Dropbox\\\ \\\(Folder\\\ name\\\)/folder/ && /usr/local/bin/npm run generate\"
delay 10
quit
end tell'" >> ~/Dropbox\ \(Folder\ name\)/folder/generate-icon-script.sh
&& chmod a+x ~/Dropbox\ \(Folder\ name\)/folder/generate-icon-script.sh
&& touch ~/Library/LaunchAgents/com.icons.daemon.plist
&& echo "
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.icons.daemon.plist</string>
<key>ProgramArguments</key>
<array>
<string>sh</string>
<string>-c</string>
<string>~/Dropbox\\ \\(Folder\\ name\\)//folder/generate-icon-script.sh</string>
</array>
<array>
<string>~/Dropbox (Folder name)/folder/input</string>
</array>
</dict>
</plist>
" >> ~/Library/LaunchAgents/com.icons.daemon.plist &&
launchctl load ~/Library/LaunchAgents/com.icons.daemon.plist
Чтобы позволить пользователю определить путь, я создал appleScript, который предлагает пользователю выбрать правильное расположение папки dropbox.Мне удалось создать файл .sh в папке dropbox и отобразить в нем некоторое содержимое.Проблема, с которой я сталкиваюсь, заключается в том, что путь, который я сохраняю, не может быть использован в терминале.
set myLocation to (choose folder with prompt "Choose the location to the Icons Folder") # Get location to save the file
set myLocationPOSIX to the POSIX path of myLocation
do shell script "touch " & quoted form of myLocationPOSIX & "/test.sh"
do shell script "chmod a+x " & quoted form of myLocationPOSIX & "/test.sh"
do shell script "echo cd " & quoted form of myLocationPOSIX & " \\&\\& /usr/local/bin/npm run generate >> " & quoted form of myLocationPOSIX & "test.sh"
Как сохранить путь, чтобы его можно было использовать в моем рабочем процессе?Любая помощь будет сильно зашифрована!
Я ожидаю, что результат эха будет: cd Users/name/Dropbox\\ \\(Folder\\ name\\ )/folder/ && /usr/local/bin/npm run generate
Но я получаю: cd /Users/name/Dropbox (Folder name)/folder/ && /usr/local/bin/npm run generate
Любая помощь будет оченьоценили!