Example #1
0
def get_paths_html(folder):
    paths_html = []
    folder_raw = os.path.join(folder,'raw')
    if not os.path.isdir(folder_raw):
        status.important(NAME,(
            'Folder `{}` must contain a `raw/` subfolder'.format(folder)
        ))
        status.stop(NAME)
    for path_folder, subfolders, files in os.walk(folder_raw):
        for subfolder in subfolders:
            if subfolder == '__MACOSX':
                path_MACOSX = os.path.join(path_folder, subfolder)
                status.important(NAME,(
                    "Removing `{}`\n - Not needed (this is no big deal)"
                ).format(path_MACOSX))
                shutil.rmtree(path_MACOSX)
    for path_folder, subfolders, files in os.walk(folder_raw):
        for f in files:
            if f.endswith('.html'):
                path_html = os.path.join(path_folder,f)
                paths_html.append(path_html)
    if not paths_html:
        status.important(NAME,(
            'No .html files located inside `{}`'.format(folder)
        ))
        status.stop(NAME)
    return paths_html
Example #2
0
def get_paths_html(folder):
    paths_html = []
    folder_raw = os.path.join(folder, 'raw')
    if not os.path.isdir(folder_raw):
        status.important(
            NAME,
            ('Folder `{}` must contain a `raw/` subfolder'.format(folder)))
        status.stop(NAME)
    for path_folder, subfolders, files in os.walk(folder_raw):
        for subfolder in subfolders:
            if subfolder == '__MACOSX':
                path_MACOSX = os.path.join(path_folder, subfolder)
                status.important(
                    NAME, ("Removing `{}`\n - Not needed (this is no big deal)"
                           ).format(path_MACOSX))
                shutil.rmtree(path_MACOSX)
    for path_folder, subfolders, files in os.walk(folder_raw):
        for f in files:
            if f.endswith('.html'):
                path_html = os.path.join(path_folder, f)
                paths_html.append(path_html)
    if not paths_html:
        status.important(NAME,
                         ('No .html files located inside `{}`'.format(folder)))
        status.stop(NAME)
    return paths_html
Example #3
0
def get_args():
    _args = sys.argv[1:]
    if not _args:
        print (
            "[{NAME}]\n\n"
            "Usage:\n"
            "python {NAME}.py folder\n"
            "python {NAME}.py path/to/folder\n"
            "python {NAME}.py folder1 folder2 ... folderN\n"
        ).format(NAME=NAME)
        status.stop(NAME)
    elif not all(os.path.isdir(_arg) for _arg in _args):
        dirs_available = [i for i in os.listdir(os.getcwd()) 
                          if (os.path.isdir(i) and 
                              not i.startswith('.') and 
                              not i.startswith('_'))]
        status.important(NAME,(
            'Arguments must be directories from the repo root.\n\n'
            'The available directories are:\n'
            '  {}'.format('\n  '.join(dirs_available))
        ))
        status.stop(NAME)
    else:
        args = [os.path.dirname(_arg+'/') for _arg in _args]
        return args
Example #4
0
def get_args():
    _args = sys.argv[1:]
    if not _args:
        print (
            "[{NAME}]\n\n"
            "Usage:\n"
            "python {NAME}.py path/to/file\n"
            "python {NAME}.py path/to/file1 path/to/file2 "
            "... path/to/fileN\n"
        ).format(NAME=NAME)
        status.stop(NAME)
    return _args
Example #5
0
def check_translate(folder, paths_html, translate_filename_url):
    files_html_translate = translate_filename_url.keys()
    files_html = [os.path.split(path_html)[1] for path_html in paths_html]
    # Case 0: if .json and raw/ align, return paths_html
    if set(files_html_translate) == set(files_html):
        return paths_html
    # Case 1: if .json < raw/, return part of paths_html contained in .json
    elif len(files_html_translate) < len(files_html):
        diff = list(set(files_html) - set(files_html_translate))
        to_be = 'was' if len(diff) == 1 else 'were'
        to_have = 'has' if len(diff) == 1 else 'have'
        status.important(NAME,
                         ("File(s): \n\n {diff}\n\n"
                          "{to_be} found from `{folder}/raw/` but {to_have} "
                          "no correspondence\n"
                          "in `{folder}/translate_filename_url.json`.\n\n"
                          "Note that files not listed in "
                          "`{folder}/translate_filename_url.json`\n"
                          "will NOT be published").format(diff='\n'.join(diff),
                                                          folder=folder,
                                                          to_be=to_be,
                                                          to_have=to_have))
        return [
            path_html for path_html in paths_html
            if (os.path.split(path_html)[1] in files_html_translate)
        ]
    # Case 2: if .json > raw/, stop execution
    else:
        diff = list(set(files_html_translate) - set(files_html))
        to_be = 'is' if len(diff) == 1 else 'are'
        to_have = 'has' if len(diff) == 1 else 'have'
        status.important(
            NAME,
            ("File(s): \n\n {diff}\n\n"
             "{to_be} listed in "
             "`{folder}/translate_filename_url.json` but {to_have} "
             "no correspondence\n"
             "in `{folder}/raw/`.\n\n"
             "Note that files not found in "
             "`{folder}/raw` CANNOT be published").format(diff='\n'.join(diff),
                                                          folder=folder,
                                                          to_be=to_be,
                                                          to_have=to_have))
        status.stop(NAME)
        return
