ajwillia-ms pushed a commit to branch master.

http://git.enlightenment.org/tools/edi.git/commit/?id=b257e819555a280934a0db71eb2463c31213423a

commit b257e819555a280934a0db71eb2463c31213423a
Author: Andy Williams <a...@andywilliams.me>
Date:   Wed Jun 7 14:32:10 2017 -0700

    scm: Fix naming and hide implementation details
    
    Also don't set credentials for push - only needed for commit
---
 src/bin/edi_main.c             |  3 +--
 src/bin/screens/edi_settings.c |  2 +-
 src/lib/edi_scm.c              | 56 ++++++++++++++++--------------------------
 src/lib/edi_scm.h              | 20 ++++++---------
 4 files changed, 31 insertions(+), 50 deletions(-)

diff --git a/src/bin/edi_main.c b/src/bin/edi_main.c
index 816c5d7..cb66905 100644
--- a/src/bin/edi_main.c
+++ b/src/bin/edi_main.c
@@ -988,7 +988,7 @@ _edi_menu_scm_commit_cb(void *data EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED,
         return;
      }
 
-   edi_scm_credits(_edi_project_config->user_fullname, 
_edi_project_config->user_email);
+   edi_scm_credentials_set(_edi_project_config->user_fullname, 
_edi_project_config->user_email);
    edi_scm_screens_commit(_edi_main_win);
 }
 
@@ -1028,7 +1028,6 @@ _edi_menu_scm_push_cb(void *data EINA_UNUSED, Evas_Object 
*obj EINA_UNUSED,
         return;
      }
 
-   edi_scm_credits(_edi_project_config->user_fullname, 
_edi_project_config->user_email);
    edi_consolepanel_clear();
    edi_consolepanel_show();
    edi_scm_push();
diff --git a/src/bin/screens/edi_settings.c b/src/bin/screens/edi_settings.c
index 2516ad2..0683331 100644
--- a/src/bin/screens/edi_settings.c
+++ b/src/bin/screens/edi_settings.c
@@ -504,7 +504,7 @@ _edi_settings_project_create(Evas_Object *parent)
    evas_object_show(label);
 
    entry_remote = elm_entry_add(hbox);
-   elm_object_text_set(entry_remote, engine->remote_url);
+   elm_object_text_set(entry_remote, engine->remote_url_get());
    elm_object_disabled_set(entry_remote, edi_scm_remote_enabled());
    evas_object_size_hint_weight_set(entry_remote, 0.75, 0.0);
    evas_object_size_hint_align_set(entry_remote, EVAS_HINT_FILL, 
EVAS_HINT_FILL);
diff --git a/src/lib/edi_scm.c b/src/lib/edi_scm.c
index 254d5ce..a7bf74f 100644
--- a/src/lib/edi_scm.c
+++ b/src/lib/edi_scm.c
@@ -205,63 +205,50 @@ _edi_scm_git_remote_add(const char *remote_url)
 static const char *
 _edi_scm_git_remote_name_get(void)
 {
-   char *fullname;
+   static char *_remote_name;
    Edi_Scm_Engine *engine = _edi_scm_global_object;
 
    if (!engine)
      return NULL;
 
-   if (!engine->remote_name)
-     {
-        fullname = _edi_scm_exec_response("git config --get user.name");
-        if (fullname)
-          {
-             engine->remote_name = eina_stringshare_add(fullname);
-             free(fullname);
-          }
-     }
+   if (!_remote_name)
+     _remote_name = _edi_scm_exec_response("git config --get user.name");
 
-   return engine->remote_name;
+   return _remote_name;
 }
 
 static const char *
 _edi_scm_git_remote_email_get(void)
 {
-   char *email;
+   static char *_remote_email;
    Edi_Scm_Engine *engine = _edi_scm_global_object;
 
    if (!engine)
      return NULL;
 
-   if (!engine->remote_email)
-     {
-        email = _edi_scm_exec_response("git config --get user.email");
-        if (email)
-          {
-             engine->remote_email = eina_stringshare_add(email);
-             free(email);
-          }
-     }
+   if (!_remote_email)
+     _remote_email = _edi_scm_exec_response("git config --get user.email");
 
-   return engine->remote_email;
+   return _remote_email;
 }
 
 static const char *
 _edi_scm_git_remote_url_get(void)
 {
+   static char *_remote_url;
    Edi_Scm_Engine *engine = _edi_scm_global_object;
 
    if (!engine)
      return NULL;
 
-   if (!engine->remote_url)
-     engine->remote_url = eina_stringshare_add(_edi_scm_exec_response("git 
remote get-url origin"));
+   if (!_remote_url)
+     _remote_url = _edi_scm_exec_response("git remote get-url origin");
 
-   return engine->remote_url;
+   return _remote_url;
 }
 
 static int
-_edi_scm_credits(const char *name, const char *email)
+_edi_scm_git_credentials_set(const char *name, const char *email)
 {
    int code;
    Eina_Strbuf *command = eina_strbuf_new();
@@ -300,7 +287,7 @@ edi_scm_remote_enabled(void)
    if (!e)
      return EINA_FALSE;
 
-   return !!e->_remote_url_get();
+   return !!e->remote_url_get();
 }
 
 EAPI Eina_Bool
@@ -334,7 +321,6 @@ edi_scm_shutdown()
    eina_stringshare_del(engine->name);
    eina_stringshare_del(engine->directory);
    eina_stringshare_del(engine->path);
-   eina_stringshare_del(engine->remote_url);
    free(engine);
 
    _edi_scm_global_object = NULL;
@@ -428,11 +414,11 @@ edi_scm_stash(void)
 }
 
 EAPI int
-edi_scm_credits(const char *user, const char *email)
+edi_scm_credentials_set(const char *user, const char *email)
 {
    Edi_Scm_Engine *e = edi_scm_engine_get();
 
-   return e->credits(user, email);
+   return e->credentials_set(user, email);
 }
 
 static void
@@ -482,7 +468,6 @@ _edi_scm_git_init()
    _edi_scm_global_object = engine = calloc(1, sizeof(Edi_Scm_Engine));
    engine->name       = eina_stringshare_add("git");
    engine->directory  = eina_stringshare_add(".git");
-   engine->credits    = _edi_scm_credits;
    engine->file_add   = _edi_scm_git_file_add;
    engine->file_mod   = _edi_scm_git_file_mod;
    engine->file_del   = _edi_scm_git_file_del;
@@ -492,11 +477,12 @@ _edi_scm_git_init()
    engine->pull       = _edi_scm_git_pull;
    engine->push       = _edi_scm_git_push;
    engine->stash      = _edi_scm_git_stash;
-   engine->remote_add = _edi_scm_git_remote_add;
 
-   engine->_remote_name_get = _edi_scm_git_remote_name_get;
-   engine->_remote_email_get = _edi_scm_git_remote_email_get;
-   engine->_remote_url_get = _edi_scm_git_remote_url_get;
+   engine->remote_add       = _edi_scm_git_remote_add;
+   engine->remote_name_get  = _edi_scm_git_remote_name_get;
+   engine->remote_email_get = _edi_scm_git_remote_email_get;
+   engine->remote_url_get   = _edi_scm_git_remote_url_get;
+   engine->credentials_set  = _edi_scm_git_credentials_set;
 
    return engine;
 }
