aro 0.2.2 → 0.2.3

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 (68) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/Gemfile.lock +1 -1
  4. data/aro.gemspec +3 -3
  5. data/bin/aos +10 -3
  6. data/bin/aro +18 -11
  7. data/checksums/aro-0.2.3.gem.sha512 +1 -0
  8. data/locale/en.abot.yml +81 -0
  9. data/locale/en.aos.yml +6 -2
  10. data/locale/en.cor.yml +47 -0
  11. data/locale/en.data.yml +2 -2
  12. data/locale/en.dom.yml +15 -13
  13. data/locale/en.flie.yml +29 -0
  14. data/locale/en.usage.yml +24 -11
  15. data/locale/en.yml +2 -47
  16. data/sys/aos/abot.rb +256 -0
  17. data/sys/aos/aos.rb +373 -161
  18. data/sys/aos/cor.rb +773 -0
  19. data/sys/aos/data.rb +3 -3
  20. data/sys/aos/db/migrate/1765148774_create_yous.rb +1 -1
  21. data/sys/aos/db/migrate/1765933985_create_agodos.rb +22 -0
  22. data/sys/aos/db/migrate/1766203888_create_fpxies.rb +18 -0
  23. data/sys/aos/db.rb +16 -16
  24. data/sys/aos/flie.rb +144 -0
  25. data/sys/aos/models/agodo.rb +96 -0
  26. data/sys/aos/models/base_model.rb +13 -0
  27. data/sys/aos/models/fpxy.rb +28 -0
  28. data/sys/aos/models/ilib.rb +2 -0
  29. data/sys/aos/models/ilog.rb +5 -3
  30. data/sys/aos/models/you.rb +52 -4
  31. data/sys/aos/s.rb +2 -1
  32. data/sys/aos/vws/base.rb +62 -22
  33. data/sys/aos/vws/dom.rb +1 -1
  34. data/sys/aos/vws/games/abot.rb +21 -0
  35. data/sys/aos/vws/games/{game.rb → teck.rb} +19 -16
  36. data/sys/aos/vws/home.rb +23 -0
  37. data/sys/aos/vws/root/config.rb +4 -4
  38. data/sys/aos/vws/root/flie.rb +21 -0
  39. data/sys/aos/vws/welcome.rb +40 -4
  40. data/sys/aro/d.rb +4 -2
  41. data/sys/aro/db.rb +19 -10
  42. data/sys/aro/mancy.rb +16 -20
  43. data/sys/aro/models/base_model.rb +13 -0
  44. data/sys/aro/models/teck.rb +16 -12
  45. data/sys/aro/models/tlog.rb +2 -1
  46. data/sys/aro/p.rb +1 -1
  47. data/sys/aro/r.rb +2 -1
  48. data/sys/aro/v.rb +2 -2
  49. data/sys/cli/constants.rb +4 -10
  50. data/sys/cli/create.rb +2 -3
  51. data/sys/cli/dom.rb +1 -2
  52. data/sys/cli/teck.rb +26 -33
  53. data/sys/cli.rb +7 -9
  54. data/sys/dom/d.rb +38 -29
  55. data/sys/dom/dom.rb +62 -36
  56. data/sys/dom/p.rb +1 -1
  57. data/sys/fpx.rb +116 -0
  58. data/sys/reiquire.rb +3 -2
  59. data/sys/shr/prompt.rb +2 -2
  60. data/sys/shr/t.rb +11 -13
  61. data/sys/shr/version.rb +1 -1
  62. data/tasks/make.rake +1 -1
  63. metadata +55 -43
  64. data/sys/aos/vws/games/abpps.rb +0 -19
  65. data/sys/aos/vws/games/hbpps.rb +0 -19
  66. data/sys/aos/vws/games/shpps.rb +0 -19
  67. data/sys/aos/vws/games/vipps.rb +0 -19
  68. data/sys/dom/config.rb +0 -718
