metanorma-cli 1.3.2 → 1.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/dependent_repos.env +3 -0
  3. data/.github/workflows/macos.yml +38 -0
  4. data/.github/workflows/ubuntu.yml +72 -0
  5. data/.github/workflows/windows.yml +40 -0
  6. data/.gitignore +21 -0
  7. data/.hound.yml +3 -0
  8. data/.rspec +2 -0
  9. data/.rubocop.yml +515 -0
  10. data/docs/installation.adoc +61 -0
  11. data/docs/navigation.adoc +7 -0
  12. data/docs/usage.adoc +74 -0
  13. data/lib/metanorma/cli/command.rb +16 -2
  14. data/lib/metanorma/cli/setup.rb +9 -25
  15. data/lib/metanorma/cli/version.rb +1 -1
  16. data/metanorma-cli.gemspec +24 -18
  17. data/templates/base/.github/workflows/docker.yml +74 -0
  18. data/templates/base/.github/workflows/macos.yml +50 -0
  19. data/templates/base/.github/workflows/ubuntu.yml +55 -0
  20. data/templates/base/.github/workflows/windows.yml +42 -0
  21. data/templates/base/.gitlab-ci.yml +34 -4
  22. data/templates/base/Makefile +111 -59
  23. data/templates/base/Makefile.win +136 -36
  24. data/templates/base/metanorma.yml +1 -1
  25. metadata +49 -69
  26. data/05-020r26.rxl +0 -75
  27. data/05-020r26.xml.zip +0 -0
  28. data/Gemfile.lock +0 -337
  29. data/a +0 -5
  30. data/a.json +0 -33
  31. data/a.rb +0 -13
  32. data/a.rxl +0 -45
  33. data/b +0 -85
  34. data/csd-tofix 2.zip +0 -0
  35. data/csd-tofix.zip +0 -0
  36. data/exe/metanorma.old +0 -178
  37. data/extract/sourcecode/sourcecode-0000.txt +0 -5
  38. data/files.zip +0 -0
  39. data/relaton/cache/version +0 -1
  40. data/rice.rxl +0 -51
  41. data/sourcecode/0 +0 -5
  42. data/templates/base/.travis.yml +0 -30
  43. data/templates/base/appveyor.yml +0 -29
  44. data/test.rxl +0 -52
  45. data/tmp/my-custom-csd/Gemfile +0 -4
  46. data/tmp/my-custom-csd/Makefile +0 -144
  47. data/tmp/my-custom-csd/Makefile.win +0 -116
  48. data/tmp/my-custom-csd/appveyor.yml +0 -29
  49. data/tmp/my-custom-csd/metanorma.yml +0 -4
  50. data/tmp/my-document/Gemfile +0 -4
  51. data/tmp/my-document/Makefile +0 -144
  52. data/tmp/my-document/Makefile.win +0 -116
  53. data/tmp/my-document/appveyor.yml +0 -29
  54. data/tmp/my-document/metanorma.yml +0 -4
  55. data/tmp/my-local-document/Gemfile +0 -4
  56. data/tmp/my-local-document/Makefile +0 -144
  57. data/tmp/my-local-document/Makefile.win +0 -116
  58. data/tmp/my-local-document/appveyor.yml +0 -29
  59. data/tmp/my-local-document/metanorma.yml +0 -4