diff --git a/src/lib/edi_scm.h b/src/lib/edi_scm.h
index 64e4a73..71d9931 100644
--- a/src/lib/edi_scm.h
+++ b/src/lib/edi_scm.h
@@ -13,18 +13,18 @@ extern "C" {
 typedef int (scm_fn_add)(const char *path);
 typedef int (scm_fn_mod)(const char *path);
 typedef int (scm_fn_del)(const char *path);
-typedef int (scm_fn_credits)(const char *name, const char *email);
 typedef int (scm_fn_move)(const char *src, const char *dest);
 typedef int (scm_fn_commit)(const char *message);
-typedef int (scm_fn_remote_add)(const char *remote_url);
 typedef int (scm_fn_status)(void);
 typedef int (scm_fn_push)(void);
 typedef int (scm_fn_pull)(void);
 typedef int (scm_fn_stash)(void);
 
+typedef int (scm_fn_remote_add)(const char *remote_url);
 typedef const char * (scm_fn_remote_name)(void);
 typedef const char * (scm_fn_remote_email)(void);
 typedef const char * (scm_fn_remote_url)(void);
+typedef int (scm_fn_credentials)(const char *name, const char *email);
 
 typedef struct _Edi_Scm_Engine
 {
@@ -32,12 +32,6 @@ typedef struct _Edi_Scm_Engine
    const char     *directory;
    const char     *path;
 
-   scm_fn_remote_add *remote_add;
-   const char        *remote_url;
-   const char        *remote_name;
-   const char        *remote_email;
-
-   scm_fn_credits *credits;
    scm_fn_add     *file_add;
    scm_fn_mod     *file_mod;
    scm_fn_del     *file_del;
@@ -48,9 +42,11 @@ typedef struct _Edi_Scm_Engine
    scm_fn_pull    *pull;
    scm_fn_stash   *stash;
 
-   scm_fn_remote_name  *_remote_name_get;
-   scm_fn_remote_email *_remote_email_get;
-   scm_fn_remote_url   *_remote_url_get;
+   scm_fn_remote_add   *remote_add;
+   scm_fn_remote_name  *remote_name_get;
+   scm_fn_remote_email *remote_email_get;
+   scm_fn_remote_url   *remote_url_get;
+   scm_fn_credentials  *credentials_set;
 } Edi_Scm_Engine;
 
 /**
@@ -150,7 +146,7 @@ int edi_scm_move(const char *src, const char *dest);
  *
  * @ingroup Scm
  */
-int edi_scm_credits(const char *user, const char *email);
+int edi_scm_credentials_set(const char *user, const char *email);
 
 /**
  * Push to SCM remote repository.

-- 


Reply via email to