flist 0.1.30 → 0.1.33

Sign up to get free protection for your applications and to get access to all the features.
Files changed (47) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/main.yml +31 -0
  3. data/.gitignore +5 -0
  4. data/.rubocop.yml +12 -0
  5. data/.rubocop_todo.yml +129 -0
  6. data/Gemfile +22 -0
  7. data/Rakefile +50 -3
  8. data/SECURITY.md +21 -0
  9. data/bin/console +4 -3
  10. data/bin/setup +2 -0
  11. data/config/.gitkeep +0 -0
  12. data/config/config.yml +14 -0
  13. data/config/config_sample.yml +15 -0
  14. data/config/config_yml.sample +15 -0
  15. data/config/db_scheme.yml +71 -0
  16. data/config/db_scheme.yml.sample +48 -0
  17. data/config/dbsetup.rb +56 -0
  18. data/config/opts.rb +9 -0
  19. data/config/opts.rb.sample +7 -0
  20. data/config/setting.yml +2 -0
  21. data/config/sqlite3.yml +26 -0
  22. data/config/tmp/db_scheme.yml +71 -0
  23. data/db/migrate/010_create_countdatetime.rb +11 -0
  24. data/db/migrate/020_create_flistz.rb +22 -0
  25. data/db/migrate/030_create_invalidflistz.rb +13 -0
  26. data/db/migrate/040_create_currentflistz.rb +15 -0
  27. data/db/migrate/050_create_dirz.rb +12 -0
  28. data/db/migrate/060_create_invaliddirz.rb +13 -0
  29. data/db/migrate/070_create_currentdirz.rb +15 -0
  30. data/exe/flist +80 -27
  31. data/flist.gemspec +33 -20
  32. data/lib/dbacrecord.rb +36 -0
  33. data/lib/flist/cli.rb +49 -0
  34. data/lib/flist/config.rb +16 -0
  35. data/lib/flist/csvx.rb +29 -0
  36. data/lib/flist/dbutil/dbmgr.rb +25 -24
  37. data/lib/flist/dbutil/dirzmgr.rb +75 -12
  38. data/lib/flist/dbutil/flistzmgr.rb +81 -34
  39. data/lib/flist/dbutil.rb +4 -4
  40. data/lib/flist/flist/filelist.rb +219 -168
  41. data/lib/flist/flist.rb +282 -101
  42. data/lib/flist/version.rb +3 -1
  43. data/lib/flist.rb +51 -5
  44. data/lib/template/config_yml.erb +15 -0
  45. metadata +128 -33
  46. data/exe/makemigrate +0 -52
  47. data/lib/flist/flist/store.rb +0 -79
data/lib/flist/flist.rb CHANGED
@@ -1,12 +1,17 @@
1
- # -*- coding: utf-8 -*-
1
+ # frozen_string_literal: true
2
2
 
3
- require 'flist/flist/filelist'
3
+ require 'forwardable'
4
4
  require 'encx'
5
- require 'ykutils/debugutils'
5
+ # require "ykutils/debugutils"
6
+ require 'ykutils/erubyx'
7
+ require 'ykxutils/yamlx'
6
8
 
7
- require 'date'
9
+ require_relative 'flist/filelist'
8
10
 
11
+ require 'date'
12
+ require 'yaml'
9
13
  module Flist
14
+ # ファイル一覧クラス
10
15
  class Flist
11
16
  attr_accessor :encx
12
17
 
@@ -14,56 +19,103 @@ module Flist
14
19
 
15
20
  include Ykutils::DebugUtils
16
21
 
17
- def_delegators( :@store, :dirz_add )
18
- def_delegators( :@store, :output )
22
+ def_delegators(:@dbmgr, :dirz_add)
23
+ def_delegators(:@dbmgr, :output)
24
+ def_delegators(:@dbmgr, :dirz_post_process)
25
+ def_delegators(:@dbmgr, :flistz_post_process)
26
+ def_delegators(:@dbmgr, :post_process)
19
27
 
