public void run()

in wagon-providers/wagon-ssh-common-test/src/main/java/org/apache/maven/wagon/providers/ssh/ScpCommand.java [172:319]


    public void run()
    {
        int exitValue = OK;
        String exitMessage = null;

        try
        {
            if ( optT )
            {
                ack();
                for (; ; )
                {
                    String line;
                    boolean isDir = false;
                    int c = readAck( true );
                    switch ( c )
                    {
                        case -1:
                            return;
                        case 'D':
                            isDir = true;
                        case 'C':
                            line = ( (char) c ) + readLine();
                            break;
                        case 'E':
                            readLine();
                            return;
                        default:
                            //a real ack that has been acted upon already
                            continue;
                    }

                    if ( optR && isDir )
                    {
                        writeDir( line, root.getFile( path ) );
                    }
                    else
                    {
                        writeFile( line, root.getFile( path ) );
                    }
                }
            }
            else if ( optF )
            {
                String pattern = path;
                int idx = pattern.indexOf( '*' );
                if ( idx >= 0 )
                {
                    String basedir = "";
                    int lastSep = pattern.substring( 0, idx ).lastIndexOf( '/' );
                    if ( lastSep >= 0 )
                    {
                        basedir = pattern.substring( 0, lastSep );
                        pattern = pattern.substring( lastSep + 1 );
                    }
                    String[] included = new DirectoryScanner( basedir, pattern ).scan();
                    for ( String path : included )
                    {
                        SshFile file = root.getFile( basedir + "/" + path );
                        if ( file.isFile() )
                        {
                            readFile( file );
                        }
                        else if ( file.isDirectory() )
                        {
                            if ( !optR )
                            {
                                out.write( WARNING );
                                out.write( ( path + " not a regular file\n" ).getBytes() );
                            }
                            else
                            {
                                readDir( file );
                            }
                        }
                        else
                        {
                            out.write( WARNING );
                            out.write( ( path + " unknown file type\n" ).getBytes() );
                        }
                    }
                }
                else
                {
                    String basedir = "";
                    int lastSep = pattern.lastIndexOf( '/' );
                    if ( lastSep >= 0 )
                    {
                        basedir = pattern.substring( 0, lastSep );
                        pattern = pattern.substring( lastSep + 1 );
                    }
                    SshFile file = root.getFile( basedir + "/" + pattern );
                    if ( !file.doesExist() )
                    {
                        exitValue = WARNING;
                        throw new IOException( file + ": no such file or directory" );
                    }
                    if ( file.isFile() )
                    {
                        readFile( file );
                    }
                    else if ( file.isDirectory() )
                    {
                        if ( !optR )
                        {
                            throw new IOException( file + " not a regular file" );
                        }
                        else
                        {
                            readDir( file );
                        }
                    }
                    else
                    {
                        throw new IOException( file + ": unknown file type" );
                    }
                }
            }
            else
            {
                throw new IOException( "Unsupported mode" );
            }
        }
        catch ( IOException e )
        {
            try
            {
                exitValue = ( exitValue != OK ? exitValue : ERROR );
                exitMessage = e.getMessage();
                out.write( exitValue );
                out.write( exitMessage.getBytes() );
                out.write( '\n' );
                out.flush();
            }
            catch ( IOException e2 )
            {
                // Ignore
            }
            LOG.info( "Error in scp command", e );
        }
        finally
        {
            if ( callback != null )
            {
                callback.onExit( exitValue, exitMessage );
            }
        }
    }