From 30030fc9492d5d5d0a53218b2ced38ef5e676d62 Mon Sep 17 00:00:00 2001 From: Philippe PITTOLI Date: Tue, 5 Nov 2019 01:13:57 +0100 Subject: [PATCH] New makefile. --- Makefile | 135 ++++++++++++++++++++++++++++++++++++++++++++++++++ project.zsh | 8 +++ src/cli.cr | 2 +- src/indent.cr | 13 +++++ src/tests.cr | 10 ++++ 5 files changed, 167 insertions(+), 1 deletion(-) create mode 100644 Makefile create mode 100644 project.zsh create mode 100644 src/indent.cr create mode 100644 src/tests.cr diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..89f1f3a --- /dev/null +++ b/Makefile @@ -0,0 +1,135 @@ +PACKAGE = 'networkctl' +VERSION = '0.0.1' + +PREFIX := /usr/local +BINDIR := $(PREFIX)/bin +LIBDIR := $(PREFIX)/lib +SHAREDIR := $(PREFIX)/share +INCLUDEDIR := $(PREFIX)/include +MANDIR := $(SHAREDIR)/man + +CC := cc +AR := ar +RANLIB := ranlib +CFLAGS := +LDFLAGS := + +Q := @ + +all: networkctl + @: + +networkctl: src/main.cr + @echo ' CR > networkctl' + $(Q)crystal build --release $(CRFLAGS) src/main.cr -o 'networkctl' + + +networkctl.install: networkctl + @echo ' IN > $(BINDIR)/networkctl' + $(Q)mkdir -p '$(DESTDIR)$(BINDIR)' + $(Q)install -m0755 networkctl $(DESTDIR)$(BINDIR)/networkctl + +networkctl.clean: + @echo ' RM > networkctl' + $(Q)rm -f networkctl + +networkctl.uninstall: + @echo ' RM > $(BINDIR)/networkctl' + $(Q)rm -f '$(DESTDIR)$(BINDIR)/networkctl' + +$(DESTDIR)$(PREFIX): + @echo ' DIR > $(PREFIX)' + $(Q)mkdir -p $(DESTDIR)$(PREFIX) +$(DESTDIR)$(BINDIR): + @echo ' DIR > $(BINDIR)' + $(Q)mkdir -p $(DESTDIR)$(BINDIR) +$(DESTDIR)$(LIBDIR): + @echo ' DIR > $(LIBDIR)' + $(Q)mkdir -p $(DESTDIR)$(LIBDIR) +$(DESTDIR)$(SHAREDIR): + @echo ' DIR > $(SHAREDIR)' + $(Q)mkdir -p $(DESTDIR)$(SHAREDIR) +$(DESTDIR)$(INCLUDEDIR): + @echo ' DIR > $(INCLUDEDIR)' + $(Q)mkdir -p $(DESTDIR)$(INCLUDEDIR) +$(DESTDIR)$(MANDIR): + @echo ' DIR > $(MANDIR)' + $(Q)mkdir -p $(DESTDIR)$(MANDIR) +install: subdirs.install networkctl.install + @: + +subdirs.install: + +uninstall: subdirs.uninstall networkctl.uninstall + @: + +subdirs.uninstall: + +test: all subdirs subdirs.test + @: + +subdirs.test: + +clean: networkctl.clean + +distclean: clean + +dist: dist-gz dist-xz dist-bz2 + $(Q)rm -- $(PACKAGE)-$(VERSION) + +distdir: + $(Q)rm -rf -- $(PACKAGE)-$(VERSION) + $(Q)ln -s -- . $(PACKAGE)-$(VERSION) + +dist-gz: $(PACKAGE)-$(VERSION).tar.gz +$(PACKAGE)-$(VERSION).tar.gz: distdir + @echo ' TAR > $(PACKAGE)-$(VERSION).tar.gz' + $(Q)tar czf $(PACKAGE)-$(VERSION).tar.gz \ + $(PACKAGE)-$(VERSION)/src/main.cr + +dist-xz: $(PACKAGE)-$(VERSION).tar.xz +$(PACKAGE)-$(VERSION).tar.xz: distdir + @echo ' TAR > $(PACKAGE)-$(VERSION).tar.xz' + $(Q)tar cJf $(PACKAGE)-$(VERSION).tar.xz \ + $(PACKAGE)-$(VERSION)/src/main.cr + +dist-bz2: $(PACKAGE)-$(VERSION).tar.bz2 +$(PACKAGE)-$(VERSION).tar.bz2: distdir + @echo ' TAR > $(PACKAGE)-$(VERSION).tar.bz2' + $(Q)tar cjf $(PACKAGE)-$(VERSION).tar.bz2 \ + $(PACKAGE)-$(VERSION)/src/main.cr + +help: + @echo ' :: networkctl-0.0.1' + @echo '' + @echo 'Generic targets:' + @echo ' - help  Prints this help message.' + @echo ' - all  Builds all targets.' + @echo ' - dist  Creates tarballs of the files of the project.' + @echo ' - install  Installs the project.' + @echo ' - clean  Removes compiled files.' + @echo ' - uninstall  Deinstalls the project.' + @echo '' + @echo 'CLI-modifiable variables:' + @echo ' - CC  ${CC}' + @echo ' - CFLAGS  ${CFLAGS}' + @echo ' - LDFLAGS  ${LDFLAGS}' + @echo ' - DESTDIR  ${DESTDIR}' + @echo ' - PREFIX  ${PREFIX}' + @echo ' - BINDIR  ${BINDIR}' + @echo ' - LIBDIR  ${LIBDIR}' + @echo ' - SHAREDIR  ${SHAREDIR}' + @echo ' - INCLUDEDIR  ${INCLUDEDIR}' + @echo ' - MANDIR  ${MANDIR}' + @echo '' + @echo 'Project targets: ' + @echo ' - networkctl  crystal' + @echo '' + @echo 'Makefile options:' + @echo ' - gnu: false' + @echo ' - colors: true' + @echo '' + @echo 'Rebuild the Makefile with:' + @echo ' zsh ./build.zsh -c' +.PHONY: all subdirs clean distclean dist install uninstall help + diff --git a/project.zsh b/project.zsh new file mode 100644 index 0000000..749d8c4 --- /dev/null +++ b/project.zsh @@ -0,0 +1,8 @@ + +package=networkctl +version=0.0.1 + +targets=(networkctl) +type[networkctl]=crystal +sources[networkctl]=src/main.cr + diff --git a/src/cli.cr b/src/cli.cr index cdc100c..35a92e6 100644 --- a/src/cli.cr +++ b/src/cli.cr @@ -1,7 +1,7 @@ file_option : String? = nil -OptionParser.parse! do |parser| +OptionParser.parse do |parser| parser.on "-s", "--simulation", "Export the network configuration." do Context.simulation = true end diff --git a/src/indent.cr b/src/indent.cr new file mode 100644 index 0000000..0371c13 --- /dev/null +++ b/src/indent.cr @@ -0,0 +1,13 @@ + +def indent(n : Int, text : String) + String.build do |str| + text.split("\n").each do |line| + n.times do + str << "\t" + end + + str << line + str << "\n" + end + end +end diff --git a/src/tests.cr b/src/tests.cr new file mode 100644 index 0000000..4b2f4cd --- /dev/null +++ b/src/tests.cr @@ -0,0 +1,10 @@ +require "./indent" + +str = "truc +sur +plusieurs +lignes" + +indented = indent 2, str + +puts indented