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 |