my_help 0.6.1 → 0.6.2

Sign up to get free protection for your applications and to get access to all the features.
data/.rspec DELETED
@@ -1,2 +0,0 @@
1
- --format documentation
2
- --color
data/.yardopts DELETED
@@ -1,2 +0,0 @@
1
- -
2
- **/*.md
data/README.md DELETED
@@ -1,415 +0,0 @@
1
- <div id="table-of-contents">
2
- <h2>Table of Contents</h2>
3
- <div id="text-table-of-contents">
4
- <ul>
5
- <li><a href="#">1. 概要</a></li>
6
- <li><a href="#my_help">2. (my_helpで解決しようとする)問題点</a></li>
7
- <li><a href="#">3. 特徴</a></li>
8
- <li><a href="#">4. 使用法</a>
9
- <ul>
10
- <li><a href="#">4.1. 簡単な使用法</a></li>
11
- <li><a href="#">4.2. インストール</a></li>
12
- <li><a href="#alpine-linux-dockerfile">4.3. alpine linuxのためのDockerfile</a></li>
13
- <li><a href="#help">4.4. 独自のhelpを作る方法</a></li>
14
- <li><a href="#help">4.5. 独自helpを使えるように</a></li>
15
- </ul>
16
- </li>
17
- <li><a href="#user-help">5. userの独自helpの達成方法</a></li>
18
- <li><a href="#">6. どちらがいいか</a></li>
19
- <li><a href="#uninstall">7. uninstall</a></li>
20
- <li><a href="#sec-8">8. Rakefile</a></li>
21
- </ul>
22
- </div>
23
- </div>
24
-
25
-
26
- # 概要<a id="概要" name="概要"></a>
27
-
28
-
29
- CUI(CLI)ヘルプのUsage出力を真似て,user独自のhelpを作成・提供するgem.
30
-
31
- # (my\_helpで解決しようとする)問題点<a id="my_helpで解決しようとする問題点" name="my_helpで解決しようとする問題点"></a>
32
-
33
-
34
- CUIやshell, 何かのプログラミング言語などを習得しようとする初心者は,
35
- commandや文法を覚えるのに苦労します.少しのkey(とっかかり)があると
36
- 思い出すんですが,うろ覚えでは間違えて路頭に迷います.問題点は,
37
- - manは基本的に英語
38
- - manualでは重たい
39
- - いつもおなじことをwebで検索して
40
- - 同じとこ見ている
41
- - memoしても,どこへ置いたか忘れる
42
-
43
- などです.
44
-
45
- # 特徴<a id="特徴" name="特徴"></a>
46
-
47
-
48
- これらをgem環境として提供しようというのが,このgemの目的です.
49
- 仕様としては,
50
- - userが自分にあったmanを作成
51
- - 雛形を提供
52
- - おなじformat, looks, 操作, 階層構造
53
- - すぐに手が届く
54
- - それらを追加・修正・削除できる
55
-
56
- hikiでやろうとしていることの半分くらいはこのあたりのことなの
57
- かもしれません.memoソフトでは,検索が必要となりますが,my\_helpは
58
- key(記憶のとっかかり)を提供することが目的です.
59
- RPGでレベル上げとかアイテムを貯めるようにして,
60
- プログラミングでスキルを発展させてください.
61
-
62
- 物覚えの悪い作者は,人の名前をitem分けして,こそっと使っています.
63
-
64
- # 使用法<a id="使用法" name="使用法"></a>
65
-
66
-
67
-
68
- ## 簡単な使用法<a id="簡単な使用法" name="簡単な使用法"></a>
69
-
70
-
71
- > $ gem install my\_help
72
-
73
- でも installがうまくいくと,defaultでmy\_help, my\_todo,
74
- emacs\_helpが入ります.
75
-
76
- emacs\_helpを動かしてみてください.
77
-
78
- emacsのキーバインド
79
-
80
- 特殊キー操作
81
- c-f, controlキーを押しながら 'f'
82
- M-f, escキーを押した後一度離して'f'
83
- 操作の中断c-g, 操作の取り消し(Undo) c-x u
84
- cc by Shigeto R. Nishitani, 2016
85
- Usage: e_h [options]
86
- -v, --version show program Version.
87
- -c, --cursor Cursor移動
88
- -e, --編集 Edit操作
89
- -f, --ファイル File操作
90
- -q, --終了 終了操作
91
- -p, --ページ Page移動
92
- -w, --ウィンドウ Window操作
93
- -b, --バッファ Buffer操作
94
- -m, --mode モード切り替え
95
- --edit edit help contents
96
- --to_hiki convert to hikidoc format
97
- --all display all helps
98
- --store [item] store [item] in back
99
- --remove [item] remove [item] in back
100
- --add [item] add new [item]
101
-
102
- ## インストール<a id="インストール" name="インストール"></a>
103
-
104
-
105
- インストールですが,gemの標準とは違ったやり方になります.GithubからForkしてcloneします.
106
- >$ git clone git@github.com:daddygongon/my\_help.git
107
-
108
- あとの作業はbundleを使って行います.
109
-
110
- これは,最後のrake
111
- install:localをコマンドから実行する方法がわからんかったからですが...
112
- - helpファイルのpush共有とかも考えるとこれがいいのかも. -
113
-
114
- home以下に置く方法と比較分析してください. -
115
- lib/daddygongonにあたらしいhelpを置くようにしていましたが,helpに個人情報を入れるとgit
116
- pushでさらしてしまうので,やめました.
117
-
118
- まずは,
119
-
120
- > $ bundle update
121
-
122
- でmy\_help.gemspecに記述されている必要なgemsがbundleされます.
123
-
124
- Could not locate
125
- Gemfileとエラーが出た場合は、Gemfileのある場所を探し、その配下に移動してから再びコマンドを入力する.
126
-
127
- 用意されているコマンドは,
128
-
129
- > $ bundle exec exe/my\_help
130
-
131
- Usage: my_help [options]
132
- -v, --version show program Version.
133
- -l, --list 個別(specific)ヘルプのList表示.
134
- -e, --edit NAME NAME(例:test_help)をEdit編集.
135
- -i, --init NAME NAME(例:test_help)のtemplateを作成.
136
- -m, --make make executables for all helps.
137
- -c, --clean clean up exe dir.
138
- --install_local install local after edit helps
139
- --delete NAME delete NAME help
140
-
141
- です.まず,-lでdefaultで入っているリストを見てください.
142
-
143
- > $ bundle exec exe/my\_help -l
144
-
145
- "/usr/local/lib/ruby/gems/2.2.0/gems/my_help-0.2.1/lib/daddygongon"
146
- ["-l"]
147
- Specific help file:
148
- emacs_help
149
-
150
- これで,CUIでemacs\_help, e\_hが用意されています.
151
- これをいじって挙動に馴染んでください.
152
- &#x2013;addとか&#x2013;editとかで,要素の追加や編集ができます.
153
-
154
- ## alpine linuxのためのDockerfile<a id="alpine-linuxのためのdockerfile" name="alpine-linuxのためのdockerfile"></a>
155
-
156
-
157
- my\_helpをalpine
158
- linux上で動作させるため、以下のDockerfileを作成しました。
159
-
160
- FROM alpine:3.7
161
-
162
- ENV http_proxy <YOUR PROXY HERE>
163
- ENV https_proxy <YOUR PROXY HERE>
164
-
165
- RUN apk update && apk upgrade
166
- RUN apk --update add \
167
- openssh git build-base libffi libffi-dev \
168
- ruby ruby-dev ruby-rake ruby-bundler
169
-
170
- RUN git clone https://github.com/daddygongon/my_help.git
171
- WORKDIR my_help
172
-
173
- RUN bundle update
174
- RUN bundle exec exe/my_help -m && rake install:local
175
-
176
- プロキシは適宜書き換えてください。
177
- ビルド時のアカウントに関するエラーを除けば大体は問題なく動作しています。
178
-
179
- # build an image named 'my-help'
180
- $ docker build -t my-help .
181
- ...
182
-
183
- # run a container
184
- $ docker run -it --rm my-help:latest emacs_help
185
-
186
- ## 独自のhelpを作る方法<a id="独自のhelpを作る方法" name="独自のhelpを作る方法"></a>
187
-
188
-
189
- さて,独自のhelpを作る方法です.まずは,
190
-
191
- > $ bundle exec exe/my\_help -i new\_help
192
-
193
- "*Users/bob*.my\_help/new\_help"
194
- "/Users/bob/Github/my\_help/lib/daddygongon/template\_help"
195
-
196
- > $ cp *Users/bob/Github/my\_help/lib/daddygongon/template\_help
197
- > /Users/bob*.my\_help/new\_help
198
-
199
- で,new\_helpというtemplateが用意されます.-e
200
- new\_helpで編集してください. YAML形式で,格納されています.サンプルが,
201
-
202
- my_help/lib/daddygongon
203
-
204
- にあります.このあと,-mすると自動でnew\_helpがexeディレクトリーに追加されます.
205
-
206
- ## 独自helpを使えるように<a id="独自helpを使えるように" name="独自helpを使えるように"></a>
207
-
208
-
209
- これは,
210
-
211
- > $ bundle exec exe/my\_help -m
212
-
213
- で自動的に行われるように修正しましたが,gem環境によっては正常にinstallできません.その場合は,以下にしたがって,手動で/usr/local/binなどにinstallする必要があります.my\_helpのdirectoryで
214
-
215
- > $ git add -A
216
-
217
- > $ git commit -m 'add new help'
218
-
219
- > $ rake install:local
220
-
221
- してください.さらにlocalへのinstallにはsudoがいるかもしれませ.
222
-
223
- これで終わり.new\_helpや短縮形のn\_hでhelpが使えます.
224
- もし使えないときは,bin
225
- pathが通ってないので,terminalをnewしてください.
226
-
227
- # userの独自helpの達成方法<a id="userの独自helpの達成方法" name="userの独自helpの達成方法"></a>
228
-
229
-
230
- - rake my\_helpでやっていたが,今は,my\_help -mに移行
231
- - @target dirをmy\_help/lib/daddygongonからENV['HOME']/.my\_helpに変更
232
-
233
- exe中のファイルをrakeで自動生成. @target\_dirにそれらのdataを保存.
234
- その名前からexe中に実行ファイルを自動生成させている.
235
-
236
- lib/daddygongon/
237
- └── emacs_help
238
-
239
- exe
240
- ├── e_h
241
- └── emacs_help
242
-
243
- ということ.これは,
244
-
245
- > $ my\_help -m
246
-
247
- で実行される.これを
248
-
249
- > $ rake install:local
250
-
251
- すれば必要とするhelpがlocalな環境でbin dirに移され,CUI
252
- commandとして実行可能になる.
253
-
254
- たくさんの実行ファイルを/usr/loca/binに置くことになるので,あらたなmy\_helpを作成するときには
255
-
256
- > $ gem uninstall my\_help
257
-
258
- > $ gem uninstall emacs\_help
259
-
260
- でそのdirをcleanにしておくことが望ましい.下のuninstallの項目を参照.
261
-
262
- -mでやっている中身は以下の通り.
263
-
264
- def make_help
265
- Dir.entries(@target_dir)[2..-1].each{|file|
266
- next if file[0]=='#' or file[-1]=='~'
267
- exe_cont="#!/usr/bin/env ruby\nrequire 'specific_help'\n"
268
- exe_cont << "help_file = File.join(ENV['HOME'],'.my_help','#{file}')\n"
269
- exe_cont << "SpecificHelp::Command.run(help_file, ARGV)\n"
270
- [file, short_name(file)].each{|name|
271
- p target=File.join('exe',name)
272
- File.open(target,'w'){|file| file.print exe_cont}
273
- FileUtils.chmod('a+x', target, :verbose => true)
274
- }
275
- }
276
- install_local
277
- end
278
-
279
- def install_local
280
- #中略
281
- system "git add -A"
282
- system "git commit -m 'update exe dirs'"
283
- system "Rake install:local"
284
- end
285
-
286
- 実装方法は,emacs\_helpに
287
-
288
- 1. yaml形式でdataを入れ,command.runの入力ファイルとする
289
- 2. hush形式でdataをいれ,それをrequireして使う
290
-
291
- かのどちらかで実装.speedとかdebugを比較・検証する必要あり.
292
- 今の所,No.1の方を実装.No.2のためのhushデータは,
293
-
294
- # -*- coding: utf-8 -*-
295
- require 'yaml'
296
- require 'pp'
297
- yaml =<<EOF
298
- :file:
299
- :opts:
300
- :short: "-f"
301
- :cont:
302
- - c-x c-f, Find file, ファイルを開く
303
- - c-x c-s, Save file, ファイルを保存
304
- EOF
305
- pp data=YAML.load(yaml)
306
- print YAML.dump(data)
307
-
308
-
309
- data0={:file=>
310
- {:opts=>{:short=>"-f", :long=>"--ファイル", :desc=>"File操作"},
311
- :title=>"ファイル操作file",
312
- :cont=>
313
- ["c-x c-f, Find file, ファイルを開く
314
- c-x c-s, Save file, ファイルを保存
315
- c-x c-w, Write file NAME, ファイルを別名で書き込む"]}}
316
-
317
- print YAML.dump(data0)
318
-
319
- ruby test.rb lib/daddygongon/emacs_help
320
-
321
- で構築できる.実装してみて.
322
-
323
- # どちらがいいか<a id="どちらがいいか" name="どちらがいいか"></a>
324
-
325
-
326
- Rubyで日本語が使えるから,optionsを日本語にしてみた.
327
-
328
- Usage: eh [options]
329
- -v, --version show program Version.
330
- -c, --カーソル Cursor移動
331
- -p, --ページ Page移動
332
- -f, --ファイル File操作
333
- -e, --編集 Edit操作
334
- -w, --ウィンドウ Window操作
335
- -b, --バッファ Buffer操作
336
- -q, --終了 終了操作
337
-
338
- 半角,全角がoptparseでは適切に判断できない様で,表示があまり揃っていない.
339
- しかし,初心者の振る舞いを見ているとわざわざ日本語に切り替えて打ち込むことは稀であり,
340
- key wordをhelpで参照してshort optionで入力している.そこで,
341
-
342
- Usage: eh [options]
343
- -v, --version show program Version.
344
- -c, --cursor カーソル移動
345
- -p, --page ページ移動
346
- -f, --file ファイル操作
347
- -e, --edit 編集操作
348
- -w, --window ウィンドウ操作
349
- -b, --buffer バッファ操作
350
- -q, --quit 終了操作
351
-
352
- としたほうがいいと提案する.アンケートを実施してみてほしい.
353
-
354
- # uninstall<a id="uninstall" name="uninstall"></a>
355
-
356
-
357
- my\_help -mでinstallするとEXECUTABLE DIRECTORYにhelpのexec
358
- filesが自動で追加される. ~/.my\_helpを修正したときには,あらかじめ
359
-
360
- > $ gem unistall my\_help
361
-
362
- でそれらをuninstallしておくと良い.
363
-
364
- > $ gem uninstall my\_help
365
- >
366
- > Select gem to uninstall:
367
- > 1. my\_help-0.1.0
368
- > 2. my\_help-0.2.0
369
- > 3. my\_help-0.2.1
370
- > 4. my\_help-0.2.2
371
- > 5. my\_help-0.2.3
372
- > 6. my\_help-0.3.0
373
- > 7. my\_help-0.3.1
374
- > 8. my\_help-0.3.2
375
- > 9. All versions
376
- >
377
- > > 9
378
- > Successfully uninstalled my\_help-0.1.0 Successfully
379
- > uninstalled my\_help-0.2.0 Remove executables: #my\_help#
380
- >
381
- > in addition to the gem? [Yn] Y
382
- > Removing #my\_help# Successfully
383
- > uninstalled my\_help-0.2.1 Successfully uninstalled my\_help-0.2.2
384
- > Successfully uninstalled my\_help-0.2.3 Successfully uninstalled
385
- > my\_help-0.3.0 Remove executables: test\_help
386
- >
387
- > in addition to the gem? [Yn] Y
388
- > Removing test\_help Successfully
389
- > uninstalled my\_help-0.3.1 Remove executables: e\_h, emacs\_help, m\_h,
390
- > member\_help, my\_help, n\_h, new\_help, r\_h, ruby\_help, t\_h,
391
- > template\_help
392
- >
393
- > in addition to the gem? [Yn] Y
394
- > Removing e\_h Removing emacs\_help
395
- > Removing m\_h Removing member\_help Removing my\_help Removing n\_h
396
- > Removing new\_help Removing r\_h Removing ruby\_help Removing t\_h
397
- > Removing template\_help Successfully uninstalled my\_help-0.3.2 \`\`\`
398
-
399
- # Rakefile<a id="sec-8" name="sec-8"></a>
400
-
401
- 幾つかの環境設定用のtoolがRakefileに用意されている.
402
-
403
- # add .yml mode on ~/.emacs.d/init.el
404
- $ rake add_yml
405
- # clean up exe dir
406
- $ rake clean_exe
407
- # add .yml on all help files
408
- $ rake to_yml
409
-
410
- - add\_yml, to\_ymlは3.6から4.0へ移行する時に行ったhelpファイルの拡張子変更,
411
- - 3.6では拡張子なしで4.0では'.yml',に対する対応のために用意したツール.
412
- - add\_ymlは~/.my\_help/\*\_helpファイルを全て~/.my\_help/\*\_help.ymlに変える.
413
- - to\_ymlは~/.emacs.d/init.elに'.yml'の設定が書き込まれていない時,ruby-modeでemacsを起動するsciptを埋め込む.
414
-
415
- clean\_exeは,githubへuploadする時に,開発者個人のexeファイルをrmして整頓する.
@@ -1,10 +0,0 @@
1
- =begin
2
- module Mytodo
3
- class Edit
4
- def open
5
-
6
- end
7
- end
8
- end
9
-
10
- =end
@@ -1 +0,0 @@
1
- require 'my_todo/my_todo'