linuxBean14.04(161)brush-Makefileのバグを修正する

2017-04-16

旧ブログ

t f B! P L
linuxBean14.04(123)SyntaxHighlighter v4のブラシを作成するで作成したSyntaxHighlighterのMakefile用のbrush.jsの間違いを指摘されたので動作確認して修正します。

前の関連記事:linuxBean14.04(160)Pythonのsys.executableは環境変数PATHを参照しているらしい


brush-Makefileのバグを修正する


作成したときのNetBeans8.1のプロジェクトが残っていたのでこれを使います。
var BrushBase = require('brush-base');
var regexLib = require('syntaxhighlighter-regex').commonRegExp;
function Brush() {
    var functions =  'subst patsubst strip findstring filter filter-out sort dir notdir suffix basename addsuffix addprefix join word wordlist words firstword wildcard foreach origin shell'; 
    var constants = 'PHONY SUFFIXES DEFAULT PRECIOUS INTERMEDIATE SECONDARY IGNORE SILENT EXPORT_ALL_VARIABLES';
    this.regexList = [
        { regex: regexLib.singleLineCComments, css: 'comments' },  // one line comments
        { regex: regexLib.doubleQuotedString, css: 'string' }, // double quoted strings
        { regex: regexLib.singleQuotedString, css: 'string' }, // single quoted strings
        { regex: /\$\([^\@%<\?\^\+\*]\w+\)/gm,             css: 'variable' },  // 変数
        { regex: /((\$\(?[\@%<\?\^\+\*](D\)|F\))*)|%|\$&lt;)/gm,    css: 'keyword' },   // 自動変数
        { regex: new RegExp(this.getKeywords(functions), 'gm'),   css: 'functions' }, // テキスト変形関数
        { regex: new RegExp(this.getKeywords(constants), 'gm'),   css: 'constants' }  // ビルトインターゲット名  
    ];
}
Brush.prototype = new BrushBase();
Brush.aliases = ['Makefile'];
module.exports = Brush;
この7行目の1行コメントが効いていません。

新たな正規表現パターンを提案されましたが、syntaxhighlighter-regex/index.js at master · syntaxhighlighter/syntaxhighlighter-regex · GitHubのデフォルトの正規表現パターンのsingleLinePerlCommentsと同じなのでこれに変更しました。

そもそもsample.txtのコメントがMakefileの書式に従っていなかったことに気が付きました。

How to add multi line comments in makefiles - Stack Overflowにも複数行コメントの方法はなく一行ずつ#を付けるしかないと書いてあります。

LibreOfficeのSDKのMakefileもコメントは各行について#を付けています。

ということでsample.txtも修正しました。

修正したbrush-Makefileの動作確認をする


linuxBean14.04(123)SyntaxHighlighter v4のブラシを作成するの「brush-Makefileモジュールを含めてSyntaxHighlighterをビルドする」の通りにします。

linuxBean14.04(122)NetBeans8.1でSyntaxHighlighter v4のビルドのNetBeans8.1で作ったSyntaxHighlighter v4のプロジェクトを使います。

ファイルマネージャで~/NetBeansProjects/syntaxhighlighter/reposに~/NetBeansProjects/brush-Makefileプロジェクトフォルダ内のnbprojectとnode_modulesフォルダ以外のファイルをコピーしました。

シンボリックリンクの作成とpackage.jsonの編集をしました。


syntaxhighlighterプロジェクトの重要なファイルのpackage.jsonを右クリック→npmスクリプト→build。

うーん、 Cannot find module 'internal/fs'というエラーがでてきてビルドできませんね。

これは次のようにnode.jsのバージョンを変更することでうまくいくようになりました。

NetBeans8.1のnpmスクリプトを実行するnodeのバージョンを確認する


node 7.0.0 に上げたら internal-fs の互換性のない変更により辛いので brew で node 6 系を入れた - Qiita

Cannot find module 'internal/fs'というエラーがでてくるのはlinuxBean14.04(130)weinreでiOSのブラウザのJavaScriptをデバッグするでv7.2.0をインストールしたのが原因のようです。

NetBeans8.1のnode.js関係のツールのバージョンはlinuxBean14.04(117)NetBeans8.1でnvmのNode.jsを使うための工夫で設定しました。

nodeは/usr/local/bin/node、npmは/usr/local/bin/npmのシンボリックリンクで起動しているのでその実体を確認します。
pq@pq-VirtualBox:/usr/local/bin$ readlink -f /usr/local/bin/node
/home/pq/.nvm/versions/node/v6.3.0/bin/node
pq@pq-VirtualBox:/usr/local/bin$ readlink -f /usr/local/bin/npm
/home/pq/.nvm/versions/node/v6.3.0/lib/node_modules/npm/bin/npm-cli.js
それぞれちゃんとv6.3.0のものになっていますね。
    "node  --version": "node --version",
    "which npm": "which npm"
しかしpackage.jsonのscriptsにこのnpmスクリプトを設定して実行してみるとどちらもv7.2.0が返ってきます、、、なぜじゃ、、、

