-
Notifications
You must be signed in to change notification settings - Fork 5
/
setup.pl
78 lines (61 loc) · 1.56 KB
/
setup.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/usr/bin/env perl
use strict;
use warnings;
my $WATCH_PATH = $ARGV[0];
unless($WATCH_PATH) {
die "Usage: $0 <path to wiki checkout>"
}
print "Setting up veloci-wiki...\n";
my $USER = `whoami`;
chop $USER;
my $CWD = `pwd`;
chop $CWD;
_check_watch_dir($WATCH_PATH);
_log("Watching: $WATCH_PATH");
my $PLIST_ID = "local.$USER.veloci-wiki-update";
my $plist = <<"PLIST";
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Disabled</key>
<false/>
<key>Label</key>
<string>$PLIST_ID</string>
<key>ProgramArguments</key>
<array>
<string>perl</string>
<string>$CWD/bin/vw-update.pl</string>
<string>$WATCH_PATH</string>
</array>
<key>StartInterval</key>
<integer>300</integer>
</dict>
</plist>
PLIST
if (! -d "/Users/$USER/Library/LaunchAgents") {
_log("Creating LaunchAgents directory...");
`mkdir /Users/$USER/Library/LaunchAgents`;
}
_log("Creating launchd plist for watcher at:");
_log("/Users/$USER/Library/LaunchAgents/$PLIST_ID.plist");
open(my $plist_file, '>',
"/Users/$USER/Library/LaunchAgents/$PLIST_ID.plist") or die $!;
print $plist_file $plist;
close($plist_file);
_log("Restarting launchd...");
`launchctl unload ~/Library/LaunchAgents/`;
`launchctl load ~/Library/LaunchAgents/`;
#####
sub _log {
my $msg = shift;
print "$msg\n";
}
sub _check_watch_dir {
my $wd = shift;
if (! -d "$wd/.git") {
_log("Watch directory ($wd) is not a Git repository!");
exit(1);
}
1;
}