Skip to content

Commit a7b747d

Browse files
committed
refactoring
1 parent e735be7 commit a7b747d

15 files changed

+74
-75
lines changed

src/main.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,22 +2,24 @@
22
#include <git2.h> // For version number only
33
#include <iostream>
44

5-
#include "git_exception.hpp"
5+
#include "src/utils/git_exception.hpp"
66
#include "version.hpp"
77
#include "subcommand/init_subcommand.hpp"
8+
// #include "subcommand/status_subcommand.hpp"
89

910
int main(int argc, char** argv)
1011
{
1112
int exitCode = 0;
1213
try
1314
{
15+
const libgit2_object lg2_obj;
1416
CLI::App app{"Git using C++ wrapper of libgit2"};
1517

1618
// Top-level command options.
1719
auto version = app.add_flag("-v,--version", "Show version");
1820

1921
// Sub commands
20-
InitSubcommand init(app);
22+
InitSubcommand init(lg2_obj, app);
2123

2224
app.parse(argc, argv);
2325

src/meson.build

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
subdir('subcommand')
2+
subdir('utils')
23
subdir('wrapper')
34

45
src_files = files([
5-
'git_exception.cpp',
66
'main.cpp'
7-
]) + subcommand_files + wrapper_files
7+
]) + subcommand_files + utils_files + wrapper_files

src/subcommand/base_subcommand.hpp

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/subcommand/init_subcommand.cpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
#include <filesystem>
22
#include "init_subcommand.hpp"
3-
#include "../wrapper/repository_wrapper.hpp"
43

5-
InitSubcommand::InitSubcommand(CLI::App& app)
4+
InitSubcommand::InitSubcommand(const libgit2_object&, CLI::App& app)
65
{
76
auto *sub = app.add_subcommand("init", "Explanation of init here");
87

@@ -18,6 +17,5 @@ InitSubcommand::InitSubcommand(CLI::App& app)
1817

1918
void InitSubcommand::run()
2019
{
21-
RepositoryWrapper repo;
22-
repo.init(directory, bare);
20+
RepositoryWrapper::init(directory, bare);
2321
}

src/subcommand/init_subcommand.hpp

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
11
#pragma once
22

3+
#include <CLI/CLI.hpp>
34
#include <string>
4-
#include "base_subcommand.hpp"
55

6-
class InitSubcommand : public BaseSubcommand
6+
#include "src/wrapper/repository_wrapper.hpp"
7+
8+
class InitSubcommand
79
{
810
public:
9-
InitSubcommand(CLI::App& app);
11+
12+
explicit InitSubcommand(const libgit2_object&, CLI::App& app);
1013
void run();
1114

1215
private:

src/utils/common.cpp

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
#include <git2.h>
2+
3+
#include "common.hpp"
4+
5+
libgit2_object::libgit2_object()
6+
{
7+
git_libgit2_init();
8+
}
9+
10+
libgit2_object::~libgit2_object()
11+
{
12+
git_libgit2_shutdown();
13+
}

src/utils/common.hpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class noncopiable_nonmovable
2+
{
3+
public:
4+
noncopiable_nonmovable(const noncopiable_nonmovable&) = delete;
5+
noncopiable_nonmovable& operator=(const noncopiable_nonmovable&) = delete;
6+
noncopiable_nonmovable(noncopiable_nonmovable&) = delete;
7+
noncopiable_nonmovable& operator=(noncopiable_nonmovable&&) = delete;
8+
9+
protected:
10+
noncopiable_nonmovable() = default;
11+
~noncopiable_nonmovable() = default;
12+
};
13+
14+
class libgit2_object : private noncopiable_nonmovable
15+
{
16+
public:
17+
18+
libgit2_object();
19+
~libgit2_object();
20+
};
File renamed without changes.
File renamed without changes.

src/utils/meson.build

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
utils_files = files([
2+
'common.cpp',
3+
'git_exception.cpp',
4+
])

src/wrapper/base_wrapper.cpp

Lines changed: 0 additions & 15 deletions
This file was deleted.

src/wrapper/base_wrapper.hpp

Lines changed: 0 additions & 16 deletions
This file was deleted.

src/wrapper/meson.build

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
wrapper_files = files([
2-
'base_wrapper.cpp',
32
'repository_wrapper.cpp',
43
])

src/wrapper/repository_wrapper.cpp

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,24 @@
1-
#include <iostream>
2-
#include <string>
3-
4-
#include "../git_exception.hpp"
1+
#include "src/utils/git_exception.hpp"
52
#include "repository_wrapper.hpp"
63

4+
75
RepositoryWrapper::RepositoryWrapper()
8-
: _repo(nullptr)
6+
: p_repo(nullptr)
97
{}
108

119
RepositoryWrapper::~RepositoryWrapper()
1210
{
13-
if (_repo != nullptr) {
14-
git_repository_free(_repo); // no return
15-
}
11+
git_repository_free(p_repo);
12+
p_repo=nullptr;
1613
}
1714

15+
// RepositoryWrapper::RepositoryWrapper open(const std::string path)
16+
// {
17+
//
18+
// };
19+
1820
void RepositoryWrapper::init(const std::string& directory, bool bare)
1921
{
20-
// what if it is already initialised? Throw exception or delete and recreate?
21-
throwIfError(git_repository_init(&_repo, directory.c_str(), bare));
22+
RepositoryWrapper rw;
23+
throwIfError(git_repository_init(&(rw.p_repo), directory.c_str(), bare));
2224
}

src/wrapper/repository_wrapper.hpp

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,21 @@
11
#pragma once
22

3-
#include "base_wrapper.hpp"
3+
#include <git2.h>
4+
#include <string>
45

5-
class RepositoryWrapper : public BaseWrapper
6+
#include "../utils/common.hpp"
7+
8+
class RepositoryWrapper : private noncopiable_nonmovable
69
{
710
public:
8-
RepositoryWrapper();
911

10-
virtual ~RepositoryWrapper();
12+
~RepositoryWrapper();
1113

12-
void init(const std::string& directory, bool bare);
14+
// static RepositoryWrapper open(const std::string path);
15+
static void init(const std::string& directory, bool bare);
1316

1417
private:
15-
git_repository *_repo;
18+
19+
RepositoryWrapper();
20+
git_repository* p_repo;
1621
};

0 commit comments

Comments
 (0)