mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-01 12:20:51 +08:00
git_services-commit, #348
This commit is contained in:
parent
f1c8d25d5b
commit
b822f3a850
|
@ -151,17 +151,22 @@ CONSTANTS: BEGIN OF gc_action,
|
|||
repo_remote_attach TYPE string VALUE 'repo_remote_attach',
|
||||
repo_remote_detach TYPE string VALUE 'repo_remote_detach',
|
||||
repo_remote_change TYPE string VALUE 'repo_remote_change',
|
||||
|
||||
abapgit_home TYPE string VALUE 'abapgit_home',
|
||||
abapgit_install TYPE string VALUE 'abapgit_install',
|
||||
|
||||
zip_import TYPE string VALUE 'zip_import',
|
||||
zip_export TYPE string VALUE 'zip_export',
|
||||
zip_package TYPE string VALUE 'zip_package',
|
||||
zip_transport TYPE string VALUE 'zip_transport',
|
||||
|
||||
git_pull TYPE string VALUE 'git_pull',
|
||||
git_reset TYPE string VALUE 'git_reset',
|
||||
git_branch_create TYPE string VALUE 'git_branch_create',
|
||||
git_branch_switch TYPE string VALUE 'git_branch_switch',
|
||||
git_branch_delete TYPE string VALUE 'git_branch_delete',
|
||||
git_commit TYPE string VALUE 'git_commit',
|
||||
|
||||
db_delete TYPE string VALUE 'db_delete',
|
||||
db_update TYPE string VALUE 'db_update',
|
||||
db_display TYPE string VALUE 'db_display',
|
||||
|
|
|
@ -28,7 +28,7 @@ CLASS lcl_gui DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app.
|
|||
END OF ty_page_stack.
|
||||
|
||||
DATA: mi_cur_page TYPE REF TO lif_gui_page,
|
||||
mt_stack TYPE TABLE OF ty_page_stack,
|
||||
mt_stack TYPE STANDARD TABLE OF ty_page_stack,
|
||||
mt_assets TYPE tt_w3urls,
|
||||
mo_router TYPE REF TO lcl_gui_router,
|
||||
mo_html_viewer TYPE REF TO cl_gui_html_viewer.
|
||||
|
@ -59,6 +59,13 @@ CLASS lcl_gui DEFINITION FINAL CREATE PRIVATE FRIENDS lcl_app.
|
|||
iv_replacing TYPE abap_bool DEFAULT abap_false
|
||||
RAISING lcx_exception.
|
||||
|
||||
METHODS handle_action
|
||||
IMPORTING action TYPE c
|
||||
frame TYPE c OPTIONAL
|
||||
getdata TYPE c OPTIONAL
|
||||
postdata TYPE cnht_post_data_tab OPTIONAL
|
||||
query_table TYPE cnht_query_table OPTIONAL.
|
||||
|
||||
ENDCLASS. "lcl_gui DEFINITION
|
||||
|
||||
*----------------------------------------------------------------------*
|
||||
|
@ -72,7 +79,7 @@ CLASS lcl_gui IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "constructor
|
||||
|
||||
METHOD on_event.
|
||||
METHOD handle_action.
|
||||
|
||||
DATA: lx_exception TYPE REF TO lcx_exception,
|
||||
li_page TYPE REF TO lif_gui_page,
|
||||
|
@ -129,6 +136,17 @@ CLASS lcl_gui IMPLEMENTATION.
|
|||
" Do nothing = gc_event_state-no_more_act
|
||||
ENDTRY.
|
||||
|
||||
ENDMETHOD. "handle_action
|
||||
|
||||
METHOD on_event.
|
||||
|
||||
handle_action(
|
||||
action = action
|
||||
frame = frame
|
||||
getdata = getdata
|
||||
postdata = postdata
|
||||
query_table = query_table ).
|
||||
|
||||
ENDMETHOD. "on_event
|
||||
|
||||
METHOD back.
|
||||
|
|
|
@ -129,6 +129,9 @@ CLASS lcl_gui_router IMPLEMENTATION.
|
|||
ev_state = gc_event_state-re_render.
|
||||
|
||||
" Repository services actions
|
||||
WHEN gc_action-repo_newoffline. " New offline repo
|
||||
lcl_services_repo=>new_offline( ).
|
||||
ev_state = gc_event_state-re_render.
|
||||
WHEN gc_action-repo_refresh. " Repo refresh
|
||||
lcl_services_repo=>refresh( lv_key ).
|
||||
ev_state = gc_event_state-re_render.
|
||||
|
@ -177,6 +180,12 @@ CLASS lcl_gui_router IMPLEMENTATION.
|
|||
WHEN gc_action-git_branch_create. " GIT Create new branch
|
||||
lcl_services_git=>create_branch( lv_key ).
|
||||
ev_state = gc_event_state-re_render.
|
||||
WHEN gc_action-git_branch_delete. " Delete remote branch
|
||||
lcl_services_git=>delete_branch( lv_key ).
|
||||
ev_state = gc_event_state-re_render.
|
||||
WHEN gc_action-git_branch_switch. " Switch branch
|
||||
lcl_services_git=>switch_branch( lv_key ).
|
||||
ev_state = gc_event_state-re_render.
|
||||
|
||||
"Others
|
||||
WHEN OTHERS.
|
||||
|
|
|
@ -6,13 +6,10 @@ CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
|||
|
||||
PUBLIC SECTION.
|
||||
|
||||
TYPES: BEGIN OF ty_commit_fields,
|
||||
repo_key TYPE lcl_persistence_repo=>ty_repo-key,
|
||||
username TYPE string,
|
||||
email TYPE string,
|
||||
comment TYPE string,
|
||||
body TYPE string,
|
||||
END OF ty_commit_fields.
|
||||
CONSTANTS: BEGIN OF c_action,
|
||||
commit_post TYPE string VALUE 'commit_post',
|
||||
commit_cancel TYPE string VALUE 'commit_cancel',
|
||||
END OF c_action.
|
||||
|
||||
METHODS:
|
||||
constructor
|
||||
|
@ -38,10 +35,7 @@ CLASS lcl_gui_page_commit DEFINITION FINAL INHERITING FROM lcl_gui_page_super.
|
|||
styles
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
||||
scripts
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper,
|
||||
commit_push
|
||||
IMPORTING it_postdata TYPE cnht_post_data_tab
|
||||
RAISING lcx_exception.
|
||||
RETURNING VALUE(ro_html) TYPE REF TO lcl_html_helper.
|
||||
|
||||
ENDCLASS.
|
||||
|
||||
|
@ -54,6 +48,50 @@ CLASS lcl_gui_page_commit IMPLEMENTATION.
|
|||
mo_stage = io_stage.
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_gui_page~on_event.
|
||||
|
||||
DATA: ls_commit TYPE lcl_services_git=>ty_commit_fields.
|
||||
|
||||
CASE iv_action.
|
||||
WHEN c_action-commit_post.
|
||||
|
||||
lcl_html_action_utils=>parse_commit_request( EXPORTING it_postdata = it_postdata
|
||||
IMPORTING es_fields = ls_commit ).
|
||||
|
||||
lcl_services_git=>commit( is_commit = ls_commit
|
||||
io_repo = mo_repo
|
||||
io_stage = mo_stage ).
|
||||
|
||||
ev_state = gc_event_state-go_back_to_bookmark.
|
||||
|
||||
WHEN c_action-commit_cancel.
|
||||
ev_state = gc_event_state-go_back.
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_gui_page~render.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( header( io_include_style = styles( ) ) ).
|
||||
ro_html->add( title( 'COMMIT' ) ).
|
||||
|
||||
ro_html->add( '<div class="repo">' ).
|
||||
ro_html->add( render_repo_top(
|
||||
io_repo = mo_repo
|
||||
iv_show_package = abap_false
|
||||
iv_branch = mo_stage->get_branch_name( ) ) ).
|
||||
|
||||
ro_html->add( render_menu( ) ).
|
||||
ro_html->add( render_form( ) ).
|
||||
ro_html->add( render_stage( ) ).
|
||||
ro_html->add( '</div>' ).
|
||||
|
||||
ro_html->add( footer( io_include_script = scripts( ) ) ).
|
||||
|
||||
ENDMETHOD. "lif_gui_page~render
|
||||
|
||||
METHOD render_stage.
|
||||
|
||||
DATA: lt_stage TYPE lcl_stage=>ty_stage_tt.
|
||||
|
@ -177,40 +215,6 @@ CLASS lcl_gui_page_commit IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "render_menu
|
||||
|
||||
METHOD lif_gui_page~on_event.
|
||||
|
||||
CASE iv_action.
|
||||
WHEN 'commit_post'.
|
||||
commit_push( it_postdata ).
|
||||
ev_state = gc_event_state-go_back_to_bookmark.
|
||||
WHEN 'commit_cancel'.
|
||||
ev_state = gc_event_state-go_back.
|
||||
ENDCASE.
|
||||
|
||||
ENDMETHOD.
|
||||
|
||||
METHOD lif_gui_page~render.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
||||
ro_html->add( header( io_include_style = styles( ) ) ).
|
||||
ro_html->add( title( 'COMMIT' ) ).
|
||||
|
||||
ro_html->add( '<div class="repo">' ).
|
||||
ro_html->add( render_repo_top(
|
||||
io_repo = mo_repo
|
||||
iv_show_package = abap_false
|
||||
iv_branch = mo_stage->get_branch_name( ) ) ).
|
||||
|
||||
ro_html->add( render_menu( ) ).
|
||||
ro_html->add( render_form( ) ).
|
||||
ro_html->add( render_stage( ) ).
|
||||
ro_html->add( '</div>' ).
|
||||
|
||||
ro_html->add( footer( io_include_script = scripts( ) ) ).
|
||||
|
||||
ENDMETHOD. "lif_gui_page~render
|
||||
|
||||
METHOD styles.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
@ -252,44 +256,6 @@ CLASS lcl_gui_page_commit IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "styles
|
||||
|
||||
METHOD commit_push.
|
||||
|
||||
DATA: ls_fields TYPE ty_commit_fields,
|
||||
ls_comment TYPE ty_comment,
|
||||
lo_user TYPE REF TO lcl_persistence_user.
|
||||
|
||||
|
||||
lcl_html_action_utils=>parse_commit_request( EXPORTING it_postdata = it_postdata
|
||||
IMPORTING es_fields = ls_fields ).
|
||||
|
||||
lo_user = lcl_app=>user( ).
|
||||
lo_user->set_repo_username( iv_url = mo_repo->get_url( ) iv_username = ls_fields-username ).
|
||||
lo_user->set_repo_email( iv_url = mo_repo->get_url( ) iv_email = ls_fields-email ).
|
||||
|
||||
IF ls_fields-username IS INITIAL.
|
||||
lcx_exception=>raise( 'empty username' ).
|
||||
ELSEIF ls_fields-email IS INITIAL.
|
||||
lcx_exception=>raise( 'empty email' ).
|
||||
ELSEIF ls_fields-comment IS INITIAL.
|
||||
lcx_exception=>raise( 'empty comment' ).
|
||||
ENDIF.
|
||||
|
||||
ls_comment-username = ls_fields-username.
|
||||
ls_comment-email = ls_fields-email.
|
||||
ls_comment-comment = ls_fields-comment.
|
||||
|
||||
IF NOT ls_fields-body IS INITIAL.
|
||||
CONCATENATE ls_comment-comment gc_newline ls_fields-body
|
||||
INTO ls_comment-comment.
|
||||
ENDIF.
|
||||
|
||||
mo_repo->push( is_comment = ls_comment
|
||||
io_stage = mo_stage ).
|
||||
|
||||
COMMIT WORK.
|
||||
|
||||
ENDMETHOD. "commit_push
|
||||
|
||||
METHOD scripts.
|
||||
|
||||
CREATE OBJECT ro_html.
|
||||
|
|
|
@ -96,15 +96,6 @@ CLASS lcl_gui_page_main IMPLEMENTATION.
|
|||
lv_key = iv_getdata.
|
||||
|
||||
CASE iv_action.
|
||||
WHEN gc_action-repo_newoffline. " New offline repo
|
||||
lcl_services_repo=>new_offline( ).
|
||||
ev_state = gc_event_state-re_render.
|
||||
WHEN gc_action-git_branch_delete. " Delete remote branch
|
||||
lcl_services_git=>delete_branch( lv_key ).
|
||||
ev_state = gc_event_state-re_render.
|
||||
WHEN gc_action-git_branch_switch. " Switch branch
|
||||
lcl_services_git=>switch_branch( lv_key ).
|
||||
ev_state = gc_event_state-re_render.
|
||||
WHEN c_actions-show. " Change displayed repo
|
||||
lcl_app=>user( )->set_repo_show( lv_key ).
|
||||
ev_state = gc_event_state-re_render.
|
||||
|
|
|
@ -4,6 +4,15 @@
|
|||
|
||||
CLASS lcl_services_git DEFINITION FINAL.
|
||||
PUBLIC SECTION.
|
||||
|
||||
TYPES: BEGIN OF ty_commit_fields,
|
||||
repo_key TYPE lcl_persistence_repo=>ty_repo-key,
|
||||
username TYPE string,
|
||||
email TYPE string,
|
||||
comment TYPE string,
|
||||
body TYPE string,
|
||||
END OF ty_commit_fields.
|
||||
|
||||
CLASS-METHODS pull
|
||||
IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key
|
||||
RAISING lcx_exception lcx_cancel.
|
||||
|
@ -24,6 +33,12 @@ CLASS lcl_services_git DEFINITION FINAL.
|
|||
IMPORTING iv_key TYPE lcl_persistence_repo=>ty_repo-key
|
||||
RAISING lcx_exception lcx_cancel.
|
||||
|
||||
CLASS-METHODS commit
|
||||
IMPORTING io_repo TYPE REF TO lcl_repo_online
|
||||
is_commit TYPE ty_commit_fields
|
||||
io_stage TYPE REF TO lcl_stage
|
||||
RAISING lcx_exception lcx_cancel.
|
||||
|
||||
ENDCLASS. " lcl_services_git
|
||||
|
||||
CLASS lcl_services_git IMPLEMENTATION.
|
||||
|
@ -163,4 +178,39 @@ CLASS lcl_services_git IMPLEMENTATION.
|
|||
|
||||
ENDMETHOD. "delete_branch
|
||||
|
||||
METHOD commit.
|
||||
|
||||
DATA: ls_comment TYPE ty_comment,
|
||||
lo_user TYPE REF TO lcl_persistence_user.
|
||||
|
||||
lo_user = lcl_app=>user( ).
|
||||
lo_user->set_repo_username( iv_url = io_repo->get_url( )
|
||||
iv_username = is_commit-username ).
|
||||
lo_user->set_repo_email( iv_url = io_repo->get_url( )
|
||||
iv_email = is_commit-email ).
|
||||
|
||||
IF is_commit-username IS INITIAL.
|
||||
lcx_exception=>raise( 'Commit: empty username' ).
|
||||
ELSEIF is_commit-email IS INITIAL.
|
||||
lcx_exception=>raise( 'Commit: empty email' ).
|
||||
ELSEIF is_commit-comment IS INITIAL.
|
||||
lcx_exception=>raise( 'Commit: empty comment' ).
|
||||
ENDIF.
|
||||
|
||||
ls_comment-username = is_commit-username.
|
||||
ls_comment-email = is_commit-email.
|
||||
ls_comment-comment = is_commit-comment.
|
||||
|
||||
IF NOT is_commit-body IS INITIAL.
|
||||
CONCATENATE ls_comment-comment is_commit-body
|
||||
INTO ls_comment-comment SEPARATED BY gc_newline.
|
||||
ENDIF.
|
||||
|
||||
io_repo->push( is_comment = ls_comment
|
||||
io_stage = io_stage ).
|
||||
|
||||
COMMIT WORK.
|
||||
|
||||
ENDMETHOD. "commit
|
||||
|
||||
ENDCLASS. " lcl_services_git
|
Loading…
Reference in New Issue
Block a user