move launcher installation from installer to oml
This commit is contained in:
parent
d65ad0e8ea
commit
393fe7eb6e
5 changed files with 116 additions and 67 deletions
59
install
59
install
|
@ -6,12 +6,7 @@ import json
|
||||||
import os
|
import os
|
||||||
import sys
|
import sys
|
||||||
import tarfile
|
import tarfile
|
||||||
try:
|
from urllib.request import urlopen
|
||||||
# For Python 3.0 and later
|
|
||||||
from urllib.request import urlopen
|
|
||||||
except ImportError:
|
|
||||||
# Fall back to Python 2's urllib2
|
|
||||||
from urllib2 import urlopen
|
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
import subprocess
|
import subprocess
|
||||||
|
|
||||||
|
@ -59,7 +54,7 @@ class Install(Thread):
|
||||||
with open('config/release.json', 'w') as fd:
|
with open('config/release.json', 'w') as fd:
|
||||||
json.dump(release, fd, indent=2)
|
json.dump(release, fd, indent=2)
|
||||||
if sys.platform == 'darwin':
|
if sys.platform == 'darwin':
|
||||||
self.install_launchd()
|
os.system('./ctl install_launcher')
|
||||||
elif sys.platform.startswith('linux'):
|
elif sys.platform.startswith('linux'):
|
||||||
apt_packages = ''
|
apt_packages = ''
|
||||||
yum_packages = ''
|
yum_packages = ''
|
||||||
|
@ -88,7 +83,7 @@ class Install(Thread):
|
||||||
print('You need to install pdftocairo (part of poppler-utils)')
|
print('You need to install pdftocairo (part of poppler-utils)')
|
||||||
if 'miredo' in apt_packages:
|
if 'miredo' in apt_packages:
|
||||||
print('You need to install miredo (or get IPv6 in another way)')
|
print('You need to install miredo (or get IPv6 in another way)')
|
||||||
self.install_application()
|
os.system('./ctl install_launcher')
|
||||||
self.status['done'] = True
|
self.status['done'] = True
|
||||||
|
|
||||||
def download(self, url, filename):
|
def download(self, url, filename):
|
||||||
|
@ -112,54 +107,6 @@ class Install(Thread):
|
||||||
data = json.loads(u.read().decode('utf-8'))
|
data = json.loads(u.read().decode('utf-8'))
|
||||||
return data
|
return data
|
||||||
|
|
||||||
def install_application(self):
|
|
||||||
app = os.path.expanduser('~/.local/share/applications/openmedialibrary.desktop')
|
|
||||||
with open(app, 'w') as fd:
|
|
||||||
fd.write('''[Desktop Entry]
|
|
||||||
Type=Application
|
|
||||||
Name=Open Media Library
|
|
||||||
Comment=Open Media Library
|
|
||||||
Exec=%s/ctl open
|
|
||||||
Icon=%s/openmedialibrary/static/png/oml.png
|
|
||||||
Terminal=false
|
|
||||||
Categories=Network;FileTransfer;P2P;
|
|
||||||
''' % (self.target, self.target))
|
|
||||||
|
|
||||||
start = os.path.expanduser('~/.config/autostart/openmedialibrary.desktop')
|
|
||||||
makefolder(start)
|
|
||||||
with open(start, 'w') as fd:
|
|
||||||
fd.write('''[Desktop Entry]
|
|
||||||
Type=Application
|
|
||||||
Exec=%s/ctl start
|
|
||||||
Icon=%s/openmedialibrary/static/png/oml.png
|
|
||||||
Hidden=false
|
|
||||||
NoDisplay=false
|
|
||||||
X-GNOME-Autostart-enabled=true
|
|
||||||
Name=Start Open Media Library
|
|
||||||
Comment=
|
|
||||||
''' % (self.target, self.target))
|
|
||||||
|
|
||||||
def install_launchd(self):
|
|
||||||
plist = os.path.expanduser('~/Library/LaunchAgents/com.openmedialibrary.loginscript.plist')
|
|
||||||
with open(plist, 'w') as f:
|
|
||||||
f.write('''<?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.openmedialibrary.loginscript</string>
|
|
||||||
<key>ProgramArguments</key>
|
|
||||||
<array>
|
|
||||||
<string>%s/ctl</string>
|
|
||||||
<string>start</string>
|
|
||||||
</array>
|
|
||||||
<key>RunAtLoad</key>
|
|
||||||
<true/>
|
|
||||||
</dict>
|
|
||||||
</plist>''' % self.target)
|
|
||||||
os.system('launchctl load "%s"' % plist)
|
|
||||||
os.system('launchctl start com.openmedialibrary.loginscript')
|
|
||||||
|
|
||||||
def url(self, url):
|
def url(self, url):
|
||||||
return self.base_url + url
|
return self.base_url + url
|
||||||
|
|
||||||
|
|
|
@ -9,19 +9,10 @@ import sys
|
||||||
import shutil
|
import shutil
|
||||||
|
|
||||||
import settings
|
import settings
|
||||||
|
from utils import run, get
|
||||||
|
|
||||||
root_dir = dirname(settings.base_dir)
|
root_dir = dirname(settings.base_dir)
|
||||||
|
|
||||||
def run(*cmd):
|
|
||||||
p = subprocess.Popen(cmd, close_fds=True)
|
|
||||||
p.wait()
|
|
||||||
return p.returncode
|
|
||||||
|
|
||||||
def get(*cmd):
|
|
||||||
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)
|
|
||||||
stdout, error = p.communicate()
|
|
||||||
return stdout.decode()
|
|
||||||
|
|
||||||
def r(*cmd):
|
def r(*cmd):
|
||||||
print(' '.join(cmd))
|
print(' '.join(cmd))
|
||||||
return subprocess.call(cmd)
|
return subprocess.call(cmd)
|
||||||
|
@ -64,6 +55,20 @@ def command_stop(*args):
|
||||||
"""
|
"""
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
def command_install_launcher(*args):
|
||||||
|
"""
|
||||||
|
Install launcher
|
||||||
|
"""
|
||||||
|
import integration
|
||||||
|
integration.install_launcher()
|
||||||
|
|
||||||
|
def command_uninstall_launcher(*args):
|
||||||
|
"""
|
||||||
|
Uninstall launcher
|
||||||
|
"""
|
||||||
|
import integration
|
||||||
|
integration.uninstall_launcher()
|
||||||
|
|
||||||
def command_install_update(*args):
|
def command_install_update(*args):
|
||||||
"""
|
"""
|
||||||
Install available updates
|
Install available updates
|
||||||
|
|
82
oml/integration.py
Normal file
82
oml/integration.py
Normal file
|
@ -0,0 +1,82 @@
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
import settings
|
||||||
|
|
||||||
|
from utils import run, makefolder
|
||||||
|
|
||||||
|
root_dir = os.path.dirname(settings.base_dir)
|
||||||
|
|
||||||
|
def install_launcher():
|
||||||
|
if sys.platform == 'darwin':
|
||||||
|
install_launchd()
|
||||||
|
elif sys.platform.startswith('linux'):
|
||||||
|
install_xdg()
|
||||||
|
else:
|
||||||
|
print('no launcher integration supported for %s' % sys.platform)
|
||||||
|
|
||||||
|
def uninstall_launcher():
|
||||||
|
if sys.platform == 'darwin':
|
||||||
|
name = 'com.openmedialibrary.loginscript'
|
||||||
|
plist = os.path.expanduser('~/Library/LaunchAgents/%s.plist'%name)
|
||||||
|
if os.path.exists(plist):
|
||||||
|
run('launchctl', 'stop', name)
|
||||||
|
run('launchctl', 'unload', plist)
|
||||||
|
os.unlink(plist)
|
||||||
|
elif sys.platform.startswith('linux'):
|
||||||
|
for f in map(os.path.expanduser, [
|
||||||
|
'~/.local/share/applications/openmedialibrary.desktop',
|
||||||
|
'~/.config/autostart/openmedialibrary.desktop'
|
||||||
|
]):
|
||||||
|
if os.path.exists(f):
|
||||||
|
os.unlink(f)
|
||||||
|
|
||||||
|
def install_launchd():
|
||||||
|
name = 'com.openmedialibrary.loginscript'
|
||||||
|
plist = os.path.expanduser('~/Library/LaunchAgents/%s.plist'%name)
|
||||||
|
if os.path.exists(plist):
|
||||||
|
run('launchctl', 'stop', name)
|
||||||
|
run('launchctl', 'unload', plist)
|
||||||
|
with open(plist, 'w') as f:
|
||||||
|
f.write('''<?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>Label</key>
|
||||||
|
<string>%s</string>
|
||||||
|
<key>ProgramArguments</key>
|
||||||
|
<array>
|
||||||
|
<string>%s/ctl</string>
|
||||||
|
<string>start</string>
|
||||||
|
</array>
|
||||||
|
<key>RunAtLoad</key>
|
||||||
|
<true/>
|
||||||
|
</dict>
|
||||||
|
</plist>''' % (name, root_dir))
|
||||||
|
run('launchctl', 'load', plist)
|
||||||
|
run('launchctl', 'start', name)
|
||||||
|
|
||||||
|
def install_xdg():
|
||||||
|
app = os.path.expanduser('~/.local/share/applications/openmedialibrary.desktop')
|
||||||
|
with open(app, 'w') as fd:
|
||||||
|
fd.write('''[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Open Media Library
|
||||||
|
Comment=Open Media Library
|
||||||
|
Exec=%(base)s/ctl open
|
||||||
|
Icon=%(base)s/openmedialibrary/static/png/oml.png
|
||||||
|
Terminal=false
|
||||||
|
Categories=Network;FileTransfer;P2P;
|
||||||
|
''' % {'base': root_dir})
|
||||||
|
|
||||||
|
start = os.path.expanduser('~/.config/autostart/openmedialibrary.desktop')
|
||||||
|
makefolder(start)
|
||||||
|
with open(start, 'w') as fd:
|
||||||
|
fd.write('''[Desktop Entry]
|
||||||
|
Type=Application
|
||||||
|
Name=Start Open Media Library
|
||||||
|
Exec=%(base)s/ctl start
|
||||||
|
Icon=%(base)s/openmedialibrary/static/png/oml.png
|
||||||
|
Hidden=false
|
||||||
|
NoDisplay=false
|
||||||
|
X-GNOME-Autostart-enabled=true
|
||||||
|
''' % {'base': root_dir})
|
15
oml/utils.py
15
oml/utils.py
|
@ -230,3 +230,18 @@ def datetime2ts(dt):
|
||||||
|
|
||||||
def ts2datetime(ts):
|
def ts2datetime(ts):
|
||||||
return datetime.utcfromtimestamp(float(ts))
|
return datetime.utcfromtimestamp(float(ts))
|
||||||
|
|
||||||
|
def run(*cmd):
|
||||||
|
p = subprocess.Popen(cmd, close_fds=True)
|
||||||
|
p.wait()
|
||||||
|
return p.returncode
|
||||||
|
|
||||||
|
def get(*cmd):
|
||||||
|
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=True)
|
||||||
|
stdout, error = p.communicate()
|
||||||
|
return stdout.decode()
|
||||||
|
|
||||||
|
def makefolder(path):
|
||||||
|
dirname = os.path.dirname(path)
|
||||||
|
if not os.path.exists(dirname):
|
||||||
|
os.makedirs(dirname)
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<title>Open Media Library</title>
|
<title>Open Media Library</title>
|
||||||
<link href="../oxjs/min/UI/css/UI.css" rel="stylesheet" type="text/css" />
|
<link href="../../../oxjs/min/UI/css/UI.css" rel="stylesheet" type="text/css" />
|
||||||
<style>
|
<style>
|
||||||
#loading {
|
#loading {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
|
Loading…
Reference in a new issue