diff --git a/.task.cfg.mk b/.task.cfg.mk new file mode 100644 index 0000000..11063f8 --- /dev/null +++ b/.task.cfg.mk @@ -0,0 +1,4 @@ +PHONIFY = true +msg = $(call tprint,{a.bold}==>{a.end} {a.b_magenta}$(1){a.end} {a.bold}<=={a.end}) +USAGE = {a.b_green}Update MonoLisa with Nerd Fonts! {a.end}\n\n{a.header}usage{a.end}:\n make \n +-include .task.mk diff --git a/.task.mk b/.task.mk index 7b62667..f2439a9 100644 --- a/.task.mk +++ b/.task.mk @@ -1,8 +1,7 @@ # }> [github.com/daylinmorgan/task.mk] <{ # # Copyright (c) 2022 Daylin Morgan # MIT License -# version: 23.1.1 -# +TASKMK_VERSION ?= 23.1.1 # task.mk should be included at the bottom of your Makefile with `-include .task.mk` # See below for the standard configuration options that should be set prior to including this file. # You can update your .task.mk with `make _update-task.mk` @@ -25,30 +24,27 @@ ifeq (help,$(firstword $(MAKECMDGOALS))) HELP_ARGS := $(wordlist 2,$(words $(MAKECMDGOALS)),$(MAKECMDGOALS)) export HELP_ARGS endif -## h, help | show this help -h help: +h help: ## show this help $(call py,help_py) _help: export SHOW_HIDDEN=true _help: help ifdef PRINT_VARS -$(foreach v,$(PRINT_VARS),$(eval export $(v))) +TASKMK_VARS=$(subst $(eval ) ,<|>,$(foreach v,$(PRINT_VARS),$(v)=$($(v)))) .PHONY: vars v -vars v: - $(call py,vars_py,$(PRINT_VARS)) +v vars: + $(call py,vars_py,$(TASKMK_VARS)) endif -### | args: -ws --hidden -### task.mk builtins: | args: -d --hidden -## _print-ansi | show all possible ansi color code combinations -_print-ansi: +### |> -ws --hidden +### task.mk builtins: |> -d --hidden +_print-ansi: ## show all possible ansi color code combinations $(call py,print_ansi_py) # functions to take f-string literals and pass to python print tprint = $(call py,print_py,$(1)) -tprint-sh = $(call pysh,print_py,$(1)) +tprint-verbose= $(call py-verbose,print_py,$(1)) tconfirm = $(call py,confirm_py,$(1)) -## _update-task.mk | downloads latest development version of task.mk -_update-task.mk: +_update-task.mk: ## downloads version of task.mk (TASKMK_VERSION=) $(call tprint,{a.b_cyan}Updating task.mk{a.end}) - curl https://raw.githubusercontent.com/daylinmorgan/task.mk/main/task.mk -o .task.mk + curl https://raw.githubusercontent.com/daylinmorgan/task.mk/$(TASKMK_VERSION)/task.mk -o .task.mk .PHONY: h help _help _print-ansi _update-task.mk TASK_MAKEFILE_LIST := $(filter-out $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)),$(MAKEFILE_LIST)) export MAKEFILE_LIST MAKE TASK_MAKEFILE_LIST @@ -77,7 +73,7 @@ else py = @python3 <(printf "$(call _create_string,$($(1)))") tbash = @bash <(printf "$(call _create_string,$($(1)))") endif -pysh = python3 <(printf "$(call _create_string,$($(1)))") +py-verbose = python3 <(printf "$(call _create_string,$($(1)))") # ---- [python scripts] ---- # define help_py import argparse @@ -92,26 +88,20 @@ a = ansi = Ansi(target="stdout") MaxLens = namedtuple("MaxLens", "goal msg") pattern = re.compile( r""" - ^\#\#\ - (?P.*?)\s?\|\s?(?P.*?) - \s? - (?: - (?:\|\s?args:\s?|\|>) - \s? - (?P.*?) - )? - $$ - | - ^\#\#\#\ - (?P.*?) - \s? - (?: - (?:\|\s?args:|\|\>) - \s? - (?P.*?) - )? - $$ - """, +(?: + ^\#\#\#\s+ # <- raw message + | + ^(?: + (?:\#\#\s+)? + (?P.*?)(?:\s+\|>|:.*?\#\#)\s+ + ) # <- a custom goal or actual recipe +) +(?P.*?)?\s? # <- help text (optional) +(?:\|>\s+ + (?P.*?) +)? # <- style args (optional) +$$ +""", re.X, ) goal_pattern = re.compile(r"""^(?!#|\t)(.*):.*\n\t""", re.MULTILINE) @@ -234,7 +224,10 @@ def print_help(): lines = [cfg.usage] items = list(parse_help(gen_makefile())) maxlens = MaxLens( - *(max((len(item[x]) for item in items if x in item)) for x in ["goal", "msg"]) + *( + max((*(len(item[x]) for item in items if x in item), 0)) + for x in ["goal", "msg"] + ) ) for item in items: if "goal" in item: @@ -243,8 +236,8 @@ def print_help(): item["goal"], item["msg"], maxlens.goal, item.get("msgargs", "") ) ) - if "rawmsg" in item: - lines.extend(fmt_rawmsg(item["rawmsg"], item.get("rawargs", ""), maxlens)) + else: + lines.extend(fmt_rawmsg(item["msg"], item.get("msgargs", ""), maxlens)) lines.append(cfg.epilog) print("\n".join(lines)) def print_arg_help(help_args): @@ -292,12 +285,10 @@ define vars_py import os $(utils_py) ansi = Ansi(target="stdout") -vars = "$2".split() -length = max((len(v) for v in vars)) -print(f"{ansi.header}vars{ansi.end}:\n") -for v in vars: - print(f" {ansi.params}{v:<{length}}{ansi.end} = {os.getenv(v)}") -print() +task_vars = tuple(v.split('=') for v in "$2".split('<|>')) +length = max((len(v[0]) for v in task_vars)) +rows = (f" {ansi.params}{v[0]:<{length}}{ansi.end} = {v[1]}" for v in task_vars) +print('\n'.join((f"{ansi.header}vars{ansi.end}:\n", *rows,''))) endef define confirm_py import sys @@ -399,6 +390,7 @@ class Ansi: print("Expected one or three values for bg as a list") sys.exit(1) return code + end + def add_cfg(self): cfg_styles = { "header": "$(HEADER_STYLE)", diff --git a/Makefile b/Makefile index c99677e..fd1ab0b 100644 --- a/Makefile +++ b/Makefile @@ -4,45 +4,32 @@ ARGS ?= -c NF_SRC := $(shell ./bin/get-font-files src) FONT_FLAGS := $(shell ./bin/get-font-files MonoLisa 'otf,ttf,woff,woff2') -## patch | apply nerd fonts patch |> -gs b_magenta -ms bold -patch: ./bin/font-patcher +patch: ./bin/font-patcher ## apply nerd fonts patch |> -gs b_magenta -ms bold @./bin/patch-monolisa \ $(FONT_FLAGS) \ $(ARGS) -## update-fonts | move fonts and update fc-cache -.PHONY: update-fonts -update-fonts: +update-fonts: ## move fonts and update fc-cache $(call msg,Adding Fonts To System) @./bin/update-fonts @fc-cache -f -v -## check | check fc-list for MonoLisa -.PHONY: check -check: +check: ## check fc-list for MonoLisa $(call msg,Checking System for Fonts) @fc-list | grep "MonoLisa" -## update-src | update nerd fonts source -.PHONY: update-src -update-src: +update-src: ## update nerd fonts source $(call msg,Updating Source Files) @./bin/update-src -## lint | run pre-commit hooks -.PHONY: lint -lint: +lint: ## run pre-commit hooks @pre-commit run --all -## clean | remove patched fonts -.PHONY: clean -clean: +clean: ## remove patched fonts @rm -rf patched/* # depends on daylinmorgan/yartsu assets/help.svg: yartsu -o $@ -t 'make help' -- $(MAKE) -s help -msg = $(call tprint,{a.bold}==>{a.end} {a.b_magenta}$(1){a.end} {a.bold}<=={a.end}) -USAGE = {a.b_green}Update MonoLisa with Nerd Fonts! {a.end}\n\n{a.header}usage{a.end}:\n make \n --include .task.mk +-include .task.cfg.mk