YkLib 0.1.0

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 (125) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +11 -0
  3. data/.rspec +3 -0
  4. data/.travis.yml +6 -0
  5. data/CODE_OF_CONDUCT.md +74 -0
  6. data/Gemfile +7 -0
  7. data/Gemfile.lock +34 -0
  8. data/LICENSE.txt +21 -0
  9. data/README.md +44 -0
  10. data/Rakefile +6 -0
  11. data/YkLib.gemspec +29 -0
  12. data/bin/console +14 -0
  13. data/bin/setup +8 -0
  14. data/lib/YkLib/Yk/__advance__.rb +151 -0
  15. data/lib/YkLib/Yk/__defun__.rb +44 -0
  16. data/lib/YkLib/Yk/__hook__.rb +244 -0
  17. data/lib/YkLib/Yk/__minmax__.rb +123 -0
  18. data/lib/YkLib/Yk/__stdlog.rb +329 -0
  19. data/lib/YkLib/Yk/adhocLiterals/email.rb +119 -0
  20. data/lib/YkLib/Yk/adhocLiterals/path.rb +402 -0
  21. data/lib/YkLib/Yk/adhocLiterals/tag.rb +19 -0
  22. data/lib/YkLib/Yk/adhocLiterals/url.rb +36 -0
  23. data/lib/YkLib/Yk/adhocLiterals.rb +199 -0
  24. data/lib/YkLib/Yk/auto_escseq.rb +5 -0
  25. data/lib/YkLib/Yk/auto_pstore.rb +179 -0
  26. data/lib/YkLib/Yk/bsearch.rb +120 -0
  27. data/lib/YkLib/Yk/clambda.rb +309 -0
  28. data/lib/YkLib/Yk/confLine.rb +423 -0
  29. data/lib/YkLib/Yk/create_tty_width_available.rb +24 -0
  30. data/lib/YkLib/Yk/crypt.rb +26 -0
  31. data/lib/YkLib/Yk/debug2 +1 -0
  32. data/lib/YkLib/Yk/debug2.rb +473 -0
  33. data/lib/YkLib/Yk/debugout.rb +139 -0
  34. data/lib/YkLib/Yk/email_tz.rb +533 -0
  35. data/lib/YkLib/Yk/enum_expect.rb +170 -0
  36. data/lib/YkLib/Yk/errlog.rb +5 -0
  37. data/lib/YkLib/Yk/escseq.rb +59 -0
  38. data/lib/YkLib/Yk/eval_alt.rb +281 -0
  39. data/lib/YkLib/Yk/expector.rb +93 -0
  40. data/lib/YkLib/Yk/fetch.rb +556 -0
  41. data/lib/YkLib/Yk/fetch_old.rb +290 -0
  42. data/lib/YkLib/Yk/fib.rb +158 -0
  43. data/lib/YkLib/Yk/file_aux.rb +843 -0
  44. data/lib/YkLib/Yk/file_aux2.rb +919 -0
  45. data/lib/YkLib/Yk/file_aux_old.rb +160 -0
  46. data/lib/YkLib/Yk/filemod.rb +19 -0
  47. data/lib/YkLib/Yk/force_escseq.rb +3 -0
  48. data/lib/YkLib/Yk/generator__.rb +144 -0
  49. data/lib/YkLib/Yk/generator__.rb.org +139 -0
  50. data/lib/YkLib/Yk/indenter/argless_case.rb +46 -0
  51. data/lib/YkLib/Yk/indenter/each_token.rb +671 -0
  52. data/lib/YkLib/Yk/indenter/free_case.rb +313 -0
  53. data/lib/YkLib/Yk/indenter/if_less.rb +53 -0
  54. data/lib/YkLib/Yk/indenter/independent_ensure.rb +23 -0
  55. data/lib/YkLib/Yk/indenter/independent_rescue.rb +23 -0
  56. data/lib/YkLib/Yk/indenter/operand_circumflex.rb +0 -0
  57. data/lib/YkLib/Yk/indenter/operand_period.rb +16 -0
  58. data/lib/YkLib/Yk/indenter/parenless_and.rb +37 -0
  59. data/lib/YkLib/Yk/indenter/post_test.rb +48 -0
  60. data/lib/YkLib/Yk/indenter/token.rb +1525 -0
  61. data/lib/YkLib/Yk/indenter.rb +1382 -0
  62. data/lib/YkLib/Yk/inot.rb +265 -0
  63. data/lib/YkLib/Yk/intf.rb +815 -0
  64. data/lib/YkLib/Yk/io_aux.rb +1332 -0
  65. data/lib/YkLib/Yk/ioctl.rb +60 -0
  66. data/lib/YkLib/Yk/ipcc.rb +87 -0
  67. data/lib/YkLib/Yk/ipcountry.rb +207 -0
  68. data/lib/YkLib/Yk/ipv4adr.rb +318 -0
  69. data/lib/YkLib/Yk/localmail.rb +276 -0
  70. data/lib/YkLib/Yk/method_chain.rb +359 -0
  71. data/lib/YkLib/Yk/misc_tz.rb +1716 -0
  72. data/lib/YkLib/Yk/missing_method.rb +50 -0
  73. data/lib/YkLib/Yk/mojiConv.rb +257 -0
  74. data/lib/YkLib/Yk/nostdlog.rb +4 -0
  75. data/lib/YkLib/Yk/on_marshal.rb +20 -0
  76. data/lib/YkLib/Yk/overrider.rb +47 -0
  77. data/lib/YkLib/Yk/path.rb +293 -0
  78. data/lib/YkLib/Yk/path_aux.rb +883 -0
  79. data/lib/YkLib/Yk/path_aux_alt.rb +0 -0
  80. data/lib/YkLib/Yk/path_rep.rb +1267 -0
  81. data/lib/YkLib/Yk/pg_setup.rb +917 -0
  82. data/lib/YkLib/Yk/procinfo.rb +314 -0
  83. data/lib/YkLib/Yk/proclist.rb +492 -0
  84. data/lib/YkLib/Yk/property.rb +863 -0
  85. data/lib/YkLib/Yk/ranger.rb +606 -0
  86. data/lib/YkLib/Yk/resolv_tz.rb +88 -0
  87. data/lib/YkLib/Yk/rlprompt.rb +73 -0
  88. data/lib/YkLib/Yk/rootexec.rb +48 -0
  89. data/lib/YkLib/Yk/rpm-packageproxy.rb +784 -0
  90. data/lib/YkLib/Yk/rpm-packageproxy2.rb +1430 -0
  91. data/lib/YkLib/Yk/rwhen.rb +21 -0
  92. data/lib/YkLib/Yk/selector.rb +124 -0
  93. data/lib/YkLib/Yk/set.rb +170 -0
  94. data/lib/YkLib/Yk/shellquote.rb +300 -0
  95. data/lib/YkLib/Yk/sio.rb +1001 -0
  96. data/lib/YkLib/Yk/sio0.rb +835 -0
  97. data/lib/YkLib/Yk/sio_aux.rb +1524 -0
  98. data/lib/YkLib/Yk/sio_inot.rb +86 -0
  99. data/lib/YkLib/Yk/sock_aux.rb +42 -0
  100. data/lib/YkLib/Yk/spipe.rb +843 -0
  101. data/lib/YkLib/Yk/sql_table.rb +565 -0
  102. data/lib/YkLib/Yk/stdlog.rb +4 -0
  103. data/lib/YkLib/Yk/syscommand.rb +173 -0
  104. data/lib/YkLib/Yk/sysinit.rb +75 -0
  105. data/lib/YkLib/Yk/ttyFontWidth.rb +46113 -0
  106. data/lib/YkLib/Yk/tty_char.dump +0 -0
  107. data/lib/YkLib/Yk/tty_char.rb +47 -0
  108. data/lib/YkLib/Yk/tty_char_create.rb +437031 -0
  109. data/lib/YkLib/Yk/tty_char_static.rb +437016 -0
  110. data/lib/YkLib/Yk/tty_rewrite.rb +142 -0
  111. data/lib/YkLib/Yk/tty_str.rb +461 -0
  112. data/lib/YkLib/Yk/tty_width.dat.rb +114 -0
  113. data/lib/YkLib/Yk/tty_width.rb +180 -0
  114. data/lib/YkLib/Yk/tty_width_available +569 -0
  115. data/lib/YkLib/Yk/tty_width_list +0 -0
  116. data/lib/YkLib/Yk/tty_width_list.linux +280 -0
  117. data/lib/YkLib/Yk/tty_width_list.windows +324 -0
  118. data/lib/YkLib/Yk/tz_tty +0 -0
  119. data/lib/YkLib/Yk/tz_tty.rb +0 -0
  120. data/lib/YkLib/Yk/uprepos.rb +94 -0
  121. data/lib/YkLib/Yk/userinfo.rb +91 -0
  122. data/lib/YkLib/Yk/with.rb +109 -0
  123. data/lib/YkLib/version.rb +3 -0
  124. data/lib/YkLib.rb +6 -0
  125. metadata +170 -0
