diff options
| author | Yaroslav de la Peña Smirnov <yps@yaroslavps.com> | 2021-11-29 19:53:34 +0300 | 
|---|---|---|
| committer | Yaroslav de la Peña Smirnov <yps@yaroslavps.com> | 2021-11-29 19:53:34 +0300 | 
| commit | 8e07de9d952f8f27273296f1b6ae58550ce1e98b (patch) | |
| tree | c653d6d2b4a2e2251ce0ff44ad4740d91e20b1da /src/render.c | |
| parent | ef0a23b0636a8c7f4a3c802ff76645261e8b225f (diff) | |
| download | revela-8e07de9d952f8f27273296f1b6ae58550ce1e98b.tar.gz revela-8e07de9d952f8f27273296f1b6ae58550ce1e98b.zip | |
Update adjacent images to inserted/removed
Now the program checks if the html of the next and previous images was
updated if a new image was inserted or an old image removed, and updates
them if needed.
Also make rmextra and filesync respect dry run mode.
Diffstat (limited to 'src/render.c')
| -rw-r--r-- | src/render.c | 64 | 
1 files changed, 39 insertions, 25 deletions
| diff --git a/src/render.c b/src/render.c index 79fb543..7008e50 100644 --- a/src/render.c +++ b/src/render.c @@ -107,6 +107,12 @@ render_set_album_vars(struct render *r, struct album *album)  	years_push_album(r->years, album);  	vector_push(r->albums, album->map); +	/* +	 * The common vars for the images in this album; used by both the album +	 * template and the image template. +	 */ +	hashmap_insert(r->common_vars, "album", album->map); +  	return true;  } @@ -127,24 +133,19 @@ render(struct env *env, const char *tmpl, const char *opath,  	return ok;  } -#define RENDER_MAKE_START \ -	bool ok = true; \ -	int isupdate = file_is_uptodate(path, &r->modtime); \ -	if (isupdate == -1) return false; \ -	if (isupdate == 1) return true; \ -	log_print(LOG_INFO, "Rendering %s...", path); \ -	if (r->dry_run) goto done - -#define RENDER_MAKE_END \ -	setdatetime(path, &r->modtime); \ -done: \ -	log_printf(LOG_INFO, " done.\n"); \ -	return ok -  bool  render_make_index(struct render *r, const char *path)  { -	RENDER_MAKE_START; +	bool ok = true; +	if (r->albums_updated == 0) { +		int isupdate = file_is_uptodate(path, &r->modtime); +		if (isupdate == -1) return false; +		if (isupdate == 1) return true; +	} + +	log_printl(LOG_INFO, "Rendering %s", path); + +	if (r->dry_run) goto done;  	hashmap_insert(r->common_vars, "years", r->years);  	hashmap_insert(r->common_vars, "albums", r->years); @@ -152,35 +153,48 @@ render_make_index(struct render *r, const char *path)  	hashmap_remove(r->common_vars, "years");  	hashmap_remove(r->common_vars, "albums"); -	RENDER_MAKE_END; +	setdatetime(path, &r->modtime); +done: +	return ok;  }  bool  render_make_album(struct render *r, const char *path, const struct album *album)  { -	if (!r->dry_run) hashmap_insert(r->common_vars, "album", album->map); +	bool ok = true; +	if (album->images_updated == 0) { +		int isupdate = file_is_uptodate(path, &r->modtime); +		if (isupdate == -1) return false; +		if (isupdate == 1) return true; +	} + +	log_printl(LOG_INFO, "Rendering %s", path); -	RENDER_MAKE_START; +	if (r->dry_run) goto done;  	ok = render(r->env, "album.html", path, r->common_vars); -	/*  -	 * Since we actually still want this album's map for the image inside the -	 * album, we don't remove it. -	 */ -	RENDER_MAKE_END; +	setdatetime(path, &r->modtime); +done: +	return ok;  }  bool  render_make_image(struct render *r, const char *path, const struct image *image)  { -	RENDER_MAKE_START; +	bool ok = true; + +	log_printl(LOG_INFO, "Rendering %s", path); + +	if (r->dry_run) goto done;  	hashmap_insert(r->common_vars, "image", image->map);  	ok = render(r->env, "image.html", path, r->common_vars);  	hashmap_remove(r->common_vars, "image"); -	RENDER_MAKE_END; +	setdatetime(path, &r->modtime); +done: +	return ok;  }  bool | 
