Exemplo n.º 1
0
 def _calculate_extension_dir_hash(self):
     """Creates a unique hash # to represent state of directory."""
     # search does not include png files:
     #   if png files are added the parent folder mtime gets affected
     #   cache only saves the png address and not the contents so they'll
     #   get loaded everytime
     #       see http://stackoverflow.com/a/5141710/2350244
     pat = '(\\' + exts.TAB_POSTFIX + ')|(\\' + exts.PANEL_POSTFIX + ')'
     pat += '|(\\' + exts.PULLDOWN_BUTTON_POSTFIX + ')'
     pat += '|(\\' + exts.SPLIT_BUTTON_POSTFIX + ')'
     pat += '|(\\' + exts.SPLITPUSH_BUTTON_POSTFIX + ')'
     pat += '|(\\' + exts.STACK_BUTTON_POSTFIX + ')'
     pat += '|(\\' + exts.PUSH_BUTTON_POSTFIX + ')'
     pat += '|(\\' + exts.SMART_BUTTON_POSTFIX + ')'
     pat += '|(\\' + exts.LINK_BUTTON_POSTFIX + ')'
     pat += '|(\\' + exts.PANEL_PUSH_BUTTON_POSTFIX + ')'
     pat += '|(\\' + exts.PANEL_PUSH_BUTTON_POSTFIX + ')'
     pat += '|(\\' + exts.CONTENT_BUTTON_POSTFIX + ')'
     # tnteresting directories
     pat += '|(\\' + exts.COMP_LIBRARY_DIR_NAME + ')'
     pat += '|(\\' + exts.COMP_HOOKS_DIR_NAME + ')'
     # search for scripts, setting files (future support), and layout files
     patfile = '(\\' + exts.PYTHON_SCRIPT_FILE_FORMAT + ')'
     patfile += '|(\\' + exts.CSHARP_SCRIPT_FILE_FORMAT + ')'
     patfile += '|(\\' + exts.VB_SCRIPT_FILE_FORMAT + ')'
     patfile += '|(\\' + exts.RUBY_SCRIPT_FILE_FORMAT + ')'
     patfile += '|(\\' + exts.DYNAMO_SCRIPT_FILE_FORMAT + ')'
     patfile += '|(\\' + exts.GRASSHOPPER_SCRIPT_FILE_FORMAT + ')'
     patfile += '|(\\' + exts.GRASSHOPPERX_SCRIPT_FILE_FORMAT + ')'
     patfile += '|(\\' + exts.CONTENT_FILE_FORMAT + ')'
     patfile += '|(\\' + exts.YAML_FILE_FORMAT + ')'
     patfile += '|(\\' + exts.JSON_FILE_FORMAT + ')'
     return coreutils.calculate_dir_hash(self.directory, pat, patfile)
Exemplo n.º 2
0
def _is_record_info_current(source_path):
    # calculates a hash from the log files in the directory and compares it
    # with the _current_path_hash (to determine if the current _records list is up-to-date)
    dir_hash = calculate_dir_hash(source_path, '', FILE_LOG_EXT)
    if dir_hash == _current_path_hash:
        return True
    return False
Exemplo n.º 3
0
 def _calculate_extension_dir_hash(self):
     """Creates a unique hash # to represent state of directory."""
     # search does not include png files:
     #   if png files are added the parent folder mtime gets affected
     #   cache only saves the png address and not the contents so they'll get loaded everytime
     #       see http://stackoverflow.com/a/5141710/2350244
     pat = '(\\' + TAB_POSTFIX + ')|(\\' + PANEL_POSTFIX + ')'
     pat += '|(\\' + PULLDOWN_BUTTON_POSTFIX + ')'
     pat += '|(\\' + SPLIT_BUTTON_POSTFIX + ')'
     pat += '|(\\' + SPLITPUSH_BUTTON_POSTFIX + ')'
     pat += '|(\\' + STACKTWO_BUTTON_POSTFIX + ')'
     pat += '|(\\' + STACKTHREE_BUTTON_POSTFIX + ')'
     pat += '|(\\' + PUSH_BUTTON_POSTFIX + ')'
     pat += '|(\\' + SMART_BUTTON_POSTFIX + ')'
     pat += '|(\\' + TOGGLE_BUTTON_POSTFIX + ')'
     pat += '|(\\' + LINK_BUTTON_POSTFIX + ')'
     # seach for scripts, setting files (future support), and layout files
     patfile = '(\\' + PYTHON_SCRIPT_FILE_FORMAT + ')'
     patfile += '|(\\' + CSHARP_SCRIPT_FILE_FORMAT + ')'
     patfile += '|(' + DEFAULT_LAYOUT_FILE_NAME + ')'
     return calculate_dir_hash(self.directory, pat, patfile)
Exemplo n.º 4
0
# template python command class
CMD_EXECUTOR_TYPE_NAME = '{}.{}'.format(LOADER_BASE_NAMESPACE,
                                        'PyRevitCommand')

# template python command availability class
CMD_AVAIL_TYPE_NAME = make_canonical_name(LOADER_BASE_NAMESPACE,
                                          'PyRevitCommandDefaultAvail')
