aboutsummaryrefslogtreecommitdiff
path: root/desktop/install/scripts/onionshare-pyinstaller
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/install/scripts/onionshare-pyinstaller')
-rw-r--r--desktop/install/scripts/onionshare-pyinstaller47
1 files changed, 47 insertions, 0 deletions
diff --git a/desktop/install/scripts/onionshare-pyinstaller b/desktop/install/scripts/onionshare-pyinstaller
new file mode 100644
index 00000000..8ca791aa
--- /dev/null
+++ b/desktop/install/scripts/onionshare-pyinstaller
@@ -0,0 +1,47 @@
+#!/usr/bin/env python3
+# -*- coding: utf-8 -*-
+"""
+OnionShare | https://onionshare.org/
+
+Copyright (C) 2014-2020 Micah Lee, et al. <micah@micahflee.com>
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program. If not, see <http://www.gnu.org/licenses/>.
+"""
+import sys, os, platform
+
+# In macOS, allow both CLI and GUI depending on the filename of the binary
+# being executed
+if platform.system() == "Darwin":
+ # If the binary being executed is called 'onionshare', use CLI
+ basename = os.path.basename(sys.argv[0])
+ if basename == "onionshare":
+ import onionshare
+
+ onionshare.main()
+
+ # Otherwise, use GUI
+ else:
+ import onionshare_gui
+
+ onionshare_gui.main()
+
+# Unfortunately this trick won't work in Windows because I want to set
+# console=False in the PyInstaller spec file, so there isn't a command prompt
+# open in the background every you run the GUI. Hopefully Windows can get
+# a built-in CLI when PyInstaller 3.3 comes out:
+# https://pyinstaller.readthedocs.io/en/stable/spec-files.html#multipackage-bundles
+else:
+ import onionshare_gui
+
+ onionshare_gui.main()