UIMachines.pm #2

  • //
  • guest/
  • perforce_software/
  • revml/
  • lib/
  • VCP/
  • UIMachines.pm
  • View
  • Commits
  • Open Download .zip Download (9 KB)
package VCP::UIMachines;

=begin hackers

DO NOT EDIT!!! GENERATED FROM ui_machines/vcp_ui.tt2 by /usr/local/bin/stml AT Wed May 21 22:15:04 2003

=end hackers

=head1 NAME

    VCP::UIMachines - State machines for user interface

=head1 SYNOPSIS

    Called by VCP::UI

=head1 DESCRIPTION

The user interface module L<VCP::UI|VCP::UI> is a framework that bolts
the implementation of the user interface to a state machine representing
the user interface.

Each state in this state machine is a method.

=head1 METHOD

=over

=cut

use strict;

=item init

Initialize the machine

Next state: source_prompt

=cut

sub init {
    return 'source_prompt';
}

=item source_prompt: Source SCM type

Enter the kind of repository to copy data from.

Valid answers:

    p4 => source_p4_run_p4d_prompt


=cut

sub source_prompt {
    my ( $ui ) = @_;

    ## Use single-quotish HERE docs as the most robust form of quoting
    ## so we don't have to mess with escaping.
    my $prompt = <<'END_PROMPT';
Source SCM type
END_PROMPT

    chomp $prompt;

    my @valid_anwsers = (
        [ 'p4', 'p4', 'source_p4_run_p4d_prompt' ],
    );

    my $answer = $ui->ask( <<'END_DESCRIPTION', $prompt, \@valid_anwsers );


Enter the kind of repository to copy data from.
    
    
END_DESCRIPTION

    return $answer->[-1];
}

=item dest_prompt: Destination SCM type

Enter the kind of repository to copy data to.

Valid answers:

     => run


=cut

sub dest_prompt {
    my ( $ui ) = @_;

    ## Use single-quotish HERE docs as the most robust form of quoting
    ## so we don't have to mess with escaping.
    my $prompt = <<'END_PROMPT';
Destination SCM type
END_PROMPT

    chomp $prompt;

    my @valid_anwsers = (
        [ '', '', 'run' ],
    );

    my $answer = $ui->ask( <<'END_DESCRIPTION', $prompt, \@valid_anwsers );


Enter the kind of repository to copy data to.
    
    
END_DESCRIPTION

    return $answer->[-1];
}

=item run

Run VCP with the options entered

=cut

sub run {
    return undef;
}

=item source_p4_run_p4d_prompt: Launch a private p4d in a local directory

If you are working with an offline repository in a local directory, vcp
can launch a p4d in that directory on a random hi-numbered TCP port for
you.

Valid answers:

    No => source_p4_host_prompt
    yes => source_p4_p4d_dir_prompt


=cut

sub source_p4_run_p4d_prompt {
    my ( $ui ) = @_;

    ## Use single-quotish HERE docs as the most robust form of quoting
    ## so we don't have to mess with escaping.
    my $prompt = <<'END_PROMPT';
Launch a private p4d in a local directory
END_PROMPT

    chomp $prompt;

    my @valid_anwsers = (
        [ 'No', 'No', 'source_p4_host_prompt' ],
        [ 'yes', 'yes', 'source_p4_p4d_dir_prompt' ],
    );

    my $answer = $ui->ask( <<'END_DESCRIPTION', $prompt, \@valid_anwsers );

    
If you are working with an offline repository in a local directory, vcp
can launch a p4d in that directory on a random hi-numbered TCP port for
you.

    
END_DESCRIPTION

    return $answer->[-1];
}

=item source_p4_p4d_dir_prompt: Directory to run p4d in

Enter the directory to launch the p4d in.  VCP will test to see
if this is a valid directory when you hit Enter.

Valid answers:

     => dest_prompt


=cut

sub source_p4_p4d_dir_prompt {
    my ( $ui ) = @_;

    ## Use single-quotish HERE docs as the most robust form of quoting
    ## so we don't have to mess with escaping.
    my $prompt = <<'END_PROMPT';
Directory to run p4d in
END_PROMPT

    chomp $prompt;

    my @valid_anwsers = (
        [ '', '', 'dest_prompt' ],
    );

    my $answer = $ui->ask( <<'END_DESCRIPTION', $prompt, \@valid_anwsers );


Enter the directory to launch the p4d in.  VCP will test to see
if this is a valid directory when you hit Enter.
    
    
END_DESCRIPTION

    return $answer->[-1];
}

=item source_p4_host_prompt: P4 Host name, including port

Enter the name and port of the p4d to read from, separated by
a colon.  Leave empty to use the p4's default of the P4HOST
environment variable if set or "perforce:1666" if not.

Valid answers:

     => source_p4_user_prompt


=cut

