From 659747f3b5629243e2dd57744550986a4b498b3c Mon Sep 17 00:00:00 2001 From: Steve Clement Date: Fri, 7 Sep 2018 15:09:41 +0200 Subject: [PATCH] chg: [tools] Added serve.sh in case gitbook --watch is broken chg: [doc] Changed the install procedure to reflect current OS versions chg: [test] First try at fixing Travis, BUT it is an awful fix. See: https://github.com/travis-ci/travis-ci/issues/9594 blame: @travis-ci and @npm --- .travis.yml | 2 ++ USAGE.md | 25 +++++++++++++++++++++---- general-layout/figures/menu_image.png | Bin 22813 -> 0 bytes serve.sh | 8 ++++++++ 4 files changed, 31 insertions(+), 4 deletions(-) delete mode 100644 general-layout/figures/menu_image.png create mode 100755 serve.sh diff --git a/.travis.yml b/.travis.yml index 02a74f8..c82969a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,6 +8,7 @@ sudo: required install: - sudo apt-get -y install libgif-dev calibre npm + - sudo npm config set strict-ssl false - sudo npm cache clean -f - sudo npm install -g n - sudo n stable @@ -18,6 +19,7 @@ install: - npm install gitbook-plugin-github - npm install gitbook-plugin-toc - npm install gitbook-plugin-anchors + - npm install gitbook-plugin-image-class script: - gitbook install diff --git a/USAGE.md b/USAGE.md index 8cfc7b9..333f49d 100644 --- a/USAGE.md +++ b/USAGE.md @@ -4,14 +4,18 @@ Install notes :warning: Make sure to be in the *misp-book* repository directory for the *npm magic*. Also: The *npm* plugin *autocover* is broken. It pulls an incompatible *canvas* module version. Thus patched repository used (forked from original) +Finally: You will get a few errors on Ubuntu 18.04 which you can ignore for now. In the rather near future we need to think about an alternative as gitbook glides towards obsoletion and security risk. -Tested on: *Ubuntu 16.04.4 LTS* +Tested on: *Ubuntu 18.04 LTS* *Debian 9.5/sid/testing* +[Terminal Recording of npm install lines on Ubuntu 18.04](https://asciinema.org/a/84JZMuGu2QlFH59q6mK8jbdQS) ```bash -curl -sL https://deb.nodesource.com/setup_9.x | sudo -E bash - +git clone git@github.com:MISP/misp-book.git +cd misp-book +curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - sudo apt-get install -y nodejs sudo apt-get install -y build-essential -sudo apt install -y npm pkg-config libcairo2-dev +sudo apt install -y pkg-config libcairo2-dev libgif-dev npm install gitbook git+https://github.com/SteveClement/plugin-autocover.git gitbook-plugin-github gitbook-plugin-toc gitbook-plugin-anchors gitbook-plugin-image-class sudo npm install gitbook-cli -g gitbook install @@ -101,7 +105,7 @@ xcode-select --install brew install pkg-config cairo pango libpng jpeg giflib ``` -:warning: Make sure to be in the *misp-book* repository directory for the npm magic. +:warning: Make sure to be in the *misp-book* repository directory for the npm magic to work correctly. Installing gitbook and all dependencies wants to look like this (Tested on *macOS 11.13.3*): @@ -111,6 +115,19 @@ npm install gitbook-cli -g gitbook install ``` +gitbook rebuild on change +========================= + +By default gitbook has the '--watch' option enabled. +If this is broken, use the included 'serve.sh' and the 'inoticoming' package. +Start 'gitbook serve &' and run the following command line: + +``` +inoticoming --foreground . --suffix .md bash serve.sh \; +``` + +If any md changes, the gitbook process is killed and restarted. + npm salvage =========== diff --git a/general-layout/figures/menu_image.png b/general-layout/figures/menu_image.png deleted file mode 100644 index eed269536e15c437e4b83717ec8c96f025697c07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22813 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 diff --git a/serve.sh b/serve.sh new file mode 100755 index 0000000..3e9bfdd --- /dev/null +++ b/serve.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# Kill any existing instances of "gitbook serve" +ps -Af | grep node | grep "gitbook serve" | awk '{print $2}' | xargs kill 2>/dev/null +if [ "$1" = "shutdown" ]; then echo "Goodbye!"; exit 0; fi; + +# Launch the server +gitbook serve . &