Example #1
0
def setup_projects_from_file_input(log, settings):
    """
    *cl utils*

    **Key Arguments:**
        - ``dbConn`` -- mysql database connection
        - ``log`` -- logger

    **Return:**
        - None

    .. todo::

        - @review: when complete, clean cl_utils function
        - @review: when complete add logging
        - @review: when complete, decide whether to abstract function to another module
    """
    log.info("starting the ``cl_utils`` function")

    basePath = settings["projector"]["queue directory"]
    for d in os.listdir(basePath):
        filePath = os.path.join(basePath, d)
        if os.path.isfile(filePath):
            readFile = codecs.open(filePath, encoding="utf-8", mode="r")
            data = readFile.readlines()
            readFile.close()

        if data[0].strip() not in ["work", "home"]:
            print "Wrong data format for file %(filePath)s" % locals()
        else:
            projectName = data[1].strip()
            if data[0].strip() == "home":
                userId = "*****@*****.**"
                stack = "home projects"
                dropboxPath = "/notes/thespacedoctor-wiki/projects/"
            else:
                userId = "*****@*****.**"
                stack = "work projects"
                dropboxPath = "/notes/astronotes-wiki/projects/"

            gmail_utils(log=log, settings=settings, userId=userId).create_label("projects/" + projectName)
            evernote_utils(log=log, settings=settings).create_notebook(nbName=projectName, stack=stack)

            mkdir(log=log, settings=settings, dropboxPath=dropboxPath + projectName).get()

            os.remove(filePath)

    log.info("completed the ``cl_utils`` function")
    return None
Example #2
0
def main(arguments=None):
    """
    *The main function used when ``cl_utils.py`` is run as a single script from the cl, or when installed as a cl command*
    """
    # setup the command-line util settings
    su = tools(arguments=arguments, docString=__doc__, logLevel="DEBUG", options_first=False, projectName="projector")
    arguments, settings, log, dbConn = su.setup()

    # tab completion for raw_input
    readline.set_completer_delims(" \t\n;")
    readline.parse_and_bind("tab: complete")
    readline.set_completer(tab_complete)

    # unpack remaining cl arguments using `exec` to setup the variable names
    # automatically
    for arg, val in arguments.iteritems():
        if arg[0] == "-":
            varname = arg.replace("-", "") + "Flag"
        else:
            varname = arg.replace("<", "").replace(">", "")
        if isinstance(val, str) or isinstance(val, unicode):
            exec (varname + " = '%s'" % (val,))
        else:
            exec (varname + " = %s" % (val,))
        if arg == "--dbConn":
            dbConn = val
        log.debug("%s = %s" % (varname, val))

    ## START LOGGING ##
    startTime = times.get_now_sql_datetime()
    log.info("--- STARTING TO RUN THE cl_utils.py AT %s" % (startTime,))

    # set options interactively if user requests
    if "interactiveFlag" in locals() and interactiveFlag:

        # load previous settings
        moduleDirectory = os.path.dirname(__file__) + "/resources"
        pathToPickleFile = "%(moduleDirectory)s/previousSettings.p" % locals()
        try:
            with open(pathToPickleFile):
                pass
            previousSettingsExist = True
        except:
            previousSettingsExist = False
        previousSettings = {}
        if previousSettingsExist:
            previousSettings = pickle.load(open(pathToPickleFile, "rb"))

        # x-raw-input
        # x-boolean-raw-input
        # x-raw-input-with-default-value-from-previous-settings

        # save the most recently used requests
        pickleMeObjects = []
        pickleMe = {}
        theseLocals = locals()
        for k in pickleMeObjects:
            pickleMe[k] = theseLocals[k]
        pickle.dump(pickleMe, open(pathToPickleFile, "wb"))

    if home:
        userId = "*****@*****.**"
        stack = "home projects"
        dropboxPath = "/notes/thespacedoctor-wiki/projects/"
    elif work:
        userId = "*****@*****.**"
        stack = "work projects"
        dropboxPath = "/notes/astronotes-wiki/projects/"

    # CALL FUNCTIONS/OBJECTS
    if create:
        gmail_utils(log=log, settings=settings, userId=userId).create_label("projects/" + projectName)
        evernote_utils(log=log, settings=settings).create_notebook(nbName=projectName, stack=stack)
        mkdir(log=log, settings=settings, dropboxPath=dropboxPath + projectName).get()
        this = touch_file(log=log, settings=settings, destination=dropboxPath + projectName + ".remove").touch()

        # try:
        #     devonthink_indexer(
        #         log=log,
        #         settings=settings,
        #     ).get()

        #     time.sleep(3)
        #     devonthink_indexer(
        #         log=log,
        #         settings=settings,
        #     ).get()
        # except:
        #     pass

    if remote:
        setup_projects_from_file_input(log=log, settings=settings)

    if auth:
        evernote_utils(log=log, settings=settings).authenticate()

    # if dt:
    #     devonthink_indexer(
    #         log=log,
    #         settings=settings,
    #     ).get()

    if ls:
        gmail_utils(log=log, settings=settings, userId=userId).list_live_projects(archive=archiveFlag)

    if "dbConn" in locals() and dbConn:
        dbConn.commit()
        dbConn.close()
    ## FINISH LOGGING ##
    endTime = times.get_now_sql_datetime()
    runningTime = times.calculate_time_difference(startTime, endTime)
    log.info("-- FINISHED ATTEMPT TO RUN THE cl_utils.py AT %s (RUNTIME: %s) --" % (endTime, runningTime))

    return