mirror of
https://github.com/abapGit/abapGit.git
synced 2025-05-02 04:36:49 +08:00
182 lines
5.4 KiB
ABAP
182 lines
5.4 KiB
ABAP
*&---------------------------------------------------------------------*
|
|
*& Include ZABAPGIT_SERVICES_ABAPGIT
|
|
*&---------------------------------------------------------------------*
|
|
|
|
CLASS lcl_services_abapgit DEFINITION FINAL.
|
|
PUBLIC SECTION.
|
|
|
|
CONSTANTS c_abapgit_homepage TYPE string
|
|
VALUE 'http://www.abapgit.org' ##NO_TEXT.
|
|
CONSTANTS c_abapgit_wikipage TYPE string
|
|
VALUE 'http://larshp.github.io/abapGit'.
|
|
CONSTANTS c_package_abapgit TYPE devclass
|
|
VALUE '$ABAPGIT'.
|
|
CONSTANTS c_package_plugins TYPE devclass
|
|
VALUE '$ABAPGIT_PLUGINS'.
|
|
CONSTANTS c_abapgit_url TYPE string
|
|
VALUE 'https://github.com/larshp/abapGit.git'.
|
|
CONSTANTS c_plugins_url TYPE string
|
|
VALUE 'https://github.com/larshp/abapGit-plugins.git'.
|
|
|
|
CLASS-METHODS open_abapgit_homepage
|
|
RAISING zcx_abapgit_exception.
|
|
|
|
CLASS-METHODS open_abapgit_wikipage
|
|
RAISING zcx_abapgit_exception.
|
|
|
|
CLASS-METHODS install_abapgit
|
|
RAISING zcx_abapgit_exception lcx_cancel.
|
|
|
|
CLASS-METHODS install_abapgit_pi
|
|
RAISING zcx_abapgit_exception lcx_cancel.
|
|
|
|
CLASS-METHODS is_installed
|
|
RETURNING VALUE(rv_installed) TYPE abap_bool.
|
|
|
|
CLASS-METHODS is_installed_pi
|
|
RETURNING VALUE(rv_installed) TYPE abap_bool.
|
|
|
|
PRIVATE SECTION.
|
|
|
|
CLASS-METHODS do_install
|
|
IMPORTING iv_title TYPE c
|
|
iv_text TYPE c
|
|
iv_url TYPE string
|
|
iv_package TYPE devclass
|
|
RAISING zcx_abapgit_exception.
|
|
|
|
ENDCLASS. "lcl_services_abapgit
|
|
|
|
CLASS lcl_services_abapgit IMPLEMENTATION.
|
|
|
|
METHOD open_abapgit_homepage.
|
|
|
|
cl_gui_frontend_services=>execute(
|
|
EXPORTING document = c_abapgit_homepage
|
|
EXCEPTIONS OTHERS = 1 ).
|
|
IF sy-subrc <> 0.
|
|
zcx_abapgit_exception=>raise( 'Opening page in external browser failed.' ).
|
|
ENDIF.
|
|
|
|
ENDMETHOD. "open_abapgit_homepage
|
|
|
|
METHOD open_abapgit_wikipage.
|
|
|
|
cl_gui_frontend_services=>execute(
|
|
EXPORTING document = c_abapgit_wikipage
|
|
EXCEPTIONS OTHERS = 1 ).
|
|
IF sy-subrc <> 0.
|
|
zcx_abapgit_exception=>raise( 'Opening page in external browser failed.' ).
|
|
ENDIF.
|
|
|
|
ENDMETHOD. "open_abapgit_wikipage
|
|
|
|
METHOD install_abapgit.
|
|
|
|
CONSTANTS lc_title TYPE c LENGTH 40 VALUE 'Install abapGit'.
|
|
DATA lv_text TYPE c LENGTH 100.
|
|
|
|
IF is_installed( ) = abap_true.
|
|
lv_text = 'Seems like abapGit package is already installed. No changes to be done'.
|
|
lcl_popups=>popup_to_inform(
|
|
titlebar = lc_title
|
|
text_message = lv_text ).
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
lv_text = |Confirm to install current version of abapGit to package { c_package_abapgit }|.
|
|
|
|
do_install( iv_title = lc_title
|
|
iv_text = lv_text
|
|
iv_url = c_abapgit_url
|
|
iv_package = c_package_abapgit ).
|
|
|
|
ENDMETHOD. "install_abapgit
|
|
|
|
METHOD install_abapgit_pi.
|
|
|
|
CONSTANTS lc_title TYPE c LENGTH 40 VALUE 'Install abapGit plugins'.
|
|
DATA lv_text TYPE c LENGTH 100.
|
|
|
|
IF is_installed_pi( ) = abap_true.
|
|
lv_text = 'Seems like abapGit plugins package is already installed. No changes to be done'.
|
|
lcl_popups=>popup_to_inform(
|
|
titlebar = lc_title
|
|
text_message = lv_text ).
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
lv_text = |Confirm to install current version abapGit plugins to package {
|
|
c_package_plugins }|.
|
|
|
|
do_install( iv_title = lc_title
|
|
iv_text = lv_text
|
|
iv_url = c_plugins_url
|
|
iv_package = c_package_plugins ).
|
|
|
|
ENDMETHOD. "install_abapgit_pi
|
|
|
|
METHOD do_install.
|
|
|
|
DATA lo_repo TYPE REF TO lcl_repo_online.
|
|
DATA lv_answer TYPE c LENGTH 1.
|
|
|
|
lv_answer = lcl_popups=>popup_to_confirm(
|
|
titlebar = iv_title
|
|
text_question = iv_text
|
|
text_button_1 = 'Continue'
|
|
text_button_2 = 'Cancel'
|
|
default_button = '2'
|
|
display_cancel_button = abap_false ). "#EC NOTEXT
|
|
|
|
IF lv_answer <> '1'.
|
|
RETURN.
|
|
ENDIF.
|
|
|
|
IF abap_false = lcl_app=>repo_srv( )->is_repo_installed(
|
|
iv_url = iv_url
|
|
iv_target_package = iv_package ).
|
|
|
|
lcl_sap_package=>create_local( iv_package ).
|
|
|
|
lo_repo = lcl_app=>repo_srv( )->new_online(
|
|
iv_url = iv_url
|
|
iv_branch_name = 'refs/heads/master'
|
|
iv_package = iv_package ) ##NO_TEXT.
|
|
|
|
lo_repo->status( ). " check for errors
|
|
lo_repo->deserialize( ).
|
|
lcl_services_repo=>toggle_favorite( lo_repo->get_key( ) ).
|
|
ENDIF.
|
|
|
|
COMMIT WORK.
|
|
|
|
ENDMETHOD. " do_install.
|
|
|
|
|
|
METHOD is_installed.
|
|
|
|
TRY.
|
|
rv_installed = lcl_app=>repo_srv( )->is_repo_installed( c_abapgit_url ).
|
|
" TODO, alternative checks for presence in the system
|
|
CATCH zcx_abapgit_exception.
|
|
" cannot be installed anyway in this case, e.g. no connection
|
|
rv_installed = abap_false.
|
|
ENDTRY.
|
|
|
|
ENDMETHOD. "is_installed
|
|
|
|
METHOD is_installed_pi.
|
|
|
|
TRY.
|
|
rv_installed = lcl_app=>repo_srv( )->is_repo_installed( c_plugins_url ).
|
|
" TODO, alternative checks for presence in the system
|
|
CATCH zcx_abapgit_exception.
|
|
" cannot be installed anyway in this case, e.g. no connection
|
|
rv_installed = abap_false.
|
|
ENDTRY.
|
|
|
|
ENDMETHOD. "is_installed_pi
|
|
|
|
ENDCLASS. "lcl_services_abapgit
|