quickjs-jit 0.12.4

JIT-enabled high level bindings to the QuickJS JavaScript engine
Documentation
SHELL := /bin/sh

CARGO ?= cargo
PUBLISH_POLL_SECONDS ?= 10
PUBLISH_MAX_ATTEMPTS ?= 60
PUBLISH_CRATES := \
	quickjs-jit-sys \
	quickjs-jit-core \
	quickjs-jit-macro \
	quickjs-jit \
	quickjs-jit-runtime

.PHONY: publish
publish:
	@set -eu; \
	for crate in $(PUBLISH_CRATES); do \
		version=$$($(CARGO) pkgid -p "$$crate" | sed 's/.*@//'); \
		package="$$crate@$$version"; \
		if $(CARGO) info --registry crates-io "$$package" >/dev/null 2>&1; then \
			echo "==> $$package is already published; skipping"; \
		else \
			echo "==> Publishing $$package"; \
			$(CARGO) publish -p "$$crate"; \
		fi; \
		attempt=0; \
		until $(CARGO) info --registry crates-io "$$package" >/dev/null 2>&1; do \
			attempt=$$((attempt + 1)); \
			if [ "$$attempt" -ge "$(PUBLISH_MAX_ATTEMPTS)" ]; then \
				echo "error: $$package is not visible on crates.io after $$attempt attempts" >&2; \
				exit 1; \
			fi; \
			echo "==> Waiting for $$package to appear on crates.io ($$attempt/$(PUBLISH_MAX_ATTEMPTS))"; \
			sleep "$(PUBLISH_POLL_SECONDS)"; \
		done; \
	done