@@ -0,0 +1,173 @@
1
+
2
+
3
+
4
+ module SystemCommand
5
+ require 'tempfile'
6
+ PROG_SSHA = "/usr/bin/ssha"
7
+ PROG_SSH = "/usr/bin/ssh"
8
+ def handleIO (arr, bl)
9
+ if bl
10
+ begin
11
+ ret = bl.call *arr
12
+ t = Process.detach arr[0].pid
13
+ t.join
14
+ ret = !$?.exitstatus ? nil : $?.exitstatus == 0
15
+ ensure
16
+ arr.each do |e|
17
+ e.closed? || e.close
18
+ end
19
+ end
20
+ ret
21
+ else
22
+ arr
23
+ end
24
+ end
25
+ module_function :handleIO
26
+ def popen3_at (remoteHost, *args, &bl)
27
+ cmdArr = nil
28
+ requirePty = true
29
+ toSu = nil
30
+ begin
31
+ toSu = Etc.getpwnam(userEntry = remoteHost)
32
+ rescue ArgumentError
33
+ end
34
+ if toSu != nil
35
+ if userEntry == "root"
36
+ if Process.euid != 0
37
+ if File.executable?(tmp = "/usr/sbin/cansudo") && system(tmp) && $? == 0
38
+ cmdArr = ["sudo"] + args
39
+ else
40
+ cmdArr = ["su", "-c", args.condSQuote]
41
+ end
42
+ else
43
+ cmdArr = args
44
+ requirePty = false
45
+ end
46
+ else
47
+ cmdArr = ["su", remoteHost, "-c", args.condSQuote]
48
+ end
49
+ else
50
+ if PROG_SSHA.executable_file? && remoteHost !~ /\@/
51
+ cmdArr = [PROG_SSHA, "--no-cocot", remoteHost, "-t"] + args
52
+ else
53
+ bin = PROG_SSH
54
+ cmdArr = [PROG_SSH, remoteHost, "-t"] + args
55
+ end
56
+ if Process.euid == 0
57
+ if ENV['SUDO_USER']
58
+ cmdArr = ["su", ENV['SUDO_USER'], "-c", cmdArr.condSQuote]
59
+ elsif ENV['LOGNAME'] != "root"
60
+ cmdArr = ["su", ENV['LOGNAME'], "-c", cmdArr.condSQuote]
61
+ end
62
+ end
63
+ end
64
+ if requirePty
65
+ f0, f1, f2 = pty_spawn3 *cmdArr
66
+ else
67
+ f0, f1, f2 = popen3 *cmdArr
68
+ end
69
+ handleIO [f0, f1, f2], bl
70
+ end
71
+ module_function :popen3_at
72
+ String.class_eval do
73
+ def popen3_at (remoteHost, &bl)
74
+ SystemCommand.popen3_at(remoteHost, self, &bl)
75
+ end
76
+ end
77
+ Array.class_eval do
78
+ def popen3_at (remoteHost, &bl)
79
+ SystemCommand.popen3_at(remoteHost, *self, &bl)
80
+ end
81
+ end
82
+ def self.method_added (name)
83
+ module_function name
84
+ String.class_eval %{
85
+ def #{name} (*args, &bl)
86
+ #{self.name}.#{name} *([self] + args), &bl
87
+ end
88
+ }
89
+ Array.class_eval %{
90
+ def #{name} (&bl)
91
+ #{self.name}.#{name} *self, &bl
92
+ end
93
+ }
94
+ end
95
+ def popen3 (*args, &bl)
96
+ stdinWrite, stdinRead = IO.pipe
97
+ stdoutRead, stdoutWrite = IO.pipe
98
+ stderrRead, stderrWrite = IO.pipe
99
+ [stdinWrite, stdinRead, stdoutRead, stdoutWrite, stderrRead, stderrWrite].each do |e|
100
+ e.nonblock = true
101
+ end
102
+ pid = fork do
103
+ STDIN.reopen stdinRead
104
+ STDOUT.reopen stdoutWrite
105
+ STDERR.reopen stderrWrite
106
+ exec *args
107
+ end
108
+ arr = [stdinWrite, stdoutRead, stderrRead]
109
+ arr.each do |e|
110
+ e.__defun__ :pid, pid
111
+ end
112
+ handleIO arr, bl
113
+ end
114
+ def spawn (*args)
115
+ pid = fork do
116
+ exec *args
117
+ end
118
+ return pid
119
+ end
120
+ require 'pty'
121
+ def pty_spawn3 (*args, &bl)
122
+ stdoutRead, stdoutWrite = IO.pipe
123
+ stderrRead, stderrWrite = IO.pipe
124
+ [stdoutRead, stdoutWrite, stderrRead, stderrWrite].each do |e|
125
+ e.nonblock = true
126
+ end
127
+ fp = nil
128
+ fp, slave = PTY.open
129
+ if !fp
130
+ Exception.new("cannot allocate pseudo tty")
131
+ end
132
+ pid = fork do
133
+ STDIN.reopen(slave)
134
+ STDOUT.reopen stdoutWrite
135
+ STDERR.reopen stderrWrite
136
+ exec *args
137
+ end
138
+ fList = [fp, stdoutRead, stderrRead]
139
+ fList.each do |f|
140
+ f.__defun__ :pid, pid
141
+ end
142
+ handleIO fList, bl
143
+ end
144
+ def psu6 (*args, &bl)
145
+ if Process.euid != 0
146
+ if !STDIN.tty?
147
+ raise Exception.new("cannot su because input is not a tty")
148
+ end
149
+ cmd = [__FILE__, args.condSQuote, tmpFifo3, tmpFifo4, tmpFifo5]
150
+ if File.executable?(tmp = "/usr/sbin/cansudo") && system(tmp) && $? == 0
151
+ cmdArr = ["sudo"] + cmd
152
+ else
153
+ cmdArr = ["su", "-c", cmd.condSQuote]
154
+ end
155
+ tmpFifo3 = Tempfile.mkfifo
156
+ tmpFifo4 = Tempfile.mkfifo
157
+ tmpFifo5 = Tempfile.mkfifo
158
+ f0, f1, f2 = pty_spawn3 *cmdArr
159
+ f3 = tmpFifo3.nb_open "w"
160
+ f4 = tmpFifo4.nb_open "r"
161
+ f5 = tmpFifo5.nb_open "r"
162
+ [f3, f4, f5].each do |e|
163
+ e.__defun__ :pid, f0.pid
164
+ end
165
+ handleIO [f3, f4, f5, f0, f1, f2], bl
166
+ else
167
+ pty_spawn3(*args, &bl)
168
+ end
169
+ end
170
+
171
+ end
172
+
173
+
@@ -0,0 +1,75 @@
1
+
2
+ require 'Yk/path_aux'
3
+
4
+
5
+ def printRes (arg)
6
+ if arg
7
+ system <<ENDX
8
+ . /etc/rc.d/init.d/functions
9
+ success
10
+ echo
11
+ ENDX
12
+ else
13
+ system <<ENDX
14
+ . /etc/rc.d/init.d/functions
15
+ failure
16
+ echo
17
+ ENDX
18
+ end
19
+ end
20
+
21
+
22
+ def sysinit (*args)
23
+ lFile = "/var/lock/subsys/#{$0.basename}"
24
+ if args.size == 0
25
+ args = ARGV
26
+ end
27
+ case args[0]
28
+ when "start"
29
+ cmdStart = true
30
+ when "stop"
31
+ cmdStop = true
32
+ when "restart"
33
+ cmdStart = true
34
+ cmdStop = true
35
+ when "condstart"
36
+ if !lFile.exist?
37
+ cmdStart = true
38
+ end
39
+ when "condstop"
40
+ if lFile.exist?
41
+ cmdStop = true
42
+ end
43
+ when "condrestart"
44
+ if lFile.exist?
45
+ cmdStart = true
46
+ cmdStop = true
47
+ end
48
+ end
49
+ STDOUT.flush
50
+ if [cmdStart, cmdStop] == [nil, nil]
51
+ print "cannot execute #{$0.basename} #{args[0]}"
52
+ system <<END
53
+ . /etc/rc.d/init.d/functions
54
+ failure
55
+ echo
56
+ END
57
+ else
58
+ if cmdStop
59
+ cmdStopRes = yield("stop")
60
+ printRes cmdStopRes
61
+ end
62
+ if cmdStart
63
+ cmdStartRes = yield("start")
64
+ printRes cmdStartRes
65
+ end
66
+ end
67
+ if cmdStopRes
68
+ lFile.rm_f
69
+ end
70
+ if cmdStartRes
71
+ lFile.touch
72
+ end
73
+ end
74
+
75
+