Example #6
0
def get_translate_filename_url(folder):
    file_path = os.path.join(folder, 'translate_filename_url.json')
    with open(file_path) as f:
        translate = json.load(f)
    translate_filename_url = dict()
    translate_redirects = dict()
    for k, v in translate.items():
        if isinstance(v, list) and isinstance(v[-1], (str, unicode)):
            translate_filename_url[k] = v[-1]
            translate_redirects[v[-1]] = v[0:-1]
        elif isinstance(v, (str, unicode)):
            translate_filename_url[k] = v
        else:
            status.important(NAME, (
                "object values in {}/translate_filename_url.json\n"
                "must be either a string (the urls)\n"
                "or a list of strings (to handle redirects)"
            ).format(folder))
            status.stop(NAME)
    return translate_filename_url, translate_redirects
Example #7
0
def get_translate_filename_url(folder):
    file_path = os.path.join(folder, 'translate_filename_url.json')
    with open(file_path) as f:
        translate = json.load(f, object_pairs_hook=OrderedDict)
    translate_filename_url = OrderedDict()
    translate_redirects = OrderedDict()
    for k, v in translate.items():
        if isinstance(v, list) and isinstance(v[-1], (str, unicode)):
            translate_filename_url[k] = v[-1]
            translate_redirects[v[-1]] = v[0:-1]
        elif isinstance(v, (str, unicode)):
            translate_filename_url[k] = v
        else:
            status.important(NAME, (
                "object values in {}/translate_filename_url.json\n"
                "must be either a string (the urls)\n"
                "or a list of strings (to handle redirects)"
            ).format(folder))
            status.stop(NAME)
    return translate_filename_url, translate_redirects
Example #8
0
def check_translate(folder, paths_html, translate_filename_url):
    files_html_translate = translate_filename_url.keys()
    files_html = [os.path.split(path_html)[1] for path_html in paths_html]
    # Case 0: if .json and raw/ align, return paths_html
    if set(files_html_translate) == set(files_html):
        return paths_html
    # Case 1: if .json < raw/, return part of paths_html contained in .json
    elif len(files_html_translate) < len(files_html):
        diff = list(set(files_html) - set(files_html_translate))
        to_be = 'was' if len(diff)==1 else 'were'
        to_have = 'has' if len(diff)==1 else 'have'
        status.important(NAME,(
            "File(s): \n\n {diff}\n\n"
            "{to_be} found from `{folder}/raw/` but {to_have} "
            "no correspondence\n"
            "in `{folder}/translate_filename_url.json`.\n\n"
            "Note that files not listed in "
            "`{folder}/translate_filename_url.json`\n"
            "will NOT be published"
        ).format(diff='\n'.join(diff),folder=folder,
                 to_be=to_be,to_have=to_have))
        return [path_html
                for path_html in paths_html
                if (os.path.split(path_html)[1] in files_html_translate)]
    # Case 2: if .json > raw/, stop execution
    else:
        diff = list(set(files_html_translate) - set(files_html))
        to_be = 'is' if len(diff)==1 else 'are'
        to_have = 'has' if len(diff)==1 else 'have'
        status.important(NAME,(
            "File(s): \n\n {diff}\n\n"
            "{to_be} listed in "
            "`{folder}/translate_filename_url.json` but {to_have} "
            "no correspondence\n"
            "in `{folder}/raw/`.\n\n"
            "Note that files not found in "
            "`{folder}/raw` CANNOT be published"
        ).format(diff='\n'.join(diff),folder=folder,
                 to_be=to_be,to_have=to_have))
        status.stop(NAME)
        return
Example #9
0
def get_args():
    _args = sys.argv[1:]
    if not _args:
        print(
            "[{NAME}]\n\n"
            "Usage:\n"
            "python {NAME}.py folder\n"
            "python {NAME}.py path/to/folder\n"
            "python {NAME}.py folder1 folder2 ... folderN\n").format(NAME=NAME)
        status.stop(NAME)
    elif not all(os.path.isdir(_arg) for _arg in _args):
        dirs_available = [
            i for i in os.listdir(os.getcwd())
            if (os.path.isdir(i) and not i.startswith('.')
                and not i.startswith('_'))
        ]
        status.important(
            NAME, ('Arguments must be directories from the repo root.\n\n'
                   'The available directories are:\n'
                   '  {}'.format('\n  '.join(dirs_available))))
        status.stop(NAME)
    else:
        args = [os.path.dirname(_arg + '/') for _arg in _args]
        return args