@@ -0,0 +1,61 @@
1
+ = Installation
2
+
3
+ You can get the `metanorma` command-line executable by installing this Ruby gem.
4
+
5
+ [IMPORTANT]
6
+ ====
7
+ To install the Metanorma toolchain we recommend to use one of the ways described in
8
+ https://www.metanorma.com/author/topics/install/[Metanorma installation] topic.
9
+ Installing this gem by hand may not be the easiest way.
10
+
11
+ When following this installation method, to start building documents you may have to take care
12
+ of manually installing some required third-party software as well.
13
+ Which exactly depends on what documents you’re building, below notes cover some of that.
14
+ ====
15
+
16
+
17
+ == Installing the Metanorma CLI gem
18
+
19
+ [source,console]
20
+ ----
21
+ gem install metanorma-cli
22
+ ----
23
+
24
+ Installing the gem will also install all officially supported Metanorma flavors
25
+ (such as ISO, CalConnect, IETF, etc).
26
+
27
+
28
+ == Dependencies
29
+
30
+ === Java
31
+
32
+ You will have to have a Java runtime installed. (Use `brew cask install java` on macOS.)
33
+
34
+ === Puppeteer
35
+
36
+ *If you are going to generate PDFs from HTML* (which applies to CalConnect Standard Documents),
37
+ you will also need to install the https://github.com/GoogleChrome/puppeteer[Puppeteer] Node library.
38
+
39
+ * Ensure you have Node of at least version 7.6.0:
40
+ ** https://nodejs.org/en/download/
41
+ ** On macOS you should be able to `brew install node`
42
+ * Ensure you have NPM: https://docs.npmjs.com/getting-started/installing-node
43
+ * Install Puppeteer globally in your system: `npm install -g --save --save-exact puppeteer`
44
+
45
+ === PlantUML
46
+
47
+ *If your documents include link:/author/topics/document-format/diagrams/[PlantUML diagrams]*,
48
+ PlantUML will have to be installed.
49
+
50
+ * `brew install plantuml` on MacOS.
51
+ * For Linux, link the PlantUML jar file into a command line executable; see
52
+ `.travis.yml` for an example.
53
+
54
+ If PlantUML is not installed locally, the source PlantUML is incorporated into
55
+ the output document as sourcecode.
56
+
57
+
58
+ == Installation notes for Windows
59
+
60
+ To be able to compile gem with a native extension you must have `RIDK` installed.
61
+ If you are installing metanorma with chocolatey installation script will do this for you
@@ -0,0 +1,7 @@
1
+ ---
2
+ items:
3
+ - { title: Installation, path: installation/ }
4
+ - { title: Usage, path: usage/ }
5
+ ---
6
+
7
+ = Navigation
@@ -0,0 +1,74 @@
1
+ = Using the Metanorma CLI
2
+
3
+ == Usage sample
4
+
5
+ [source,sh]
6
+ ----
7
+ $ metanorma --type iso -x html iso-my-standard-document.adoc
8
+ ----
9
+
10
+ == Full syntax & options
11
+
12
+ [source,sh]
13
+ ----
14
+ $ metanorma --type <chosen-type> \
15
+ [--format input-format] \
16
+ [--extensions EXT1,EXT2...] \
17
+ iso-my-standard-document.adoc
18
+ ----
19
+
20
+ `type`:: (mandatory, specified via `--type` or `-t`) takes one of the following types:
21
+ `rfc2`, `rfc3`, `iso`, `gb`, `csd`, `csand`, `m3d`, `rsd`. Each of these corresponds to a
22
+ standards class and a Metanorma gem; the list of standards classes supported by the script
23
+ by default will grow (see also `require`).
24
+
25
+ `extension`:: (optional) specifies the output formats to be generated. If not specified,
26
+ all possible output formats are generated. The output formats generated are constrained by
27
+ what has been defined for each standard type. All standards can generate Metanorma XML (`xml`),
28
+ and at least one of HTML (`html`), DOC (`doc`), PDF (`pdf`). Some standards generate alternative
29
+ HTML renderings (e.g. `html_alt` for ISO).
30
+
31
+ `wrapper`:: create a separate folder for each instance of HTML output generated; the folder is named
32
+ the same as the output file, without the `.html` suffix. Used to make distribution of HTML outputs
33
+ more straightforward.
34
+
35
+ `format`:: (optional, defaults to `asciidoc`, specified via `--format` or `-f`) only accepts `asciidoc` for now
36
+
37
+ `require`:: If you wish to use metanorma with a document class which has not been included in the types recognised
38
+ by the metanorma script, you will need to name the corresponding Metnorma gem explicitly with the `-r`
39
+ option. For example:
40
+
41
+ [source,sh]
42
+ ----
43
+ $ metanorma -t mpfd mpfd-bpn.adoc
44
+
45
+ [metanorma] Error: mpfd is not a supported standard type.
46
+
47
+ $ metanorma -t mpfd -r metanorma-mpfd mpfd-bpn.adoc
48
+ ----
49
+
50
+ == Command-line help
51
+
52
+ [source,sh]
53
+ ----
54
+ $ metanorma -h
55
+ Usage: metanorma [options] <file>
56
+ -t, --type TYPE Type of standard to generate: rfc2, rfc3, iso, gb, csd, csand, m3d
57
+ -x, --extensions EXT1,EXT2,... | all Type of extension to generate per type:
58
+ {
59
+ :rfc2=>{:xmlrfc=>"v2.xml"},
60
+ :rfc3=>{:xmlrfc=>"v3.xml"},
61
+ :iso=>{:html=>"html", :html_alt=>"alt.html", :doc=>"doc"},
62
+ :gb=>{:html=>"html", :doc=>"doc"},
63
+ :csd=>{:html=>"html", :pdf=>"pdf"},
64
+ :csand=>{:html=>"html"},
65
+ :m3d=>{:html=>"html", :doc=>"doc"},
66
+ :rsd=>{:html=>"html"}
67
+ }
68
+ In addition, xml (outside of rfc2, rfc3) generates IsoDoc XML. If the argument is "all" or the option is
69
+ missing, all available extensions are generated.
70
+ -f, --format FORMAT Format of source file: asciidoc (current default, only format supported)
71
+ -r, --require LIBRARY Require LIBRARY prior to execution
72
+ -w, --wrapper Create wrapper folder for HTML output
73
+ -h, --help Show this message
74
+ ----
@@ -54,6 +54,7 @@ module Metanorma
54
54
  option :format, aliases: "-f", default: :asciidoc, desc: "Format of source file: eg. asciidoc"