sub source_p4_host_prompt {
    my ( $ui ) = @_;

    ## Use single-quotish HERE docs as the most robust form of quoting
    ## so we don't have to mess with escaping.
    my $prompt = <<'END_PROMPT';
P4 Host name, including port
END_PROMPT

    chomp $prompt;

    my @valid_anwsers = (
        [ '', '', 'source_p4_user_prompt' ],
    );

    my $answer = $ui->ask( <<'END_DESCRIPTION', $prompt, \@valid_anwsers );


Enter the name and port of the p4d to read from, separated by
a colon.  Leave empty to use the p4's default of the P4HOST
environment variable if set or "perforce:1666" if not.

    
END_DESCRIPTION

    return $answer->[-1];
}

=item source_p4_user_prompt: P4 user id

Enter the user_id (P4USER) value needed to access the server.  Leave
empty to use p4's default P4USER logic.

Valid answers:

     => source_p4_password_prompt


=cut

sub source_p4_user_prompt {
    my ( $ui ) = @_;

    ## Use single-quotish HERE docs as the most robust form of quoting
    ## so we don't have to mess with escaping.
    my $prompt = <<'END_PROMPT';
P4 user id
END_PROMPT

    chomp $prompt;

    my @valid_anwsers = (
        [ '', '', 'source_p4_password_prompt' ],
    );

    my $answer = $ui->ask( <<'END_DESCRIPTION', $prompt, \@valid_anwsers );


Enter the user_id (P4USER) value needed to access the server.  Leave
empty to use p4's default P4USER logic.

    
END_DESCRIPTION

    return $answer->[-1];
}

=item source_p4_password_prompt: Password

If a password (P4PASSWD) needed to access the server, enter it here.

WARNING: password will be echoed in plain text to the terminal.

Valid answers:

     => source_p4_filespec_prompt


=cut

sub source_p4_password_prompt {
    my ( $ui ) = @_;

    ## Use single-quotish HERE docs as the most robust form of quoting
    ## so we don't have to mess with escaping.
    my $prompt = <<'END_PROMPT';
Password
END_PROMPT

    chomp $prompt;

    my @valid_anwsers = (
        [ '', '', 'source_p4_filespec_prompt' ],
    );

    my $answer = $ui->ask( <<'END_DESCRIPTION', $prompt, \@valid_anwsers );


If a password (P4PASSWD) needed to access the server, enter it here.

WARNING: password will be echoed in plain text to the terminal.

    
END_DESCRIPTION

    return $answer->[-1];
}

=item source_p4_filespec_prompt: Files to copy

If you want to copy a portion of the source repository, enter
a p4 filespec starting with the depot name.  Do not enter any revision
or change number information.

Valid answers:

    //... => source_p4_follow_branch_into_prompt


=cut

sub source_p4_filespec_prompt {
    my ( $ui ) = @_;

    ## Use single-quotish HERE docs as the most robust form of quoting
    ## so we don't have to mess with escaping.
    my $prompt = <<'END_PROMPT';
Files to copy
END_PROMPT

    chomp $prompt;

    my @valid_anwsers = (
        [ '//...', '//...', 'source_p4_follow_branch_into_prompt' ],
    );

    my $answer = $ui->ask( <<'END_DESCRIPTION', $prompt, \@valid_anwsers );


If you want to copy a portion of the source repository, enter
a p4 filespec starting with the depot name.  Do not enter any revision
or change number information.

    
END_DESCRIPTION

    return $answer->[-1];
}

=item source_p4_follow_branch_into_prompt: Follow 'branch into' flag

