FazBrowse GitHub Viewer
|
Trending
|
URL:
|
Home
Tools:
[Download Repo ZIP]
[View Raw Code]
[Original HTTPS Page]
git2cpp/src/utils/common.cpp at main · QuantStack/git2cpp · GitHub
QuantStack
git2cpp
Repository navigation
Code
Issues
6
(6)
Pull requests
Actions
Projects
Security and quality
Insights
Expand file tree
Breadcrumbs
git2cpp
/
src
/
utils
/
common.cpp
Copy path
More file actions
More file actions
Latest commit
History
History
History
99 lines (86 loc) · 2.92 KB
Breadcrumbs
git2cpp
/
src
/
utils
/
common.cpp
Copy path
File metadata and controls
99 lines (86 loc) · 2.92 KB
Raw
Copy raw file
Download raw file
Open symbols panel
Edit and raw actions
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
#
include
"
common.hpp
"
#
include
<
filesystem
>
#
include
<
fstream
>
#
include
<
iostream
>
#
include
<
map
>
#
include
<
ranges
>
#
include
<
regex
>
#
include
<
sstream
>
#
include
<
git2.h
>
#
include
<
unistd.h
>
#
include
"
git_exception.hpp
"
libgit2_object::libgit2_object
()
{
git_libgit2_init
();
}
libgit2_object::~libgit2_object
()
{
git_libgit2_shutdown
();
}
std::string
get_current_git_path
()
{
return
std::filesystem::current_path
();
//
TODO: make sure that it goes to the root
}
//
// If directory not specified, uses cwd.
//
sub->add_option("directory", directory, "info about directory arg")
//
->check(CLI::ExistingDirectory | CLI::NonexistentPath)
//
->default_val(std::filesystem::current_path());
const
std::map<
git_status_t
, status_messages>&
get_status_msg_map
()
{
static
std::map<
git_status_t
, status_messages> status_msg_map =
//
TODO : check spaces in short_mod
{
{
GIT_STATUS_CURRENT
, {
"
"
,
"
"
}},
{
GIT_STATUS_INDEX_NEW
, {
"
A
"
,
"
\t
new file:
"
}},
{
GIT_STATUS_INDEX_MODIFIED
, {
"
M
"
,
"
\t
modified:
"
}},
{
GIT_STATUS_INDEX_DELETED
, {
"
D
"
,
"
\t
deleted:
"
}},
{
GIT_STATUS_INDEX_RENAMED
, {
"
R
"
,
"
\t
renamed:
"
}},
{
GIT_STATUS_INDEX_TYPECHANGE
, {
"
T
"
,
"
\t
typechange:
"
}},
{
GIT_STATUS_WT_NEW
, {
"
??
"
,
"
\t
"
}},
{
GIT_STATUS_WT_MODIFIED
, {
"
M
"
,
"
\t
modified:
"
}},
{
GIT_STATUS_WT_DELETED
, {
"
D
"
,
"
\t
deleted:
"
}},
{
GIT_STATUS_WT_TYPECHANGE
, {
"
T
"
,
"
\t
typechange:
"
}},
{
GIT_STATUS_WT_RENAMED
, {
"
R
"
,
"
\t
renamed:
"
}},
{
GIT_STATUS_WT_UNREADABLE
, {
"
"
,
"
"
}},
{
GIT_STATUS_IGNORED
, {
"
!!
"
,
"
"
}},
{
GIT_STATUS_CONFLICTED
, {
"
AA
"
,
"
\t
both added:
"
}},
};
return
status_msg_map;
}
status_messages
get_status_msg
(
git_status_t
st)
{
return
get_status_msg_map
().
find
(st)->
second
;
}
std::string
read_file
(
const
std::string& path)
{
std::ifstream
file
(path, std::ios::binary);
if
(!file)
{
throw
git_exception
(
"
error: Could not access
"
+ path, git2cpp_error_code::
GENERIC_ERROR
);
}
std::stringstream buffer;
buffer << file.
rdbuf
();
return
buffer.
str
();
}
std::vector<std::string>
split_input_at_newlines
(std::string_view str)
{
auto
split = str |
std::ranges::views::split
(
'
\n
'
)
|
std::ranges::views::transform
(
[](
auto
&& range)
{
return
std::string
(range.
begin
(), range.
end
());
}
);
return
std::vector<std::string>{split.
begin
(), split.
end
()};
}
std::string
trim
(
const
std::string& str)
{
auto
s =
std::regex_replace
(str,
std::regex
(
"
^
\\
s+
"
),
"
"
);
return
std::regex_replace
(s,
std::regex
(
"
\\
s+$
"
),
"
"
);
}
std::string
oid_to_hex
(
const
git_oid& oid)
{
char
oid_str[
GIT_OID_SHA1_HEXSIZE
+
1
];
git_oid_fmt
(oid_str, &oid);
oid_str[
GIT_OID_SHA1_HEXSIZE
] =
'
\0
'
;
return
std::string
(oid_str);
}
Back
|
FazBrowse Home
|
New Git URL