From f386846858537cea99b6bc06deba16a761c1966a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20G=C3=BCnter?= Date: Tue, 21 Jun 2022 12:44:51 +0200 Subject: [PATCH] New Offline: Auto create package if non-existing (#5634) Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com> --- src/repo/zcl_abapgit_repo.clas.abap | 29 ++++++++++++++++++++ src/repo/zcl_abapgit_repo_online.clas.abap | 32 +--------------------- src/repo/zcl_abapgit_repo_srv.clas.abap | 2 ++ 3 files changed, 32 insertions(+), 31 deletions(-) diff --git a/src/repo/zcl_abapgit_repo.clas.abap b/src/repo/zcl_abapgit_repo.clas.abap index 23ced7c27..17b5a1123 100644 --- a/src/repo/zcl_abapgit_repo.clas.abap +++ b/src/repo/zcl_abapgit_repo.clas.abap @@ -99,6 +99,11 @@ CLASS zcl_abapgit_repo DEFINITION ct_files TYPE zif_abapgit_definitions=>ty_files_tt RAISING zcx_abapgit_exception . + METHODS check_and_create_package + IMPORTING + iv_package TYPE devclass + RAISING + zcx_abapgit_exception . PROTECTED SECTION. DATA mt_local TYPE zif_abapgit_definitions=>ty_files_item_tt . @@ -159,6 +164,30 @@ ENDCLASS. CLASS ZCL_ABAPGIT_REPO IMPLEMENTATION. + METHOD check_and_create_package. + + DATA ls_item TYPE zif_abapgit_definitions=>ty_item. + DATA lv_package TYPE devclass. + + ls_item-obj_type = 'DEVC'. + ls_item-obj_name = iv_package. + + IF zcl_abapgit_objects=>exists( ls_item ) = abap_false. + " Check if any package is included in remote + READ TABLE mt_remote TRANSPORTING NO FIELDS + WITH KEY file + COMPONENTS filename = zcl_abapgit_filename_logic=>c_package_file. + IF sy-subrc <> 0. + " If not, prompt to create it + lv_package = zcl_abapgit_services_basis=>create_package( iv_package ). + IF lv_package IS NOT INITIAL. + COMMIT WORK AND WAIT. + ENDIF. + ENDIF. + ENDIF. + + ENDMETHOD. + METHOD bind_listener. mi_listener = ii_listener. diff --git a/src/repo/zcl_abapgit_repo_online.clas.abap b/src/repo/zcl_abapgit_repo_online.clas.abap index 3cda5576a..2fea8d293 100644 --- a/src/repo/zcl_abapgit_repo_online.clas.abap +++ b/src/repo/zcl_abapgit_repo_online.clas.abap @@ -31,11 +31,7 @@ CLASS zcl_abapgit_repo_online DEFINITION ALIASES get_switched_origin FOR zif_abapgit_repo_online~get_switched_origin. - METHODS check_and_create_package - IMPORTING - !iv_package TYPE devclass - RAISING - zcx_abapgit_exception . + METHODS get_files_remote REDEFINITION . @@ -79,32 +75,6 @@ ENDCLASS. CLASS ZCL_ABAPGIT_REPO_ONLINE IMPLEMENTATION. - - METHOD check_and_create_package. - - DATA ls_item TYPE zif_abapgit_definitions=>ty_item. - DATA lv_package TYPE devclass. - - ls_item-obj_type = 'DEVC'. - ls_item-obj_name = iv_package. - - IF zcl_abapgit_objects=>exists( ls_item ) = abap_false. - " Check if any package is included in remote - READ TABLE mt_remote TRANSPORTING NO FIELDS - WITH KEY file - COMPONENTS filename = zcl_abapgit_filename_logic=>c_package_file. - IF sy-subrc <> 0. - " If not, prompt to create it - lv_package = zcl_abapgit_services_basis=>create_package( iv_package ). - IF lv_package IS NOT INITIAL. - COMMIT WORK AND WAIT. - ENDIF. - ENDIF. - ENDIF. - - ENDMETHOD. - - METHOD fetch_remote. DATA: li_progress TYPE REF TO zif_abapgit_progress, diff --git a/src/repo/zcl_abapgit_repo_srv.clas.abap b/src/repo/zcl_abapgit_repo_srv.clas.abap index c0edcb36a..4becad558 100644 --- a/src/repo/zcl_abapgit_repo_srv.clas.abap +++ b/src/repo/zcl_abapgit_repo_srv.clas.abap @@ -522,6 +522,8 @@ CLASS zcl_abapgit_repo_srv IMPLEMENTATION. ls_repo-local_settings-main_language_only = iv_main_lang_only. lo_repo->set_local_settings( ls_repo-local_settings ). + lo_repo->check_and_create_package( iv_package ). + ri_repo = lo_repo. ENDMETHOD.