ขออนุญาตคอมมิต Git ที่ตรวจสอบแอปพลิเคชันที่เปิดอยู่


2

ฉันใช้ git เพื่อจัดการโปรเจ็กต์ที่มีไฟล์ไบนารี่สองสามไฟล์ที่จำเป็นต้องปิดก่อนที่จะคอมมิท ดังนั้นฉันจึงต้องขอ git hook เพื่อตรวจสอบว่าแอปพลิเคชันที่เปิดไฟล์เหล่านี้ทำงานอยู่หรือไม่

นี่คือสคริปต์ที่ฉันใช้

#!/usr/bin/env osascript

tell application "System Events"
    set apps to the name of every process whose background only is false
end tell

if "Some App" is in apps then
    error "Some App is running. Can't commit until Some App is quit" number 5
end if

แต่ฉันได้รับข้อผิดพลาดนี้เมื่อฉันยืนยันหรือสั่งการล่วงหน้า แม้ในขณะที่ "แอพบางตัว" ไม่ทำงาน

.git/hooks/pre-commit:50:106: execution error: An error of type -10810 has occurred. (-10810)

สิทธิ์ในไฟล์คือ

-rwxr-xr-x@ 1 toddgeist  staff   263 Dec  7 07:33 pre-commit

คำตอบ:


1

คุณไม่ได้พูดถึงปัญหาที่คุณพบดังนั้นขอเดา

หากคุณมีปัญหาเกี่ยวกับวิธีวลี "- แสดงข้อความและออกโดยไม่มีสถานะ" ให้ใช้คำสั่งerror :

#!/usr/bin/env osascript

tell application "System Events"
    set apps to the name of every process whose background only is false
end tell

if "Some Application" is in apps then
    error "Some Application is running" number 5
end if

ตัวเลข (5 ในตัวอย่าง) ไม่สำคัญ osascript จะออกจากสถานะ 1 ไม่ว่าคุณจะเลือกหมายเลขใดก็ตาม คุณไม่สามารถควบคุมการจัดรูปแบบของข้อความได้ แต่สถานะการออกที่ไม่เป็นศูนย์จะบล็อกการส่งข้อความ

หากคุณมีปัญหาในการขอใช้งาน pre-commit ให้ทำการรันอย่าลืมบันทึกเป็น. git / hooks / pre-commit และทำให้สามารถเรียกใช้งานได้

(อัปเดต) หากคุณได้รับข้อผิดพลาด -10810 ให้ลองทำโดยไม่ใช้เหตุการณ์ระบบ แบบนี้

#!/usr/bin/env osascript

set someApp to "Some App"
set appIsRunning to false
if application someApp is running then
    set appIsRunning to true
end if
if appIsRunning then
    error "Can't commit. Please quit Some App" number 5
end if

ใช่นั่นเป็นปัญหา
toddgeist

ยังคงได้รับข้อผิดพลาด อัปเดตคำถาม
toddgeist

ข้อผิดพลาด -10810 เป็นข้อผิดพลาดของบริการเรียกใช้ทั้งหมดที่เปิดใช้งานซึ่งหมายถึงบางแอปไม่สามารถเปิดใช้งานได้ แต่ไม่ทราบสาเหตุ ปัญหาไม่ได้อยู่ใน AppleScript เอง (เพราะ OSA Script จะให้ข้อผิดพลาดเฉพาะเจาะจงมากกว่า) แม้ว่ารหัสที่คุณโพสต์นั้นมีข้อผิดพลาดทางไวยากรณ์ (ราคาที่ไม่ตรงกัน)
ganbustein

น่าเศร้าที่ข้อผิดพลาดทางไวยากรณ์เป็นเพียงการคัดลอกและวางผิด แก้ไขแล้ว
toddgeist

ถ้าฉันโทรออกไปยังเหตุการณ์ของระบบจะทำงาน ดังนั้นเหตุการณ์ระบบอาจไม่สามารถเรียกได้ด้วยวิธีนี้
toddgeist

0

หาก osascript ของคุณ (ด้านบน) ใช้งานได้คุณสามารถเปิดใช้งานได้ผ่านเชลล์สคริปต์ เปลี่ยน osascript เป็นแอพด้วยตัวแก้ไขสคริปต์ จากนั้นสคริปต์เชลล์นี้อาจเป็นตะขอคอมไพล์ของคุณ สิ่งที่ต้องการ:

#!/bin/bash
/usr/bin/osascript $HOME/bin/YOUR_OSASCRIPT.app 2>/dev/null

ฉันใช้เทคนิคนี้เพื่อเปิดใช้งานสคริปต์ผ่าน crontab ดังนั้นจึงควรทำงานในสถานการณ์ของคุณ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.