-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathRakefile
131 lines (110 loc) · 3.77 KB
/
Rakefile
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
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
require 'erb'
desc 'Install pass-chrome-extension'
task install: 'install:all'
DAEMON_INSTALL_DIR = ENV['PREFIX'] || '/usr/local/bin'
namespace :install do
task all: %i(prompt daemon agent chrome done)
task :prompt do
puts "\e[1m\e[32mpass-chrome-extension\e[0m"
puts "\e[1m-----\e[0m"
puts 'It will install:', ''
puts "1. passd(1) in #{DAEMON_INSTALL_DIR}"
puts '2. co.templ.pass-chrome-extension in ~/Library/LaunchAgents', ''
print 'Ok? (y/n) '
begin
until %w(k ok y yes n no).include?(answer = $stdin.gets.chomp.downcase)
puts '(psst... please type y or n)'
puts 'Install pass-chrome-extension? (y/n)'
end
rescue Interrupt
exit 1
end
exit 1 if answer =~ /n/
end
task :done do
if system('curl http://localhost:3131 &> /dev/null')
puts "\e[1m\e[32mpass-chrome-extension installation worked\e[0m"
#puts "open https://localhost:3131 in chrome to enable ssl"
#puts "then drop files like google.com.js in ~/.js and enjoy hacking the web"
else
puts "\e[31mpass-chrome-extension installation failed\e[0m"
puts 'check console.app or open an issue'
end
end
desc 'Install launch agent'
task :agent do
plist = 'co.templ.pass-chrome-extension.plist'
agent_dir = File.expand_path '~/Library/LaunchAgents/'
agent = File.join agent_dir, plist
Dir.mkdir agent_dir unless File.exists? agent_dir
File.open agent, 'w' do |f|
f.puts ERB.new(IO.read(plist)).result(binding)
end
chmod 0644, agent
puts 'starting passd...'
sh "launchctl load -w #{agent}"
# wait for server to start
sleep 5
end
desc 'Install pass-chrome-extension daemon'
task daemon: :install_dir_writeable do
cp 'bin/passd', DAEMON_INSTALL_DIR, verbose: true, preserve: true
end
desc 'Install Google Chrome extension'
task :chrome do
puts '', "\e[31mIMPORTANT!\e[0m Install the Google Chrome extension: dist/pass-chrome-extension.crx"
end
end
desc 'Uninstall pass-chrome-extension'
task uninstall: 'uninstall:all'
namespace :uninstall do
task :all => %i(prompt daemon agent chrome done)
task :prompt do
puts "\e[1m\e[32mpass-chrome-extension\e[0m"
puts "\e[1m-----\e[0m"
puts 'It will remove:', ''
puts "1. passd(1) from #{DAEMON_INSTALL_DIR}"
puts '2. co.templ.pass-chrome-extension from ~/Library/LaunchAgents'
puts '3. The "pass-chrome-extension" Google Chrome Extension', ''
print 'Ok? (y/n) '
begin
until %w(k ok y yes n no).include?(answer = $stdin.gets.chomp.downcase)
puts '(psst... please type y or n)'
puts 'Uninstall pass-chrome-extension? (y/n)'
end
rescue Interrupt
exit 1
end
exit 1 if answer =~ /n/
end
task :done do
if system('curl http://localhost:3131 &> /dev/null')
puts "\e[31mpass-chrome-extension uninstall failed\e[0m"
puts 'passd is still running'
else
puts "\e[1m\e[32mpass-chrome-extension uninstall worked\e[0m"
end
end
desc 'Uninstall launch agent'
task :agent do
plist = 'co.templ.pass-chrome-extension.plist'
agent = File.expand_path "~/Library/LaunchAgents/#{plist}"
sh "launchctl unload #{agent}"
rm agent, verbose: true
end
desc 'Uninstall pass-chrome-extension daemon'
task daemon: :install_dir_writeable do
rm File.join(DAEMON_INSTALL_DIR, 'passd'), verbose: true
end
desc 'Uninstall Google Chrome extension'
task :chrome do
puts "\e[1mplease uninstall the google chrome extension manually:\e[0m"
puts 'google chrome > window > extensions > pass-chrome-extension > uninstall'
end
end
# Check write permissions on DAEMON_INSTALL_DIR
task :install_dir_writeable do
if !File.writable? DAEMON_INSTALL_DIR
abort "Error: Can't write to #{DAEMON_INSTALL_DIR}. Try again using `sudo`."
end
end