55
55
 
56
56
  def version
57
+ Metanorma::Cli.load_flavors
57
58
  backend_version(options[:type]) || supported_backends
58
59
  rescue NameError => error
59
60
  UI.say(error)
@@ -85,8 +86,14 @@ module Metanorma
85
86
  font: font,
86
87
  term_agreement: options[:agree_to_terms],
87
88
  )
89
+ rescue Fontist::Errors::LicensingError
90
+ UI.error(
91
+ "[error]: License acceptance required to install a necessary font." \
92
+ "Accept required licenses with: `metanorma setup --agree-to-terms`."
93
+ )
94
+ return
88
95
  rescue Fontist::Errors::NonSupportedFontError
89
- UI.say("[info]: Font `#{font}` is not supported yet!")
96
+ UI.say("[info]: The font `#{font}` is not yet supported.")
90
97
  end
91
98
  end
92
99
  end
@@ -120,7 +127,7 @@ module Metanorma
120
127
  end
121
128
 
122
129
  def find_backend(type)
123
- require "metanorma-#{type}"
130
+ load_flavours(type)
124
131
  Metanorma::Registry.instance.find_processor(type&.to_sym)
125
132
  end
126
133
 
@@ -161,6 +168,13 @@ module Metanorma
161
168
  end
162
169
  end.compact.flatten.uniq
163
170
  end
171
+
172
+ def load_flavours(type)
173
+ Metanorma::Cli.load_flavors
174
+ unless Metanorma::Registry.instance.find_processor(type&.to_sym)
175
+ require "metanorma-#{type}"
176
+ end
177
+ end
164
178
  end
165
179
  end
166
180
  end
@@ -43,7 +43,7 @@ module Metanorma
43
43
  begin
44
44
  Fontist::Font.find(font_name)
45
45
  rescue Fontist::Errors::MissingFontError
46
- ask_user_and_download_font(font_name)
46
+ process_font_installation(font_name)
47
47
  end
48
48
  end
49
49
 
@@ -54,34 +54,18 @@ module Metanorma
54
54
  end
55
55
  end
56
56
 
57
- def ask_user_and_download_font(font_name)
58
- response = term_agreement ? "yes" : "no"
59
- formula = Fontist::Formula.find(font_name)
57
+ def process_font_installation(font_name)
58
+ accepted_agreement = term_agreement == true ? "yes" : "no"
60
59
 
61
- if !term_agreement
62
- response = UI.ask(message(formula.license).strip)
63
- end
64
-
65
- if response.downcase === "yes"
66
- Fontist::Font.install(font_name, confirmation: response)
67
- end
60
+ UI.say(missing_font_message) if !term_agreement
61
+ Fontist::Font.install(font_name, confirmation: accepted_agreement)
68
62
  end
69
63
 
70
- def message(license)
64
+ def missing_font_message
71
65
  <<~MSG
