mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
Detect JSON files during pull (#5313)
This commit is contained in:
parent
a18d7542e7
commit
b5b252744d
|
@ -546,6 +546,7 @@ CLASS zcl_abapgit_file_status IMPLEMENTATION.
|
|||
DATA:
|
||||
ls_item LIKE LINE OF ct_items,
|
||||
lv_is_xml TYPE abap_bool,
|
||||
lv_is_json TYPE abap_bool,
|
||||
lv_sub_fetched TYPE abap_bool,
|
||||
lt_sub_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt,
|
||||
lv_msg TYPE string.
|
||||
|
@ -562,9 +563,10 @@ CLASS zcl_abapgit_file_status IMPLEMENTATION.
|
|||
iv_devclass = iv_devclass
|
||||
IMPORTING
|
||||
es_item = ls_item
|
||||
ev_is_xml = lv_is_xml ).
|
||||
ev_is_xml = lv_is_xml
|
||||
ev_is_json = lv_is_json ).
|
||||
|
||||
CHECK lv_is_xml = abap_true. " only object definitions
|
||||
CHECK lv_is_xml = abap_true OR lv_is_json = abap_true. " only object definitions
|
||||
|
||||
ls_item-devclass = get_object_package(
|
||||
iv_object = ls_item-obj_type
|
||||
|
|
|
@ -14,6 +14,11 @@ CLASS zcl_abapgit_filename_logic DEFINITION
|
|||
extension TYPE c LENGTH 3 VALUE 'xml',
|
||||
END OF c_package_file.
|
||||
|
||||
CONSTANTS:
|
||||
BEGIN OF c_json_file,
|
||||
extension TYPE c LENGTH 4 VALUE 'json',
|
||||
END OF c_json_file.
|
||||
|
||||
CLASS-METHODS file_to_object
|
||||
IMPORTING
|
||||
!iv_filename TYPE string
|
||||
|
@ -23,6 +28,7 @@ CLASS zcl_abapgit_filename_logic DEFINITION
|
|||
EXPORTING
|
||||
!es_item TYPE zif_abapgit_definitions=>ty_item
|
||||
!ev_is_xml TYPE abap_bool
|
||||
!ev_is_json TYPE abap_bool
|
||||
RAISING
|
||||
zcx_abapgit_exception .
|
||||
CLASS-METHODS object_to_file
|
||||
|
@ -74,6 +80,7 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
|
|||
es_item-obj_type = lv_type.
|
||||
es_item-obj_name = lv_name.
|
||||
ev_is_xml = boolc( lv_ext = to_upper( c_package_file-extension ) AND strlen( lv_type ) = 4 ).
|
||||
ev_is_json = boolc( lv_ext = to_upper( c_json_file-extension ) AND strlen( lv_type ) = 4 ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
|
|
|
@ -29,6 +29,7 @@ CLASS ltcl_run_checks IMPLEMENTATION.
|
|||
|
||||
DATA ls_item TYPE zif_abapgit_definitions=>ty_item.
|
||||
DATA lv_is_xml TYPE abap_bool.
|
||||
DATA lv_is_json TYPE abap_bool.
|
||||
|
||||
zcl_abapgit_filename_logic=>file_to_object(
|
||||
EXPORTING
|
||||
|
@ -127,6 +128,27 @@ CLASS ltcl_run_checks IMPLEMENTATION.
|
|||
exp = 'ZMIME_<>_?'
|
||||
act = ls_item-obj_name ).
|
||||
|
||||
" JSON
|
||||
zcl_abapgit_filename_logic=>file_to_object(
|
||||
EXPORTING
|
||||
iv_filename = 'ztest.chko.json'
|
||||
iv_path = '/src/'
|
||||
iv_devclass = '$PACK'
|
||||
io_dot = mo_dot
|
||||
IMPORTING
|
||||
es_item = ls_item
|
||||
ev_is_json = lv_is_json ).
|
||||
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = 'CHKO'
|
||||
act = ls_item-obj_type ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = 'ZTEST'
|
||||
act = ls_item-obj_name ).
|
||||
cl_abap_unit_assert=>assert_equals(
|
||||
exp = abap_true
|
||||
act = lv_is_json ).
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD object_to_file.
|
||||
|
|
|
@ -584,6 +584,7 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
|
|||
lt_remote TYPE zif_abapgit_definitions=>ty_files_tt,
|
||||
lv_package TYPE devclass,
|
||||
lo_files TYPE REF TO zcl_abapgit_objects_files,
|
||||
ls_metadata TYPE zif_abapgit_definitions=>ty_metadata,
|
||||
lo_xml TYPE REF TO zif_abapgit_xml_input,
|
||||
lt_results TYPE zif_abapgit_definitions=>ty_results_tt,
|
||||
li_progress TYPE REF TO zif_abapgit_progress,
|
||||
|
@ -656,9 +657,10 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
|
|||
lv_path = <ls_result>-path.
|
||||
ENDIF.
|
||||
|
||||
ls_item-devclass = lv_package.
|
||||
|
||||
IF <ls_result>-packmove = abap_true.
|
||||
" Move object to new package
|
||||
ls_item-devclass = lv_package.
|
||||
change_package_assignments( is_item = ls_item
|
||||
ii_log = ii_log ).
|
||||
" No other changes required
|
||||
|
@ -670,14 +672,21 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
|
|||
EXPORTING
|
||||
is_item = ls_item
|
||||
iv_path = lv_path.
|
||||
|
||||
lo_files->set_files( lt_remote ).
|
||||
|
||||
"analyze XML in order to instantiate the proper serializer
|
||||
lo_xml = lo_files->read_xml( ).
|
||||
IF lo_files->is_json_metadata( ) = abap_false.
|
||||
"analyze XML in order to instantiate the proper serializer
|
||||
lo_xml = lo_files->read_xml( ).
|
||||
ls_metadata = lo_xml->get_metadata( ).
|
||||
ELSE.
|
||||
" there's no XML and metadata for JSON format
|
||||
CLEAR: lo_xml, ls_metadata.
|
||||
ENDIF.
|
||||
|
||||
li_obj = create_object( is_item = ls_item
|
||||
iv_language = io_repo->get_dot_abapgit( )->get_main_language( )
|
||||
is_metadata = lo_xml->get_metadata( ) ).
|
||||
is_metadata = ls_metadata ).
|
||||
|
||||
compare_remote_to_local(
|
||||
ii_object = li_obj
|
||||
|
|
Loading…
Reference in New Issue
Block a user