aboutsummaryrefslogtreecommitdiff
path: root/src/globs.c
blob: 860bafb614d18924943b7176742d33c6f130b59f (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
/*

  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/>.

*/

#include <stdlib.h>

#include "globs.h"

#include "files.h"
#include "log.h"
#include "lua_vars.h"
#include "str.h"

install_dirs_t inst_dirs = {0};
cli_flags_t flags = {0};
config_t cfg = {0};

void init_vars(void) {
	if (file_exists("/etc/pkgit/repos.lua")) {
		cfg.dir = mstr("/etc/pkgit");
		cfg.name = mstr("/etc/pkgit/repos.lua");
	} else {
		const char *tmp = getenv("XDG_CONFIG_HOME");
		if (tmp) {
			cfg.dir = str_format("%s/pkgit", tmp);
		} else {
			cfg.dir = str_format("%s/.config/pkgit", getenv("HOME"));
		}
		cfg.name = str_concat_cstr(&cfg.dir, "/init.lua");
	}
	// TODO: read into cfg.content

	cfg.repos = str_format("%.*s/repos.lua", str_fmt(&cfg.dir));
	init_install_directories();
}

void free_vars(void) {
	str_free(&cfg.dir);
	str_free(&cfg.name);
	str_free(&cfg.content);
	str_free(&cfg.repos);
	str_free(&inst_dirs.prefix);
	str_free(&inst_dirs.bin);
	str_free(&inst_dirs.lib);
	str_free(&inst_dirs.include);
	str_free(&inst_dirs.src);
}