scm: Fix naming and hide implementation details

Also don't set credentials for push - only needed for commit
This commit is contained in:
Andy Williams 2017-06-07 14:32:10 -07:00
parent 9cf9fa415c
commit b257e81955
4 changed files with 31 additions and 50 deletions

View File

@ -988,7 +988,7 @@ _edi_menu_scm_commit_cb(void *data EINA_UNUSED, Evas_Object *obj EINA_UNUSED,
return; 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); 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; return;
} }
edi_scm_credits(_edi_project_config->user_fullname, _edi_project_config->user_email);
edi_consolepanel_clear(); edi_consolepanel_clear();
edi_consolepanel_show(); edi_consolepanel_show();
edi_scm_push(); edi_scm_push();

View File

@ -504,7 +504,7 @@ _edi_settings_project_create(Evas_Object *parent)
evas_object_show(label); evas_object_show(label);
entry_remote = elm_entry_add(hbox); 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()); 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_weight_set(entry_remote, 0.75, 0.0);
evas_object_size_hint_align_set(entry_remote, EVAS_HINT_FILL, EVAS_HINT_FILL); evas_object_size_hint_align_set(entry_remote, EVAS_HINT_FILL, EVAS_HINT_FILL);

View File

@ -205,63 +205,50 @@ _edi_scm_git_remote_add(const char *remote_url)
static const char * static const char *
_edi_scm_git_remote_name_get(void) _edi_scm_git_remote_name_get(void)
{ {
char *fullname; static char *_remote_name;
Edi_Scm_Engine *engine = _edi_scm_global_object; Edi_Scm_Engine *engine = _edi_scm_global_object;
if (!engine) if (!engine)
return NULL; return NULL;
if (!engine->remote_name) if (!_remote_name)
{ _remote_name = _edi_scm_exec_response("git config --get user.name");
fullname = _edi_scm_exec_response("git config --get user.name");
if (fullname)
{
engine->remote_name = eina_stringshare_add(fullname);
free(fullname);
}
}
return engine->remote_name; return _remote_name;
} }
static const char * static const char *
_edi_scm_git_remote_email_get(void) _edi_scm_git_remote_email_get(void)
{ {
char *email; static char *_remote_email;
Edi_Scm_Engine *engine = _edi_scm_global_object; Edi_Scm_Engine *engine = _edi_scm_global_object;
if (!engine) if (!engine)
return NULL; return NULL;
if (!engine->remote_email) if (!_remote_email)
{ _remote_email = _edi_scm_exec_response("git config --get user.email");
email = _edi_scm_exec_response("git config --get user.email");
if (email)
{
engine->remote_email = eina_stringshare_add(email);
free(email);
}
}
return engine->remote_email; return _remote_email;
} }
static const char * static const char *
_edi_scm_git_remote_url_get(void) _edi_scm_git_remote_url_get(void)
{ {
static char *_remote_url;
Edi_Scm_Engine *engine = _edi_scm_global_object; Edi_Scm_Engine *engine = _edi_scm_global_object;
if (!engine) if (!engine)
return NULL; return NULL;
if (!engine->remote_url) if (!_remote_url)
engine->remote_url = eina_stringshare_add(_edi_scm_exec_response("git remote get-url origin")); _remote_url = _edi_scm_exec_response("git remote get-url origin");
return engine->remote_url; return _remote_url;
} }
static int static int
_edi_scm_credits(const char *name, const char *email) _edi_scm_git_credentials_set(const char *name, const char *email)
{ {
int code; int code;
Eina_Strbuf *command = eina_strbuf_new(); Eina_Strbuf *command = eina_strbuf_new();
@ -300,7 +287,7 @@ edi_scm_remote_enabled(void)
if (!e) if (!e)
return EINA_FALSE; return EINA_FALSE;
return !!e->_remote_url_get(); return !!e->remote_url_get();
} }
EAPI Eina_Bool EAPI Eina_Bool
@ -334,7 +321,6 @@ edi_scm_shutdown()
eina_stringshare_del(engine->name); eina_stringshare_del(engine->name);
eina_stringshare_del(engine->directory); eina_stringshare_del(engine->directory);
eina_stringshare_del(engine->path); eina_stringshare_del(engine->path);
eina_stringshare_del(engine->remote_url);
free(engine); free(engine);
_edi_scm_global_object = NULL; _edi_scm_global_object = NULL;
@ -428,11 +414,11 @@ edi_scm_stash(void)
} }
EAPI int 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(); Edi_Scm_Engine *e = edi_scm_engine_get();
return e->credits(user, email); return e->credentials_set(user, email);
} }
static void static void
@ -482,7 +468,6 @@ _edi_scm_git_init()
_edi_scm_global_object = engine = calloc(1, sizeof(Edi_Scm_Engine)); _edi_scm_global_object = engine = calloc(1, sizeof(Edi_Scm_Engine));
engine->name = eina_stringshare_add("git"); engine->name = eina_stringshare_add("git");
engine->directory = 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_add = _edi_scm_git_file_add;
engine->file_mod = _edi_scm_git_file_mod; engine->file_mod = _edi_scm_git_file_mod;
engine->file_del = _edi_scm_git_file_del; engine->file_del = _edi_scm_git_file_del;
@ -492,11 +477,12 @@ _edi_scm_git_init()
engine->pull = _edi_scm_git_pull; engine->pull = _edi_scm_git_pull;
engine->push = _edi_scm_git_push; engine->push = _edi_scm_git_push;
engine->stash = _edi_scm_git_stash; 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_add = _edi_scm_git_remote_add;
engine->_remote_email_get = _edi_scm_git_remote_email_get; engine->remote_name_get = _edi_scm_git_remote_name_get;
engine->_remote_url_get = _edi_scm_git_remote_url_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; return engine;
} }

