From 5e3882f87a94de4d1880aed43c9b4b2b26e03c68 Mon Sep 17 00:00:00 2001 From: Eduardo Bart Date: Sat, 18 Aug 2012 14:08:05 -0300 Subject: [PATCH] Add libgit2 library, new mingw32 libraries will be uploaded soon --- CMakeLists.txt | 3 +- modules/corelib/ui/uiresizeborder.lua | 26 +++++------ modules/game_minimap/minimap.lua | 12 ++--- src/framework/CMakeLists.txt | 16 ++++++- src/framework/cmake/FindEGL.cmake | 2 +- src/framework/cmake/FindGLEW.cmake | 2 +- src/framework/cmake/FindGMP.cmake | 2 +- src/framework/cmake/FindGit2.cmake | 16 +++++++ src/framework/cmake/FindLua.cmake | 2 +- src/framework/cmake/FindLuaJIT.cmake | 2 +- src/framework/cmake/FindMySQL.cmake | 4 +- src/framework/cmake/FindOgg.cmake | 2 +- src/framework/cmake/FindOpenAL.cmake | 4 +- src/framework/cmake/FindOpenGLES1.cmake | 2 +- src/framework/cmake/FindOpenGLES2.cmake | 2 +- src/framework/cmake/FindOpenSSL.cmake | 4 +- src/framework/cmake/FindPhysFS.cmake | 2 +- src/framework/cmake/FindVorbis.cmake | 2 +- src/framework/cmake/FindVorbisFile.cmake | 2 +- src/framework/cmake/FindZLIB.cmake | 2 +- src/framework/git/declarations.h | 31 +++++++++++++ src/framework/git/gitrepository.cpp | 56 ++++++++++++++++++++++++ src/framework/git/gitrepository.h | 44 +++++++++++++++++++ 23 files changed, 200 insertions(+), 40 deletions(-) create mode 100644 src/framework/cmake/FindGit2.cmake create mode 100644 src/framework/git/declarations.h create mode 100644 src/framework/git/gitrepository.cpp create mode 100644 src/framework/git/gitrepository.h diff --git a/CMakeLists.txt b/CMakeLists.txt index fa7d298d..0e82647f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,7 @@ set(FRAMEWORK_SOUND ON) set(FRAMEWORK_GRAPHICS ON) set(FRAMEWORK_XML ON) set(FRAMEWORK_NET ON) +#set(FRAMEWORK_GIT ON) include(src/framework/CMakeLists.txt) include(src/otclient/CMakeLists.txt) @@ -44,7 +45,7 @@ endif() # installation set(DATA_INSTALL_DIR share/otclient) install(TARGETS otclient RUNTIME DESTINATION bin) -install(FILES README.md TODO BUGS LICENSE AUTHORS init.lua otclientrc.lua DESTINATION ${DATA_INSTALL_DIR}) +install(FILES README.md BUGS LICENSE AUTHORS init.lua otclientrc.lua DESTINATION ${DATA_INSTALL_DIR}) install(DIRECTORY modules DESTINATION ${DATA_INSTALL_DIR} PATTERN ".git" EXCLUDE) # add "make run" diff --git a/modules/corelib/ui/uiresizeborder.lua b/modules/corelib/ui/uiresizeborder.lua index 0da82a99..73daea5a 100644 --- a/modules/corelib/ui/uiresizeborder.lua +++ b/modules/corelib/ui/uiresizeborder.lua @@ -38,25 +38,21 @@ function UIResizeBorder:onMouseMove(mousePos, mouseMoved) local delta = mousePos.y - self:getY() - self:getHeight()/2 local parent = self:getParent() local newsize = math.min(math.max(parent:getHeight() + delta, self.minimum), self.maximum) - if newsize ~= currentMargin then - self.newsize = newsize - if not self.event or self.event:isExecuted() then - self.event = addEvent(function() - parent:setHeight(self.newsize) - end) - end + self.newsize = newsize + if not self.event or self.event:isExecuted() then + self.event = addEvent(function() + parent:setHeight(self.newsize) + end) end else local delta = mousePos.x - self:getX() - self:getWidth()/2 local parent = self:getParent() local newsize = math.min(math.max(parent:getWidth() + delta, self.minimum), self.maximum) - if newsize ~= currentMargin then - self.newsize = newsize - if not self.event or self.event:isExecuted() then - self.event = addEvent(function() - parent:setWidth(self.newsize) - end) - end + self.newsize = newsize + if not self.event or self.event:isExecuted() then + self.event = addEvent(function() + parent:setWidth(self.newsize) + end) end end return true @@ -112,4 +108,4 @@ function UIResizeBorder:setMinimum(minimum) end function UIResizeBorder:getMaximum() return self.maximum end -function UIResizeBorder:getMinimum() return self.minimum end \ No newline at end of file +function UIResizeBorder:getMinimum() return self.minimum end diff --git a/modules/game_minimap/minimap.lua b/modules/game_minimap/minimap.lua index 71c500db..eb03597c 100644 --- a/modules/game_minimap/minimap.lua +++ b/modules/game_minimap/minimap.lua @@ -68,15 +68,17 @@ end function loadMap() local clientVersion = g_game.getClientVersion() - local minimapName = '/minimap_' .. clientVersion .. '.otcm' - g_map.clean() - g_map.loadOtcm(minimapName) + local minimapFile = '/minimap_' .. clientVersion .. '.otcm' + if g_resources.fileExists(minimapFile) then + g_map.clean() + g_map.loadOtcm(minimapFile) + end end function saveMap() local clientVersion = g_game.getClientVersion() - local minimapName = '/minimap_' .. clientVersion .. '.otcm' - g_map.saveOtcm(minimapName) + local minimapFile = '/minimap_' .. clientVersion .. '.otcm' + g_map.saveOtcm(minimapFile) end function toggle() diff --git a/src/framework/CMakeLists.txt b/src/framework/CMakeLists.txt index 06b2bb06..4bf36dc4 100644 --- a/src/framework/CMakeLists.txt +++ b/src/framework/CMakeLists.txt @@ -176,7 +176,7 @@ if(WIN32) set(REQUIRED_BOOST_COMPONENTS ${REQUIRED_BOOST_COMPONENTS} thread chrono) # mingw32 does not have std::thread endif() set(Boost_USE_MULTITHREADED ON) -set(Boost_USE_STATIC_LIBS ON) +set(Boost_USE_STATIC_LIBS ${USE_STATIC_LIBS}) find_package(Boost COMPONENTS ${REQUIRED_BOOST_COMPONENTS} REQUIRED) #find lua @@ -466,5 +466,19 @@ if(FRAMEWORK_SQL) set(framework_DEFINITIONS ${framework_DEFINITIONS} -DFW_SQL) endif() +if(FRAMEWORK_GIT) + find_package(Git2 REQUIRED) + + set(framework_INCLUDE_DIRS ${framework_INCLUDE_DIRS} ${GIT2_INCLUDE_DIR}) + set(framework_LIBRARIES ${GIT2_LIBRARY} ${framework_LIBRARIES}) + + set(framework_SOURCES ${framework_SOURCES} + ${CMAKE_CURRENT_LIST_DIR}/git/declarations.h + ${CMAKE_CURRENT_LIST_DIR}/git/gitrepository.h + ${CMAKE_CURRENT_LIST_DIR}/git/gitrepository.cpp + ) + set(framework_DEFINITIONS ${framework_DEFINITIONS} -DFW_GIT) +endif() + include_directories(${framework_INCLUDE_DIRS}) add_definitions(${framework_DEFINITIONS}) diff --git a/src/framework/cmake/FindEGL.cmake b/src/framework/cmake/FindEGL.cmake index 931420bc..dcae3c7c 100644 --- a/src/framework/cmake/FindEGL.cmake +++ b/src/framework/cmake/FindEGL.cmake @@ -4,7 +4,7 @@ # EGL_LIBRARY - the EGL library FIND_PATH(EGL_INCLUDE_DIR NAMES EGL/egl.h) -FIND_LIBRARY(EGL_LIBRARY NAMES EGL.dll EGL) +FIND_LIBRARY(EGL_LIBRARY NAMES EGL) INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(EGL DEFAULT_MSG EGL_LIBRARY EGL_INCLUDE_DIR) MARK_AS_ADVANCED(EGL_LIBRARY EGL_INCLUDE_DIR) \ No newline at end of file diff --git a/src/framework/cmake/FindGLEW.cmake b/src/framework/cmake/FindGLEW.cmake index ee961b03..0d20c732 100644 --- a/src/framework/cmake/FindGLEW.cmake +++ b/src/framework/cmake/FindGLEW.cmake @@ -5,7 +5,7 @@ FIND_PATH(GLEW_INCLUDE_DIR NAMES GL/glew.h) SET(_GLEW_STATIC_LIBS libGLEW.a libglew32.a) -SET(_GLEW_SHARED_LIBS GLEW.dll glew32.dll GLEW glew32) +SET(_GLEW_SHARED_LIBS libGLEW.dll.a libglew32.dll.a GLEW glew32) IF(USE_STATIC_LIBS) FIND_LIBRARY(GLEW_LIBRARY NAMES ${_GLEW_STATIC_LIBS} ${_GLEW_SHARED_LIBS}) ELSE() diff --git a/src/framework/cmake/FindGMP.cmake b/src/framework/cmake/FindGMP.cmake index 425093f7..428b8921 100644 --- a/src/framework/cmake/FindGMP.cmake +++ b/src/framework/cmake/FindGMP.cmake @@ -5,7 +5,7 @@ FIND_PATH(GMP_INCLUDE_DIR NAMES gmp.h) SET(_GMP_STATIC_LIBS libgmp.a) -SET(_GMP_SHARED_LIBS gmp.dll gmp) +SET(_GMP_SHARED_LIBS libgmp.dll.a gmp) IF(USE_STATIC_LIBS) FIND_LIBRARY(GMP_LIBRARY NAMES ${_GMP_STATIC_LIBS} ${_GMP_SHARED_LIBS}) ELSE() diff --git a/src/framework/cmake/FindGit2.cmake b/src/framework/cmake/FindGit2.cmake new file mode 100644 index 00000000..c640ad59 --- /dev/null +++ b/src/framework/cmake/FindGit2.cmake @@ -0,0 +1,16 @@ +# Try to find the libgit2 library +# GIT2_FOUND - system has libgit2 +# GIT2_INCLUDE_DIR - the libgit2 include directory +# GIT2_LIBRARY - the libgit2 library + +FIND_PATH(GIT2_INCLUDE_DIR NAMES git2.h) +SET(_GIT2_STATIC_LIBS libgit2.a) +SET(_GIT2_SHARED_LIBS libgit2.dll.a git2) +IF(USE_STATIC_LIBS) + FIND_LIBRARY(GIT2_LIBRARY NAMES ${_GIT2_STATIC_LIBS} ${_GIT2_SHARED_LIBS}) +ELSE() + FIND_LIBRARY(GIT2_LIBRARY NAMES ${_GIT2_SHARED_LIBS} ${_GIT2_STATIC_LIBS}) +ENDIF() +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(GIT2 DEFAULT_MSG GIT2_LIBRARY GIT2_INCLUDE_DIR) +MARK_AS_ADVANCED(GIT2_LIBRARY GIT2_INCLUDE_DIR) diff --git a/src/framework/cmake/FindLua.cmake b/src/framework/cmake/FindLua.cmake index 13a43dfa..ef4084eb 100644 --- a/src/framework/cmake/FindLua.cmake +++ b/src/framework/cmake/FindLua.cmake @@ -7,7 +7,7 @@ FIND_PATH(LUA_INCLUDE_DIR NAMES lua.h PATH_SUFFIXES lua51 lua5.1 lua) FIND_LIBRARY(LUA_LIBRARY NAMES) SET(_LUA_STATIC_LIBS liblua51.a liblua5.1.a liblua-5.1.a liblua.a ) -SET(_LUA_SHARED_LIBS lua51.dll lua5.1.dll lua-5.1.dll lua.dll lua51 lua5.1 lua-5.1 lua) +SET(_LUA_SHARED_LIBS liblua51.dll.a liblua5.1.dll.a liblua-5.1.dll.a liblua.dll.a lua51.dll lua5.1 lua-5.1 lua) IF(USE_STATIC_LIBS) FIND_LIBRARY(LUA_LIBRARY NAMES ${_LUA_STATIC_LIBS} ${_LUA_SHARED_LIBS}) ELSE() diff --git a/src/framework/cmake/FindLuaJIT.cmake b/src/framework/cmake/FindLuaJIT.cmake index 08effa70..c65886cf 100644 --- a/src/framework/cmake/FindLuaJIT.cmake +++ b/src/framework/cmake/FindLuaJIT.cmake @@ -6,7 +6,7 @@ FIND_PATH(LUAJIT_INCLUDE_DIR NAMES lua.h PATH_SUFFIXES luajit-2.0) SET(_LUAJIT_STATIC_LIBS libluajit51.a libluajit5.1.a libluajit-5.1.a libluajit.a) -SET(_LUAJIT_SHARED_LIBS luajit51 luajit5.1 luajit-5.1 luajit) +SET(_LUAJIT_SHARED_LIBS libluajit51.dll.a libluajit5.1.dll.a libluajit-5.1.dll.a libluajit.dll.a luajit51 luajit5.1 luajit-5.1 luajit) IF(USE_STATIC_LIBS) FIND_LIBRARY(LUAJIT_LIBRARY NAMES ${_LUAJIT_STATIC_LIBS} ${_LUAJIT_SHARED_LIBS}) ELSE() diff --git a/src/framework/cmake/FindMySQL.cmake b/src/framework/cmake/FindMySQL.cmake index 18ed0f48..0178a4d8 100644 --- a/src/framework/cmake/FindMySQL.cmake +++ b/src/framework/cmake/FindMySQL.cmake @@ -4,8 +4,8 @@ # MYSQL_LIBRARY - the mysql library FIND_PATH(MYSQL_INCLUDE_DIR NAMES mysql.h PATH_SUFFIXES mysql) -SET(_MYSQL_STATIC_LIBS mysqlclient.a mysqlclient_r.a) -SET(_MYSQL_SHARED_LIBS mysqlclient mysqlclient_r) +SET(_MYSQL_STATIC_LIBS libmysqlclient.a libmysqlclient_r.a) +SET(_MYSQL_SHARED_LIBS libmysqlclient.dll.a libmysqlclient_r.dll.a mysqlclient mysqlclient_r) IF(USE_STATIC_LIBS) FIND_LIBRARY(MYSQL_LIBRARY NAMES ${_MYSQL_STATIC_LIBS} ${_MYSQL_SHARED_LIBS}) ELSE() diff --git a/src/framework/cmake/FindOgg.cmake b/src/framework/cmake/FindOgg.cmake index 6d1affb5..8105e473 100644 --- a/src/framework/cmake/FindOgg.cmake +++ b/src/framework/cmake/FindOgg.cmake @@ -5,7 +5,7 @@ FIND_PATH(OGG_INCLUDE_DIR NAMES ogg/ogg.h) SET(_OGG_STATIC_LIBS libogg.a) -SET(_OGG_SHARED_LIBS ogg.dll ogg) +SET(_OGG_SHARED_LIBS libogg.dll.a ogg) IF(USE_STATIC_LIBS) FIND_LIBRARY(OGG_LIBRARY NAMES ${_OGG_STATIC_LIBS} ${_OGG_SHARED_LIBS}) ELSE() diff --git a/src/framework/cmake/FindOpenAL.cmake b/src/framework/cmake/FindOpenAL.cmake index 5e75086d..e4972173 100644 --- a/src/framework/cmake/FindOpenAL.cmake +++ b/src/framework/cmake/FindOpenAL.cmake @@ -4,8 +4,8 @@ # OPENAL_LIBRARY - the OPENAL library FIND_PATH(OPENAL_INCLUDE_DIR NAMES AL/al.h) -SET(_OPENAL_STATIC_LIBS OpenAL.a al.a openal.a OpenAL32.a) -SET(_OPENAL_SHARED_LIBS OpenAL.dll al.dll openal.dll OpenAL32.dll OpenAL al openal OpenAL32) +SET(_OPENAL_STATIC_LIBS libOpenAL.a libal.a libopenal.a libOpenAL32.a) +SET(_OPENAL_SHARED_LIBS libOpenAL.dll.a libal.dll.a libopenal.dll.a libOpenAL32.dll.a OpenAL al openal OpenAL32) IF(USE_STATIC_LIBS) FIND_LIBRARY(OPENAL_LIBRARY NAMES ${_OPENAL_STATIC_LIBS} ${_OPENAL_SHARED_LIBS}) ELSE() diff --git a/src/framework/cmake/FindOpenGLES1.cmake b/src/framework/cmake/FindOpenGLES1.cmake index b3d8fff4..17099df4 100644 --- a/src/framework/cmake/FindOpenGLES1.cmake +++ b/src/framework/cmake/FindOpenGLES1.cmake @@ -4,7 +4,7 @@ # OPENGLES1_LIBRARY - the OpenGL ES 1.0 library FIND_PATH(OPENGLES1_INCLUDE_DIR NAMES GLES/gl.h) -FIND_LIBRARY(OPENGLES1_LIBRARY NAMES GLESv1_CM.dll GLES_CM.dll GLESv1_CM GLES_CM) +FIND_LIBRARY(OPENGLES1_LIBRARY NAMES GLESv1_CM GLES_CM) INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenGLES2 DEFAULT_MSG OPENGLES1_LIBRARY OPENGLES1_INCLUDE_DIR) MARK_AS_ADVANCED(OPENGLES1_LIBRARY OPENGLES1_INCLUDE_DIR) \ No newline at end of file diff --git a/src/framework/cmake/FindOpenGLES2.cmake b/src/framework/cmake/FindOpenGLES2.cmake index b2cf080c..20f94fb7 100644 --- a/src/framework/cmake/FindOpenGLES2.cmake +++ b/src/framework/cmake/FindOpenGLES2.cmake @@ -4,7 +4,7 @@ # OPENGLES2_LIBRARY - the OpenGL ES 2.0 library FIND_PATH(OPENGLES2_INCLUDE_DIR NAMES GLES2/gl2.h) -FIND_LIBRARY(OPENGLES2_LIBRARY NAMES GLESv2.dll GLESv2) +FIND_LIBRARY(OPENGLES2_LIBRARY NAMES GLESv2) INCLUDE(FindPackageHandleStandardArgs) FIND_PACKAGE_HANDLE_STANDARD_ARGS(OpenGLES2 DEFAULT_MSG OPENGLES2_LIBRARY OPENGLES2_INCLUDE_DIR) MARK_AS_ADVANCED(OPENGLES2_LIBRARY OPENGLES2_INCLUDE_DIR) \ No newline at end of file diff --git a/src/framework/cmake/FindOpenSSL.cmake b/src/framework/cmake/FindOpenSSL.cmake index 76c9aae2..37538fd5 100644 --- a/src/framework/cmake/FindOpenSSL.cmake +++ b/src/framework/cmake/FindOpenSSL.cmake @@ -5,9 +5,9 @@ FIND_PATH(OPENSSL_INCLUDE_DIR NAMES openssl/ssl.h) SET(_OPENSSL_STATIC_LIBS libssl.a) -SET(_OPENSSL_SHARED_LIBS ssl.dll ssl) +SET(_OPENSSL_SHARED_LIBS libssl.dll.a ssl) SET(_OPENSSL_CRYPTO_STATIC_LIBS libcrypto.a) -SET(_OPENSSL_CRYPTO_SHARED_LIBS libcrypto.dll crypto) +SET(_OPENSSL_CRYPTO_SHARED_LIBS libcrypto.dll.a crypto) IF(USE_STATIC_LIBS) FIND_LIBRARY(OPENSSL_LIBRARY NAMES ${_OPENSSL_STATIC_LIBS} ${_OPENSSL_SHARED_LIBS}) FIND_LIBRARY(OPENSSL_CRYPTO_LIBRARY NAMES ${_OPENSSL_CRYPTO_STATIC_LIBS} ${_OPENSSL_CRYPTO_SHARED_LIBS}) diff --git a/src/framework/cmake/FindPhysFS.cmake b/src/framework/cmake/FindPhysFS.cmake index d6db2741..12ee3d4a 100644 --- a/src/framework/cmake/FindPhysFS.cmake +++ b/src/framework/cmake/FindPhysFS.cmake @@ -5,7 +5,7 @@ FIND_PATH(PHYSFS_INCLUDE_DIR physfs.h PATH_SUFFIXES physfs) SET(_PHYSFS_STATIC_LIBS libphysfs.a) -SET(_PHYSFS_SHARED_LIBS physfs.dll physfs) +SET(_PHYSFS_SHARED_LIBS libphysfs.dll.a physfs) IF(USE_STATIC_LIBS) FIND_LIBRARY(PHYSFS_LIBRARY NAMES ${_PHYSFS_STATIC_LIBS} ${_PHYSFS_SHARED_LIBS}) ELSE() diff --git a/src/framework/cmake/FindVorbis.cmake b/src/framework/cmake/FindVorbis.cmake index e226f805..bc2e16de 100644 --- a/src/framework/cmake/FindVorbis.cmake +++ b/src/framework/cmake/FindVorbis.cmake @@ -5,7 +5,7 @@ FIND_PATH(VORBIS_INCLUDE_DIR NAMES vorbis/codec.h) SET(_VORBIS_STATIC_LIBS libvorbis.a) -SET(_VORBIS_SHARED_LIBS vorbis.dll vorbis) +SET(_VORBIS_SHARED_LIBS libvorbis.dll.a vorbis) IF(USE_STATIC_LIBS) FIND_LIBRARY(VORBIS_LIBRARY NAMES ${_VORBIS_STATIC_LIBS} ${_VORBIS_SHARED_LIBS}) ELSE() diff --git a/src/framework/cmake/FindVorbisFile.cmake b/src/framework/cmake/FindVorbisFile.cmake index bf37dcc3..5e1da5b5 100644 --- a/src/framework/cmake/FindVorbisFile.cmake +++ b/src/framework/cmake/FindVorbisFile.cmake @@ -5,7 +5,7 @@ FIND_PATH(VORBISFILE_INCLUDE_DIR NAMES vorbis/vorbisfile.h) SET(_VORBISFILE_STATIC_LIBS libvorbisfile.a) -SET(_VORBISFILE_SHARED_LIBS vorbisfile.dll vorbisfile) +SET(_VORBISFILE_SHARED_LIBS libvorbisfile.dll.a vorbisfile) IF(USE_STATIC_LIBS) FIND_LIBRARY(VORBISFILE_LIBRARY NAMES ${_VORBISFILE_STATIC_LIBS} ${_VORBISFILE_SHARED_LIBS}) ELSE() diff --git a/src/framework/cmake/FindZLIB.cmake b/src/framework/cmake/FindZLIB.cmake index bd182241..da12d9e0 100644 --- a/src/framework/cmake/FindZLIB.cmake +++ b/src/framework/cmake/FindZLIB.cmake @@ -5,7 +5,7 @@ FIND_PATH(ZLIB_INCLUDE_DIR NAMES zlib.h) SET(_ZLIB_STATIC_LIBS libz.a libzlib.a zlib1.a) -SET(_ZLIB_SHARED_LIBS z.dll zlib.dll zdll.dll zlib1.dll z zlib zdll zlib1) +SET(_ZLIB_SHARED_LIBS z zlib zdll zlib1) IF(USE_STATIC_LIBS) FIND_LIBRARY(ZLIB_LIBRARY NAMES ${_ZLIB_STATIC_LIBS} ${_ZLIB_SHARED_LIBS}) ELSE() diff --git a/src/framework/git/declarations.h b/src/framework/git/declarations.h new file mode 100644 index 00000000..871d7553 --- /dev/null +++ b/src/framework/git/declarations.h @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2010-2012 OTClient + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef FRAMEWORK_GIT_DECLARATIONS_H +#define FRAMEWORK_GIT_DECLARATIONS_H + +#include + +class GitRepository; +typedef stdext::shared_object_ptr GitRepositoryPtr; + +#endif diff --git a/src/framework/git/gitrepository.cpp b/src/framework/git/gitrepository.cpp new file mode 100644 index 00000000..41e58f4d --- /dev/null +++ b/src/framework/git/gitrepository.cpp @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2010-2012 OTClient + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#include "gitrepository.h" +#include + +#include + +GitRepository::GitRepository() +{ + m_repo = nullptr; +} + +GitRepository::~GitRepository() +{ + if(m_repo) { + git_repository_free(m_repo); + } +} + +bool GitRepository::open(const std::string& path) +{ + int error = git_repository_open(&m_repo, path.c_str()); + if(error < 0) { + m_lastError = "failed to open repository"; + return false; + } + return true; +} + + +void GitRepository::fetch(const std::string& remoteUrl) +{ + //git_remote *remote = nullptr; +} + + diff --git a/src/framework/git/gitrepository.h b/src/framework/git/gitrepository.h new file mode 100644 index 00000000..8703a704 --- /dev/null +++ b/src/framework/git/gitrepository.h @@ -0,0 +1,44 @@ +/* + * Copyright (c) 2010-2012 OTClient + * + * Permission is hereby granted, free of charge, to any person obtaining a copy + * of this software and associated documentation files (the "Software"), to deal + * in the Software without restriction, including without limitation the rights + * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is + * furnished to do so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + * THE SOFTWARE. + */ + +#ifndef GITREPOSITORY_H +#define GITREPOSITORY_H + +#include "declarations.h" + +struct git_repository; + +class GitRepository +{ +public: + GitRepository(); + ~GitRepository(); + + bool open(const std::string& path); + void fetch(const std::string& remoteUrl); + +private: + git_repository *m_repo; + std::string m_lastError; +}; + +#endif