data/sys/aos/abot.rb ADDED
@@ -0,0 +1,256 @@
1
+ =begin
2
+
3
+ abot.rb
4
+
5
+ abot.
6
+
7
+ by i2097i
8
+
9
+ =end
10
+
11
+ module Aos
12
+ class Abot
13
+ include Singleton
14
+
15
+ attr_accessor :display_lines
16
+
17
+ CMDS = {
18
+ AGODO: {
19
+ key: :agodo,
20
+ description: I18n.t("abot.commands.description.agodo"),
21
+ usage: I18n.t("abot.commands.usage.agodo"),
22
+ },
23
+ DEREZ: {
24
+ key: :derez,
25
+ description: I18n.t("abot.commands.description.derez"),
26
+ usage: I18n.t("abot.commands.usage.derez"),
27
+ },
28
+ RATE: {
29
+ key: :rate,
30
+ description: I18n.t("abot.commands.description.rate"),
31
+ usage: I18n.t("abot.commands.usage.rate"),
32
+ },
33
+ STOP: {
34
+ key: :stop,
35
+ description: I18n.t("abot.commands.description.stop"),
36
+ usage: I18n.t("abot.commands.usage.stop"),
37
+ },
38
+ START: {
39
+ key: :start,
40
+ description: I18n.t("abot.commands.description.start"),
41
+ usage: I18n.t("abot.commands.usage.start"),
42
+ },
43
+ }
44
+
45
+ def self.cron_pid_file
46
+ return "" if Aro::Dom.dom_root.nil? || Aro::Dom.room_path(:abot).nil?
47
+ File.join(Aro::Dom.dom_root, Aro::Dom.room_path(:abot), "abot.pid")
48
+ end
49
+
50
+ def self.cron
51
+ Aro::D.say("abot cron is disabled currently. you can still manage them but they do not run.")
52
+ not_currently_enabled = true
53
+ return if not_currently_enabled || File.exist?(Aos::Abot.cron_pid_file)
54
+
55
+ abot_pid = fork {
56
+ log = File.open(File.join(Aro::Dom.dom_root, Aro::Dom.room_path(:abot), "abot.log"), "w+")
57
+ STDOUT.reopen(log)
58
+ STDERR.reopen(log)
59
+ STDOUT.sync = true
60
+ loop do
61
+ Aos::Agodo.where(power: :on).each{|a|
62
+ a.godo
63
+ }
64
+ sleep(Aro::Mancy::S)
65
+ end
66
+ }
67
+ Process.detach(abot_pid)
68
+ File.open(Aos::Abot.cron_pid_file, "w+") do |f|
69
+ f.write(abot_pid)
70
+ end
71
+ end
72
+
73
+ def self.terminate
74
+ if File.exist?(Aos::Abot.cron_pid_file)
75
+ system("kill -9 #{File.read(Aos::Abot.cron_pid_file)}")
76
+ FileUtils.rm(Aos::Abot.cron_pid_file)
77
+ end
78
+ end
79
+
80
+ def self.process_cmd(args)
81
+ if args[Aro::Mancy::S].nil?
82
+ Aos::Abot.abot
83
+ return true
84
+ elsif CLI::FLAGS[:HELP].include?(args[Aro::Mancy::S].to_sym)
85
+ self.instance.display_lines = [I18n.t("abot.usage")]
86
+ return true
87
+ end
88
+
89
+ processed = false
90
+ # clear display
91
+ self.instance.display_lines = []
92
+ case args[Aro::Mancy::S].to_sym
93
+ when Aos::Abot::CMDS[:AGODO][:key]
94
+ Aos::Abot.agodo(args)
95
+ processed = true
96
+ when Aos::Abot::CMDS[:DEREZ][:key]
97
+ Aos::Abot.derez(args[Aro::Mancy::OS])
98
+ processed = true
99
+ when Aos::Abot::CMDS[:RATE][:key]
100
+ Aos::Abot.rate(args)
101
+ processed = true
102
+ when Aos::Abot::CMDS[:STOP][:key]
103
+ Aos::Abot.stop(args[Aro::Mancy::OS])
104
+ processed = true
105
+ when Aos::Abot::CMDS[:START][:key]
106
+ Aos::Abot.start(args[Aro::Mancy::OS])
107
+ processed = true
108
+ else
109
+ self.instance.display_lines = [I18n.t("abot.messages.invalid_agodo_cmd")]
110
+ end
111
+
112
+ return processed
113
+ end
114
+
115
+ def self.abot
116
+ self.instance.display_lines = Aos::Abot.base_lines
117
+ end
118
+
119
+ # create and list agodos
120
+ def self.agodo(args)
121
+ if args[Aro::Mancy::OS].nil?
122
+ # list agodos
123
+ self.instance.display_lines = Aos::Abot.agodo_lines
124
+ return
125
+ end
126
+
127
+ if !args[Aro::Mancy::OS].nil? &&
128
+ !args[Aro::Mancy::E].nil? &&
129
+ !args[Aro::Mancy::N].nil?
130
+ # create mode
131
+ # abot agodo <go> <do> <rate>
132
+ arg_go = args[Aro::Mancy::OS]
133
+ arg_do = args[Aro::Mancy::E]
134
+ arg_rate = args[Aro::Mancy::N]
135
+
136
+ agodo_record = Aos::Agodo.new
137
+ agodo_record.go = arg_go
138
+ agodo_record.do = arg_do
139
+ agodo_record.rate = arg_rate
140
+ if agodo_record.save
141
+ self.instance.display_lines << "successfully created an agodo named #{agodo_record.you.name}."
142
+ self.instance.display_lines += Aos::Abot.agodo_lines
143
+ else
144
+ self.instance.display_lines += agodo_record.errors.to_a.map(&:downcase)
145
+ end
146
+ else
147
+ self.instance.display_lines = [I18n.t("abot.messages.invalid_agodo_cmd")]
148
+ end
149
+ end
150
+
151
+ # update agodo rate
152
+ def self.rate(args)
153
+ agodo_you = Aos::You.find_by(
154
+ name: args[Aro::Mancy::OS]&.strip&.upcase
155
+ )
156
+
157
+ if !agodo_you.nil? &&
158
+ Aos::Cor.int_valid?(args[Aro::Mancy::E]&.to_i)
159
+ agodo_record = agodo_you.agodo
160
+ agodo_record.update(rate: args[Aro::Mancy::E].to_i)
161
+ self.instance.display_lines << "#{agodo_record.you.name} rate updated."
162
+ self.instance.display_lines += Aos::Abot.agodo_lines
163
+ else
164
+ self.instance.display_lines = [I18n.t("abot.messages.invalid_agodo_cmd")]
165
+ end
166
+ end
167
+
168
+ # destroy an agodo
169
+ def self.derez(agodo_name)
170
+ n = agodo_name&.strip&.upcase
171
+ agodo_you = Aos::You.find_by(name: n)
172
+ unless agodo_you.nil?
173
+ self.instance.display_lines << "derezing #{agodo_you.name} agodo."
174
+ agodo_record = agodo_you.agodo
175
+ agodo_record&.destroy
176
+ agodo_you.ilogs.destroy_all
177
+ agodo_you.destroy
178
+ requery = Aos::You.find_by(name: n)
179
+ if requery.nil? && requery&.agodo.nil?
180
+ self.instance.display_lines << "successfully destroyed #{n} agodo."
181
+ else
182
+ self.instance.display_lines << "unable to destroyed the #{n} agodo."
183
+ end
184
+ else
185
+ self.instance.display_lines = [I18n.t("abot.messages.invalid_agodo_cmd")]
186
+ end
187
+ end
188
+
189
+ # power off an agodo
190
+ def self.stop(agodo_name)
191
+ agodo_you = Aos::You.find_by(
192
+ name: agodo_name&.strip&.upcase
193
+ )
194
+ unless agodo_you.nil?
195
+ agodo_record = agodo_you.agodo
196
+ agodo_record.update(power: :off)
197
+ self.instance.display_lines << "#{agodo_record.you.name} stopped."
198
+ self.instance.display_lines += Aos::Abot.agodo_lines
199
+ else
200
+ self.instance.display_lines = [I18n.t("abot.messages.invalid_agodo_cmd")]
201
+ end
202
+ end
203
+
204
+ # power on an agodo
205
+ def self.start(agodo_name)
206
+ agodo_you = Aos::You.find_by(
207
+ name: agodo_name&.strip&.upcase
208
+ )
209
+ unless agodo_you.nil?
210
+ agodo_record = agodo_you.agodo
211
+ agodo_record.update(power: :on)
212
+
213
+ self.instance.display_lines << "#{agodo_record.you.name} started."
214
+ self.instance.display_lines += Aos::Abot.agodo_lines
215
+ else
216
+ self.instance.display_lines = [I18n.t("abot.messages.invalid_agodo_cmd")]
217
+ end
218
+ end
219
+
220
+ # abot help
221
+ def self.base_lines
222
+ # print abot commands
223
+ lines = []
224
+ lines << ""
225
+ lines << I18n.t("aos.constants.commands")
226
+ lines += Aos::Vw::Base.lines_for_cmd(Aos::Os::CMDS[:ABOT])
227
+ lines << I18n.t("aos.constants.subcommands")
228
+ Aos::Abot::CMDS.keys.each{|k|
229
+ lines += Aos::Vw::Base.lines_for_cmd(Aos::Abot::CMDS[k])
230
+ }
231
+ lines << ""
232
+
233
+ lines
234
+ end
235
+
236
+ # show agodos
237
+ def self.agodo_lines(agodos = nil)
238
+ # list input agodos
239
+ lines = []
240
+ lines << ""
241
+ agodos ||= Aos::Agodo.all
242
+ unless agodos.any?
243
+ lines << I18n.t("abot.messages.no_agodos")
244
+ else
245
+ lines << I18n.t("abot.messages.listing_agodos")
246
+ agodos.each{|a|
247
+ lines += a.you.get_lines
248
+ lines += a.get_lines
249
+ }
250
+ end
251
+ lines << ""
252
+
253
+ lines
254
+ end
255
+ end
256
+ end