diff options
Diffstat (limited to 'src/is_updated.c')
| -rw-r--r-- | src/is_updated.c | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/src/is_updated.c b/src/is_updated.c index 68e6d2e..6ed53d3 100644 --- a/src/is_updated.c +++ b/src/is_updated.c @@ -5,15 +5,33 @@ #include <unistd.h> #include "is_updated.h" + #include "cmd_out.h" +#include "lua_state.h" bool is_updated(const char *src) { - if (src && strlen(src) > 0 && chdir(src) != 0) { - return false; - } - - char *output = cmd_out("git pull"); - bool result = (strstr(output, "Already up to date.") != NULL); - free(output); + bool result = false; + if (src && strlen(src) > 0 && chdir(src) != 0) return result; + char *bldit_pkgver = bldit_pkg_getver(); + char *git_tag = cmd_out("git tag | tail -n 1"); + result = (strstr(git_tag, bldit_pkgver) != NULL); + char *git_pull = cmd_out("git pull"); + result = (strstr(git_pull, "Already up to date.") != NULL); + free(git_tag); + free(git_pull); return result; +} + +bool is_bldit_usable() { + char* bldit_version = bldit_getver(); + if (strcmp(bldit_version, version) == 0) return true; + bool prev_pass = false; + for (int i = 0; i < strlen(bldit_version); i++) { + if (bldit_version[i] == '.') continue; + if ((bldit_version[i] - '0') <= (version[i] - '0')) { + prev_pass = ((bldit_version[i] - '0') != (version[i] - '0')); + continue; + } else return prev_pass; + } + return true; }
\ No newline at end of file |