72
- Metanorma has detected that you do not have the necessary fonts installed
73
- for PDF generation. The generated PDF will use generic fonts that may not
74
- resemble the desired styling. Metanorma can download these files for you
75
- if you accept the font licensing conditions for the font #{font_name}.
76
-
77
- ----------
78
-
79
- #{license}
80
-
81
- ----------
82
-
83
- If you want Metanorma to download these fonts for you and indicate your
84
- acceptance of the font licenses, type "Yes" / "No":
66
+ Your system does not have the necessary fonts installed for
67
+ PDF generation. Without these fonts, the generated PDF will use
68
+ generic fonts that may not resemble the desired styling.\n
85
69
  MSG
86
70
  end
87
71
  end
@@ -1,5 +1,5 @@
1
1
  module Metanorma
2
2
  module Cli
3
- VERSION = "1.3.2"
3
+ VERSION = "1.3.6"
4
4
  end
5
5
  end
@@ -14,8 +14,14 @@ Gem::Specification.new do |spec|
14
14
  spec.homepage = "https://www.metanorma.com"
15
15
  spec.license = "BSD-2-Clause"
16
16
 
17
+ =begin
17
18
  spec.files = Dir['**/*'].reject { |f| f.match(%r{^(test|spec|features|templates|.git)/|.(gem|gif|png|jpg|jpeg|xml|html|doc|pdf|dtd|ent)$}) }
18
19
  spec.files += Dir.glob("templates/base/**", File::FNM_DOTMATCH).reject { |f| File.directory?(f) }
20
+ =end
21
+
22
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
23
+ f.match(%r{^(test|spec|features)/})
24
+ end
19
25
 
20
26
  spec.extra_rdoc_files = %w[README.adoc LICENSE]
21
27
  spec.bindir = "exe"
@@ -32,26 +38,26 @@ Gem::Specification.new do |spec|
32
38
  spec.add_development_dependency "rspec-core", "~> 3.4"
33
39
 
34
40
  spec.add_runtime_dependency "thor", "~> 1.0"
35
- spec.add_runtime_dependency "metanorma-iso", "~> 1.4.0"
36
- spec.add_runtime_dependency 'metanorma-ietf', "~> 2.1.0"
37
- spec.add_runtime_dependency 'metanorma-gb', "~> 1.4.0"
38
- spec.add_runtime_dependency 'metanorma-iec', "~> 1.1.0"
39
- spec.add_runtime_dependency 'metanorma-cc', "~> 1.4.0"
40
- spec.add_runtime_dependency 'metanorma-csa', "~> 1.5.0"
41
- #spec.add_runtime_dependency 'metanorma-ribose', "~> 1.5.0"
42
- spec.add_runtime_dependency 'metanorma-m3aawg', "~> 1.4.0"
43
- spec.add_runtime_dependency 'metanorma-generic', "~> 1.5.0"
44
- spec.add_runtime_dependency 'metanorma-standoc', "~> 1.4.0"
45
- #spec.add_runtime_dependency 'metanorma-mpfa', "~> 0.4.0"
46
- spec.add_runtime_dependency 'metanorma-un', "~> 0.4.0"
47
- spec.add_runtime_dependency 'metanorma-ogc', "~> 1.1.0"
48
- spec.add_runtime_dependency 'metanorma-nist', "~> 1.1.0"
49
- spec.add_runtime_dependency 'metanorma-itu', "~> 1.1.0"
50
- spec.add_runtime_dependency 'metanorma-iho', "~> 0.1.0"
51
- spec.add_runtime_dependency 'isodoc', "~> 1.1.0"
41
+ spec.add_runtime_dependency "metanorma-iso", "~> 1.5.0"
42
+ spec.add_runtime_dependency 'metanorma-ietf', "~> 2.2.0"
43
+ spec.add_runtime_dependency 'metanorma-gb', "~> 1.5.0"
44
+ spec.add_runtime_dependency 'metanorma-iec', "~> 1.2.0"
45
+ spec.add_runtime_dependency 'metanorma-cc', "~> 1.5.0"
46
+ spec.add_runtime_dependency 'metanorma-csa', "~> 1.6.0"
47
+ #spec.add_runtime_dependency 'metanorma-ribose', "~> 1.6.0"
48
+ spec.add_runtime_dependency 'metanorma-m3aawg', "~> 1.5.0"
49
+ spec.add_runtime_dependency 'metanorma-generic', "~> 1.6.0"
50
+ spec.add_runtime_dependency 'metanorma-standoc', "~> 1.5.0"
51
+ #spec.add_runtime_dependency 'metanorma-mpfa', "~> 0.5.0"
52
+ spec.add_runtime_dependency 'metanorma-un', "~> 0.5.0"
53
+ spec.add_runtime_dependency 'metanorma-ogc', "~> 1.2.0"
54
+ spec.add_runtime_dependency 'metanorma-nist', "~> 1.2.0"
55
+ spec.add_runtime_dependency 'metanorma-itu', "~> 1.2.0"
56
+ spec.add_runtime_dependency 'metanorma-iho', "~> 0.2.0"
57
+ spec.add_runtime_dependency 'isodoc', "~> 1.2.0"
52
58
  spec.add_runtime_dependency 'metanorma', "~> 1.1.0"
