blob: f44ab85e8e668753fc340393d69283470034c4da (
plain)
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
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
/*
pkgit - package it!
Copyright (C) 2026 dacctal
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#ifndef PKGIT_GLOBALS_H
#define PKGIT_GLOBALS_H
#define VERSION "1.4.0_INDEV"
#define RED "\x1b[0;31m"
#define GREEN "\x1b[0;32m"
#define YELLOW "\x1b[0;33m"
#define BLUE "\x1b[0;34m"
#define MAGENTA "\x1b[0;35m"
#define CYAN "\x1b[0;36m"
#define GRAY "\x1b[0;37m"
#define BRIGHT_RED "\x1b[0;91m"
#define BRIGHT_GREEN "\x1b[0;92m"
#define BRIGHT_YELLOW "\x1b[0;93m"
#define BRIGHT_BLUE "\x1b[0;94m"
#define BRIGHT_MAGENTA "\x1b[0;95m"
#define BRIGHT_CYAN "\x1b[0;96m"
#define BRIGHT_GRAY "\x1b[0;97m"
#define BOLD "\x1b[1m"
#define BOLD_RED "\x1b[1;31m"
#define BOLD_GREEN "\x1b[1;32m"
#define BOLD_YELLOW "\x1b[1;33m"
#define BOLD_BLUE "\x1b[1;34m"
#define BOLD_MAGENTA "\x1b[1;35m"
#define BOLD_CYAN "\x1b[1;36m"
#define BOLD_GRAY "\x1b[1;37m"
#define BOLD_WHITE "\x1b[1;38m"
#define BOLD_BRIGHT_RED "\x1b[1;91m"
#define BOLD_BRIGHT_GREEN "\x1b[1;92m"
#define BOLD_BRIGHT_YELLOW "\x1b[1;93m"
#define BOLD_BRIGHT_BLUE "\x1b[1;94m"
#define BOLD_BRIGHT_MAGENTA "\x1b[1;95m"
#define BOLD_BRIGHT_CYAN "\x1b[1;96m"
#define BOLD_BRIGHT_GRAY "\x1b[1;97m"
#define ITALIC "\x1b[3m"
#define COLOR_RESET "\x1b[0m"
#define eprintf(...) fprintf(stderr, __VA_ARGS__);
#define check_alloc(ptr) \
do { \
if (ptr == NULL) \
panic("allocation of `%s` failed", #ptr); \
} while (0)
#include <stdlib.h>
#define panic(...) \
do { \
eprintf(BOLD RED "panic:" COLOR_RESET " line %d, func \"%s\" in file " \
"\"%s\": ", \
__LINE__, __func__, __FILE_NAME__); \
eprintf(__VA_ARGS__); \
eprintf("\n"); \
fflush(stderr); \
abort(); \
} while (0)
#ifdef PKGIT_DEBUG
#define assert(expr) \
do { \
if (!(expr)) \
panic("Assertion `%s` failed", #expr); \
} while (0)
#else
#define assert(expr) (void)(expr)
#endif
#ifdef unreachable
#undef unreachable
#endif
#define unreachable panic("reached unreachable code")
#define PRINT_PKGIT \
BOLD_YELLOW "[" BOLD_MAGENTA "pkgit" BOLD_YELLOW "]" COLOR_RESET
#define PRINT_SUCCESS PRINT_PKGIT GREEN " [SUCCESS]" COLOR_RESET
#define PRINT_SKIPPED PRINT_PKGIT BLUE " [SKIPPED]" COLOR_RESET
#define PRINT_WARNING PRINT_PKGIT YELLOW " [WARNING]" COLOR_RESET
#define PRINT_ERROR PRINT_PKGIT RED " [ERROR]" COLOR_RESET
#define MAX_REPOS 1000
#define MAX_DIRS 100
#define MAX_PATH_LEN 1024
#include "str.h"
typedef struct {
str name;
str url;
str version;
str target;
str src;
int is_local;
} package;
extern int is_verbose;
extern int is_forced;
extern int config_exists;
extern str home_config_dir;
extern str home_config_file;
extern str home_repos_file;
extern str root_config_dir;
extern str root_config_file;
extern str root_repos_file;
extern int is_root_config;
extern str config_dir;
extern str config_file;
extern str repos_file;
extern str bin;
extern str lib;
extern str include;
extern str src;
void init_vars(void);
void free_vars(void);
#endif
|