20
- def determine_filesystem(fname)
21
- [
22
- {
23
- :home => "/home",
24
- :c => "/c",
25
- :v => "/v",
26
- },
27
-
28
- {
29
- :home => File.expand_path(ENV['HOME']),
30
- :c => "C:",
31
- :v => "V:",
32
- },
33
- ].find{|x|
34
- File.exist?( File.expand_path( File.join( File.expand_path(x[:home]) , fname ) ) )
35
- }
36
-
37
- end
38
-
39
- def initialize( kind, hs )
40
- @topx_keys = [:kind, :level, :all]
41
- opts={}
42
- argv=[]
43
- debug = false
44
-
45
- yamlfname = "env-a.yaml"
46
- @dir = determine_filesystem( yamlfname )
47
- fname = File.expand_path( File.join( @dir[:home] , yamlfname ) )
48
- contents = File.open( fname ).read
49
- erb = ERB.new(contents)
50
- yaml = YAML.load( erb.result(binding) )
28
+ # ファイル情報アイテムクラス(ディレクトリハス、またはファイルパスを表すStructクラスのサブクラス)
29
+ @item_class = Struct.new(:level, :kind, :re, :path)
30
+
31
+ # ファイル情報アイテムクラスのインスタンス生成
32
+ def self.make_instance_of_item_class(level, key, regexp, path)
33
+ @item_class.new(level, key, regexp, path)
34
+ end
35
+
36
+ # 初期化
37
+ def initialize(hash, opts)
38
+ # debug_utils_init
39
+ # set_debug(true)
40
+ set_debug(opts['verbose'])
41
+
42
+ @flielists = []
43
+ # yamlfname = "env-a1.yaml"
44
+ # YAML形式ファイル config.yml を読み込み、ファイルシステムの判定に用いる
45
+ d_puts("opts['config']=#{opts['config']}")
46
+ d_puts('#=====')
47
+ config_from_file(opts['config'])
48
+ # d_p(@config)
49
+ # opts["env"]
50
+ # determine_filesystemメソッドの返値であるハッシュには、
51
+ # ホームディレクトリ(キー:home)、ドライブ(キー:Cや:d)を表す、UNIX式パスまたは
52
+ # WINDOWS式パスが含まれる。
53
+ # d_p("opts['env']=#{opts['env']}")
54
+ d_puts(%(opts["env"]=#{opts['env']}))
55
+ d_puts(%(@config=#{@config}))
56
+ @dir = determine_filesystem(opts['env'])
57
+ # ホームディレクトリまたはドライブのトップディレクトリの直下に引数で指定した
58
+ # ファイルが存在し、かつ返値に含まれる絶対パスを用いてアクセス可能
59
+ # @dir[:home]は絶対パスなので、@dir[:home]の直下に変数yamlfnameが存在する
60
+
61
+ # 変数fnameは、Eruby形式のファイルのパスを表す
62
+ # Erbuy形式のファイルをscope(コンテキスト)で展開されたものをYAML形式とみなして
63
+ # 解釈して、ハッシュに変換する
64
+ d_p(@dir)
65
+ d_p(@dir['home'])
66
+ d_p(opts['env'])
67
+ d_puts("@dir=#{@dir}")
68
+ fname = File.expand_path(opts['env'], @dir['home'])
69
+ d_p("env fname=#{fname}")
70
+
71
+ # scope = Object.new
72
+ scope = self
73
+ value_hash = {}
74
+ # @dir.keys.each do |key|
75
+ @dir.each do |key, value|
76
+ # value_hash[key.to_sym] = @dir[key]
77
+ value_hash[key.to_sym] = value
78
+ end
79
+ d_p(value_hash)
80
+ content = Ykutils::Erubyx.erubi_render_with_template_file(fname, scope, value_hash)
81
+ yaml = Ykxutils.yaml_load_compati(content)
51
82
 
83
+ # 指定エンコードディングに基づいてパスを扱うEncxクラスのインスタンス生成
52
84
  Encx::Encx.init('UTF-8')
53
85
  @encx = Encx::Encx.encx
54
-
55
- @store = Store.new( kind, hs )
56
86
 
57
- @topdirhs = yaml["flist"]["topdirhs"]
58
- @logdir = yaml["flist"]["logdir"]
87
+ # 引数hashとして渡されたハッシュで指定された設定を用いてDB接続
88
+ # d_puts("# hash=#{hash}")
89
+ db_dir = hash['db_dir']
90
+ # d_puts("db_dir=#{db_dir}")
91
+ config_dir = hash['config_dir']
92
+ env = hash['env']
93
+ dbconfig = hash['dbconfig']
94
+ # A method of the `FlistMgr` class.
95
+ # output_dir = hash['output_dir']
96
+ @pstore_dir = hash['pstore_dir']
59
97
 
60
- @tops = yaml["flist"]["tops"]
61
- @topx = {}
62
- @topx[:all] = []
63
- @topx_keys.map do |x| @topx[x] ||= {} end
98
+ dbconfig_path = Arxutils_Sqlite3::Util.make_dbconfig_path(config_dir, dbconfig)
99
+ log_path = Arxutils_Sqlite3::Util.make_log_path(db_dir, dbconfig)
100
+ dbconnect = Arxutils_Sqlite3::Dbutil::Dbconnect.new(
101
+ dbconfig_path,
102
+ env,
103
+ log_path
104
+ )
105
+ # DB接続
106
+ register_time = dbconnect.connect
107
+ # 接続したDBに対し、ActiveRecordのサブクラスを介してアクセスするFlistMgr
108
+ @dbmgr = Dbutil::DbMgr.new(register_time)
64
109
 
65
- @@item_class ||= Struct.new("Item" , :level , :kind, :re , :path )
110
+ # 検索時のトップディレクトリのハッシュ
111
+ # キーは、トップディレクトリをまとめるグループを表す文字列
112
+ # d_p("yaml=#{yaml}")
113
+ @topdirhs = yaml['flist']['topdirhs']
114
+ # d_p("@topdirhs=#{@topdirhs}")
115
+ # ログディレクトリへのパス
116
+ @logdir = yaml['flist']['logdir']
66
117
 
118
+ # システムのトップディレクトリの設定
67
119
  init_topx(yaml)
68
120
 
69
121
  init_skip_dirs(yaml)
@@ -71,115 +123,244 @@ module Flist
71
123
  regist_dirz
72
124
  end
73
125
 
74
- def init_skip_dirs(yaml)
126
+ # Reading a YAML file and storing the contents in the instance variable `@config`.
127
+ def
128
+ config_from_file(fname)
129
+ # d_p("fname=#{fname}")
130
+ @config = Ykxutils.yaml_load_file_compati(fname)
131
+ # d_p(@config)
132
+ end
133
+
134
+ # プラットフォームの判別をし、ホームディレクトリ、ドライブのトップディレクトリ
135
+ # を表す適切なパスを返す
136
+ def determine_filesystem(fname)
137
+ d_puts("@config=#{@config}")
138
+ d_puts('#####################')
139
+ @config.find do |x|
140
+ path = File.join(x['home'], fname)
141
+ # d_p("df path=#{path}")
142
+ File.exist?(path)
143
+ end
144
+ end
145
+
146
+ # スキップディレクトリ情報の初期化
147
+ def init_skip_dirs(hash)
148
+ # スキップディレクトリを表すハッシュ
149
+ # キーはスキップディレクトリスキップディレクトリのパスの配列
75
150
  @skip_dirs = {}
76
- skip_dirs_array = yaml["flist"]["skip_dirs_array"]
151
+ skip_dirs_array = hash['flist']['skip_dirs_array']
77
152
  skip_dirs_array.each do |x|
78
153
  x_str = File.expand_path(x)
79
154
  re_esc = Regexp.escape(x_str)
80
- @skip_dirs[x] = @encx.make_regexp( "^#{re_esc}" )
155
+ # スキップディレクトリ判定用正規表現配列に追加
156
+ @skip_dirs[x] = @encx.make_regexp("^#{re_esc}")
81
157
  end
82
158
  end
83
159
 
84
- def init_topx( yaml )
85
- @tops = yaml["flist"]["tops"]
86
- @tops.each do |k,v|
87
- v.each do |path|
160
+ # システムのトップディレクトリ情報の初期化
161
+ def init_topx(yaml)
162
+ # このシステムのトップディレクトリを表すハッシュ
163
+ # キーは番号、値はトップディレクトリのパスの配列
164
+ @tops = yaml['flist']['tops']
165
+ # yaml['flist']['tops']の内容を用途別に設定し直したハッシュ
166
+ @topx = {}
167
+ @topx_keys = %i[kind level all]
168
+ @topx_keys.map { |x| @topx[x] ||= {} }
169
+ # :allの場合は{}ではなく[]にする
170
+ @topx[:all] = []
171
+
172
+ @tops.each do |no, path_array|
173
+ # d_puts "no=#{no}"
174
+ # d_puts "path_array=#{path_array}"
175
+ next unless path_array
176
+
177
+ path_array.each do |path|
88
178
  ary = path.split('/')
89
- if ary[0] == ""
90
- ary.shift
91
- end
179
+ # 絶対パスは先頭が"/"で始まるため、配列の先頭が空文字列の場合は捨てて、ディレクトリ名、ファイル名のみを含むようにする
180
+ ary.shift if ary[0] == ''
181
+ # 絶対パスの階層の深さ
92
182
  level = ary.size
93
- re = @encx.make_regexp( "^#{path}" )
94
- itemx = @@item_class.new( level , k , re , path )
95
- @topx[:kind][k] ||= []
96
- @topx[:kind][k] << itemx
183
+ # サブディレクトリであるかの判定に用いる
184
+ re = @encx.make_regexp("^#{path}")
185
+ # 検索時のトップディレクトリを表す
186
+ itemx = self.class.make_instance_of_item_class(level, no, re, path)
187
+ # 設定ファイルでの["flist"]["tops"]に対応するハッシュ
188
+ # ここでは、["flist"]["tops"]のキー(番号)を表す
189
+ # :kindは、次のキー(番号)に対応する絶対パスの配列を持つ
190
+ @topx[:kind][no] ||= []
191
+ @topx[:kind][no] << itemx
192
+ # :levelは、次のキー(れ部ス数)に対応する絶対パスの配列を持つ
97
193
  @topx[:level][level] ||= []
98
194
  @topx[:level][level] << itemx
195
+ # :allは、設定ファイルでの["flist"]["tops"]に対応するハッシ
196
+ # に含まれる全ての絶対パスについて、それらに対応するStruct
197
+ # クラスのサブクラスのインスタンスを含む
99
198
  @topx[:all] ||= []
100
199
  @topx[:all] << itemx
101
200
  end
102
201
  end
103
202
  end
104
203
 
204
+ # 設定ファイルの["topdirhs"]で定義された全グループで指定された全ディレクトリ登録
105
205
  def regist_dirz
106
- @topdirhs.each do |k,v|
107
- v.each do |k0,v0|
108
- v0.each do |k1,v1|
109
- dir = File.expand_path( @encx.convert(k1) )
206
+ # d_puts('########## regist_dirz S')
207
+ # d_puts("@topdirhs.size=#{@topdirhs.size}")
208
+ dirz_array = []
209
+ # 検索時のトップディレクトリのハッシュ
210
+ # キーは、トップディレクトリをまとめるグループを表す文字列
211
+ @topdirhs.each do |_group, v|
212
+ # d_puts("regist_dirz group=#{group}")
213
+ # d_puts("regist_dirz v=#{v}")
214
+ # キーはグループに対応するディレクトリ
215
+ v.each do |path, v0|
216
+ # d_puts("regist_dirz path=#{path}")
217
+ # d_puts("regist_dirz v0=#{v0}")
218
+ # d_puts("v0.class=#{v0.class}")
219
+ # キーはグループのディレクトリの直下に存在するディレクトリ
220
+ # 値はハッシュ { "dir_id" => ディレクトリ番号, "fname" => ファイル名 }
221
+ v0.each do |dir, v1|
222
+ # d_puts "dir=#{dir}"
223
+ # d_puts "v1=#{v1}"
224
+ x_dir = @encx.convert(dir)
225
+ # d_puts "v1['dir_id']=#{v1['dir_id']}"
110
226
  x_str = @encx.convert(v1['fname'])
111
- path = File.expand_path( File.join( dir , x_str ) )
112
- dir_id = v1["dir_id"]
113
- dirz = dirz_add( path )
227
+ full_path = File.expand_path(File.join(x_dir, x_str), path)
228
+ # d_puts "regist_dirz path=#{full_path}"
229
+ dirz = dirz_add(full_path) if File.exist?(full_path)
230
+ dirz_array << dirz
231
+ # d_puts '#~~~~~~'
114
232
  end
115
233
  end
116
234
  end
235
+ # d_puts('########## regist_dirz E')
236
+ dirz_array
117
237
  end
118
238
 
119
- def listup_x( name )
120
- @topdirhs[name].each do |k0,v0|
121
- k0_str = @encx.convert(k0)
122
- v0.each do |k,v|
123
- k_str = @encx.convert(k)
124
- fname = v["fname"]
125
- dir = @encx.convert(@logdir)
126
- x_str = @encx.convert(fname)
127
- csvpath = File.expand_path( File.join( dir , x_str ) )
128
- dir_id = v["dir_id"]
129
- top_path = File.expand_path( File.join( k0_str , k_str ) )
130
- flist = Filelist.new( @encx, @skip_dirs, dir_id, top_path , 0 , name.to_sym )
131
- flist.scan
132
- flist.output
239
+ # 設定ファイルの["topdirhs"]で定義されたグループのうち、引数groupで指定されたグループに含まれる全ディレクトリ登録
240
+ def listup_x(group)
241
+ # キーはグループのディレクトリの直下に存在するディレクトリ
242
+ # 値はハッシュ { "dir_id" => ディレクトリ番号, "fname" => ファイル名 }
243
+ @topdirhs[group].each do |path, hash0|
244
+ x_path = @encx.convert(path)
245
+ # キーはグループのディレクトリの直下に存在するディレクトリ
246
+ hash0.each do |dir, hash1|
247
+ # d_puts "hash1=#{hash1}"
248
+ fname = hash1['fname']
249
+ x_fname = @encx.convert(fname)
250
+ x_dir = @encx.convert(dir)
251
+ x_logdir = @encx.convert(@logdir)
252
+
253
+ csvpath = File.expand_path(File.join(x_logdir, x_fname))
254
+ csvx = Csvx.new(csvpath)
255
+
256
+ dir_id = hash1['dir_id']
257
+ # d_puts "dir_id=#{dir_id}"
258
+ # d_puts x_path
259
+ # d_puts x_dir
260
+ top_path = File.expand_path(File.join(x_path, x_dir))
261
+ if File.exist?(top_path)
262
+ filelist = Filelist.new(@dbmgr, csvx, @encx, @skip_dirs, dir_id, top_path, 0, group.to_sym)
263
+ filelist.scan
264
+ filelist.output
265
+ @flielists << filelist
266
+ else
267
+ puts "Can't find #{top_path}"
268
+ end
269
+ csvx.finish
133
270
  end
134
271
  end
135
272
  end
136
273
 
274
+ # repoグループのファイル一覧
137
275
  def listup_repo
138
- listup_x( "repo" )
276
+ listup_x('repo')
139
277
  end
140
278
 
279
+ # simpleグループのファイル一覧
141
280
  def listup_simple
142
- listup_x( "simple" )
281
+ listup_x('simple')
282
+ end
283
+
284
+ # simple2グループのファイル一覧
285
+ def listup_simple2
286
+ listup_x('simple2')
287
+ end
288
+
289
+ # simple3グループのファイル一覧
290
+ def listup_simple3
291
+ listup_x('simple3')
143
292
  end
144
293
 
294
+ # ディレクトリIDが1の場合のDBに格納されたファイル情報取得
145
295
  def lx
146
- Flistz.where( dir_id: 1 ).select(:id)
296
+ Flistz.where(dir_id: 1).select(:id)
147
297
  end
148
298
 
299
+ # 指定階層数分の指定ディレクトリ以下のサブディレクトリのリストを得る
149
300
  def get_directory_list(dir_path, level)
301
+ # 引数s
150
302
  ary = []
151
- Dir.chdir(dir_path)
152
- if level > 0
153
- level -= 1
154
- Dir.glob("*").each do |pa|
155
- ary += get_directory_list(pa , level) if File.directory?(pa)
303
+ Dir.chdir(dir_path) do
304
+ if level.positive?
305
+ level -= 1
306
+ Dir.glob('*').each do |pa|
307
+ ary += get_directory_list(pa, level) if File.directory?(pa)
308
+ end
309
+ else
310
+ ary << Dir.pwd
156
311
  end
157
- else
158
- ary << Dir.pwd
159
312
  end
160
- Dir.chdir("..")
161
313
  ary
162
314
  end
163
315
 
164
- def listx()
165
- @topx[:kind].map do |x|
166
- x[1].map do |item|
167
- get_directory_list( item.path , x[0] )
316
+ # 設定ファイルでの["flist"]["tops"]に設定されたディレクトリ以下
317
+ # のディレクトリのリストを得る
318
+ def listx
319
+ # 設定ファイルでの["flist"]["tops"]に対応するハッシュ
320
+ # ここでは、["flist"]["tops"]のキー(番号)を表す
321
+ # :kindは、次のキー(番号)に対応する絶対パスの配列を持つ
322
+
323
+ # @topx[:kind]に含まれるディレクトリの直下のサブディレクトリを一つの配列として返す
324
+ level = 1
325
+ @topx[:kind].map do |_no, path_array|
326
+ path_array.map do |item|
327
+ get_directory_list(item.path, level)
168
328
  end
169
329
  end.flatten
170
330
  end
171
331
 
332
+ # 全体のログファイルとしてCsvxクラスのインスタンス生成
333
+ def make_csvx
334
+ x_fname = 'all.csv'
335
+ x_logdir = @encx.convert(@logdir)
336
+ csvpath = File.expand_path(File.join(x_logdir, x_fname))
337
+ Csvx.new(csvpath)
338
+ end
339
+
340
+ # 設定ファイルの['flist']['tops]に格納されたトップディレクトリ以下の
341
+ # ディレクトリ、ファイルのリストを得る
172
342
  def list_a
173
- listx.each do |x|
343
+ # d_puts '####### list_a'
344
+ list_x = listx
345
+ # d_puts list_x.size
346
+
347
+ csvx = make_csvx
348
+ # 設定ファイルの['flist']['tops]に格納されたトップディレクトリ
349
+ # とその直下のサブディレクトリすべてのパス
350
+ list_x.each do |x|
174
351
  top_path = @encx.convert(x)
175
- # top_path = x
176
- dirz = @store.dirz_add( top_path )
352
+ # dirzテーブルへ登録
353
+ dirz = @dbmgr.dirz_add(top_path)
177
354
  ary = top_path.split('/')
178
355
  ary.shift
179
356
  level = ary.size
180
- flist = Filelist.new( @encx, @skip_dirs, @store , dirz.id, top_path , level )
181
- flist.scanx( top_path , level )
357
+
358
+ filelist = Filelist.new(@dbmgr, csvx, @encx, @skip_dirs, dirz.id, top_path, level)
359
+ # d_puts("list_a level=#{level} top_path=#{top_path}")
360
+ filelist.scanx(top_path, level)
182
361
  end
362
+ csvx.finish
363
+ nil
183
364
  end
184
365
  end
185
366
  end
data/lib/flist/version.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Flist
2
- VERSION = "0.1.30"
4
+ VERSION = '0.1.33'
3
5
  end
data/lib/flist.rb CHANGED
@@ -1,11 +1,57 @@
1
1
  #! -*- encoding : UTF-8 -*-
2
+ # frozen_string_literal: true
2
3
 
3
- require "flist/version"
4
+ require 'arxutils_sqlite3'
5
+ require 'ykutils'
6
+ require 'ykxutils'
4
7
 
5
- require 'flist/flist'
6
- require 'flist/flist/store'
7
- require 'flist/flist/filelist'
8
- require 'flist/dbutil'
8
+ require_relative 'dbacrecord'
9
+ require_relative 'flist/version'
10
+
11
+ require_relative 'flist/flist'
12
+ require_relative 'flist/dbutil'
13
+ require_relative 'flist/cli'
14
+ require_relative 'flist/csvx'
15
+
16
+ require_relative 'flist/flist/filelist'
9
17
 
10
18
  module Flist
19
+ # トップディレクトリ
20
+ TOP_DIR = Pathname(__FILE__).parent
21
+ # テンプレートディレクトリへのパス
22
+ TEMPLATE_DIR = TOP_DIR.join('template')
23
+ # DB構成格納用ディレクトリ名
24
+ CONFIG_DIR_NAME = 'config'
25
+ # コンフィグディレクトリへのパス
26
+ CONFIG_DIR = Pathname.new(CONFIG_DIR_NAME)
27
+
28
+ OUTPUT_DIR_NAME = 'output'
29
+ OUTPUT_DIR = OUTPUT_DIR_NAME
30
+ # PSTORE_DIR = "pstore"
31
+ PSTORE_DIR = 'pstore'
32
+ PSTORE_KEY = :TOP
33
+ ERB_CONFIG_YAML_FILE = TEMPLATE_DIR.join('config_yml.erb')
34
+ SAMPLE_CONFIG_YAML_FILE = CONFIG_DIR.join('config_sample.yml')
35
+ CONFIG_YAML_FILE = CONFIG_DIR.join('config.yml')
36
+ EXIT_CODE_INVALID_CODE = 10
37
+ EXIT_CODE_INVALID_DIR = 20
38
+
39
+ class Error < StandardError; end
40
+
41
+ class InvalidMakeItemArgsError < ArgumentError
42
+ # def message
43
+ # end
44
+ end
45
+
46
+ class InvalidSacnxSubArgumentError < ArgumentError
47
+ end
48
+
49
+ class InvalidDirIdError < ArgumentError
50
+ end
51
+
52
+ class InvalidRepoError < ArgumentError
53
+ end
54
+
55
+ class InvalidCommitError < ArgumentError
56
+ end
11
57
  end
@@ -0,0 +1,15 @@
1
+ ---
2
+ -
3
+ home: '<%= File.expand_path(Dir.home) %>'
4
+ c: '/mnt/c'
5
+ e: '/mnt/e'
6
+ v: '/mnt/e/V'
7
+ x: '/mnt/e/X'
8
+ z: '/mnt/z'
9
+ -
10
+ home: '<%= File.expand_path(Dir.home) %>'
11
+ c: 'C:'
12
+ e: 'E:'
13
+ v: 'E:\V'
14
+ x: 'E:\X'
15
+ z: 'Z:'