試行錯誤した結果、npmスクリプトではNetBeansのオプションで設定したnpmではなくnvmでデフォルトに設定したバージョンのnpmを使っていることがわかりました。

nvm alias default v6.3.0

これをTerminalで実行した後NetBeans8.1を再起動するとうまくビルドできました。

distフォルダに出力されたindex.htmlを確認するとちゃんとMakefileのコメントがハイライトされていました。

これで動作確認完了です。

このブログのsyntaxhighlighterを修正版に入れ替える


linuxBean14.04(123)SyntaxHighlighter v4のブラシを作成するの「v3をv4に入れ替える」と同様にします。

distフォルダ内に出力されたsyntaxhighlighter.jsの最終行の//# sourceMappingURL=syntaxhighlighter.js.mapを削除します。

残ったsyntaxhighlighter.jsの中身をHTML/JavaScriptガジェット内の「syntaxhighlighter.jsの中身」に該当する部分と入れ替えました。
# This is a Makefile sample.

%.run: $(OUT_APP_CLASS)/%.jar
 $(SDK_JAVA) -Dcom.sun.star.lib.loader.unopath="$(OFFICE_PROGRAM_PATH)" -jar $<
 
.PHONY: clean
clean :
 -$(DELRECURSIVE) $(subst /,$(PS),$(OUT_APP_CLASS))
ちゃんとコメントもハイライトされるようになりました。

www.npmjs.comに登録しているバージョンをアップデートする


まずNetBeans8.1に作ったbrush-MakefileのNetBeansプロジェクトをGitHubにアップロードします。

NetBeansのプロジェクトウィンドウでbrush-Makefileプロジェクトを右クリック→Git→コミット。

コミットが完了したらプッシュします。

brush-Makefileプロジェクトを右クリック→Git→リモート→アップストリームへプッシュ。

これでGitHubリポジトリのアップデートが完了しました。

次にwww.npmjs.comのパッケージをアップデートしないといけません。

12 - Publishing npm packages | npm Documentation

cd ~/NetBeansProjects/brush-Makefile

Terminalでまずアップロードしたいファイルがあるフォルダに移動します。

そのフォルダにはpackage.jsonファイルがあるはずです。

npm versionでpatch, minor, majorを選択します。

パッチかマイナーかメジャーかの選択の指標の解説はセマンティック バージョニング 2.0.0 - Semantic Versioningがわかりやすかったです。

パッチ: 後方互換性を保ったバグ修正を取り込んだ場合

マイナー: 後方互換性を保ちつつ機能性をパブリックAPIに追加した場合

メジャー: パブリックAPIに対して後方互換性を持たない変更が取り込まれた場合

npm version patch

今回はバグ修正なのでパッチにしました。

package.jsonの中に書いてあるバージョンがv0.1.0からv0.1.1に上がっています。

npm publish

バージョンアップしたのでパブリッシュしました。

brush-Makefile

www.npmjs.comのページをみるとちゃんとバージョンが上がっています。

README.mdにパッチをあてたことを書こうかと思いましたが、書いている例が見つけられなかったのでやめました。

GitHubのプルリクエストの対応


プルリクエストされたGitHubリポジトリのPull requestsをクリックするとプルリクエストが表示されます。

お礼の返事を書いた後、Resolve conflictsボタンをクリックしました。

コンフリクト部分を書き直した後Mark as resolvedボタンをクリックしました。

Commit changesボタンがでてきたのでこれをクリックしました。

Close Pull requestボタンをクリックするとPull requestsが0になりました。

リモートリポジトリが更新されたのでローカルにもプルしました。


NetBeansのGitリポジトリブラウザでみるとローカルとリモートのハッシュ値が違うままです。

なぜでしょう、、、ああ、わかりました。

GitHubのプッシュした後にnpm version patchしたのでローカルの方が更新されているのでプッシュしないといけないのでした。

アップストリームへプッシュしてハッシュ値が一緒になりました。

参考にしたサイト


syntaxhighlighter-regex/index.js at master · syntaxhighlighter/syntaxhighlighter-regex · GitHub
SyntaxHighligterにすでにある正規表現パターン一覧。

How to add multi line comments in makefiles - Stack Overflow
Makefileでは複数行コメントを一括してコメントアウトする記法はないようです。

node 7.0.0 に上げたら internal-fs の互換性のない変更により辛いので brew で node 6 系を入れた - Qiita
Cannot find module 'internal/fs'というエラーはnode.jsのバージョンを6.0.3に下げたら解決しました。

nvmでnode.jsの環境をつくる。 - Qiita
nvmのdefaultの変更は設定後に起動したTerminalでのみ変更が反映されます。

12 - Publishing npm packages | npm Documentation
www.npmjs.comのパッケージの更新のやり方の解説。

セマンティック バージョニング 2.0.0 - Semantic Versioning
パッチかマイナーかメジャーかのバージョン番号の付け方の解説。

次の関連記事:linuxBean14.04(162)LibreOfficeのC++の拡張機能の例をCUIのデバッガにかける

ブログ検索 by Blogger

Translate

最近のコメント

Created by Calendar Gadget

QooQ