blob: ff4d5e045b6a347a807e8dae7d30dc1f9aff3589 [file] [log] [blame]
#!/usr/bin/env python
import optparse
import os
import shutil
import sys
"""
This script installs the session-manager-plugin for macOS.
The executable is installed to /usr/local/sessionmanagerplugin (default) or to an install directory provided by the user.
It also creates a symlink session-manager-plugin in the /usr/local/bin directory
"""
PLUGIN_FILE = "session-manager-plugin"
VERSION_FILE = "VERSION"
LICENSE_FILE = "LICENSE"
SEELOG_FILE = "seelog.xml.template"
INSTALL_DIR = "/usr/local/sessionmanagerplugin"
SYMLINK_NAME = "/usr/local/bin/{}".format(PLUGIN_FILE)
def create_symlink(real_location, symlink_name):
"""
Removes a duplicate symlink if it exists and
creates symlink from real_location to symlink_name
"""
if os.path.isfile(symlink_name):
print("Symlink already exists. Removing symlink from {}".format(symlink_name))
os.remove(symlink_name)
print("Creating Symlink from {} to {}".format(real_location, symlink_name))
os.symlink(real_location, symlink_name)
def main():
parser = optparse.OptionParser()
parser.add_option("-i", "--install-dir", help="The location to install the Session Manager Plugin."
" The default value is {}".format(INSTALL_DIR), default=INSTALL_DIR)
parser.add_option("-b", "--bin-location", help="If this argument is "
"provided, then a symlink will be created at this "
"location that points to the session-manager-plugin executable. "
"The default symlink location is {}\n"
"Note: The session-manager-plugin executable must be in your $PATH "
"to use Session Manager Plugin with AWS CLI.".format(SYMLINK_NAME), default=SYMLINK_NAME)
options = parser.parse_args()[0]
try:
current_working_directory = os.path.dirname(os.path.abspath(__file__))
current_bin_folder = os.path.join(current_working_directory, 'bin')
install_bin_folder = os.path.join(options.install_dir, 'bin')
if not os.path.isdir(install_bin_folder):
print("Creating install directories: {}".format(install_bin_folder))
os.makedirs(install_bin_folder)
# Copy executable. Overwrites file if it exists. The basename of the file is copied
current_bin_location = os.path.join(current_working_directory, 'bin', PLUGIN_FILE)
shutil.copy2(current_bin_location, install_bin_folder)
current_bin_folder = install_bin_folder
# Copy see_log file
seelog_location = os.path.join(current_working_directory, SEELOG_FILE)
shutil.copy2(seelog_location, options.install_dir)
# Copy Version File
version_file_location = os.path.join(current_working_directory, VERSION_FILE)
shutil.copy2(version_file_location, options.install_dir)
# Copy License File
license_file_location = os.path.join(current_working_directory, LICENSE_FILE)
shutil.copy2(license_file_location, options.install_dir)
install_bin_location = os.path.join(options.install_dir,'bin', PLUGIN_FILE)
create_symlink(install_bin_location, options.bin_location)
print("Installation successful!")
except:
print("Failed to create symlink.\nPlease add {} to your $PATH to use Session Manager Plugin.".format(current_bin_folder))
if __name__ == '__main__':
main()