VCP-Source-p4.stml #29

  • //
  • guest/
  • perforce_software/
  • revml/
  • ui_machines/
  • VCP-Source-p4.stml
  • View
  • Commits
  • Open Download .zip Download (6 KB)
<!DOCTYPE author [
  <!ENTITY yes_re "qr/\Ay(es)?\z/i" >
  <!ENTITY no_re "qr/\Ano?\z/i" >
  <!ENTITY non_empty_re "qr/./" >
]>

<machine id="VCP::Source::p4" xmlns="http://slaysys.com/StateML/1.0">

  <!-- ================ TRANSITIONS =================== -->

  <state id="source_p4_run_p4d_prompt" class-ids="prompt_class">
    <name>Launch a private p4d in a local directory</name>
    <description>
    
If you would like to extract from an offline repository in a local
directory, vcp can launch a 'p4d' daemon for you in that directory.
It will use a random high numbered TCP port.

    </description>

    <arc from="source_prompt" guard="'p4'">
      <description>p4</description>

      <handler>
        require VCP::Source::p4;
        $ui->{Source} = VCP::Source::p4->new;
        $ui->{Source}->repo_scheme( 'p4' );
      </handler>
    </arc>

    <arc to="source_p4_p4d_dir_prompt" guard="&yes_re;">
      <description>yes</description>
      <handler>$ui->{Source}->{P4_RUN_P4D} = 1;</handler>
    </arc>

    <arc to="source_p4_host_prompt" guard="&no_re;">
      <description>no</description>
    </arc>

  </state>


  <state id="source_p4_p4d_dir_prompt" class-ids="prompt_class">
    <name>Directory to run p4d in</name>
    <description>

Enter the directory to launch the p4d in.  VCP will then check that
this is a valid directory.
    
    </description>

    <arc to="source_p4_user_prompt" guard="&non_empty_re;">
      <handler>
        # will set repo_server
        $ui->{Source}->ui_set_p4d_dir( $answer );
      </handler>
    </arc>

  </state>


  <state id="source_p4_host_prompt" class-ids="prompt_class">
    <name>P4 Host name, including port</name>
    <description>

Enter the name and port of the p4d to read from, separated by a colon.
Defaults to the P4HOST environment variable if set or "perforce:1666"
if not.

    </description>
    <entry-handler>
      my $h = $ui->{Source}->p4_get_settings;
      $default = empty $h->{P4HOST} ? "perforce:1666" : $h->{P4HOST} ;
    </entry-handler>

    <arc to="source_p4_user_prompt" guard="&non_empty_re;">
      <description>perforce:1666</description>
      <handler>
        $ui->{Source}->repo_server( $answer )
            unless empty $answer;
      </handler>
    </arc>
  </state>


  <state id="source_p4_user_prompt" class-ids="prompt_class">
    <name>P4 user id</name>
    <description>

Enter the user_id (P4USER) value needed to access the server.
Defaults to the P4USER environment variable, if present; or the login
user if not.

    </description>
    <entry-handler>
      my $h = $ui->{Source}->p4_get_settings;
      $default = empty $h->{P4USER} ? ( empty $ENV{USER} ? undef : $ENV{USER} ) : $h->{P4USER} ;
    </entry-handler>

    <arc to="source_p4_password_prompt" guard="&non_empty_re;">
      <handler>
        $ui->{Source}->repo_user( $answer )
            unless empty $answer;
      </handler>
    </arc>
  </state>


  <state id="source_p4_password_prompt" class-ids="prompt_class">
    <name>Password</name>
    <description>

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

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

    </description>
    <entry-handler>
      my $h = $ui->{Source}->p4_get_settings;
      $default = "Use value of P4PASSWD environment variable"
          unless empty $h->{P4PASSWD};
    </entry-handler>

    <arc to="source_p4_filespec_prompt" guard="&non_empty_re;">
      <handler>
        my $h = $ui->{Source}->p4_get_settings;
        $answer = $h->{P4PASSWD}
            if defined $answer and $answer eq "Use value of P4PASSWD environment variable";
        $ui->{Source}->repo_password( $answer )
            unless empty $answer;
      </handler>
    </arc>
  </state>


  <state id="source_p4_filespec_prompt" class-ids="prompt_class">
    <name>Files to copy</name>
    <description>

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.

    </description>

    <arc to="dest_prompt" guard="qr{\A//.+}">
      <description>//depot/directory-path/...</description>
      <handler>
        $ui->{Source}->repo_filespec( $answer );
      </handler>
    </arc>
  </state>