53
59
  #spec.add_runtime_dependency 'nokogiri', ">= 1"
54
60
  spec.add_runtime_dependency "git", "~> 1.5"
55
61
  spec.add_runtime_dependency "relaton-cli", ">= 0.8.2"
56
- spec.add_runtime_dependency "fontist", "~> 1.0"
62
+ spec.add_runtime_dependency "fontist", "~> 1.3.0"
57
63
  end
@@ -0,0 +1,74 @@
1
+ # Auto-generated by Cimas: Do not edit it manually!
2
+ # See https://github.com/metanorma/cimas
3
+ name: docker
4
+
5
+ on:
6
+ push:
7
+ branches: [ master ]
8
+ pull_request:
9
+ paths-ignore:
10
+ - .github/workflows/test.yml
11
+ - .github/workflows/macos.yml
12
+ - .github/workflows/ubuntu.yml
13
+ - .github/workflows/windows.yml
14
+ - Makefile.win
15
+ repository_dispatch:
16
+ types: [ metanorma/metanorma-docker ]
17
+
18
+ jobs:
19
+ test-docker:
20
+ runs-on: ubuntu-latest
21
+ container: docker://metanorma/mn
22
+ steps:
23
+ - name: Checkout code
24
+ uses: actions/checkout@v2
25
+ with:
26
+ token: ${{ secrets.METANORMA_CI_PAT_TOKEN || github.token }}
27
+ submodules: true
28
+ - name: Setup fonts
29
+ run: |
30
+ metanorma setup --agree-to-terms
31
+ - uses: actions/setup-go@v2-beta
32
+ with:
33
+ go-version: '^1.13.1'
34
+ - name: Install yq
35
+ run: |
36
+ GO111MODULE=on go get github.com/mikefarah/yq/v3
37
+ ln -s $GOPATH/bin/yq /usr/local/bin/yq
38
+ - name: Instal gems from local Gemfile
39
+ run: |
40
+ curl -L --retry 3 https://raw.githubusercontent.com/metanorma/metanorma-build-scripts/master/gemfile-to-bundle-add.sh | bash
41
+ - name: Build document in the Metanorma container
42
+ env:
43
+ LC_ALL: C.UTF-8
44
+ LANG: C.UTF-8
45
+ LANGUAGE: C.UTF-8
46
+ run: |
47
+ make clean all publish
48
+ - uses: actions/upload-artifact@master
49
+ with:
50
+ name: published
51
+ path: published
52
+
53
+ deploy-gh-pages:
54
+ if: github.ref == 'refs/heads/master'
55
+ runs-on: ubuntu-latest
56
+ needs: test-docker
57
+ steps:
58
+ - uses: actions/checkout@master
59
+ - uses: actions/download-artifact@v1
60
+ with:
61
+ name: published
62
+ - name: Deploy to GH Pages
63
+ uses: peaceiris/actions-gh-pages@v3
64
+ with:
65
+ deploy_key: ${{ secrets.GH_DEPLOY_KEY }}
66
+ publish_dir: ./published
67
+ force_orphan: true
68
+ user_name: ${{ github.actor }}
69
+ user_email: ${{ format('{0}@users.noreply.github.com', github.actor) }}
70
+ commit_message: "${{ format('Deploy to GitHub Pages: {0}', github.sha) }}"
71
+ - uses: kolpav/purge-artifacts-action@v1
72
+ with:
73
+ token: ${{ secrets.GITHUB_TOKEN }}
74
+ expire-in: 0
@@ -0,0 +1,50 @@
1
+ # Auto-generated by Cimas: Do not edit it manually!
2
+ # See https://github.com/metanorma/cimas
3
+ name: macos
4
+
5
+ on:
6
+ push:
7
+ branches: [ master ]
8
+ pull_request:
9
+ paths-ignore:
10
+ - .github/workflows/test.yml
11
+ - .github/workflows/docker.yml
12
+ - .github/workflows/ubuntu.yml
13
+ - .github/workflows/windows.yml
14
+ - Makefile.win
15
+
16
+ jobs:
17
+ test-macos:
18
+ name: Test on macOS
19
+ runs-on: macos-latest
20
+ steps:
21
+ - name: Checkout code
22
+ uses: actions/checkout@v2
23
+ with:
24
+ token: ${{ secrets.METANORMA_CI_PAT_TOKEN || github.token }}
25
+ submodules: true
26
+ - name: Cache xml2rfc
27
+ id: cache-xml2rfc
28
+ uses: actions/cache@v1
29
+ with:
30
+ path: ~/.cache/xml2rfc
31
+ key: xml2rfc
32
+ restore-key: xml2rfc
33
+ - name: Use Metanorma
34
+ run: |
35
+ brew update
36
+ brew install yq
37
+ brew install https://raw.githubusercontent.com/metanorma/homebrew-metanorma/master/Formula/metanorma.rb
38
+ metanorma version
39
+ - name: Setup Fonts
40
+ run: |
41
+ metanorma setup --agree-to-terms
42
+ - name: Install bundler
43
+ run: |
44
+ sudo gem install bundler
45
+ - name: Metanorma compile
46
+ env:
47
+ JAVA_OPTS: "java.awt.headless=true"
48
+ run: |
49
+ source $(brew --prefix metanorma)/libexec/venv/bin/activate
50
+ make clean all
@@ -0,0 +1,55 @@
1
+ # Auto-generated by Cimas: Do not edit it manually!
2
+ # See https://github.com/metanorma/cimas
3
+ name: ubuntu
4
+
5
+ on:
6
+ push:
7
+ branches: [ master ]
8
+ pull_request:
9
+ paths-ignore:
10
+ - .github/workflows/test.yml
11
+ - .github/workflows/macos.yml
12
+ - .github/workflows/docker.yml
13
+ - .github/workflows/windows.yml
14
+ - Makefile.win
15
+
16
+ jobs:
17
+ test-linux:
18
+ name: Test on Ubuntu
19
+ runs-on: ubuntu-latest
20
+ steps:
21
+ - name: Checkout code
22
+ uses: actions/checkout@v2
23
+ with:
24
+ token: ${{ secrets.METANORMA_CI_PAT_TOKEN || github.token }}
25
+ submodules: true
26
+ - name: Cache xml2rfc
27
+ id: cache-xml2rfc
28
+ uses: actions/cache@v1
29
+ with:
30
+ path: ~/.cache/xml2rfc
31
+ key: xml2rfc
32
+ restore-key: xml2rfc
33
+ - name: Use Metanorma
34
+ run: |
35
+ sudo apt-get update
36
+ curl -L https://raw.githubusercontent.com/metanorma/metanorma-linux-setup/master/ubuntu.sh | sudo bash
37
+ sudo chown -R $USER:$(id -gn $USER) $HOME/.config
38
+ - name: Setup Fonts
39
+ run: |
40
+ sudo gem install rake metanorma-cli
41
+ sudo metanorma setup --agree-to-terms
42
+ - name: Install yq
43
+ run: |
44
+ sudo snap install yq
45
+ echo "::add-path::/snap/bin"
46
+ - name: Install bundler
47
+ run: |
48
+ sudo gem install bundler
49
+ - name: Metanorma compile
50
+ env:
51
+ JAVA_OPTS: "java.awt.headless=true"
52
+ run: |
53
+ source $HOME/.nvm/nvm.sh
54
+ nvm use mn-node
55
+ make clean all publish