Skip to content

doc/man: Add man pages jsonnet.1 and jsonnetfmt.1 #1206

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
30 changes: 30 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -136,3 +136,33 @@ if (BUILD_TESTS)
jsonnet unicode_test parser_test lexer_test libjsonnet++_test libjsonnet_test_locale
)
endif()


# Man pages
find_program(HELP2MAN_BINARY NAMES help2man)
if (HELP2MAN_BINARY)
message(STATUS "help2man found, man pages will be generated.")
file(MAKE_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/man/man1)
set(CMAKE_INSTALL_MANDIR "share/man" CACHE STRING "Directory for man pages")

add_custom_command(
OUTPUT ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/man/man1/jsonnet.1
COMMAND ${HELP2MAN_BINARY}
ARGS --section=1 --name="Jsonnet data templating language interpreter" --output=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/man/man1/jsonnet.1 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/jsonnet
DEPENDS jsonnet
)
add_custom_command(
OUTPUT ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/man/man1/jsonnetfmt.1
COMMAND ${HELP2MAN_BINARY}
ARGS --section=1 --name="Jsonnet data templating language interpreter" --output=${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/man/man1/jsonnetfmt.1 ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/jsonnetfmt
DEPENDS jsonnetfmt
)

add_custom_target(jsonnet-man ALL DEPENDS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/man/man1/jsonnet.1)
add_custom_target(jsonnetfmt-man ALL DEPENDS ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/man/man1/jsonnetfmt.1)

install(FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/man/man1/jsonnet.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
install(FILES ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/man/man1/jsonnetfmt.1 DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
else()
message(STATUS "help2man not found, man pages will not be generated.")
endif()
23 changes: 20 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ SHARED_LDFLAGS ?= -shared
VERSION := $(shell grep '\#define.*LIB_JSONNET_VERSION' include/libjsonnet.h | head -n 1 | cut -f 2 -d '"' | sed 's/^v//g' )
SOVERSION = 0

# Define the help2man command with appropriate options
HELP2MAN ?= help2man

MAN1_DIR ?= man/man1

################################################################################
# End of user-servicable parts
################################################################################
Expand Down Expand Up @@ -123,15 +128,17 @@ ifeq ($(shell uname -s),Darwin)
SONAME = -install_name
endif

default: jsonnet jsonnetfmt
default: jsonnet jsonnetfmt man

install: bins libs
install: bins libs man
mkdir -p $(DESTDIR)$(PREFIX)/bin
cp $(BINS) $(DESTDIR)$(PREFIX)/bin/
mkdir -p $(DESTDIR)$(PREFIX)/lib
cp $(LIBS) $(DESTDIR)$(PREFIX)/lib/
mkdir -p $(DESTDIR)$(PREFIX)/include
cp $(INCS) $(DESTDIR)$(PREFIX)/include/
mkdir -p $(DESTDIR)$(PREFIX)/share/$(MAN1_DIR)
install -Dm 644 $(addprefix $(MAN1_DIR)/, $(BINS:=.1)) $(DESTDIR)$(PREFIX)/share/$(MAN1_DIR)/

all: $(ALL)

Expand Down Expand Up @@ -161,6 +168,16 @@ core/desugarer.cpp: core/std.jsonnet.h
%.o: %.cpp
$(CXX) -c $(CXXFLAGS) $< -o $@

# Target to generate the man page

$(MAN1_DIR)/%.1: % | $(MAN1_DIR)
$(HELP2MAN) --output=$@ ./$<

man: $(addprefix $(MAN1_DIR)/, $(BINS:=.1))

$(MAN1_DIR):
mkdir -p $@

# Commandline executable.
jsonnet: cmd/jsonnet.cpp cmd/utils.cpp $(LIB_OBJ)
$(CXX) $(CXXFLAGS) $(LDFLAGS) $< cmd/utils.cpp $(LIB_SRC:.cpp=.o) -o $@
Expand Down Expand Up @@ -224,7 +241,7 @@ $(RELEASE_FILE): bins
dist: $(RELEASE_FILE)

clean:
rm -rvf */*~ *~ .*~ */.*.swp .*.swp $(ALL) *.o core/*.jsonnet.h Makefile.depend *.so.* build jsonnet.egg-info $(RELEASE_FILE)
rm -rvf */*~ *~ .*~ */.*.swp .*.swp $(ALL) *.o core/*.jsonnet.h Makefile.depend *.so.* build jsonnet.egg-info $(RELEASE_FILE) man

-include Makefile.depend

Expand Down