View File

@ -13,18 +13,18 @@ extern "C" {
typedef int (scm_fn_add)(const char *path); typedef int (scm_fn_add)(const char *path);
typedef int (scm_fn_mod)(const char *path); typedef int (scm_fn_mod)(const char *path);
typedef int (scm_fn_del)(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_move)(const char *src, const char *dest);
typedef int (scm_fn_commit)(const char *message); 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_status)(void);
typedef int (scm_fn_push)(void); typedef int (scm_fn_push)(void);
typedef int (scm_fn_pull)(void); typedef int (scm_fn_pull)(void);
typedef int (scm_fn_stash)(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_name)(void);
typedef const char * (scm_fn_remote_email)(void); typedef const char * (scm_fn_remote_email)(void);
typedef const char * (scm_fn_remote_url)(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 typedef struct _Edi_Scm_Engine
{ {
@ -32,12 +32,6 @@ typedef struct _Edi_Scm_Engine
const char *directory; const char *directory;
const char *path; 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_add *file_add;
scm_fn_mod *file_mod; scm_fn_mod *file_mod;
scm_fn_del *file_del; scm_fn_del *file_del;
@ -48,9 +42,11 @@ typedef struct _Edi_Scm_Engine
scm_fn_pull *pull; scm_fn_pull *pull;
scm_fn_stash *stash; scm_fn_stash *stash;
scm_fn_remote_name *_remote_name_get; scm_fn_remote_add *remote_add;
scm_fn_remote_email *_remote_email_get; scm_fn_remote_name *remote_name_get;
scm_fn_remote_url *_remote_url_get; scm_fn_remote_email *remote_email_get;
scm_fn_remote_url *remote_url_get;
scm_fn_credentials *credentials_set;
} Edi_Scm_Engine; } Edi_Scm_Engine;
/** /**
@ -150,7 +146,7 @@ int edi_scm_move(const char *src, const char *dest);
* *
* @ingroup Scm * @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. * Push to SCM remote repository.