repo: change logic for creation vs package creation 2 (#6626)

Co-authored-by: Marc Bernard <59966492+mbtools@users.noreply.github.com>
This commit is contained in:
Lars Hvam 2023-11-06 16:51:21 +01:00 committed by GitHub
parent f46f5ce58e
commit 193051b0f6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -71,14 +71,14 @@ CLASS zcl_abapgit_services_repo DEFINITION
VALUE(rv_package) TYPE devclass
RAISING
zcx_abapgit_exception.
CLASS-METHODS check_and_create_package
PROTECTED SECTION.
PRIVATE SECTION.
CLASS-METHODS check_package_exists
IMPORTING
!iv_package TYPE devclass
!it_remote TYPE zif_abapgit_git_definitions=>ty_files_tt
RAISING
zcx_abapgit_exception.
PROTECTED SECTION.
PRIVATE SECTION.
CLASS-METHODS delete_unnecessary_objects
IMPORTING
@ -180,7 +180,7 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION.
ENDMETHOD.
METHOD check_and_create_package.
METHOD check_package_exists.
IF zcl_abapgit_factory=>get_sap_package( iv_package )->exists( ) = abap_false.
" Check if any package is included in remote
@ -188,8 +188,10 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION.
WITH KEY file
COMPONENTS filename = zcl_abapgit_filename_logic=>c_package_file.
IF sy-subrc <> 0.
" If not, prompt to create it
create_package( iv_package ).
" If not, give error
zcx_abapgit_exception=>raise(
iv_text = |Package { iv_package } does not exist and there's no package included in the repository|
iv_longtext = 'Either select an existing package, create a new one, or add a package to the repository' ).
ENDIF.
ENDIF.
@ -369,6 +371,8 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION.
METHOD new_offline.
DATA lx_error TYPE REF TO zcx_abapgit_exception.
check_package( is_repo_params ).
" create new repo and add to favorites
@ -381,9 +385,15 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION.
iv_main_lang_only = is_repo_params-main_lang_only
iv_abap_lang_vers = is_repo_params-abap_lang_vers ).
check_and_create_package(
iv_package = is_repo_params-package
it_remote = ro_repo->get_files_remote( ) ).
TRY.
check_package_exists(
iv_package = is_repo_params-package
it_remote = ro_repo->get_files_remote( ) ).
CATCH zcx_abapgit_exception INTO lx_error.
zcl_abapgit_repo_srv=>get_instance( )->delete( ro_repo ).
COMMIT WORK.
RAISE EXCEPTION lx_error.
ENDTRY.
" Make sure there're no leftovers from previous repos
ro_repo->zif_abapgit_repo~checksums( )->rebuild( ).
@ -401,6 +411,8 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION.
METHOD new_online.
DATA lx_error TYPE REF TO zcx_abapgit_exception.
check_package( is_repo_params ).
ro_repo ?= zcl_abapgit_repo_srv=>get_instance( )->new_online(
@ -414,9 +426,15 @@ CLASS zcl_abapgit_services_repo IMPLEMENTATION.
iv_main_lang_only = is_repo_params-main_lang_only
iv_abap_lang_vers = is_repo_params-abap_lang_vers ).
check_and_create_package(
iv_package = is_repo_params-package
it_remote = ro_repo->get_files_remote( ) ).
TRY.
check_package_exists(
iv_package = is_repo_params-package
it_remote = ro_repo->get_files_remote( ) ).
CATCH zcx_abapgit_exception INTO lx_error.
zcl_abapgit_repo_srv=>get_instance( )->delete( ro_repo ).
COMMIT WORK.
RAISE EXCEPTION lx_error.
ENDTRY.
" Make sure there're no leftovers from previous repos
ro_repo->zif_abapgit_repo~checksums( )->rebuild( ).