<!-- leave bootstrap off the GUI for now

  <state id="source_p4_bootstrap_prompt" class-ids="prompt_class">
    <name>Files to export in bootstrap mode</name>
    <description>

Forces bootstrap mode for an entire export ("-b ...") or for certain
files.  Filenames may contain wildcards, see the Regexp::Shellish
manpage for details on what wildcards are accepted.

    </description>

    <arc to="continue" guard="validate Regexp::Shellish wildcard"/>
  </state>

-->

<!-- leave continue out of the GUI for now

  <state id="source_p4_continue_prompt" class-ids="prompt_class">
    <name>Continue</name>
    <description>

Starts this transfer where the previous one (to the same destination)
left off. This uses the destination's state database to detect what was
transferred last time and to begin this transfer where the previous one
left off.

    </description>

    <arc to="follow_branch_into" />
  </state>
-->

<!-- leave follow branch into out of the GUI for now (because rev-root not in gui)

  <state id="source_p4_follow_branch_into_prompt" class-ids="prompt_class">
    <name>Follow 'branch into' flag</name>
    <description>

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).

    </description>

    <arc to="dest_prompt" />
  </state>

-->




</machine>

# Change User Description Committed
#37 5397 Barrie Slaymaker - Update P4PASSWD prompts to allow for not setting P4PASSWD
#36 4581 Barrie Slaymaker - user prompts have been improved, but not tested
#35 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
#34 3859 Barrie Slaymaker - New UI files
#33 3669 Barrie Slaymaker - VCP-Source-*.stml now use new_source
#32 3647 Barrie Slaymaker - All UI prompts & descriptions rewritten.
- Minor tweak to VCP::Dest::p4 P4USER defaulting
#31 3640 Barrie Slaymaker - xmllint no longer require to build UI
- UI now offers multiple choices where appropriate
#30 3547 John Fetkovich Added defaults to yes/no questions (no in all cases)
#29 3538 John Fetkovich bug fix P4PASSWD defaulting
#28 3518 John Fetkovich more interactive ui improvements
#27 3515 John Fetkovich added P4HOST default
#26 3514 John Fetkovich p4 password defaulting
#25 3513 John Fetkovich defaulting of p4 user variable
#24 3512 John Fetkovich enhanced ui checks on repo_server
#23 3502 John Fetkovich removed obsolete commented out (source,dest)->init calls in stml files
#22 3486 John Fetkovich moved (source or dest)->init calls to bin/vcp
#21 3403 John Fetkovich options given on all multiple choice prompts,
       and most free-form prompts where it makes sense
#20 3398 John Fetkovich prompt language improvement
#19 3395 John Fetkovich various ui refinements
#18 3383 John Fetkovich removed setting of repo_id, it's now done in 'sub init'
       in the sources and dests
#17 3375 John Fetkovich more ui changes
#16 3306 Barrie Slaymaker Add StateML namespace support
#15 3305 John Fetkovich added calls to set fields in p4 source and dest
       state machines, and then call to init
#14 3289 John Fetkovich
#13 3260 John Fetkovich Improve some help texts
#12 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.
#11 3254 Barrie Slaymaker Redo machine naminf convention.
#10 3249 John Fetkovich small fix
#9 3248 John Fetkovich Created VCP-Source-cvs.stml.
Small changes VCP-Source-p4.stml.
#8 3240 Barrie Slaymaker UI definition cleanup
#7 3239 Barrie Slaymaker Fix VCP-Source-p4 stml buglets.
#6 3238 John Fetkovich small changes
#5 3237 Barrie Slaymaker More work on the UI StateML conventions
#4 3236 John Fetkovich added more states, but not complete
#3 3234 Barrie Slaymaker More updates, passes make ui now.
#2 3231 Barrie Slaymaker work on STML->source code conventions
#1 3229 Barrie Slaymaker Add more .stml files