abapgit-agent 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.abapGitAgent.example +11 -0
- package/API.md +271 -0
- package/CLAUDE.md +445 -0
- package/CLAUDE_MEM.md +88 -0
- package/ERROR_HANDLING.md +30 -0
- package/INSTALL.md +160 -0
- package/README.md +127 -0
- package/abap/CLAUDE.md +492 -0
- package/abap/package.devc.xml +10 -0
- package/abap/zcl_abgagt_agent.clas.abap +769 -0
- package/abap/zcl_abgagt_agent.clas.xml +15 -0
- package/abap/zcl_abgagt_cmd_factory.clas.abap +43 -0
- package/abap/zcl_abgagt_cmd_factory.clas.xml +15 -0
- package/abap/zcl_abgagt_command_inspect.clas.abap +192 -0
- package/abap/zcl_abgagt_command_inspect.clas.testclasses.abap +121 -0
- package/abap/zcl_abgagt_command_inspect.clas.xml +16 -0
- package/abap/zcl_abgagt_command_pull.clas.abap +80 -0
- package/abap/zcl_abgagt_command_pull.clas.testclasses.abap +87 -0
- package/abap/zcl_abgagt_command_pull.clas.xml +16 -0
- package/abap/zcl_abgagt_command_unit.clas.abap +297 -0
- package/abap/zcl_abgagt_command_unit.clas.xml +15 -0
- package/abap/zcl_abgagt_resource_health.clas.abap +25 -0
- package/abap/zcl_abgagt_resource_health.clas.xml +15 -0
- package/abap/zcl_abgagt_resource_inspect.clas.abap +62 -0
- package/abap/zcl_abgagt_resource_inspect.clas.xml +15 -0
- package/abap/zcl_abgagt_resource_pull.clas.abap +71 -0
- package/abap/zcl_abgagt_resource_pull.clas.xml +15 -0
- package/abap/zcl_abgagt_resource_unit.clas.abap +64 -0
- package/abap/zcl_abgagt_resource_unit.clas.xml +15 -0
- package/abap/zcl_abgagt_rest_handler.clas.abap +27 -0
- package/abap/zcl_abgagt_rest_handler.clas.xml +15 -0
- package/abap/zcl_abgagt_util.clas.abap +93 -0
- package/abap/zcl_abgagt_util.clas.testclasses.abap +84 -0
- package/abap/zcl_abgagt_util.clas.xml +16 -0
- package/abap/zif_abgagt_agent.intf.abap +134 -0
- package/abap/zif_abgagt_agent.intf.xml +15 -0
- package/abap/zif_abgagt_cmd_factory.intf.abap +7 -0
- package/abap/zif_abgagt_cmd_factory.intf.xml +15 -0
- package/abap/zif_abgagt_command.intf.abap +21 -0
- package/abap/zif_abgagt_command.intf.xml +15 -0
- package/abap/zif_abgagt_util.intf.abap +28 -0
- package/abap/zif_abgagt_util.intf.xml +15 -0
- package/bin/abapgit-agent +902 -0
- package/img/claude.png +0 -0
- package/package.json +31 -0
- package/scripts/claude-integration.js +351 -0
- package/scripts/test-integration.js +139 -0
- package/src/abap-client.js +314 -0
- package/src/agent.js +119 -0
- package/src/config.js +66 -0
- package/src/index.js +48 -0
- package/src/logger.js +39 -0
- package/src/server.js +116 -0
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"* Use this source text module for the class definition
|
|
2
|
+
CLASS zcl_abgagt_util DEFINITION PUBLIC FINAL CREATE PUBLIC.
|
|
3
|
+
PUBLIC SECTION.
|
|
4
|
+
INTERFACES zif_abgagt_util.
|
|
5
|
+
CLASS-METHODS get_instance
|
|
6
|
+
RETURNING VALUE(ro_util) TYPE REF TO zcl_abgagt_util.
|
|
7
|
+
PRIVATE SECTION.
|
|
8
|
+
DATA mv_log TYPE string.
|
|
9
|
+
DATA mv_has_error TYPE abap_bool.
|
|
10
|
+
ENDCLASS.
|
|
11
|
+
|
|
12
|
+
CLASS zcl_abgagt_util IMPLEMENTATION.
|
|
13
|
+
METHOD get_instance.
|
|
14
|
+
DATA lo_util TYPE REF TO zcl_abgagt_util.
|
|
15
|
+
CREATE OBJECT lo_util.
|
|
16
|
+
ro_util = lo_util.
|
|
17
|
+
ENDMETHOD.
|
|
18
|
+
|
|
19
|
+
METHOD zif_abgagt_util~parse_file_to_object.
|
|
20
|
+
" Parse file path to extract obj_type and obj_name
|
|
21
|
+
" Example: "zcl_my_class.clas.abap" -> CLAS, ZCL_MY_CLASS
|
|
22
|
+
" Example: "src/zcl_my_class.clas.abap" -> CLAS, ZCL_MY_CLASS
|
|
23
|
+
|
|
24
|
+
DATA lv_upper TYPE string.
|
|
25
|
+
lv_upper = iv_file.
|
|
26
|
+
TRANSLATE lv_upper TO UPPER CASE.
|
|
27
|
+
|
|
28
|
+
" Split filename by '.' to get parts
|
|
29
|
+
DATA lt_parts TYPE TABLE OF string.
|
|
30
|
+
SPLIT lv_upper AT '.' INTO TABLE lt_parts.
|
|
31
|
+
DATA lv_part_count TYPE i.
|
|
32
|
+
lv_part_count = lines( lt_parts ).
|
|
33
|
+
|
|
34
|
+
IF lv_part_count < 3.
|
|
35
|
+
RETURN.
|
|
36
|
+
ENDIF.
|
|
37
|
+
|
|
38
|
+
" Last part should be 'ABAP' for verification
|
|
39
|
+
READ TABLE lt_parts INDEX lv_part_count INTO DATA(lv_last).
|
|
40
|
+
IF lv_last <> 'ABAP'.
|
|
41
|
+
RETURN.
|
|
42
|
+
ENDIF.
|
|
43
|
+
|
|
44
|
+
" First part is obj_name (may contain path), second part is obj_type
|
|
45
|
+
DATA lv_obj_name TYPE string.
|
|
46
|
+
DATA lv_obj_type_raw TYPE string.
|
|
47
|
+
READ TABLE lt_parts INDEX 1 INTO lv_obj_name.
|
|
48
|
+
READ TABLE lt_parts INDEX 2 INTO lv_obj_type_raw.
|
|
49
|
+
|
|
50
|
+
" Convert file extension to object type
|
|
51
|
+
CASE lv_obj_type_raw.
|
|
52
|
+
WHEN 'CLAS' OR 'CLASS'.
|
|
53
|
+
ev_obj_type = 'CLAS'.
|
|
54
|
+
WHEN 'INTF' OR 'INTERFACE'.
|
|
55
|
+
ev_obj_type = 'INTF'.
|
|
56
|
+
WHEN 'PROG' OR 'PROGRAM'.
|
|
57
|
+
ev_obj_type = 'PROG'.
|
|
58
|
+
WHEN 'FUGR' OR 'FUGROUP'.
|
|
59
|
+
ev_obj_type = 'FUGR'.
|
|
60
|
+
WHEN 'TABL' OR 'TABLE'.
|
|
61
|
+
ev_obj_type = 'TABL'.
|
|
62
|
+
WHEN 'DDLS'.
|
|
63
|
+
ev_obj_type = 'DDLS'.
|
|
64
|
+
WHEN OTHERS.
|
|
65
|
+
ev_obj_type = lv_obj_type_raw.
|
|
66
|
+
ENDCASE.
|
|
67
|
+
|
|
68
|
+
" Extract file name from obj_name (remove path prefix)
|
|
69
|
+
DATA lv_len TYPE i.
|
|
70
|
+
lv_len = strlen( lv_obj_name ).
|
|
71
|
+
DATA lv_offs TYPE i.
|
|
72
|
+
lv_offs = find( val = reverse( lv_obj_name ) sub = '/' ).
|
|
73
|
+
IF lv_offs > 0.
|
|
74
|
+
lv_offs = lv_len - lv_offs - 1.
|
|
75
|
+
lv_obj_name = lv_obj_name+lv_offs.
|
|
76
|
+
ENDIF.
|
|
77
|
+
|
|
78
|
+
" Remove leading '/' if present
|
|
79
|
+
IF lv_obj_name(1) = '/'.
|
|
80
|
+
lv_obj_name = lv_obj_name+1.
|
|
81
|
+
ENDIF.
|
|
82
|
+
|
|
83
|
+
ev_obj_name = lv_obj_name.
|
|
84
|
+
ENDMETHOD.
|
|
85
|
+
|
|
86
|
+
METHOD zif_abgagt_util~check_log_for_errors.
|
|
87
|
+
rv_has_error = mv_has_error.
|
|
88
|
+
ENDMETHOD.
|
|
89
|
+
|
|
90
|
+
METHOD zif_abgagt_util~get_log_detail.
|
|
91
|
+
rv_detail = mv_log.
|
|
92
|
+
ENDMETHOD.
|
|
93
|
+
ENDCLASS.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
*"* use this source file for your test class implementation
|
|
2
|
+
*"* local test class
|
|
3
|
+
CLASS ltcl_zcl_abgagt_util DEFINITION FOR TESTING DURATION SHORT RISK LEVEL HARMLESS.
|
|
4
|
+
PRIVATE SECTION.
|
|
5
|
+
DATA mo_util TYPE REF TO zcl_abgagt_util.
|
|
6
|
+
|
|
7
|
+
METHODS setup.
|
|
8
|
+
METHODS test_parse_clas FOR TESTING.
|
|
9
|
+
METHODS test_parse_intf FOR TESTING.
|
|
10
|
+
METHODS test_parse_with_path FOR TESTING.
|
|
11
|
+
METHODS test_parse_invalid FOR TESTING.
|
|
12
|
+
ENDCLASS.
|
|
13
|
+
|
|
14
|
+
CLASS ltcl_zcl_abgagt_util IMPLEMENTATION.
|
|
15
|
+
|
|
16
|
+
METHOD setup.
|
|
17
|
+
mo_util = zcl_abgagt_util=>get_instance( ).
|
|
18
|
+
ENDMETHOD.
|
|
19
|
+
|
|
20
|
+
METHOD test_parse_clas.
|
|
21
|
+
" Test parsing CLAS file
|
|
22
|
+
DATA lv_obj_type TYPE string.
|
|
23
|
+
DATA lv_obj_name TYPE string.
|
|
24
|
+
|
|
25
|
+
mo_util->zif_abgagt_util~parse_file_to_object(
|
|
26
|
+
EXPORTING iv_file = 'zcl_my_class.clas.abap'
|
|
27
|
+
IMPORTING ev_obj_type = lv_obj_type
|
|
28
|
+
ev_obj_name = lv_obj_name ).
|
|
29
|
+
|
|
30
|
+
cl_abap_unit_assert=>assert_equals(
|
|
31
|
+
act = lv_obj_type exp = 'CLAS' msg = 'Object type should be CLAS' ).
|
|
32
|
+
cl_abap_unit_assert=>assert_equals(
|
|
33
|
+
act = lv_obj_name exp = 'ZCL_MY_CLASS' msg = 'Object name mismatch' ).
|
|
34
|
+
ENDMETHOD.
|
|
35
|
+
|
|
36
|
+
METHOD test_parse_intf.
|
|
37
|
+
" Test parsing INTF file
|
|
38
|
+
DATA lv_obj_type TYPE string.
|
|
39
|
+
DATA lv_obj_name TYPE string.
|
|
40
|
+
|
|
41
|
+
mo_util->zif_abgagt_util~parse_file_to_object(
|
|
42
|
+
EXPORTING iv_file = 'zif_my_intf.intf.abap'
|
|
43
|
+
IMPORTING ev_obj_type = lv_obj_type
|
|
44
|
+
ev_obj_name = lv_obj_name ).
|
|
45
|
+
|
|
46
|
+
cl_abap_unit_assert=>assert_equals(
|
|
47
|
+
act = lv_obj_type exp = 'INTF' msg = 'Object type should be INTF' ).
|
|
48
|
+
cl_abap_unit_assert=>assert_equals(
|
|
49
|
+
act = lv_obj_name exp = 'ZIF_MY_INTF' msg = 'Object name mismatch' ).
|
|
50
|
+
ENDMETHOD.
|
|
51
|
+
|
|
52
|
+
METHOD test_parse_with_path.
|
|
53
|
+
" Test parsing file with path
|
|
54
|
+
DATA lv_obj_type TYPE string.
|
|
55
|
+
DATA lv_obj_name TYPE string.
|
|
56
|
+
|
|
57
|
+
mo_util->zif_abgagt_util~parse_file_to_object(
|
|
58
|
+
EXPORTING iv_file = 'src/zcl_my_class.clas.abap'
|
|
59
|
+
IMPORTING ev_obj_type = lv_obj_type
|
|
60
|
+
ev_obj_name = lv_obj_name ).
|
|
61
|
+
|
|
62
|
+
cl_abap_unit_assert=>assert_equals(
|
|
63
|
+
act = lv_obj_type exp = 'CLAS' msg = 'Object type should be CLAS' ).
|
|
64
|
+
cl_abap_unit_assert=>assert_equals(
|
|
65
|
+
act = lv_obj_name exp = 'ZCL_MY_CLASS' msg = 'Path should be stripped' ).
|
|
66
|
+
ENDMETHOD.
|
|
67
|
+
|
|
68
|
+
METHOD test_parse_invalid.
|
|
69
|
+
" Test parsing invalid file (should return empty)
|
|
70
|
+
DATA lv_obj_type TYPE string.
|
|
71
|
+
DATA lv_obj_name TYPE string.
|
|
72
|
+
|
|
73
|
+
mo_util->zif_abgagt_util~parse_file_to_object(
|
|
74
|
+
EXPORTING iv_file = 'invalid_file.txt'
|
|
75
|
+
IMPORTING ev_obj_type = lv_obj_type
|
|
76
|
+
ev_obj_name = lv_obj_name ).
|
|
77
|
+
|
|
78
|
+
cl_abap_unit_assert=>assert_initial(
|
|
79
|
+
act = lv_obj_type msg = 'Invalid file should return empty type' ).
|
|
80
|
+
cl_abap_unit_assert=>assert_initial(
|
|
81
|
+
act = lv_obj_name msg = 'Invalid file should return empty name' ).
|
|
82
|
+
ENDMETHOD.
|
|
83
|
+
|
|
84
|
+
ENDCLASS.
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_CLAS" serializer_version="v1.0.0">
|
|
3
|
+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
|
4
|
+
<asx:values>
|
|
5
|
+
<VSEOCLASS>
|
|
6
|
+
<CLSNAME>ZCL_ABGAGT_UTIL</CLSNAME>
|
|
7
|
+
<LANGU>E</LANGU>
|
|
8
|
+
<DESCRIPT>Utility Class for ABAP Git Agent</DESCRIPT>
|
|
9
|
+
<EXPOSURE>2</EXPOSURE>
|
|
10
|
+
<STATE>1</STATE>
|
|
11
|
+
<UNICODE>X</UNICODE>
|
|
12
|
+
<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>
|
|
13
|
+
</VSEOCLASS>
|
|
14
|
+
</asx:values>
|
|
15
|
+
</asx:abap>
|
|
16
|
+
</abapGit>
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
" TODO: Implement detailed syntax error parsing
|
|
2
|
+
" When a syntax error occurs, the log shows the affected object name
|
|
3
|
+
" but not the specific line/column. For better error reporting:
|
|
4
|
+
" - Parse the error message to extract object info
|
|
5
|
+
" - For syntax errors, query SEPSA or TRINT_OBJECT_LOG for details
|
|
6
|
+
" - Return structured error with line numbers and fix suggestions
|
|
7
|
+
|
|
8
|
+
INTERFACE zif_abgagt_agent PUBLIC.
|
|
9
|
+
|
|
10
|
+
TYPES: BEGIN OF ty_object,
|
|
11
|
+
type TYPE string,
|
|
12
|
+
id TYPE string,
|
|
13
|
+
number TYPE string,
|
|
14
|
+
text TYPE string,
|
|
15
|
+
obj_type TYPE string,
|
|
16
|
+
obj_name TYPE string,
|
|
17
|
+
exception TYPE string,
|
|
18
|
+
END OF ty_object.
|
|
19
|
+
|
|
20
|
+
TYPES: ty_object_list TYPE STANDARD TABLE OF ty_object WITH NON-UNIQUE DEFAULT KEY.
|
|
21
|
+
|
|
22
|
+
TYPES: BEGIN OF ty_result,
|
|
23
|
+
success TYPE abap_bool,
|
|
24
|
+
job_id TYPE string,
|
|
25
|
+
message TYPE string,
|
|
26
|
+
error_detail TYPE string,
|
|
27
|
+
transport_request TYPE string,
|
|
28
|
+
activated_count TYPE i,
|
|
29
|
+
failed_count TYPE i,
|
|
30
|
+
log_messages TYPE ty_object_list,
|
|
31
|
+
activated_objects TYPE ty_object_list,
|
|
32
|
+
failed_objects TYPE ty_object_list,
|
|
33
|
+
started_at TYPE timestampl,
|
|
34
|
+
finished_at TYPE timestampl,
|
|
35
|
+
END OF ty_result.
|
|
36
|
+
|
|
37
|
+
TYPES: BEGIN OF ty_pull_params,
|
|
38
|
+
url TYPE string,
|
|
39
|
+
branch TYPE string,
|
|
40
|
+
username TYPE string,
|
|
41
|
+
password TYPE string,
|
|
42
|
+
package TYPE devclass,
|
|
43
|
+
folder_logic TYPE string,
|
|
44
|
+
create_new TYPE abap_bool,
|
|
45
|
+
END OF ty_pull_params.
|
|
46
|
+
|
|
47
|
+
" Types for inspect (syntax check)
|
|
48
|
+
TYPES: BEGIN OF ty_error,
|
|
49
|
+
line TYPE string,
|
|
50
|
+
column TYPE string,
|
|
51
|
+
text TYPE string,
|
|
52
|
+
word TYPE string,
|
|
53
|
+
END OF ty_error.
|
|
54
|
+
|
|
55
|
+
TYPES ty_errors TYPE STANDARD TABLE OF ty_error WITH NON-UNIQUE DEFAULT KEY.
|
|
56
|
+
|
|
57
|
+
TYPES: BEGIN OF ty_inspect_result,
|
|
58
|
+
success TYPE abap_bool,
|
|
59
|
+
object_type TYPE string,
|
|
60
|
+
object_name TYPE string,
|
|
61
|
+
error_count TYPE i,
|
|
62
|
+
errors TYPE ty_errors,
|
|
63
|
+
END OF ty_inspect_result.
|
|
64
|
+
|
|
65
|
+
" Types for unit tests
|
|
66
|
+
TYPES: BEGIN OF ty_test_result,
|
|
67
|
+
object_type TYPE string,
|
|
68
|
+
object_name TYPE string,
|
|
69
|
+
test_method TYPE string,
|
|
70
|
+
status TYPE string,
|
|
71
|
+
message TYPE string,
|
|
72
|
+
line TYPE string,
|
|
73
|
+
END OF ty_test_result.
|
|
74
|
+
|
|
75
|
+
TYPES ty_test_results TYPE STANDARD TABLE OF ty_test_result WITH NON-UNIQUE DEFAULT KEY.
|
|
76
|
+
|
|
77
|
+
TYPES: BEGIN OF ty_unit_result,
|
|
78
|
+
success TYPE abap_bool,
|
|
79
|
+
message TYPE string,
|
|
80
|
+
test_count TYPE i,
|
|
81
|
+
passed_count TYPE i,
|
|
82
|
+
failed_count TYPE i,
|
|
83
|
+
results TYPE ty_test_results,
|
|
84
|
+
END OF ty_unit_result.
|
|
85
|
+
|
|
86
|
+
TYPES: BEGIN OF ty_object_key,
|
|
87
|
+
object_type TYPE string,
|
|
88
|
+
object_name TYPE string,
|
|
89
|
+
END OF ty_object_key.
|
|
90
|
+
|
|
91
|
+
TYPES ty_object_keys TYPE STANDARD TABLE OF ty_object_key WITH NON-UNIQUE DEFAULT KEY.
|
|
92
|
+
|
|
93
|
+
TYPES: ty_log_table TYPE TABLE OF string.
|
|
94
|
+
TYPES: ty_job_status TYPE string.
|
|
95
|
+
|
|
96
|
+
CONSTANTS:
|
|
97
|
+
gc_status_pending TYPE ty_job_status VALUE 'PENDING',
|
|
98
|
+
gc_status_running TYPE ty_job_status VALUE 'RUNNING',
|
|
99
|
+
gc_status_completed TYPE ty_job_status VALUE 'COMPLETED',
|
|
100
|
+
gc_status_failed TYPE ty_job_status VALUE 'FAILED'.
|
|
101
|
+
|
|
102
|
+
METHODS pull
|
|
103
|
+
IMPORTING
|
|
104
|
+
iv_url TYPE string
|
|
105
|
+
iv_branch TYPE string DEFAULT 'main'
|
|
106
|
+
iv_username TYPE string OPTIONAL
|
|
107
|
+
iv_password TYPE string OPTIONAL
|
|
108
|
+
iv_transport_request TYPE string OPTIONAL
|
|
109
|
+
it_files TYPE string_table OPTIONAL
|
|
110
|
+
RETURNING
|
|
111
|
+
VALUE(rs_result) TYPE ty_result
|
|
112
|
+
RAISING
|
|
113
|
+
zcx_abapgit_exception.
|
|
114
|
+
|
|
115
|
+
METHODS get_repo_status
|
|
116
|
+
IMPORTING
|
|
117
|
+
iv_url TYPE string
|
|
118
|
+
RETURNING
|
|
119
|
+
VALUE(rv_status) TYPE string.
|
|
120
|
+
|
|
121
|
+
METHODS inspect
|
|
122
|
+
IMPORTING
|
|
123
|
+
iv_file TYPE string
|
|
124
|
+
RETURNING
|
|
125
|
+
VALUE(rs_result) TYPE ty_inspect_result.
|
|
126
|
+
|
|
127
|
+
METHODS run_tests
|
|
128
|
+
IMPORTING
|
|
129
|
+
iv_package TYPE devclass OPTIONAL
|
|
130
|
+
it_objects TYPE ty_object_keys OPTIONAL
|
|
131
|
+
RETURNING
|
|
132
|
+
VALUE(rs_result) TYPE ty_unit_result.
|
|
133
|
+
|
|
134
|
+
ENDINTERFACE.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
|
|
3
|
+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
|
4
|
+
<asx:values>
|
|
5
|
+
<VSEOINTERF>
|
|
6
|
+
<CLSNAME>ZIF_ABGAGT_AGENT</CLSNAME>
|
|
7
|
+
<LANGU>E</LANGU>
|
|
8
|
+
<DESCRIPT>Interface for ABAP Git Agent</DESCRIPT>
|
|
9
|
+
<EXPOSURE>2</EXPOSURE>
|
|
10
|
+
<STATE>1</STATE>
|
|
11
|
+
<UNICODE>X</UNICODE>
|
|
12
|
+
</VSEOINTERF>
|
|
13
|
+
</asx:values>
|
|
14
|
+
</asx:abap>
|
|
15
|
+
</abapGit>
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
"* Use this source text module for the interface definition
|
|
2
|
+
"! <p class="shorttext synchronized">Command Factory Interface for ABAP Git Agent</p>
|
|
3
|
+
INTERFACE zif_abgagt_cmd_factory PUBLIC.
|
|
4
|
+
METHODS get_command
|
|
5
|
+
IMPORTING iv_command TYPE string
|
|
6
|
+
RETURNING VALUE(ro_command) TYPE REF TO zif_abgagt_command.
|
|
7
|
+
ENDINTERFACE.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
|
|
3
|
+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
|
4
|
+
<asx:values>
|
|
5
|
+
<VSEOINTERF>
|
|
6
|
+
<CLSNAME>ZIF_ABGAGT_CMD_FACTORY</CLSNAME>
|
|
7
|
+
<LANGU>E</LANGU>
|
|
8
|
+
<DESCRIPT>Command Factory Interface for ABAP Git Agent</DESCRIPT>
|
|
9
|
+
<EXPOSURE>2</EXPOSURE>
|
|
10
|
+
<STATE>1</STATE>
|
|
11
|
+
<UNICODE>X</UNICODE>
|
|
12
|
+
</VSEOINTERF>
|
|
13
|
+
</asx:values>
|
|
14
|
+
</asx:abap>
|
|
15
|
+
</abapGit>
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"* Use this source text module for the interface definition
|
|
2
|
+
"! <p class="shorttext synchronized">Command Interface for ABAP Git Agent</p>
|
|
3
|
+
INTERFACE zif_abgagt_command PUBLIC.
|
|
4
|
+
|
|
5
|
+
CONSTANTS:
|
|
6
|
+
gc_pull TYPE string VALUE 'PULL',
|
|
7
|
+
gc_inspect TYPE string VALUE 'INSPECT',
|
|
8
|
+
gc_unit TYPE string VALUE 'UNIT'.
|
|
9
|
+
|
|
10
|
+
" Get command name
|
|
11
|
+
METHODS get_name
|
|
12
|
+
RETURNING VALUE(rv_name) TYPE string.
|
|
13
|
+
|
|
14
|
+
" Execute command with optional parameters
|
|
15
|
+
" @parameter is_param | Generic parameters (structure varies by command)
|
|
16
|
+
" @parameter rv_result | JSON result string
|
|
17
|
+
METHODS execute
|
|
18
|
+
IMPORTING is_param TYPE data OPTIONAL
|
|
19
|
+
RETURNING VALUE(rv_result) TYPE string.
|
|
20
|
+
|
|
21
|
+
ENDINTERFACE.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
|
|
3
|
+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
|
4
|
+
<asx:values>
|
|
5
|
+
<VSEOINTERF>
|
|
6
|
+
<CLSNAME>ZIF_ABGAGT_COMMAND</CLSNAME>
|
|
7
|
+
<LANGU>E</LANGU>
|
|
8
|
+
<DESCRIPT>Command Interface for ABAP Git Agent</DESCRIPT>
|
|
9
|
+
<EXPOSURE>2</EXPOSURE>
|
|
10
|
+
<STATE>1</STATE>
|
|
11
|
+
<UNICODE>X</UNICODE>
|
|
12
|
+
</VSEOINTERF>
|
|
13
|
+
</asx:values>
|
|
14
|
+
</asx:abap>
|
|
15
|
+
</abapGit>
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"* Use this source text module for the interface definition
|
|
2
|
+
"! <p class="shorttext synchronized">Utility Interface for ABAP Git Agent</p>
|
|
3
|
+
INTERFACE zif_abgagt_util PUBLIC.
|
|
4
|
+
|
|
5
|
+
"! Parse file name to extract object type and name
|
|
6
|
+
"! @parameter iv_file | File name (e.g., 'zcl_my_class.clas.abap')
|
|
7
|
+
"! @parameter ev_obj_type | Object type (e.g., 'CLAS')
|
|
8
|
+
"! @parameter ev_obj_name | Object name (e.g., 'ZCL_MY_CLASS')
|
|
9
|
+
METHODS parse_file_to_object
|
|
10
|
+
IMPORTING
|
|
11
|
+
iv_file TYPE string
|
|
12
|
+
EXPORTING
|
|
13
|
+
ev_obj_type TYPE string
|
|
14
|
+
ev_obj_name TYPE string.
|
|
15
|
+
|
|
16
|
+
"! Check activation log for errors
|
|
17
|
+
"! @return rv_has_error | ABAP_TRUE if errors found
|
|
18
|
+
METHODS check_log_for_errors
|
|
19
|
+
RETURNING
|
|
20
|
+
VALUE(rv_has_error) TYPE abap_bool.
|
|
21
|
+
|
|
22
|
+
"! Get detailed log information
|
|
23
|
+
"! @return rv_detail | Detailed log message
|
|
24
|
+
METHODS get_log_detail
|
|
25
|
+
RETURNING
|
|
26
|
+
VALUE(rv_detail) TYPE string.
|
|
27
|
+
|
|
28
|
+
ENDINTERFACE.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
+
<abapGit version="v1.0.0" serializer="LCL_OBJECT_INTF" serializer_version="v1.0.0">
|
|
3
|
+
<asx:abap xmlns:asx="http://www.sap.com/abapxml" version="1.0">
|
|
4
|
+
<asx:values>
|
|
5
|
+
<VSEOINTERF>
|
|
6
|
+
<CLSNAME>ZIF_ABGAGT_UTIL</CLSNAME>
|
|
7
|
+
<LANGU>E</LANGU>
|
|
8
|
+
<DESCRIPT>Utility Interface for ABAP Git Agent</DESCRIPT>
|
|
9
|
+
<EXPOSURE>2</EXPOSURE>
|
|
10
|
+
<STATE>1</STATE>
|
|
11
|
+
<UNICODE>X</UNICODE>
|
|
12
|
+
</VSEOINTERF>
|
|
13
|
+
</asx:values>
|
|
14
|
+
</asx:abap>
|
|
15
|
+
</abapGit>
|