CMD_AVAIL_TYPE_NAME_CATEGORY = make_canonical_name(
    LOADER_BASE_NAMESPACE, 'PyRevitCommandCategoryAvail')
CMD_AVAIL_TYPE_NAME_SELECTION = make_canonical_name(
    LOADER_BASE_NAMESPACE, 'PyRevitCommandSelectionAvail')

source_file_filter = '(\.cs)'

if not EXEC_PARAMS.doc_mode:
    BASE_TYPES_DIR_HASH = calculate_dir_hash(
        INTERFACE_TYPES_DIR, '', source_file_filter)[:HASH_CUTOFF_LENGTH]
    BASE_TYPES_ASM_FILE_ID = '{}_{}'.format(BASE_TYPES_DIR_HASH,
                                            LOADER_BASE_NAMESPACE)
    BASE_TYPES_ASM_FILE = appdata.get_data_file(BASE_TYPES_ASM_FILE_ID,
                                                ASSEMBLY_FILE_TYPE)
    # taking the name of the generated data file and use it as assembly name
    BASE_TYPES_ASM_NAME = op.splitext(op.basename(BASE_TYPES_ASM_FILE))[0]
    logger.debug(
        'Interface types assembly file is: {}'.format(BASE_TYPES_ASM_NAME))
else:
    BASE_TYPES_DIR_HASH = BASE_TYPES_ASM_FILE_ID = None
    BASE_TYPES_ASM_FILE = BASE_TYPES_ASM_NAME = None


def _get_asm_attr_source():
    asm_att_source = """
Exemplo n.º 5
0
    make_canonical_name(LOADER_BASE_NAMESPACE, 'PyRevitCommandExtendedAvail')

CMD_AVAIL_TYPE_NAME_SELECTION = \
    make_canonical_name(LOADER_BASE_NAMESPACE, 'PyRevitCommandSelectionAvail')

# template dynamobim command class
DYNOCMD_EXECUTOR_TYPE_NAME = '{}.{}'\
    .format(LOADER_BASE_NAMESPACE, 'PyRevitCommandDynamoBIM')

SOURCE_FILE_EXT = '.cs'
SOURCE_FILE_FILTER = r'(\.cs)'

if not EXEC_PARAMS.doc_mode:
    BASE_TYPES_DIR_HASH = \
        get_str_hash(
            calculate_dir_hash(INTERFACE_TYPES_DIR, '', SOURCE_FILE_FILTER)
            + EXEC_PARAMS.engine_ver
            )[:HASH_CUTOFF_LENGTH]
    BASE_TYPES_ASM_FILE_ID = '{}_{}'\
        .format(BASE_TYPES_DIR_HASH, LOADER_BASE_NAMESPACE)
    BASE_TYPES_ASM_FILE = appdata.get_data_file(BASE_TYPES_ASM_FILE_ID,
                                                ASSEMBLY_FILE_TYPE)
    # taking the name of the generated data file and use it as assembly name
    BASE_TYPES_ASM_NAME = op.splitext(op.basename(BASE_TYPES_ASM_FILE))[0]
    mlogger.debug('Interface types assembly file is: %s', BASE_TYPES_ASM_NAME)
else:
    BASE_TYPES_DIR_HASH = BASE_TYPES_ASM_FILE_ID = None
    BASE_TYPES_ASM_FILE = BASE_TYPES_ASM_NAME = None


def _get_source_files_in(source_files_path):
Exemplo n.º 6
0
# template python command availability class
CMD_AVAIL_TYPE_NAME = \
    make_canonical_name(LOADER_BASE_NAMESPACE, 'PyRevitCommandDefaultAvail')

CMD_AVAIL_TYPE_NAME_CATEGORY = \
    make_canonical_name(LOADER_BASE_NAMESPACE, 'PyRevitCommandCategoryAvail')

CMD_AVAIL_TYPE_NAME_SELECTION = \
    make_canonical_name(LOADER_BASE_NAMESPACE, 'PyRevitCommandSelectionAvail')

source_file_filter = '(\.cs)'

if not EXEC_PARAMS.doc_mode:
    BASE_TYPES_DIR_HASH = \
        get_str_hash(
            calculate_dir_hash(INTERFACE_TYPES_DIR, '', source_file_filter)
            + EXEC_PARAMS.engine_ver
            )[:HASH_CUTOFF_LENGTH]
    BASE_TYPES_ASM_FILE_ID = '{}_{}'\
        .format(BASE_TYPES_DIR_HASH, LOADER_BASE_NAMESPACE)
    BASE_TYPES_ASM_FILE = appdata.get_data_file(BASE_TYPES_ASM_FILE_ID,
                                                ASSEMBLY_FILE_TYPE)
    # taking the name of the generated data file and use it as assembly name
    BASE_TYPES_ASM_NAME = op.splitext(op.basename(BASE_TYPES_ASM_FILE))[0]
    logger.debug(
        'Interface types assembly file is: {}'.format(BASE_TYPES_ASM_NAME))
else:
    BASE_TYPES_DIR_HASH = BASE_TYPES_ASM_FILE_ID = None
    BASE_TYPES_ASM_FILE = BASE_TYPES_ASM_NAME = None