镜像自地址
https://github.com/JGZYES/ParlzPackageManger.git
已同步 2026-09-11 08:52:45 +08:00
mirrors: auto-generate default mirror.ini with sz+main mirrors when missing (v0.2.6)
这个提交包含在:
+2
@@ -29,6 +29,7 @@
|
||||
#include "repo.h"
|
||||
#include "install.h"
|
||||
#include "pdm.h"
|
||||
#include "mirrors.h"
|
||||
|
||||
typedef struct {
|
||||
char *registry_url; /* package registry base URL */
|
||||
@@ -90,6 +91,7 @@ static const char *mirror_section_name(void) {
|
||||
static void load_mirror(PmmConfig *cfg, MirrorSel *sel) {
|
||||
char dir[1024];
|
||||
pmm_config_dir(dir, sizeof(dir));
|
||||
pmm_ensure_default_mirror(dir);
|
||||
memset(sel, 0, sizeof(*sel));
|
||||
char *path = pmm_find_config(dir, "mirror");
|
||||
if (!path) return;
|
||||
|
||||
+23
@@ -23,9 +23,32 @@ static int cmp_priority(const void *a, const void *b) {
|
||||
return ma->priority - mb->priority;
|
||||
}
|
||||
|
||||
/* Write a default mirror.ini (built-in sz + main mirror) when no mirror
|
||||
* config exists, so a fresh install works out-of-the-box from both mirrors. */
|
||||
void pmm_ensure_default_mirror(const char *dir) {
|
||||
if (pmm_find_config(dir, "mirror")) return; /* user already has a config */
|
||||
char path[1200];
|
||||
snprintf(path, sizeof(path), "%s/mirror.ini", dir);
|
||||
FILE *f = fopen(path, "w");
|
||||
if (!f) return;
|
||||
fputs("# PMM default mirror.ini (auto-generated)\n"
|
||||
"# priority 越小越优先;default=true 为未显式指定时的默认镜像。\n"
|
||||
"#\n"
|
||||
"[sz]\n"
|
||||
"registry = https://sz.pmm.parlz.com/mirror/packages\n"
|
||||
"priority = 1\n"
|
||||
"default = true\n"
|
||||
"\n"
|
||||
"[main]\n"
|
||||
"registry = https://pmm.parlz.com/mirror/packages\n"
|
||||
"priority = 20\n", f);
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
MirrorList *mirrors_load(void) {
|
||||
char dir[1024];
|
||||
pmm_config_dir(dir, sizeof(dir));
|
||||
pmm_ensure_default_mirror(dir);
|
||||
char *path = pmm_find_config(dir, "mirror");
|
||||
if (!path) return calloc(1, sizeof(MirrorList));
|
||||
Ini *ini = ini_load(path);
|
||||
|
||||
@@ -18,6 +18,8 @@ typedef struct {
|
||||
/* Load mirrors from ~/.pmm/mirror.ini / mirror.conf, sorted by priority. */
|
||||
MirrorList *mirrors_load(void);
|
||||
void mirrors_free(MirrorList *list);
|
||||
/* If no mirror config exists, write a default mirror.ini (sz + main). */
|
||||
void pmm_ensure_default_mirror(const char *dir);
|
||||
/* Mirror whose name matches the active selection in pmm config, or NULL. */
|
||||
Mirror *mirrors_active(const MirrorList *list, const char *active_name);
|
||||
|
||||
|
||||
在新工单中引用
屏蔽一个用户