Skip to content

Commit e30f755

Browse files
author
holysoles
committed
refactor to put AS inline
1 parent 2c8c15e commit e30f755

11 files changed

+366
-393
lines changed

applescript.go

+248-157
Large diffs are not rendered by default.

applescriptHelpers.go

+118
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
package main
2+
3+
import (
4+
"bytes"
5+
"errors"
6+
"fmt"
7+
"io"
8+
"os/exec"
9+
"regexp"
10+
"strconv"
11+
"strings"
12+
)
13+
14+
func openFacetime() error {
15+
_, err := execAppleScript(openFacetimeScript)
16+
return err
17+
}
18+
19+
func getFacetimeStatus() (bool, error) {
20+
s, err := execAppleScript(checkFacetimeScript)
21+
if err != nil {
22+
return false, err
23+
}
24+
b, err := strconv.ParseBool(s)
25+
return b, err
26+
}
27+
28+
func makeNewLink() (string, error) {
29+
newLink, err := execAppleScript(newLinkScript)
30+
return newLink, err
31+
}
32+
33+
func getAllLinks() ([]string, error) {
34+
allLinksRaw, err := execAppleScript(getActiveLinksScript)
35+
var allLinks []string
36+
if allLinksRaw != "" {
37+
allLinks = strings.Split(allLinksRaw, ", ")
38+
}
39+
return allLinks, err
40+
}
41+
42+
// Join the latest Facetime Call.
43+
func joinCall() error {
44+
_, err := execAppleScript(joinLatestLinkScript)
45+
if err != nil {
46+
return err
47+
}
48+
return nil
49+
}
50+
51+
// Join the latest Facetime Call and approve all requested entrants. Combining these two actions allows us to leverage the sidebar being automatically in focus.
52+
func joinAndAdmitCall() error {
53+
_, err := execAppleScript(joinLatestLinkAndApproveScript)
54+
if err != nil {
55+
return err
56+
}
57+
return nil
58+
}
59+
60+
func admitActiveCall() error {
61+
_, err := execAppleScript(approveJoinScript)
62+
if err != nil {
63+
return err
64+
}
65+
return nil
66+
}
67+
68+
func leaveCall() error {
69+
_, err := execAppleScript(leaveCallScript)
70+
if err != nil {
71+
return err
72+
}
73+
return nil
74+
}
75+
76+
func deleteCall(id string) (bool, error) {
77+
deleteScript := fmt.Sprintf(deleteLinkScript, id)
78+
deletedStr, err := execAppleScript(deleteScript)
79+
if err != nil {
80+
return false, err
81+
}
82+
deleted, _ := strconv.ParseBool(deletedStr)
83+
return deleted, nil
84+
}
85+
86+
func execAppleScript(s string) (string, error) {
87+
args := "-"
88+
cmd := exec.Command("osascript", args)
89+
90+
var stdin io.WriteCloser
91+
var outBuff, errorBuff bytes.Buffer
92+
var err error
93+
stdin, err = cmd.StdinPipe()
94+
if err != nil {
95+
return "", err
96+
}
97+
cmd.Stdout = &outBuff
98+
cmd.Stderr = &errorBuff
99+
100+
cmd.Start()
101+
io.WriteString(stdin, s)
102+
stdin.Close()
103+
104+
err = cmd.Wait()
105+
// prefer returning errors from script execution
106+
if errorBuff.Len() != 0 {
107+
return "", errors.New(errorBuff.String())
108+
}
109+
if err != nil {
110+
return "", err
111+
}
112+
113+
//osaScript output has a tailing newline, making any later parse logic difficult
114+
var re = regexp.MustCompile(`\n$`)
115+
parsedOutput := re.ReplaceAllString(outBuff.String(), "")
116+
117+
return parsedOutput, nil
118+
}

lib/approveJoin.applescript

-30
This file was deleted.

lib/checkFacetime.applescript

-4
This file was deleted.

lib/createLink.applescript

-33
This file was deleted.

lib/deleteLink.applescript

-48
This file was deleted.

lib/getLinks.applescript

-35
This file was deleted.

lib/joinFirstLink.applescript

-29
This file was deleted.

lib/joinFirstLinkApproveJoin.applescript

-47
This file was deleted.

lib/leaveCall.applescript

-8
This file was deleted.

lib/openFacetime.applescript

-2
This file was deleted.

0 commit comments

Comments
 (0)