my_help 0.8.6 → 1.1a
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/'../test'/.my_help/.my_help_conf.yml +2 -0
- data/'../test'/.my_help/emacs.org +50 -0
- data/{lib/templates → '../test'/.my_help}/org.org +0 -0
- data/{lib/templates → '../test'/.my_help}/todo.org +0 -0
- data/.gitignore +8 -0
- data/.my_help/example2.org +9 -0
- data/.rspec +1 -2
- data/.rspec_status +13 -0
- data/.yardoc/checksums +3 -3
- data/.yardoc/object_types +0 -0
- data/.yardoc/objects/root.dat +0 -0
- data/Gemfile +10 -5
- data/Gemfile.lock +61 -88
- data/README.org +35 -47
- data/Rakefile +25 -14
- data/doc/MyHelp/Control.html +443 -221
- data/doc/MyHelp.html +7 -7
- data/doc/OrgToYaml.html +12 -10
- data/doc/_index.html +7 -7
- data/doc/class_list.html +2 -2
- data/doc/css/style.css +3 -2
- data/doc/file.README.html +29 -29
- data/doc/file_list.html +2 -2
- data/doc/frames.html +2 -2
- data/doc/index.html +29 -29
- data/doc/js/app.js +14 -3
- data/doc/method_list.html +24 -8
- data/doc/top-level-namespace.html +6 -6
- data/docs/README.html +218 -0
- data/docs/README.org +202 -0
- data/docs/old_docs/16b_nasu.pdf +0 -0
- data/docs/old_docs/17b_oyagi.pdf +0 -0
- data/docs/old_docs/19b_okabata.pdf +0 -0
- data/docs/old_docs/19b_yamaguchi.pdf +0 -0
- data/docs/old_docs/features/delete.feature +7 -0
- data/docs/old_docs/features/edit.feature +7 -0
- data/docs/old_docs/features/list.feature +6 -0
- data/docs/old_docs/features/new.feature +7 -0
- data/docs/old_docs/features/step_definitions/delete_spec.rb +12 -0
- data/docs/old_docs/features/step_definitions/edit_spec.rb +14 -0
- data/docs/old_docs/features/step_definitions/list_spec.rb +10 -0
- data/docs/old_docs/features/step_definitions/new_spec.rb +12 -0
- data/docs/old_docs/features/support/env.rb +3 -0
- data/docs/old_docs/fukumori_symp/18_human_interface_fukumori_workshop.pdf +0 -0
- data/docs/old_docs/fukumori_symp/memo_perp_magician.pdf +0 -0
- 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
- data/exe/my_help +1 -142
- data/lib/my_help/cli.rb +106 -0
- data/lib/my_help/config.rb +70 -0
- data/lib/my_help/git_cli.rb +40 -0
- data/lib/my_help/init.rb +28 -0
- data/lib/my_help/list.rb +76 -0
- data/lib/my_help/md2hash.rb +54 -0
- data/lib/my_help/modify.rb +33 -0
- data/lib/my_help/org2hash.rb +45 -0
- data/lib/my_help/org2yml.rb +14 -14
- data/lib/my_help/version.rb +3 -1
- data/lib/my_help.rb +23 -7
- data/lib/templates/emacs.org +13 -14
- data/lib/templates/example.md +17 -0
- data/lib/templates/example.org +9 -0
- data/my_help.gemspec +27 -22
- data/tmp.txt +14 -0
- metadata +52 -26
- data/README.html +0 -443
- data/README.rdoc +0 -6
- data/bin/my_help_thor +0 -66
- data/exe/my_help_gli +0 -82
- data/lib/my_help/my_help_controll.rb +0 -222
- data/lib/my_help/tomo_help_controll.rb +0 -0
- 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"><2022-12-15 Thu> </span></span> subcommand and options</a></li>
|
27
|
+
<li><a href="#org66ec027">2. <span class="timestamp-wrapper"><span class="timestamp"><2022-12-15 Thu> </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"><2021-10-18 Mon> </span></span> conf_pathの追加</a></li>
|
33
|
+
<li><a href="#org2aec50d">4. <span class="timestamp-wrapper"><span class="timestamp"><2021-11-08 Mon> </span></span> conf_pathをactivate</a></li>
|
34
|
+
<li><a href="#org20943ec">5. <span class="timestamp-wrapper"><span class="timestamp"><2021-11-08 Mon> </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"><2022-12-15 Thu> </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"><2022-12-15 Thu> </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> => <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"><2021-10-18 Mon> </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;">></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"><2021-11-08 Mon> </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"><2021-11-08 Mon> </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 を編集する.
|
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に全て存在する.
|
Binary file
|