my_help 0.8.6 → 1.1

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 (72) hide show
  1. checksums.yaml +4 -4
  2. data/'../test'/.my_help/.my_help_conf.yml +2 -0
  3. data/'../test'/.my_help/emacs.org +50 -0
  4. data/{lib/templates → '../test'/.my_help}/org.org +0 -0
  5. data/{lib/templates → '../test'/.my_help}/todo.org +0 -0
  6. data/.gitignore +7 -0
  7. data/.my_help/example2.org +9 -0
  8. data/.rspec +1 -2
  9. data/.rspec_status +13 -0
  10. data/.yardoc/checksums +3 -3
  11. data/.yardoc/object_types +0 -0
  12. data/.yardoc/objects/root.dat +0 -0
  13. data/Gemfile +10 -5
  14. data/Gemfile.lock +61 -88
  15. data/README.org +35 -47
  16. data/Rakefile +25 -14
  17. data/doc/MyHelp/Control.html +443 -221
  18. data/doc/MyHelp.html +7 -7
  19. data/doc/OrgToYaml.html +12 -10
  20. data/doc/_index.html +7 -7
  21. data/doc/class_list.html +2 -2
  22. data/doc/css/style.css +3 -2
  23. data/doc/file.README.html +29 -29
  24. data/doc/file_list.html +2 -2
  25. data/doc/frames.html +2 -2
  26. data/doc/index.html +29 -29
  27. data/doc/js/app.js +14 -3
  28. data/doc/method_list.html +24 -8
  29. data/doc/top-level-namespace.html +6 -6
  30. data/docs/README.html +218 -0
  31. data/docs/README.org +202 -0
  32. data/docs/old_docs/16b_nasu.pdf +0 -0
  33. data/docs/old_docs/17b_oyagi.pdf +0 -0
  34. data/docs/old_docs/19b_okabata.pdf +0 -0
  35. data/docs/old_docs/19b_yamaguchi.pdf +0 -0
  36. data/docs/old_docs/features/delete.feature +7 -0
  37. data/docs/old_docs/features/edit.feature +7 -0
  38. data/docs/old_docs/features/list.feature +6 -0
  39. data/docs/old_docs/features/new.feature +7 -0
  40. data/docs/old_docs/features/step_definitions/delete_spec.rb +12 -0
  41. data/docs/old_docs/features/step_definitions/edit_spec.rb +14 -0
  42. data/docs/old_docs/features/step_definitions/list_spec.rb +10 -0
  43. data/docs/old_docs/features/step_definitions/new_spec.rb +12 -0
  44. data/docs/old_docs/features/support/env.rb +3 -0
  45. data/docs/old_docs/fukumori_symp/18_human_interface_fukumori_workshop.pdf +0 -0
  46. data/docs/old_docs/fukumori_symp/memo_perp_magician.pdf +0 -0
  47. data/docs/old_docs/fukumori_symp//347/237/245/350/255/230/343/201/256/347/233/264/344/272/244/350/243/234/347/251/272/351/226/223.png +0 -0
  48. data/exe/my_help +1 -142
  49. data/lib/my_help/cli.rb +106 -0
  50. data/lib/my_help/config.rb +70 -0
  51. data/lib/my_help/git_cli.rb +40 -0
  52. data/lib/my_help/init.rb +28 -0
  53. data/lib/my_help/list.rb +76 -0
  54. data/lib/my_help/md2hash.rb +54 -0
  55. data/lib/my_help/modify.rb +33 -0
  56. data/lib/my_help/org2hash.rb +45 -0
  57. data/lib/my_help/org2yml.rb +14 -14
  58. data/lib/my_help/version.rb +3 -1
  59. data/lib/my_help.rb +23 -7
  60. data/lib/templates/emacs.org +13 -14
  61. data/lib/templates/example.md +17 -0
  62. data/lib/templates/example.org +9 -0
  63. data/my_help.gemspec +26 -22
  64. data/tmp.txt +14 -0
  65. metadata +51 -25
  66. data/README.html +0 -443
  67. data/README.rdoc +0 -6
  68. data/bin/my_help_thor +0 -66
  69. data/exe/my_help_gli +0 -82
  70. data/lib/my_help/my_help_controll.rb +0 -222
  71. data/lib/my_help/tomo_help_controll.rb +0 -0
  72. data/lib/templates/help_template.org +0 -8
