def is_maestral_linked(config_name): """ This does not create a Maestral instance and is therefore safe to call from anywhere at any time. """ os.environ["MAESTRAL_CONFIG"] = config_name from maestral.main import Maestral if Maestral.pending_link(): click.echo("No Dropbox account linked.") return False else: return True
def start_daemon_subprocess(config_name): """Starts the Maestral daemon as a subprocess (by calling `start_maestral_daemon`). This command will create a new daemon on each run. Take care not to sync the same directory with multiple instances of Meastral! You can use `get_maestral_process_info` to check if either a Meastral gui or daemon is already running for the given `config_name`. :param str config_name: The name of maestral configuration to use. :returns: Popen object instance. """ import subprocess from maestral.main import Maestral if Maestral.pending_link() or Maestral.pending_dropbox_folder(): # run onboarding m = Maestral(run=False) m.create_dropbox_directory() m.select_excluded_folders() click.echo("Starting Maestral...", nl=False) proc = subprocess.Popen("maestral sync -c {}".format(config_name), shell=True, stdin=subprocess.DEVNULL, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL) # check if the subprocess is still running after 1 sec try: proc.wait(timeout=1) click.echo("\rStarting Maestral... " + FAILED) except subprocess.TimeoutExpired: click.echo("\rStarting Maestral... " + OK) return proc