def install_file_legacy(path, sudo=False, from_path=None, **substitutions):
    '''Install file with path on the host target.

    The from file is the first of this list which exists:
     * custom file
     * custom file.template
     * common file
     * common file.template
    '''
    # source paths 'from_custom' and 'from_common'
    from_path = from_path or path
    # remove beginning '/' (if any), eg '/foo/bar' -> 'foo/bar'
    from_tail = join('files', from_path.lstrip(os.sep))
    if from_path.startswith('~/'):
        from_tail = join('files', 'home', 'USERNAME',
                         from_path[2:])  # without beginning '~/'
    from_common = join(FABFILE_DATA_DIR, from_tail)
    from_custom = join(FABSETUP_CUSTOM_DIR, from_tail)

    # target path 'to_' (path or tempfile)
    for subst in ['SITENAME', 'USER', 'ADDON', 'TASK']:
        sitename = substitutions.get(subst, False)
        if sitename:
            path = path.replace(subst, sitename)
    to_ = path
    if sudo:
        to_ = join(os.sep, 'tmp', 'fabsetup_' + os.path.basename(path))
    path_dir = dirname(path)

    # copy file
    if isfile(from_custom):
        run(flo('mkdir -p  {path_dir}'))
        put(from_custom, to_)
    elif isfile(from_custom + '.template'):
        _install_file_from_template_legacy(from_custom + '.template', to_=to_,
                                    **substitutions)
    elif isfile(from_common):
        run(flo('mkdir -p  {path_dir}'))
        put(from_common, to_)
    else:
        _install_file_from_template_legacy(from_common + '.template', to_=to_,
                                    **substitutions)
    if sudo:
        run(flo('sudo mv --force  {to_}  {path}'))
def install_file_legacy ( path , sudo = False , from_path = None , ** substitutions ) : from_path = from_path or path from_tail = join ( 'files' , from_path . lstrip ( os . sep ) ) if from_path . startswith ( '~/' ) : from_tail = join ( 'files' , 'home' , 'USERNAME' , from_path [ 2 : ] ) from_common = join ( FABFILE_DATA_DIR , from_tail ) from_custom = join ( FABSETUP_CUSTOM_DIR , from_tail ) for subst in [ 'SITENAME' , 'USER' , 'ADDON' , 'TASK' ] : sitename = substitutions . get ( subst , False ) if sitename : path = path . replace ( subst , sitename ) to_ = path if sudo : to_ = join ( os . sep , 'tmp' , 'fabsetup_' + os . path . basename ( path ) ) path_dir = dirname ( path ) if isfile ( from_custom ) : run ( flo ( 'mkdir -p  {path_dir}' ) ) put ( from_custom , to_ ) elif isfile ( from_custom + '.template' ) : _install_file_from_template_legacy ( from_custom + '.template' , to_ = to_ , ** substitutions ) elif isfile ( from_common ) : run ( flo ( 'mkdir -p  {path_dir}' ) ) put ( from_common , to_ ) else : _install_file_from_template_legacy ( from_common + '.template' , to_ = to_ , ** substitutions ) if sudo : run ( flo ( 'sudo mv --force  {to_}  {path}' ) )
Install file with path on the host target.

    The from file is the first of this list which exists:
     * custom file
     * custom file.template
     * common file
     * common file.template