Add "name" to repository settings (2) (#6635)

This commit is contained in:
Marc Bernard 2023-11-09 14:25:19 -05:00 committed by GitHub
parent fd6e4d8171
commit d243e9ac05
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
11 changed files with 85 additions and 78 deletions

View File

@ -4,8 +4,8 @@ INTERFACE zif_abapgit_persist_repo
METHODS add METHODS add
IMPORTING IMPORTING
!iv_url TYPE string !iv_url TYPE string OPTIONAL
!iv_branch_name TYPE string !iv_branch_name TYPE string OPTIONAL
!iv_branch TYPE zif_abapgit_git_definitions=>ty_sha1 OPTIONAL !iv_branch TYPE zif_abapgit_git_definitions=>ty_sha1 OPTIONAL
!iv_display_name TYPE string OPTIONAL !iv_display_name TYPE string OPTIONAL
!iv_package TYPE devclass !iv_package TYPE devclass

View File

@ -839,7 +839,11 @@ CLASS zcl_abapgit_repo IMPLEMENTATION.
METHOD zif_abapgit_repo~get_name. METHOD zif_abapgit_repo~get_name.
" Local display name has priority over official name
rv_name = ms_data-local_settings-display_name. rv_name = ms_data-local_settings-display_name.
IF rv_name IS INITIAL.
rv_name = ms_data-dot_abapgit-name.
ENDIF.
ENDMETHOD. ENDMETHOD.

View File

@ -6,14 +6,6 @@ CLASS zcl_abapgit_repo_offline DEFINITION
PUBLIC SECTION. PUBLIC SECTION.
METHODS set_name
IMPORTING
!iv_url TYPE string
RAISING
zcx_abapgit_exception .
METHODS zif_abapgit_repo~get_name
REDEFINITION .
METHODS has_remote_source METHODS has_remote_source
REDEFINITION . REDEFINITION .
PROTECTED SECTION. PROTECTED SECTION.
@ -49,18 +41,4 @@ CLASS zcl_abapgit_repo_offline IMPLEMENTATION.
set_files_remote( lt_backup ). set_files_remote( lt_backup ).
ENDMETHOD. ENDMETHOD.
METHOD set_name.
set( iv_url = iv_url ).
ENDMETHOD.
METHOD zif_abapgit_repo~get_name.
rv_name = super->get_name( ).
IF rv_name IS INITIAL.
rv_name = ms_data-url.
ENDIF.
ENDMETHOD.
ENDCLASS. ENDCLASS.

View File

@ -532,18 +532,17 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
iv_package = iv_package iv_package = iv_package
iv_ign_subpkg = iv_ign_subpkg ). iv_ign_subpkg = iv_ign_subpkg ).
IF iv_url IS INITIAL. IF iv_name IS INITIAL.
zcx_abapgit_exception=>raise( 'Missing display name for repo' ). zcx_abapgit_exception=>raise( 'Missing name for repository' ).
ENDIF. ENDIF.
" Repo Settings " Repo Settings
lo_dot_abapgit = zcl_abapgit_dot_abapgit=>build_default( ). lo_dot_abapgit = zcl_abapgit_dot_abapgit=>build_default( ).
lo_dot_abapgit->set_folder_logic( iv_folder_logic ). lo_dot_abapgit->set_folder_logic( iv_folder_logic ).
lo_dot_abapgit->set_name( iv_name ).
lo_dot_abapgit->set_abap_language_version( iv_abap_lang_vers ). lo_dot_abapgit->set_abap_language_version( iv_abap_lang_vers ).
lv_key = zcl_abapgit_persist_factory=>get_repo( )->add( lv_key = zcl_abapgit_persist_factory=>get_repo( )->add(
iv_url = iv_url
iv_branch_name = ''
iv_package = iv_package iv_package = iv_package
iv_offline = abap_true iv_offline = abap_true
is_dot_abapgit = lo_dot_abapgit->get_data( ) ). is_dot_abapgit = lo_dot_abapgit->get_data( ) ).
@ -602,6 +601,7 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION.
" Repo Settings " Repo Settings
lo_dot_abapgit = zcl_abapgit_dot_abapgit=>build_default( ). lo_dot_abapgit = zcl_abapgit_dot_abapgit=>build_default( ).
lo_dot_abapgit->set_folder_logic( iv_folder_logic ). lo_dot_abapgit->set_folder_logic( iv_folder_logic ).
lo_dot_abapgit->set_name( iv_name ).
lo_dot_abapgit->set_abap_language_version( iv_abap_lang_vers ). lo_dot_abapgit->set_abap_language_version( iv_abap_lang_vers ).
lv_key = zcl_abapgit_persist_factory=>get_repo( )->add( lv_key = zcl_abapgit_persist_factory=>get_repo( )->add(

View File

@ -48,7 +48,7 @@ INTERFACE zif_abapgit_repo_srv
zcx_abapgit_exception . zcx_abapgit_exception .
METHODS new_offline METHODS new_offline
IMPORTING IMPORTING
!iv_url TYPE string !iv_name TYPE string
!iv_package TYPE devclass !iv_package TYPE devclass
!iv_folder_logic TYPE string DEFAULT zif_abapgit_dot_abapgit=>c_folder_logic-full !iv_folder_logic TYPE string DEFAULT zif_abapgit_dot_abapgit=>c_folder_logic-full
!iv_labels TYPE string OPTIONAL !iv_labels TYPE string OPTIONAL
@ -64,6 +64,7 @@ INTERFACE zif_abapgit_repo_srv
!iv_url TYPE string !iv_url TYPE string
!iv_branch_name TYPE string OPTIONAL !iv_branch_name TYPE string OPTIONAL
!iv_display_name TYPE string OPTIONAL !iv_display_name TYPE string OPTIONAL
!iv_name TYPE string OPTIONAL
!iv_package TYPE devclass !iv_package TYPE devclass
!iv_folder_logic TYPE string DEFAULT zif_abapgit_dot_abapgit=>c_folder_logic-prefix !iv_folder_logic TYPE string DEFAULT zif_abapgit_dot_abapgit=>c_folder_logic-prefix
!iv_labels TYPE string OPTIONAL !iv_labels TYPE string OPTIONAL

View File

@ -24,7 +24,7 @@ CLASS zcl_abapgit_gui_page_addofflin DEFINITION
CONSTANTS: CONSTANTS:
BEGIN OF c_id, BEGIN OF c_id,
url TYPE string VALUE 'url', name TYPE string VALUE 'name',
package TYPE string VALUE 'package', package TYPE string VALUE 'package',
folder_logic TYPE string VALUE 'folder_logic', folder_logic TYPE string VALUE 'folder_logic',
labels TYPE string VALUE 'labels', labels TYPE string VALUE 'labels',
@ -115,9 +115,9 @@ CLASS zcl_abapgit_gui_page_addofflin IMPLEMENTATION.
iv_help_page = 'https://docs.abapgit.org/guide-offline-install.html' ). iv_help_page = 'https://docs.abapgit.org/guide-offline-install.html' ).
ro_form->text( ro_form->text(
iv_name = c_id-url iv_name = c_id-name
iv_required = abap_true iv_required = abap_true
iv_label = 'Repository Name' iv_label = 'Name'
iv_hint = 'Unique name for repository' iv_hint = 'Unique name for repository'
)->text( )->text(
iv_name = c_id-package iv_name = c_id-package

View File

@ -384,13 +384,10 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
METHOD get_form_schema. METHOD get_form_schema.
DATA: DATA:
lv_button TYPE string, lv_button TYPE string,
lv_label TYPE string, lv_icon TYPE string,
lv_icon TYPE string, lv_offline TYPE abap_bool,
lv_hint TYPE string, lv_head_type TYPE ty_head_type.
lv_placeholder TYPE string,
lv_offline TYPE abap_bool,
lv_head_type TYPE ty_head_type.
IF io_existing_form_data IS BOUND AND io_existing_form_data->is_empty( ) = abap_false. IF io_existing_form_data IS BOUND AND io_existing_form_data->is_empty( ) = abap_false.
lv_offline = io_existing_form_data->get( c_id-offline ). lv_offline = io_existing_form_data->get( c_id-offline ).
@ -407,15 +404,11 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
iv_help_page = 'https://docs.abapgit.org/settings-remote.html' ). iv_help_page = 'https://docs.abapgit.org/settings-remote.html' ).
IF lv_offline = abap_true. IF lv_offline = abap_true.
lv_button = 'Switch to Online'. lv_button = 'Switch to Online'.
lv_icon = 'plug/darkgrey'. lv_icon = 'plug/darkgrey'.
lv_label = 'Repository Name'.
ELSE. ELSE.
lv_button = 'Switch to Offline'. lv_button = 'Switch to Offline'.
lv_icon = 'cloud-upload-alt/darkgrey'. lv_icon = 'cloud-upload-alt/darkgrey'.
lv_label = 'Git Repository URL'.
lv_hint = 'URL of original repository'.
lv_placeholder = 'https://github.com/...git'.
ENDIF. ENDIF.
ro_form->start_group( ro_form->start_group(
@ -426,16 +419,17 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
iv_name = c_id-repo_type iv_name = c_id-repo_type
iv_label = |Type of Repository: { zcl_abapgit_html=>icon( lv_icon ) }| iv_label = |Type of Repository: { zcl_abapgit_html=>icon( lv_icon ) }|
iv_readonly = abap_true iv_readonly = abap_true
)->hidden( c_id-offline )->hidden( c_id-offline ).
)->text(
iv_name = c_id-url
iv_condense = abap_true
iv_label = lv_label
iv_hint = lv_hint
iv_placeholder = lv_placeholder ).
IF lv_offline = abap_false. IF lv_offline = abap_false.
ro_form->text(
iv_name = c_id-url
iv_condense = abap_true
iv_label = 'Git Repository URL'
iv_hint = 'URL of original repository'
iv_placeholder = 'https://github.com/...git' ).
ro_form->start_group( ro_form->start_group(
iv_name = c_id-head_group iv_name = c_id-head_group
iv_label = 'Head' iv_label = 'Head'
@ -509,10 +503,10 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
METHOD get_remote_settings_from_form. METHOD get_remote_settings_from_form.
rs_settings-url = io_form_data->get( c_id-url ).
rs_settings-offline = io_form_data->get( c_id-offline ). rs_settings-offline = io_form_data->get( c_id-offline ).
IF rs_settings-offline = abap_false. IF rs_settings-offline = abap_false.
rs_settings-url = io_form_data->get( c_id-url ).
rs_settings-head_type = io_form_data->get( c_id-head_type ). rs_settings-head_type = io_form_data->get( c_id-head_type ).
CASE rs_settings-head_type. CASE rs_settings-head_type.
@ -536,9 +530,8 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
METHOD get_remote_settings_from_repo. METHOD get_remote_settings_from_repo.
DATA: lo_repo_online TYPE REF TO zcl_abapgit_repo_online, DATA: lo_repo_online TYPE REF TO zcl_abapgit_repo_online,
lo_repo_offline TYPE REF TO zcl_abapgit_repo_offline, lv_branch TYPE ty_remote_settings-branch.
lv_branch TYPE ty_remote_settings-branch.
IF io_repo->is_offline( ) = abap_false. IF io_repo->is_offline( ) = abap_false.
lo_repo_online ?= io_repo. lo_repo_online ?= io_repo.
@ -580,9 +573,6 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
ENDIF. ENDIF.
ELSE. ELSE.
lo_repo_offline ?= io_repo.
rs_settings-url = lo_repo_offline->get_name( ).
rs_settings-offline = abap_true. rs_settings-offline = abap_true.
ENDIF. ENDIF.
@ -632,11 +622,12 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
ro_form_data->set( ro_form_data->set(
iv_key = c_id-repo_type iv_key = c_id-repo_type
iv_val = lv_type ). iv_val = lv_type ).
ro_form_data->set(
iv_key = c_id-url
iv_val = ms_settings_snapshot-url ).
IF ms_settings_snapshot-offline = abap_false. IF ms_settings_snapshot-offline = abap_false.
ro_form_data->set(
iv_key = c_id-url
iv_val = ms_settings_snapshot-url ).
ro_form_data->set( ro_form_data->set(
iv_key = c_id-head_type iv_key = c_id-head_type
iv_val = ms_settings_snapshot-head_type ). iv_val = ms_settings_snapshot-head_type ).
@ -684,7 +675,6 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
DATA: DATA:
lo_repo_online TYPE REF TO zcl_abapgit_repo_online, lo_repo_online TYPE REF TO zcl_abapgit_repo_online,
lo_repo_offline TYPE REF TO zcl_abapgit_repo_offline,
ls_settings_new TYPE ty_remote_settings. ls_settings_new TYPE ty_remote_settings.
ls_settings_new = get_remote_settings_from_form( mo_form_data ). ls_settings_new = get_remote_settings_from_form( mo_form_data ).
@ -696,11 +686,7 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
mo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( mo_repo->get_key( ) ). mo_repo ?= zcl_abapgit_repo_srv=>get_instance( )->get( mo_repo->get_key( ) ).
ENDIF. ENDIF.
IF mo_repo->is_offline( ) = abap_true. IF mo_repo->is_offline( ) = abap_false.
" Offline: Save repo name
lo_repo_offline ?= mo_repo.
lo_repo_offline->set_name( ls_settings_new-url ).
ELSE.
" Online: Save url " Online: Save url
lo_repo_online ?= mo_repo. lo_repo_online ?= mo_repo.
lo_repo_online->set_url( ls_settings_new-url ). lo_repo_online->set_url( ls_settings_new-url ).
@ -753,12 +739,9 @@ CLASS zcl_abapgit_gui_page_sett_remo IMPLEMENTATION.
IF lv_offline_new = abap_true. IF lv_offline_new = abap_true.
lv_url = mo_form_data->get( c_id-url ). lv_url = mo_form_data->get( c_id-url ).
mv_offline_switch_saved_url = lv_url. mv_offline_switch_saved_url = lv_url.
IF lv_url CP 'http*'. mo_form_data->set(
lv_url = zcl_abapgit_url=>name( lv_url ). iv_key = c_id-url
mo_form_data->set( iv_val = '' ).
iv_key = c_id-url
iv_val = lv_url ).
ENDIF.
mo_form_data->set( mo_form_data->set(
iv_key = c_id-repo_type iv_key = c_id-repo_type
iv_val = c_repo_type-offline ). iv_val = c_repo_type-offline ).

View File

@ -28,6 +28,7 @@ CLASS zcl_abapgit_gui_page_sett_repo DEFINITION
CONSTANTS: CONSTANTS:
BEGIN OF c_id, BEGIN OF c_id,
dot TYPE string VALUE 'dot', dot TYPE string VALUE 'dot',
name TYPE string VALUE 'name',
main_language TYPE string VALUE 'main_language', main_language TYPE string VALUE 'main_language',
i18n_langs TYPE string VALUE 'i18n_langs', i18n_langs TYPE string VALUE 'i18n_langs',
use_lxe TYPE string VALUE 'use_lxe', use_lxe TYPE string VALUE 'use_lxe',
@ -196,6 +197,10 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
ENDIF. ENDIF.
ro_form->text( ro_form->text(
iv_name = c_id-name
iv_label = 'Name'
iv_hint = 'Official name (can be overwritten by local display name)'
)->text(
iv_name = c_id-version_constant iv_name = c_id-version_constant
iv_label = 'Version Constant' iv_label = 'Version Constant'
iv_placeholder = 'ZVERSION_CLASS=>VERSION_CONSTANT' iv_placeholder = 'ZVERSION_CLASS=>VERSION_CONSTANT'
@ -240,6 +245,9 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
lv_language = 'Unknown language; Check your .abapgit.xml file'. lv_language = 'Unknown language; Check your .abapgit.xml file'.
ENDIF. ENDIF.
ro_form_data->set(
iv_key = c_id-name
iv_val = ls_dot-name ).
ro_form_data->set( ro_form_data->set(
iv_key = c_id-main_language iv_key = c_id-main_language
iv_val = |{ lv_main_lang } ({ lv_language })| ). iv_val = |{ lv_main_lang } ({ lv_language })| ).
@ -328,6 +336,7 @@ CLASS zcl_abapgit_gui_page_sett_repo IMPLEMENTATION.
lo_dot = mo_repo->get_dot_abapgit( ). lo_dot = mo_repo->get_dot_abapgit( ).
lo_dot->set_name( mo_form_data->get( c_id-name ) ).
lo_dot->set_folder_logic( mo_form_data->get( c_id-folder_logic ) ). lo_dot->set_folder_logic( mo_form_data->get( c_id-folder_logic ) ).
lo_dot->set_starting_folder( mo_form_data->get( c_id-starting_folder ) ). lo_dot->set_starting_folder( mo_form_data->get( c_id-starting_folder ) ).
lo_dot->set_version_constant( mo_form_data->get( c_id-version_constant ) ). lo_dot->set_version_constant( mo_form_data->get( c_id-version_constant ) ).

View File

@ -377,7 +377,7 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION.
" create new repo and add to favorites " create new repo and add to favorites
ro_repo ?= zcl_abapgit_repo_srv=>get_instance( )->new_offline( ro_repo ?= zcl_abapgit_repo_srv=>get_instance( )->new_offline(
iv_url = is_repo_params-url iv_name = is_repo_params-name
iv_package = is_repo_params-package iv_package = is_repo_params-package
iv_folder_logic = is_repo_params-folder_logic iv_folder_logic = is_repo_params-folder_logic
iv_labels = is_repo_params-labels iv_labels = is_repo_params-labels
@ -418,6 +418,7 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION.
ro_repo ?= zcl_abapgit_repo_srv=>get_instance( )->new_online( ro_repo ?= zcl_abapgit_repo_srv=>get_instance( )->new_online(
iv_url = is_repo_params-url iv_url = is_repo_params-url
iv_branch_name = is_repo_params-branch_name iv_branch_name = is_repo_params-branch_name
iv_name = is_repo_params-name
iv_package = is_repo_params-package iv_package = is_repo_params-package
iv_display_name = is_repo_params-display_name iv_display_name = is_repo_params-display_name
iv_folder_logic = is_repo_params-folder_logic iv_folder_logic = is_repo_params-folder_logic

View File

@ -3,6 +3,7 @@ INTERFACE zif_abapgit_services_repo
TYPES: TYPES:
BEGIN OF ty_repo_params, BEGIN OF ty_repo_params,
name TYPE string,
url TYPE string, url TYPE string,
package TYPE devclass, package TYPE devclass,
branch_name TYPE string, branch_name TYPE string,

View File

@ -10,11 +10,38 @@ CLASS zcl_abapgit_migrations DEFINITION
PROTECTED SECTION. PROTECTED SECTION.
PRIVATE SECTION. PRIVATE SECTION.
CLASS-METHODS migrate_offline_repos.
ENDCLASS. ENDCLASS.
CLASS ZCL_ABAPGIT_MIGRATIONS IMPLEMENTATION. CLASS zcl_abapgit_migrations IMPLEMENTATION.
METHOD migrate_offline_repos.
DATA:
lt_repos TYPE zif_abapgit_repo_srv=>ty_repo_list,
li_repo LIKE LINE OF lt_repos,
lo_dot TYPE REF TO zcl_abapgit_dot_abapgit.
TRY.
" Get offline repos only
lt_repos = zcl_abapgit_repo_srv=>get_instance( )->list( abap_true ).
LOOP AT lt_repos INTO li_repo.
lo_dot = li_repo->get_dot_abapgit( ).
" Move repo name from URL fields to .abapGit.xml
IF li_repo->ms_data-url IS NOT INITIAL AND lo_dot->get_name( ) IS INITIAL.
lo_dot->set_name( li_repo->ms_data-url ).
li_repo->set_dot_abapgit( lo_dot ).
ENDIF.
ENDLOOP.
CATCH zcx_abapgit_exception ##NO_HANDLER.
ENDTRY.
ENDMETHOD.
METHOD run. METHOD run.
@ -28,5 +55,8 @@ CLASS ZCL_ABAPGIT_MIGRATIONS IMPLEMENTATION.
" Migrate checksums from repo metadata to separate DB object " Migrate checksums from repo metadata to separate DB object
zcl_abapgit_repo_cs_migration=>run( ). zcl_abapgit_repo_cs_migration=>run( ).
" Migrate offline repo metadata
migrate_offline_repos( ).
ENDMETHOD. ENDMETHOD.
ENDCLASS. ENDCLASS.