Causes VCP to notice "branch into" messages in the output of p4's
filelog command and. If the file that's the target of the p4 integrate
(branch) command is revision number #1, adds the target to the list of
exported files. This usually needs a --rev-root option to set the rev
root to be high enough in the directory tree to include all branches
(it's an error to export a file that is not under the rev root).

Valid answers:

     => dest_prompt


=cut

sub source_p4_follow_branch_into_prompt {
    my ( $ui ) = @_;

    ## Use single-quotish HERE docs as the most robust form of quoting
    ## so we don't have to mess with escaping.
    my $prompt = <<'END_PROMPT';
Follow 'branch into' flag
END_PROMPT

    chomp $prompt;

    my @valid_anwsers = (
        [ '', '', 'dest_prompt' ],
    );

    my $answer = $ui->ask( <<'END_DESCRIPTION', $prompt, \@valid_anwsers );


Causes VCP to notice "branch into" messages in the output of p4's
filelog command and. If the file that's the target of the p4 integrate
(branch) command is revision number #1, adds the target to the list of
exported files. This usually needs a --rev-root option to set the rev
root to be high enough in the directory tree to include all branches
(it's an error to export a file that is not under the rev root).

    
END_DESCRIPTION

    return $answer->[-1];
}

=back

=head1 WARNING: AUTOGENERATED

This module is autogenerated in the pre-distribution build process, so
to change it, you need the master repository files in ui_machines/...,
not a CPAN/PPM/tarball/.zip/etc. distribution.

=head1 COPYRIGHT

Copyright 2003, Perforce Software, Inc.  All Rights Reserved.

This module and the VCP package are licensed according to the terms given in
the file LICENSE accompanying this distribution, a copy of which is included in
L<vcp>.

=head1 AUTHOR

Barrie Slaymaker <barries@slaysys.com>

=cut

1;
# Change User Description Committed
#50 5401 Barrie Slaymaker - UI updated
#49 4502 Barrie Slaymaker - "Run without saving" option removed
#48 4064 Barrie Slaymaker - RevML is no longer offered in the UI
- Sources and dests are given an id in the UI
- The .vcp file name defaulting now works
#47 4002 Barrie Slaymaker - Interactive UI no longer prompts for CVS -r and -d options
#46 3863 Barrie Slaymaker - UIMachines.pm updated
#45 3675 Barrie Slaymaker - More of a .vcp file is now editable
#44 3671 Barrie Slaymaker - Add user interface flow diagrams
- User interface flow diagrams now generated without handlers
  by default, make ui-with-handlers.{png,ps} to see the handlers.
#43 3666 Barrie Slaymaker - vcp can now edit existing .vcp files, for VSS sources and revml dests
#42 3654 Barrie Slaymaker - VCP-Source-vss UI prompt is more clear
- VCP::Source::vss' --cd option removed until a need is found
#41 3650 Barrie Slaymaker - UIMachines now current
#40 3640 Barrie Slaymaker - xmllint no longer require to build UI
- UI now offers multiple choices where appropriate
#39 3567 John Fetkovich - added the field UIManager in VCP::UI::Text.pm
- added the fields UIImplementation and TersePrompts in UI.pm
- removed Source and Dest fields in VCP::UI.pm
- UI.pm now returns the result of running the UI implementation.
- VCP::UI::Text->run return a list of (source, dest)
  all future UI implementations must do the same.
- bin/vcp gets (source, dest) list from VCP::UI->run.
- added --terse (or -t) command line option to vcp
  to remove verbose help from interactive UI.
#38 3547 John Fetkovich Added defaults to yes/no questions (no in all cases)
#37 3538 John Fetkovich bug fix P4PASSWD defaulting
#36 3523 John Fetkovich more ui defaults and checks added
#35 3522 John Fetkovich default cvsroot from $ENV{CVSROOT}
#34 3518 John Fetkovich more interactive ui improvements
#33 3517 John Fetkovich change mode to text+w
#32 3515 John Fetkovich added P4HOST default
#31 3514 John Fetkovich p4 password defaulting
#30 3513 John Fetkovich defaulting of p4 user variable
#29 3512 John Fetkovich enhanced ui checks on repo_server
#28 3503 John Fetkovich not sure if this was re-generated on last change
#27 3501 John Fetkovich added ui_set_revml_repo_spec, and caller in the stml file
#26 3499 John Fetkovich - implement recoverable and non-recoverable exceptions in arc
  handlers.  A user may accept a value that generated a
  recoverable exception.  Otherwise, the question will be
  re-asked.
- changed exceptions text in ui_set_revml_repo_spec.
#25 3494 John Fetkovich default values in interactive ui partially implemented
#24 3492 John Fetkovich interative ui question re-asked if exception generated when
arc handlers are run.  a single test case for source revml
input file has been tested.
#23 3486 John Fetkovich moved (source or dest)->init calls to bin/vcp
#22 3484 John Fetkovich fix a prompt name
#21 3481 John Fetkovich intro text moved out of state machine to bin/vcp.
       no longer requires user interaction to move on.
#20 3455 John Fetkovich remove "change branch rev #1" yes/no option from interactive interface
#19 3403 John Fetkovich options given on all multiple choice prompts,
       and most free-form prompts where it makes sense
#18 3399 John Fetkovich ui fixes
#17 3395 John Fetkovich various ui refinements
#16 3390 John Fetkovich handlers for cvs ui
#15 3389 John Fetkovich made change_branch_rev prompt have both yes & no exit arcs
#14 3387 Barrie Slaymaker Make always writable on client
#13 3383 John Fetkovich removed setting of repo_id, it's now done in 'sub init'
       in the sources and dests
#12 3375 John Fetkovich more ui changes
#11 3374 John Fetkovich set repo_id in branch running in local directory also
#10 3362 John Fetkovich revml source and dest now works through interactive UI
#9 3331 John Fetkovich Small change in source revml state machine.
       split 'sub init' from 'sub new' in Source/revml.pm
       and Dest/revml.pm
#8 3330 John Fetkovich Added revml source and dest to ui state machines
#7 3305 John Fetkovich added calls to set fields in p4 source and dest
       state machines, and then call to init
#6 3255 Barrie Slaymaker Add in support for <arc> <handler>s.
       Requires latest StateML.
       See VCP-Source-p4.stml for an example.       
       Calls VCP::Source::p4 in an unsupported way resulting in death.
#5 3253 John Fetkovich Added source::vss user interface
#4 3252 John Fetkovich added state machine parts for these destinations
#3 3244 Barrie Slaymaker Integrate VCP::UI with bin/vcp.
       Type 'vcp' to run the UI.
#2 3240 Barrie Slaymaker UI definition cleanup
#1 3237 Barrie Slaymaker More work on the UI StateML conventions