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:
|
DATA:
|
||||||
ls_item LIKE LINE OF ct_items,
|
ls_item LIKE LINE OF ct_items,
|
||||||
lv_is_xml TYPE abap_bool,
|
lv_is_xml TYPE abap_bool,
|
||||||
|
lv_is_json TYPE abap_bool,
|
||||||
lv_sub_fetched TYPE abap_bool,
|
lv_sub_fetched TYPE abap_bool,
|
||||||
lt_sub_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt,
|
lt_sub_packages TYPE zif_abapgit_sap_package=>ty_devclass_tt,
|
||||||
lv_msg TYPE string.
|
lv_msg TYPE string.
|
||||||
|
@ -562,9 +563,10 @@ CLASS zcl_abapgit_file_status IMPLEMENTATION.
|
||||||
iv_devclass = iv_devclass
|
iv_devclass = iv_devclass
|
||||||
IMPORTING
|
IMPORTING
|
||||||
es_item = ls_item
|
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(
|
ls_item-devclass = get_object_package(
|
||||||
iv_object = ls_item-obj_type
|
iv_object = ls_item-obj_type
|
||||||
|
|
|
@ -14,6 +14,11 @@ CLASS zcl_abapgit_filename_logic DEFINITION
|
||||||
extension TYPE c LENGTH 3 VALUE 'xml',
|
extension TYPE c LENGTH 3 VALUE 'xml',
|
||||||
END OF c_package_file.
|
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
|
CLASS-METHODS file_to_object
|
||||||
IMPORTING
|
IMPORTING
|
||||||
!iv_filename TYPE string
|
!iv_filename TYPE string
|
||||||
|
@ -23,6 +28,7 @@ CLASS zcl_abapgit_filename_logic DEFINITION
|
||||||
EXPORTING
|
EXPORTING
|
||||||
!es_item TYPE zif_abapgit_definitions=>ty_item
|
!es_item TYPE zif_abapgit_definitions=>ty_item
|
||||||
!ev_is_xml TYPE abap_bool
|
!ev_is_xml TYPE abap_bool
|
||||||
|
!ev_is_json TYPE abap_bool
|
||||||
RAISING
|
RAISING
|
||||||
zcx_abapgit_exception .
|
zcx_abapgit_exception .
|
||||||
CLASS-METHODS object_to_file
|
CLASS-METHODS object_to_file
|
||||||
|
@ -74,6 +80,7 @@ CLASS zcl_abapgit_filename_logic IMPLEMENTATION.
|
||||||
es_item-obj_type = lv_type.
|
es_item-obj_type = lv_type.
|
||||||
es_item-obj_name = lv_name.
|
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_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.
|
ENDMETHOD.
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@ CLASS ltcl_run_checks IMPLEMENTATION.
|
||||||
|
|
||||||
DATA ls_item TYPE zif_abapgit_definitions=>ty_item.
|
DATA ls_item TYPE zif_abapgit_definitions=>ty_item.
|
||||||
DATA lv_is_xml TYPE abap_bool.
|
DATA lv_is_xml TYPE abap_bool.
|
||||||
|
DATA lv_is_json TYPE abap_bool.
|
||||||
|
|
||||||
zcl_abapgit_filename_logic=>file_to_object(
|
zcl_abapgit_filename_logic=>file_to_object(
|
||||||
EXPORTING
|
EXPORTING
|
||||||
|
@ -127,6 +128,27 @@ CLASS ltcl_run_checks IMPLEMENTATION.
|
||||||
exp = 'ZMIME_<>_?'
|
exp = 'ZMIME_<>_?'
|
||||||
act = ls_item-obj_name ).
|
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.
|
ENDMETHOD.
|
||||||
|
|
||||||
METHOD object_to_file.
|
METHOD object_to_file.
|
||||||
|
|
|
@ -584,6 +584,7 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
|
||||||
lt_remote TYPE zif_abapgit_definitions=>ty_files_tt,
|
lt_remote TYPE zif_abapgit_definitions=>ty_files_tt,
|
||||||
lv_package TYPE devclass,
|
lv_package TYPE devclass,
|
||||||
lo_files TYPE REF TO zcl_abapgit_objects_files,
|
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,
|
lo_xml TYPE REF TO zif_abapgit_xml_input,
|
||||||
lt_results TYPE zif_abapgit_definitions=>ty_results_tt,
|
lt_results TYPE zif_abapgit_definitions=>ty_results_tt,
|
||||||
li_progress TYPE REF TO zif_abapgit_progress,
|
li_progress TYPE REF TO zif_abapgit_progress,
|
||||||
|
@ -656,9 +657,10 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
|
||||||
lv_path = <ls_result>-path.
|
lv_path = <ls_result>-path.
|
||||||
ENDIF.
|
ENDIF.
|
||||||
|
|
||||||
|
ls_item-devclass = lv_package.
|
||||||
|
|
||||||
IF <ls_result>-packmove = abap_true.
|
IF <ls_result>-packmove = abap_true.
|
||||||
" Move object to new package
|
" Move object to new package
|
||||||
ls_item-devclass = lv_package.
|
|
||||||
change_package_assignments( is_item = ls_item
|
change_package_assignments( is_item = ls_item
|
||||||
ii_log = ii_log ).
|
ii_log = ii_log ).
|
||||||
" No other changes required
|
" No other changes required
|
||||||
|
@ -670,14 +672,21 @@ CLASS zcl_abapgit_objects IMPLEMENTATION.
|
||||||
EXPORTING
|
EXPORTING
|
||||||
is_item = ls_item
|
is_item = ls_item
|
||||||
iv_path = lv_path.
|
iv_path = lv_path.
|
||||||
|
|
||||||
lo_files->set_files( lt_remote ).
|
lo_files->set_files( lt_remote ).
|
||||||
|
|
||||||
"analyze XML in order to instantiate the proper serializer
|
IF lo_files->is_json_metadata( ) = abap_false.
|
||||||
lo_xml = lo_files->read_xml( ).
|
"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
|
li_obj = create_object( is_item = ls_item
|
||||||
iv_language = io_repo->get_dot_abapgit( )->get_main_language( )
|
iv_language = io_repo->get_dot_abapgit( )->get_main_language( )
|
||||||
is_metadata = lo_xml->get_metadata( ) ).
|
is_metadata = ls_metadata ).
|
||||||
|
|
||||||
compare_remote_to_local(
|
compare_remote_to_local(
|
||||||
ii_object = li_obj
|
ii_object = li_obj
|
||||||
|
|
Loading…
Reference in New Issue
Block a user