data/docs/README.html ADDED
@@ -0,0 +1,218 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="jp" xml:lang="jp">
5
+ <head>
6
+ <!-- 2023-01-05 Thu 15:58 -->
7
+ <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
8
+ <meta name="viewport" content="width=device-width, initial-scale=1" />
9
+ <title>my_help 開発メモ</title>
10
+ <meta name="author" content="Shigeto R. Nishitani" />
11
+ <meta name="generator" content="Org Mode" />
12
+ <link rel="stylesheet" type="text/css" href="https://fniessen.github.io/org-html-themes/src/readtheorg_theme/css/htmlize.css"/>
13
+ <link rel="stylesheet" type="text/css" href="https://fniessen.github.io/org-html-themes/src/readtheorg_theme/css/readtheorg.css"/>
14
+ <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
15
+ <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script>
16
+ <script type="text/javascript" src="https://fniessen.github.io/org-html-themes/src/lib/js/jquery.stickytableheaders.min.js"></script>
17
+ <script type="text/javascript" src="https://fniessen.github.io/org-html-themes/src/readtheorg_theme/js/readtheorg.js"></script>
18
+ </head>
19
+ <body>
20
+ <div id="content" class="content">
21
+ <h1 class="title">my_help 開発メモ</h1>
22
+ <div id="table-of-contents" role="doc-toc">
23
+ <h2>Table of Contents</h2>
24
+ <div id="text-table-of-contents" role="doc-toc">
25
+ <ul>
26
+ <li><a href="#orge4fa5d5">1. <span class="timestamp-wrapper"><span class="timestamp">&lt;2022-12-15 Thu&gt; </span></span> subcommand and options</a></li>
27
+ <li><a href="#org66ec027">2. <span class="timestamp-wrapper"><span class="timestamp">&lt;2022-12-15 Thu&gt; </span></span> rspecでerror</a>
28
+ <ul>
29
+ <li><a href="#orgab3a666">2.1. 解決!!</a></li>
30
+ </ul>
31
+ </li>
32
+ <li><a href="#org18dc25e">3. <span class="timestamp-wrapper"><span class="timestamp">&lt;2021-10-18 Mon&gt; </span></span> conf_pathの追加</a></li>
33
+ <li><a href="#org2aec50d">4. <span class="timestamp-wrapper"><span class="timestamp">&lt;2021-11-08 Mon&gt; </span></span> conf_pathをactivate</a></li>
34
+ <li><a href="#org20943ec">5. <span class="timestamp-wrapper"><span class="timestamp">&lt;2021-11-08 Mon&gt; </span></span> bundle exec exe/my_help editでエラー</a></li>
35
+ </ul>
36
+ </div>
37
+ </div>
38
+
39
+ <div id="outline-container-orge4fa5d5" class="outline-2">
40
+ <h2 id="orge4fa5d5"><span class="section-number-2">1.</span> <span class="timestamp-wrapper"><span class="timestamp">&lt;2022-12-15 Thu&gt; </span></span> subcommand and options</h2>
41
+ <div class="outline-text-2" id="text-1">
42
+ <ul class="org-ul">
43
+ <li><a href="https://hawksnowlog.blogspot.com/2020/09/ruby-thor-tutorial.html#hello-thor">Ruby thor で CLI ツールの開発に入門してみる</a></li>
44
+ </ul>
45
+ </div>
46
+ </div>
47
+
48
+ <div id="outline-container-org66ec027" class="outline-2">
49
+ <h2 id="org66ec027"><span class="section-number-2">2.</span> <span class="timestamp-wrapper"><span class="timestamp">&lt;2022-12-15 Thu&gt; </span></span> rspecでerror</h2>
50
+ <div class="outline-text-2" id="text-2">
51
+ <p>
52
+ Arubaでrspecするとpwd directoryが/tmp/arubaになる?
53
+ そうすると今のままではrspecが通らなくなる.
54
+ example2.orgの置き場が不定.
55
+ spec側で強引に作るか...
56
+ </p>
57
+
58
+ <p>
59
+ それもsmartにしたいよね.
60
+ newでは後ろにoptionがあって,#{temp_dir}での作成とできるが,
61
+ これをその他のoptionsでやるのは難しそう.
62
+ </p>
63
+ </div>
64
+
65
+ <div id="outline-container-orgab3a666" class="outline-3">
66
+ <h3 id="orgab3a666"><span class="section-number-3">2.1.</span> 解決!!</h3>
67
+ <div class="outline-text-3" id="text-2-1">
68
+ <p>
69
+ Arubaだけの問題なので,テストの時用にhelp_dirを
70
+ Thorのoptionとして引けるようにした.
71
+ </p>
72
+ <div class="org-src-container">
73
+ <pre class="src src-ruby"><span class="linenr"> 1: </span> desc <span style="color: #8b7355;">"list [HELP] [ITEM]"</span>, <span style="color: #8b7355;">"list helps"</span>
74
+ <span class="linenr"> 2: </span> option <span style="color: #6e8b3d;">:help_dir</span>, <span style="color: #6e8b3d;">:type</span> =&gt; <span style="color: #6e8b3d;">:string</span>
75
+ <span class="linenr"> 3: </span> <span style="color: #7f7f7f;"># </span><span style="color: #7f7f7f;">use method_options [[https://github.com/rails/thor/wiki/Method-Options]]</span>
76
+ <span class="linenr"> 4: </span> <span style="color: #1c86ee;">def</span> <span style="color: #cd9b1d;">list</span>(*args)
77
+ <span class="linenr"> 5: </span> config = get_config(args).config
78
+ <span class="linenr"> 6: </span> help_dir = options[<span style="color: #8b7355;">"help_dir"</span>] || config[<span style="color: #6e8b3d;">:local_help_dir</span>]
79
+ <span class="linenr"> 7: </span> <span style="color: #cd6600;">puts</span> <span style="color: #00688b;">List</span>.new(help_dir,
80
+ <span class="linenr"> 8: </span> config[<span style="color: #6e8b3d;">:ext</span>]).list(*args.join(<span style="color: #8b7355;">" "</span>))
81
+ <span class="linenr"> 9: </span> <span style="color: #1c86ee;">end</span>
82
+ <span class="linenr">10: </span>...
83
+ <span class="linenr">11: </span> context <span style="color: #8b7355;">"list command"</span> <span style="color: #1c86ee;">do</span>
84
+ <span class="linenr">12: </span> temp_dir = <span style="color: #00688b;">Dir</span>.pwd
85
+ <span class="linenr">13: </span> let(<span style="color: #6e8b3d;">:help_name</span>) { <span style="color: #8b7355;">"example"</span> }
86
+ <span class="linenr">14: </span> let(<span style="color: #6e8b3d;">:help_dir</span>) { <span style="color: #00688b;">File</span>.join(temp_dir, <span style="color: #8b7355;">"lib"</span>, <span style="color: #8b7355;">"templates"</span>) }
87
+ <span class="linenr">15: </span>
88
+ <span class="linenr">16: </span> it <span style="color: #8b7355;">"list with name"</span> <span style="color: #1c86ee;">do</span>
89
+ <span class="linenr">17: </span> run_command(<span style="color: #8b7355;">"my_help list </span><span style="color: #2e8b57;">#{help_name}</span><span style="color: #8b7355;"> a_item --help_dir=</span><span style="color: #2e8b57;">#{help_dir}</span><span style="color: #8b7355;">"</span>)
90
+ <span class="linenr">18: </span> stop_all_commands
91
+ <span class="linenr">19: </span> expect(last_command_started).to have_output(<span style="color: #8b7355;">/a_item/</span>)
92
+ <span class="linenr">20: </span> <span style="color: #1c86ee;">end</span>
93
+ <span class="linenr">21: </span> <span style="color: #1c86ee;">end</span>
94
+ <span class="linenr">22: </span>
95
+ </pre>
96
+ </div>
97
+ </div>
98
+ </div>
99
+ </div>
100
+
101
+ <div id="outline-container-org18dc25e" class="outline-2">
102
+ <h2 id="org18dc25e"><span class="section-number-2">3.</span> <span class="timestamp-wrapper"><span class="timestamp">&lt;2021-10-18 Mon&gt; </span></span> conf_pathの追加</h2>
103
+ <div class="outline-text-2" id="text-3">
104
+ <p>
105
+ my_help.confの場所を指定するconf_pathをnewで指定できるようにする.
106
+ </p>
107
+
108
+ <div class="org-src-container">
109
+ <pre class="src src-diff"><span class="linenr"> 1: </span><span style="color: #22aa22; background-color: #ddffdd;">&gt;</span><span style="background-color: #ddffdd;"> git diff</span>
110
+ <span class="linenr"> 2: </span><span style="background-color: #d9d9d9;">--- </span><span style="background-color: #bfbfbf; font-weight: bold;">a/lib/my_help/my_help_controll.rb</span>
111
+ <span class="linenr"> 3: </span><span style="background-color: #d9d9d9;">+++ </span><span style="background-color: #bfbfbf; font-weight: bold;">b/lib/my_help/my_help_controll.rb</span>
112
+ <span class="linenr"> 4: </span><span style="background-color: #d9d9d9;">@@ -5,13 +5,14 @@</span><span style="background-color: #d9d9d9;"> require 'yaml'</span>
113
+ <span class="linenr"> 5: </span> module MyHelp
114
+ <span class="linenr"> 6: </span> class Control
115
+ <span class="linenr"> 7: </span> attr_accessor :local_help_dir, :editor
116
+ <span class="linenr"> 8: </span><span style="color: #aa2222; background-color: #ffdddd;">-</span><span style="background-color: #ffdddd;"> def initialize()</span>
117
+ <span class="linenr"> 9: </span><span style="color: #22aa22; background-color: #ddffdd;">+</span><span style="background-color: #ddffdd;"> def initialize(</span><span style="background-color: #aaffaa;">conf_path=nil</span><span style="background-color: #ddffdd;">)</span>
118
+ <span class="linenr">10: </span> # for configuration setups
119
+ <span class="linenr">11: </span> # see https://stackoverflow.com/questions/6233124/where-to-place-access-config-file-in-gem
120
+ <span class="linenr">12: </span><span style="color: #aa2222; background-color: #ffdddd;">-</span>
121
+ <span class="linenr">13: </span><span style="color: #22aa22; background-color: #ddffdd;">+</span><span style="background-color: #ddffdd;"> </span><span style="background-color: #aaffaa;">@conf_path = conf_path || ENV['HOME']</span>
122
+ <span class="linenr">14: </span> @template_dir = File.expand_path("../../templates", __FILE__)
123
+ <span class="linenr">15: </span> @exe_dir = File.expand_path("../../exe", __FILE__)
124
+ <span class="linenr">16: </span><span style="color: #aa2222; background-color: #ffdddd;">-</span><span style="background-color: #ffdddd;"> @local_help_dir = File.join(</span><span style="background-color: #ffbbbb;">ENV[</span><span style="background-color: #ffdddd;">'</span><span style="background-color: #ffbbbb;">HOME</span><span style="background-color: #ffdddd;">'</span><span style="background-color: #ffbbbb;">]</span><span style="background-color: #ffdddd;">,'.my_help')</span>
125
+ <span class="linenr">17: </span><span style="color: #22aa22; background-color: #ddffdd;">+</span><span style="background-color: #ddffdd;"> @local_help_dir = File.join(</span><span style="background-color: #aaffaa;">@conf_path,</span><span style="background-color: #ddffdd;"> '</span><span style="background-color: #aaffaa;">.my_help</span><span style="background-color: #ddffdd;">'</span><span style="background-color: #aaffaa;">)</span><span style="background-color: #aaffaa;">
126
+ <span class="linenr">18: </span></span><span style="color: #22aa22; background-color: #aaffaa;">+</span><span style="background-color: #aaffaa;"> @conf_file = File.join(@local_help_dir</span><span style="background-color: #ddffdd;">, '.my_help</span><span style="background-color: #aaffaa;">_conf.yml</span><span style="background-color: #ddffdd;">')</span>
127
+ <span class="linenr">19: </span> @editor = ENV['EDITOR'] || 'emacs' #'code', 'emacs' #'vim' #default editor
128
+ <span class="linenr">20: </span> # @mini_account = File
129
+ <span class="linenr">21: </span> set_help_dir_if_not_exists
130
+ <span class="linenr">22: </span><span style="background-color: #d9d9d9;">@@ -28,9 +29,6 @@</span><span style="background-color: #d9d9d9;"> module MyHelp</span>
131
+ <span class="linenr">23: </span> end
132
+ <span class="linenr">24: </span>
133
+ <span class="linenr">25: </span> def load_conf
134
+ <span class="linenr">26: </span><span style="color: #aa2222; background-color: #ffdddd;">-</span><span style="background-color: #ffdddd;"> file_name = '.my_help_conf.yml'</span>
135
+ <span class="linenr">27: </span><span style="color: #aa2222; background-color: #ffdddd;">-</span><span style="background-color: #ffdddd;"> # @conf_file = File.join(Dir.pwd, file_name)</span>
136
+ <span class="linenr">28: </span><span style="color: #aa2222; background-color: #ffdddd;">-</span><span style="background-color: #ffdddd;"> @conf_file = File.join(@local_help_dir, file_name)</span>
137
+ <span class="linenr">29: </span> begin
138
+ <span class="linenr">30: </span> conf = YAML.load_file(@conf_file)
139
+ <span class="linenr">31: </span> @editor = conf[:editor]
140
+ </pre>
141
+ </div>
142
+
143
+ <p>
144
+ 変更箇所は次の通り.
145
+ </p>
146
+ <ul class="org-ul">
147
+ <li>initializeはconf_pathを受け取るが,指定されてない時はnil</li>
148
+ <li>これを@conf_pathに受け渡すが,defaultをENV['HOME']に指定</li>
149
+ <li>これでデフォルトのconfigurationを変更していく
150
+ やり方は,
151
+ <a href="https://stackoverflow.com/questions/6233124/where-to-place-access-config-file-in-gem">Where to place/access config file in gem?</a>
152
+ を参照する.</li>
153
+ </ul>
154
+
155
+ <p>
156
+ これによってTest::unitでのtest環境独自のmy_help環境を構築することが
157
+ できる.
158
+ </p>
159
+ </div>
160
+ </div>
161
+
162
+ <div id="outline-container-org2aec50d" class="outline-2">
163
+ <h2 id="org2aec50d"><span class="section-number-2">4.</span> <span class="timestamp-wrapper"><span class="timestamp">&lt;2021-11-08 Mon&gt; </span></span> conf_pathをactivate</h2>
164
+ <div class="outline-text-2" id="text-4">
165
+ <p>
166
+ testが進んできたので,conf_pathをactivateした.
167
+ そのためのテストが必要かも.
168
+ </p>
169
+
170
+ <ol class="org-ol">
171
+ <li>ENV['HOME']で指定した時と...</li>
172
+ <li>pwdで何もない時のoptionsがどうなっている?</li>
173
+ </ol>
174
+
175
+ <div class="org-src-container">
176
+ <pre class="src src-yaml"><span style="color: #2e8b57;">config</span>:
177
+ <span style="color: #2e8b57;">:template_dir</span>: <span style="color: #8b7355;">"/Users/bob/git_hub/my_help/lib/templates"</span>
178
+ <span style="color: #2e8b57;">:local_help_dir</span>: <span style="color: #8b7355;">"/Users/bob/git_hub/my_help/test/.my_help"</span>
179
+ <span style="color: #2e8b57;">:conf_file</span>: <span style="color: #8b7355;">"/Users/bob/git_hub/my_help/test/.my_help/.my_help_conf.yml"</span>
180
+ <span style="color: #2e8b57;">:editor</span>: emacs
181
+ </pre>
182
+ </div>
183
+ </div>
184
+ </div>
185
+
186
+ <div id="outline-container-org20943ec" class="outline-2">
187
+ <h2 id="org20943ec"><span class="section-number-2">5.</span> <span class="timestamp-wrapper"><span class="timestamp">&lt;2021-11-08 Mon&gt; </span></span> bundle exec exe/my_help editでエラー</h2>
188
+ <div class="outline-text-2" id="text-5">
189
+ <div class="org-src-container">
190
+ <pre class="src src-shell">Could not find ffi-1.15.4<span style="color: #1c86ee;"> in</span> any of the sources
191
+ Run <span style="color: #ff00ff;">`bundle install`</span> to install missing gems.
192
+ </pre>
193
+ </div>
194
+ <p>
195
+ とのエラー.
196
+ なんだろう.
197
+ </p>
198
+
199
+ <p>
200
+ さらに,command_lineで呼ぶと,
201
+ </p>
202
+ <pre class="example">
203
+ emacs: standard input is not a tty
204
+ </pre>
205
+
206
+ <p>
207
+ というエラーが出る.これまたなんだろう???
208
+ </p>
209
+ </div>
210
+ </div>
211
+ </div>
212
+ <div id="postamble" class="status">
213
+ <p class="author">Author: Shigeto R. Nishitani</p>
214
+ <p class="date">Created: 2023-01-05 Thu 15:58</p>
215
+ <p class="validation"><a href="https://validator.w3.org/check?uri=referer">Validate</a></p>
216
+ </div>
217
+ </body>
218
+ </html>
data/docs/README.org ADDED
@@ -0,0 +1,202 @@
1
+ #+qiita_teams: 5e172c4b5167abe35a3e
2
+ #+qiita_private: 6487b0b54e4eda26e9f6
3
+ #+OPTIONS: ^:{}
4
+ #+STARTUP: indent nolineimages
5
+ #+TITLE: my_help 開発メモ
6
+ #+AUTHOR: Shigeto R. Nishitani
7
+ #+EMAIL: (concat "shigeto_nishitani@mac.com")
8
+ #+LANGUAGE: jp
9
+ #+OPTIONS: H:4 toc:t num:2
10
+ # +OPTIONS: toc:nil
11
+ #+TAG: ruby, test, my_help
12
+ #+TWITTER: off
13
+ #+SETUPFILE: https://fniessen.github.io/org-html-themes/org/theme-readtheorg.setup
14
+
15
+ * <2023-01-06 Fri> get_configの置き場所
16
+ thorのsubcommandを使って
17
+ * <2023-01-05 Thu> cli directory指定
18
+ ** directory指定
19
+ テスト環境と本番環境でのhelp_dirあるいはconfig_dir指定の
20
+ 差異の吸収メモ.
21
+ - --help_dirでcliはhelp_dirを指定できる.
22
+ - 全て変更したはず.
23
+ - configが混乱しやすい...config[:ext]なんかを自動で返すといいが.
24
+ - rspec/unitでは
25
+ - config_spec.rb, modify_spec.rbではtmp_confをtemp_dirに作成
26
+ - list_spec.rbではtemplates_pathを絶対パスで参照
27
+
28
+ ** Thorでのdirectory指定の変更
29
+ Thorのdirectory指定をしっかりやってみる.
30
+
31
+ #+begin_src bash
32
+ bundle exec rspec --format documentation -e list spec/cli_spec.rb --help_dir='./tmp/.my_Help'
33
+ invalid option: --help_dir=./tmp/.my_Help
34
+
35
+ Please use --help for a listing of valid options
36
+ #+end_src
37
+ これはだめ.なぜなら,--help_dirはmy_helpのlistのoptionであって,
38
+ rspecは解釈してくれない.
39
+
40
+ ここは,cli_spec.rbで
41
+ #+begin_src ruby
42
+ temp_dir = Dir.pwd
43
+ let(:help_name) { "example" }
44
+ let(:help_dir) { File.join(temp_dir, "lib", "templates") }
45
+
46
+ it "list with name" do
47
+ run_command("my_help list #{help_name} a_item --help_dir=#{help_dir}")
48
+ stop_all_commands
49
+ expect(last_command_started).to have_output(/a_item/)
50
+ end
51
+ #+end_src
52
+ とすべき.
53
+
54
+ そうすると
55
+ #+begin_src bash
56
+ bundle exec exe/my_help list --help_dir='/Users/bob/git_hub/my_help/lib/templates'
57
+ #+end_src
58
+ でも動く.
59
+ そうしておいて,optionsを移動.
60
+
61
+ 今は,
62
+ #+begin_src bash
63
+ > bundle exec exe/my_help help list
64
+ Usage:
65
+ my_help list [HELP] [ITEM]
66
+
67
+ Options:
68
+ [--help-dir=HELP_DIR]
69
+ [--layer=N]
70
+
71
+ list helps
72
+ #+end_src
73
+ となっていたが,
74
+
75
+ #+begin_src bash
76
+ bundle exec exe/my_help
77
+ Commands:
78
+ my_help delete [HELP] # delete HELP
79
+ my_help edit [HELP] # edit help
80
+ ...
81
+ Options:
82
+ [--help-dir=HELP_DIR]
83
+ #+end_src
84
+ とclass_optionとすることで,共通して指定できるように変更.
85
+
86
+ * <2022-12-15 Thu> subcommand and options
87
+ - [[https://hawksnowlog.blogspot.com/2020/09/ruby-thor-tutorial.html#hello-thor][Ruby thor で CLI ツールの開発に入門してみる]]
88
+
89
+ * <2022-12-15 Thu> rspecでerror
90
+ Arubaでrspecするとpwd directoryが/tmp/arubaになる?
91
+ そうすると今のままではrspecが通らなくなる.
92
+ example2.orgの置き場が不定.
93
+ spec側で強引に作るか...
94
+
95
+ それもsmartにしたいよね.
96
+ newでは後ろにoptionがあって,#{temp_dir}での作成とできるが,
97
+ これをその他のoptionsでやるのは難しそう.
98
+
99
+ ** 解決!!
100
+ Arubaだけの問題なので,テストの時用にhelp_dirを
101
+ Thorのoptionとして引けるようにした.
102
+ #+begin_src ruby -n
103
+ desc "list [HELP] [ITEM]", "list helps"
104
+ option :help_dir, :type => :string
105
+ # use method_options [[https://github.com/rails/thor/wiki/Method-Options]]
106
+ def list(*args)
107
+ config = get_config(args).config
108
+ help_dir = options["help_dir"] || config[:local_help_dir]
109
+ puts List.new(help_dir,
110
+ config[:ext]).list(*args.join(" "))
111
+ end
112
+ ...
113
+ context "list command" do
114
+ temp_dir = Dir.pwd
115
+ let(:help_name) { "example" }
116
+ let(:help_dir) { File.join(temp_dir, "lib", "templates") }
117
+
118
+ it "list with name" do
119
+ run_command("my_help list #{help_name} a_item --help_dir=#{help_dir}")
120
+ stop_all_commands
121
+ expect(last_command_started).to have_output(/a_item/)
122
+ end
123
+ end
124
+
125
+ #+end_src
126
+
127
+ * <2021-10-18 月> conf_pathの追加
128
+ my_help.confの場所を指定するconf_pathをnewで指定できるようにする.
129
+
130
+ #+begin_src diff -n -i
131
+ > git diff
132
+ --- a/lib/my_help/my_help_controll.rb
133
+ +++ b/lib/my_help/my_help_controll.rb
134
+ @@ -5,13 +5,14 @@ require 'yaml'
135
+ module MyHelp
136
+ class Control
137
+ attr_accessor :local_help_dir, :editor
138
+ - def initialize()
139
+ + def initialize(conf_path=nil)
140
+ # for configuration setups
141
+ # see https://stackoverflow.com/questions/6233124/where-to-place-access-config-file-in-gem
142
+ -
143
+ + @conf_path = conf_path || ENV['HOME']
144
+ @template_dir = File.expand_path("../../templates", __FILE__)
145
+ @exe_dir = File.expand_path("../../exe", __FILE__)
146
+ - @local_help_dir = File.join(ENV['HOME'],'.my_help')
147
+ + @local_help_dir = File.join(@conf_path, '.my_help')
148
+ + @conf_file = File.join(@local_help_dir, '.my_help_conf.yml')
149
+ @editor = ENV['EDITOR'] || 'emacs' #'code', 'emacs' #'vim' #default editor
150
+ # @mini_account = File
151
+ set_help_dir_if_not_exists
152
+ @@ -28,9 +29,6 @@ module MyHelp
153
+ end
154
+
155
+ def load_conf
156
+ - file_name = '.my_help_conf.yml'
157
+ - # @conf_file = File.join(Dir.pwd, file_name)
158
+ - @conf_file = File.join(@local_help_dir, file_name)
159
+ begin
160
+ conf = YAML.load_file(@conf_file)
161
+ @editor = conf[:editor]
162
+ #+end_src
163
+
164
+ 変更箇所は次の通り.
165
+ - initializeはconf_pathを受け取るが,指定されてない時はnil
166
+ - これを@conf_pathに受け渡すが,defaultをENV['HOME']に指定
167
+ - これでデフォルトのconfigurationを変更していく
168
+ やり方は,
169
+ [[https://stackoverflow.com/questions/6233124/where-to-place-access-config-file-in-gem][Where to place/access config file in gem?]]
170
+ を参照する.
171
+
172
+ これによってTest::unitでのtest環境独自のmy_help環境を構築することが
173
+ できる.
174
+
175
+ * <2021-11-08 月> conf_pathをactivate
176
+ testが進んできたので,conf_pathをactivateした.
177
+ そのためのテストが必要かも.
178
+
179
+ 1. ENV['HOME']で指定した時と...
180
+ 1. pwdで何もない時のoptionsがどうなっている?
181
+
182
+ #+begin_src yaml
183
+ config:
184
+ :template_dir: "/Users/bob/git_hub/my_help/lib/templates"
185
+ :local_help_dir: "/Users/bob/git_hub/my_help/test/.my_help"
186
+ :conf_file: "/Users/bob/git_hub/my_help/test/.my_help/.my_help_conf.yml"
187
+ :editor: emacs
188
+ #+end_src
189
+
190
+ * <2021-11-08 月> bundle exec exe/my_help editでエラー
191
+ #+begin_src shell
192
+ Could not find ffi-1.15.4 in any of the sources
193
+ Run `bundle install` to install missing gems.
194
+ #+end_src
195
+ とのエラー.
196
+ なんだろう.
197
+
198
+ さらに,command_lineで呼ぶと,
199
+ : emacs: standard input is not a tty
200
+ というエラーが出る.これまたなんだろう???
201
+
202
+
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,7 @@
1
+ Feature: helpの削除
2
+
3
+ Scenario: help を1つ削除する.
4
+ Given `$ bundle exec bin/my_help_thor list`でnew_helpが1つ存在する.
5
+ When `$ bundle exec bin/my_help_thor delete new_help`を実行する.
6
+ And `$ bundle exec bin/my_help_thor list`を実行する.
7
+ Then new_helpが存在しない.
@@ -0,0 +1,7 @@
1
+ Feature: helpの編集
2
+
3
+ Scenario: help を編集する.
4
+ Given `$ bundle exec bin/my_help_thor list`でnew_helpが存在しない.
5
+ When `$ bundle exec bin/my_help_thor new new_help`を実行する.
6
+ And `$ bundle exec bin/my_help_thor edit new_help`実行して、全ての記述を削除する.
7
+ Then ~/.my_help/new_help.orgが空ファイルである.
@@ -0,0 +1,6 @@
1
+ Feature: helpの一覧表示
2
+
3
+ Scenario: help の一覧を表示する
4
+ Given `$ find ~/.my_help -name "*.org" | xargs head -n 1 | grep -v '#+STARTUP: indent nolineimages'`で確認できるhelpがファイルが~/.my_helpに存在する.
5
+ When `$ bundle exec bin/my_help_thor list`を実行する.
6
+ Then ~/.my_helpのファイル名相当の項目がlistに全て存在する.
@@ -0,0 +1,7 @@
1
+ Feature: helpの作成
2
+
3
+ Scenario: help を1つ作成する.
4
+ Given `$ bundle exec bin/my_help_thor list`でnew_helpが存在しない.
5
+ When `$ bundle exec bin/my_help_thor new new_help`を実行する.
6
+ And `$ bundle exec bin/my_help_thor list`を実行する.
7
+ Then new_helpが存在する.
@@ -0,0 +1,12 @@
1
+ # -*- coding: utf-8 -*-
2
+ Given("sample_new.yml file を削除したい") do
3
+
4
+ end
5
+
6
+ When("{string} と入力") do |string|
7
+
8
+ end
9
+
10
+ Then("file を削除する") do
11
+ MyHelp::Control.new.delete_help("sample_new")
12
+ end
@@ -0,0 +1,14 @@
1
+ # -*- coding: utf-8 -*-
2
+
3
+ Given("sampleファイルを編集したい") do
4
+ end
5
+
6
+ When("{string} と入力する") do |string|
7
+ end
8
+
9
+ Then("sampleファイルが開く") do
10
+ MyHelp::Control.new.edit_help("sample")
11
+ end
12
+
13
+ And("sampleファイルを書き換える") do
14
+ end
@@ -0,0 +1,10 @@
1
+ # -*- coding: utf-8 -*-
2
+ Given("file 一覧を表示させたい") do
3
+ end
4
+
5
+ When("{string}と入力する") do |string|
6
+ end
7
+
8
+ Then("file 一覧が表示される") do
9
+ MyHelp::Control.new.list_all
10
+ end
@@ -0,0 +1,12 @@
1
+ # -*- coding: utf-8 -*-
2
+ Given("sample_new.yml file を作成したい") do
3
+
4
+ end
5
+
6
+ When("{string} と入力する") do |string|
7
+
8
+ end
9
+
10
+ Then("sample_new file が作成される") do
11
+ MyHelp::Control.new.init_help("sample_new")
12
+ end
@@ -0,0 +1,3 @@
1
+ # -*- coding: utf-8 -*-
2
+ $LOAD_PATH.unshift File.expand_path('../../lib' , __FILE__)
3
+ require 'my_help'