aro 0.2.6 → 0.2.7

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 (59) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +5 -2
  3. data/README.md +10 -54
  4. data/aro.gemspec +2 -1
  5. data/bin/oss_om +2 -0
  6. data/checksums/aro-0.2.7.gem.sha512 +1 -0
  7. data/listen.rb +1 -1
  8. data/locale/en.cor.yml +21 -32
  9. data/locale/en.yml +8 -60
  10. data/sys/aro/action.rb +153 -0
  11. data/sys/aro/d.rb +3 -1
  12. data/sys/aro/db/migrate/1793913747_create_data_bases.rb +2 -0
  13. data/sys/aro/db/migrate/1793913777_create_data_base_directories.rb +2 -0
  14. data/sys/aro/db/migrate/1793913796_create_data_base_files.rb +2 -0
  15. data/sys/aro/db/migrate/1793913841_create_menus.rb +2 -0
  16. data/sys/aro/db/migrate/1793913861_create_menu_items.rb +3 -2
  17. data/sys/aro/db.rb +19 -33
  18. data/sys/aro/designer.rb +166 -97
  19. data/sys/aro/locale.rb +4 -2
  20. data/sys/aro/mancy.rb +6 -39
  21. data/sys/aro/models/concerns/tar_go_for_root_sec.rb +37 -0
  22. data/sys/aro/models/concerns/uuid.rb +2 -0
  23. data/sys/aro/models/data_base.rb +33 -8
  24. data/sys/aro/models/directory.rb +2 -0
  25. data/sys/aro/models/file.rb +3 -1
  26. data/sys/aro/models/menu.rb +64 -0
  27. data/sys/aro/models/menu_item.rb +70 -4
  28. data/sys/aro/oss_open_menu.rb +331 -0
  29. data/sys/aro/p.rb +15 -9
  30. data/sys/aro/r.rb +2 -0
  31. data/sys/aro/{cor.rb → settings/cor.rb} +91 -215
  32. data/sys/aro/settings/git.rb +69 -0
  33. data/sys/aro/settings/ssh.rb +123 -0
  34. data/sys/aro/store.rb +87 -36
  35. data/sys/aro/v.rb +2 -0
  36. data/sys/aro.rb +2 -0
  37. data/sys/ma_ain.rb +202 -0
  38. data/sys/reiquire.rb +41 -54
  39. data/sys/shr/prompt.rb +6 -1
  40. data/sys/shr/version.rb +7 -8
  41. metadata +31 -23
  42. data/locale/en.cards.yml +0 -519
  43. data/locale/en.cmd.yml +0 -34
  44. data/locale/en.usage.yml +0 -142
  45. data/sys/aro/cmd.rb +0 -96
  46. data/sys/aro/db/migrate/1763374647_create_tecks.rb +0 -20
  47. data/sys/aro/db/migrate/1763432541_create_tlogs.rb +0 -20
  48. data/sys/aro/ma_ain.rb +0 -54
  49. data/sys/aro/models/teck.rb +0 -251
  50. data/sys/aro/models/tlog.rb +0 -21
  51. data/sys/aro/views/base.rb +0 -25
  52. data/sys/aro/views/teck.rb +0 -30
  53. data/sys/cli/constants.rb +0 -45
  54. data/sys/cli/create.rb +0 -23
  55. data/sys/cli/nterface.rb +0 -37
  56. data/sys/cli/teck.rb +0 -107
  57. data/sys/cli/usage.rb +0 -25
  58. data/sys/cli.rb +0 -23
  59. data/sys/shr/t.rb +0 -74
data/sys/aro/store.rb CHANGED
@@ -32,22 +32,70 @@ class Aro::Dom::Store
32
32
  def self.edit(aro_file, updates)
33
33
  return if aro_file.nil?
34
34
  unless ::File.exist?(aro_file.aro_file_path)
35
- ::File.write(aro_file.aro_file_path, "{}")
35
+ ::File.write(aro_file.aro_file_path, {}.to_json)
36
36
  end
37
37
 
38
- # todo: validate updates
38
+ Aro::Dom::Ma_ain.i2097i_bookmark
39
+ puts :todo_validate_updates_or_depricate
40
+ puts __method__
41
+
42
+
43
+ store_instance = Aro::Dom::Ma_ain.instance.get_store_for(aro_file)
44
+ updates.each{|k, v|
45
+
46
+ store_instance.save_key_value_pair(k, v)
47
+ Aro::P.say([
48
+ "reading in #{k} after setting to #{v} in #{aro_file.aro_file_path}",
49
+ "got value => #{store_instance.safe_get_key(k)}"
50
+ ])
51
+ }
52
+ end
53
+
54
+ def save_key_value_pair(k, v)
55
+ set_key(k, v)
56
+ end
57
+
58
+ def save_exec_oss_om_params!(oss_om_const, oss_om_method, label)
59
+ Aro::P.say(__method__)
39
60
  Aro::Dom::Ma_ain.instance.store_mutex.synchronize do
40
- store_instance = Aro::Dom::Ma_ain.instance.get_store_for(aro_file)
41
- updates.each{|k, v|
42
- store_instance.set_key(k, v)
43
- Aro::P.say([
44
- "reading in #{k} after setting to #{v} in #{aro_file.aro_file_path}",
45
- "got value => #{store_instance.get_key(k)}"
46
- ])
61
+ built = self.class.build_exec_oss_om_params!(oss_om_const, oss_om_method, label)
62
+ built.each{|k, v| self.set_key(k, v)}
63
+ end
64
+ end
65
+
66
+ def self.build_exec_oss_om_params!(oss_om_const, oss_om_method, label)
67
+ Aro::P.say(__method__)
68
+ # {
69
+ # action_name:,
70
+ # action_key: Aro::Dom::Action::TYPES[:OSS_OM][:key],
71
+ # action_params: {
72
+ # aro_class_name:,
73
+ # aro_class_method:
74
+ # }
75
+ # }
76
+ raise "invalid oss_om_const!" unless Aro::Dom::Oss_OpenMenu::EXEC_CLASSES.include?(oss_om_const.name)
77
+ raise "invalid oss_om_method! #{oss_om_method}" unless oss_om_const.methods.include?(oss_om_method.to_sym)
78
+ {
79
+ action_name: label,
80
+ action_key: :exec_oss_om,
81
+ action_params: {
82
+ aro_class_name: oss_om_const.name,
83
+ aro_class_method: oss_om_method
47
84
  }
85
+ }
86
+ end
87
+
88
+ def safe_get_key(k)
89
+ safe_key = nil
90
+ Aro::Dom::Ma_ain.instance.store_mutex.synchronize do
91
+ safe_key = get_key(k)
48
92
  end
93
+
94
+ safe_key
49
95
  end
50
96
 
97
+ private
98
+
51
99
  def get_key(key)
52
100
  return if open_file_path.nil?
53
101
 
@@ -62,20 +110,19 @@ class Aro::Dom::Store
62
110
  # open storage
63
111
  @is_open = true
64
112
  storage_contents = {}
65
- begin
113
+ @parser_error = Aro::Dom::Ssh.decrypt_file!(open_file_path)
114
+ unless @parser_error.kind_of?(StandardError) ||
115
+ StandardError.subclasses.include?(@parser_error.class)
116
+
117
+ # return value from Aro::Dom::Ssh.decrypt_file!
118
+ # is not an error.
119
+ storage_contents = @parser_error
66
120
  @parser_error = nil
67
- # read storage
68
- storage_contents = JSON.parse(
69
- ::File.read(open_file_path, encoding: "UTF-8")
70
- )
71
- rescue StandardError => e
121
+ end
122
+
123
+ unless @parser_error.nil?
72
124
  @is_open = false
73
- if @parser_error.nil?
74
- @parser_error = e
75
- return get_key(key)
76
- else
77
- raise @parser_error
78
- end
125
+ raise @parser_error
79
126
  end
80
127
 
81
128
  # only update the cache value if present in storage
@@ -106,25 +153,25 @@ class Aro::Dom::Store
106
153
 
107
154
  # return if storage open
108
155
  # non-persisted cache values update next cycle
109
- return if @is_open
156
+ return true if @is_open
110
157
 
111
158
  # open storage
112
159
  @is_open = true
113
160
  storage_contents = {}
114
- begin
161
+
162
+ @parser_error = Aro::Dom::Ssh.decrypt_file!(open_file_path)
163
+ unless @parser_error.kind_of?(StandardError) ||
164
+ StandardError.subclasses.include?(@parser_error.class)
165
+
166
+ # return value from Aro::Dom::Ssh.decrypt_file!
167
+ # is not an error.
168
+ storage_contents = @parser_error
115
169
  @parser_error = nil
116
- # read storage
117
- storage_contents = JSON.parse(
118
- ::File.read(open_file_path, encoding: "UTF-8")
119
- )
120
- rescue StandardError => e
170
+ end
171
+
172
+ unless @parser_error.nil?
121
173
  @is_open = false
122
- if @parser_error.nil?
123
- @parser_error = e
124
- return get_key(key)
125
- else
126
- raise @parser_error
127
- end
174
+ raise @parser_error
128
175
  end
129
176
 
130
177
  # update storage and cache
@@ -136,12 +183,16 @@ class Aro::Dom::Store
136
183
  }
137
184
 
138
185
  # write storage
139
- ::File.open(open_file_path, "w+") do |f|
140
- f.write(storage_contents.to_json)
186
+ write_result = Aro::Dom::Ssh.write_encrypted_file!(open_file_path, storage_contents.to_json)
187
+ unless write_result == true
188
+ @is_open = false
189
+ raise write_result
141
190
  end
142
191
 
143
192
  # close storage
144
193
  @is_open = false
145
194
  clear_cache! if @clear_flag
195
+
196
+ write_result
146
197
  end
147
198
  end
data/sys/aro/v.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  =begin
2
4
 
3
5
  v.rb
data/sys/aro.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  =begin
2
4
 
3
5
  aro.rb
data/sys/ma_ain.rb ADDED
@@ -0,0 +1,202 @@
1
+ # frozen_string_literal: true
2
+
3
+ =begin
4
+
5
+ ma_ain.rb
6
+
7
+ aro dom ma_ain.
8
+
9
+ by i2097i
10
+
11
+ =end
12
+
13
+ module Aro
14
+ module Dom
15
+ class Ma_ain < Aro::Mancy
16
+ # inherits Singleton
17
+
18
+ # evolution planning
19
+ #
20
+ # Cor (copy of Aro::Cor)
21
+ # Engine
22
+ # Designer
23
+ # Git
24
+ # Ssh
25
+ # Block (copy of Aro::Dom::DataBase)
26
+ # Chain (copy of Aro::Dom::Directory)
27
+ # Node (copy of Aro::Dom::File)
28
+ # List (copy of Aro::Dom::Menu)
29
+ # ListItem (copy of Aro::Dom::MenuItem)
30
+ #
31
+ #
32
+
33
+ EXEC_METHODS = [
34
+ :exec_browse_data_bases!,
35
+ :exec_settings!,
36
+ :exec_quit!
37
+ ]
38
+
39
+ RUN_MODES = [
40
+ :design,
41
+ :run
42
+ ]
43
+
44
+ UNICODE_KEYS = {
45
+ bang: "\u0021",
46
+ check: "\u2713",
47
+ close: "\u2A2F",
48
+ integral: "\u222B",
49
+ secure: "\u266F",
50
+ unsecure: "\u266D",
51
+ yinyang: "\u262F",
52
+ }
53
+
54
+ attr_accessor :current_menu, :previous_menu
55
+ attr_accessor :data_mutex, :store_mutex
56
+ attr_accessor :stores
57
+ # todo: unused currently. init instance with hashing algo stuff
58
+ attr_accessor :valid_settings
59
+ attr_accessor :run_mode
60
+
61
+ def reign!
62
+ begin
63
+ # default mode is :run
64
+ self.run_mode = Aro::Mancy::S
65
+ Aro::P.say("Aro::Dom::Oss_OpenMenu.install!")
66
+ if Aro::Dom::Oss_OpenMenu.install!
67
+ Aro::P.say("Aro::Dom::Oss_OpenMenu.boot!")
68
+ Aro::Dom::Oss_OpenMenu.boot!
69
+ else
70
+ Aro::P.say("installation failed. exiting now...")
71
+ exit
72
+ end
73
+ Aro::P.say("Aro::Dom::Designer.design")
74
+ Aro::Dom::Designer.design
75
+ rescue RuntimeError => e
76
+
77
+ Aro::P.say("#{e.class}! #{e.inspect}")
78
+ self.class.i2097i_bookmark
79
+ reign!
80
+ end
81
+ end
82
+
83
+ def initialize
84
+ self.data_mutex = Mutex.new
85
+ self.store_mutex = Mutex.new
86
+
87
+ @stores = {}
88
+ end
89
+
90
+ def self.i2097i_bookmark
91
+ return
92
+ Aro::P.less("\n#{UNICODE_KEYS[:bang] * Aro::Mancy::OS} <breakpoint> #{self.name}\n\n" +
93
+ Thread.current.backtrace[1..].reverse.map{|l|
94
+ l.gsub("#{Reiquire.gem_dir}", "").gsub(Aro::Mancy.root_dir, "")
95
+ }.last(Aro::Mancy::V).join("\n")
96
+ )
97
+ puts __method__
98
+ end
99
+
100
+ def self.init!
101
+ root_dir_path = Aro::Cor.ivar(:OSS_OM_HOME)
102
+ return false if root_dir_path.nil? || !Dir.exist?(root_dir_path)
103
+ Aro::P.say("#{self.name} initializing in #{root_dir_path}")
104
+ Aro::Mancy.init(root_dir_path)
105
+ end
106
+
107
+ def self.is_encrypted?
108
+ !Aro::Cor.ivar(:oss_om_ssh_key).nil? &&
109
+ !self.instance.valid_settings.nil?
110
+ end
111
+
112
+ def self.domain
113
+ self.instance.current_menu.nil? ? super : "#{Aro::Mancy.aro_mancy_name}#{Aro::Mancy::A}#{Aro::Dom::Ma_ain}"
114
+ end
115
+
116
+ def self.mini_hud_for(display_text = nil)
117
+ cryption_text = UNICODE_KEYS[
118
+ is_encrypted? ? :secure : :unsecure
119
+ ] + UNICODE_KEYS[:bang]
120
+
121
+ if is_encrypted?
122
+ cryption_text = "#{UNICODE_KEYS[:secure]}#{UNICODE_KEYS[:bang]}"
123
+ else
124
+ cryption_text = "#{UNICODE_KEYS[:unsecure]}#{UNICODE_KEYS[:bang]}"
125
+ end
126
+
127
+ mode_text = RUN_MODES[self.instance.run_mode || Aro::Mancy::O]
128
+ [
129
+ "(#{cryption_text})[#{mode_text}: ",
130
+ display_text
131
+ ].join("")
132
+ end
133
+
134
+ def self.ps1_display(cls_name = nil)
135
+ super(domain)
136
+ end
137
+
138
+ def self.open!(data_base = :ma_ain)
139
+ Aro::P.say("Aro::Dom::DataBase.open_menu(#{data_base})")
140
+ staged_menu = nil
141
+ begin
142
+ staged_menu = Aro::Dom::DataBase.open_menu(data_base)
143
+ rescue StandardError => e
144
+ raise "#{self.name} error opening data_base #{data_base}! #{e.inspect}"
145
+ end
146
+ self.instance.previous_menu = self.instance.current_menu
147
+ self.instance.current_menu = staged_menu
148
+ end
149
+
150
+ def self.back!
151
+ self.instance.current_menu = nil
152
+ open!
153
+ end
154
+
155
+ def self.toggle_run_mode
156
+ self.instance.run_mode = self.instance.run_mode == 0 ? 1 : 0
157
+ end
158
+
159
+ def self.running?
160
+ RUN_MODES[self.instance.run_mode || Aro::Mancy::O] == :run
161
+ end
162
+
163
+ def self.get_current_options
164
+ options = []
165
+
166
+ options << {back: :back, value: :back} unless self.instance.previous_menu.nil?
167
+
168
+ options << {name: "#{UNICODE_KEYS[:integral]}(#{Aro::Mancy::ARO_DIRECTORY})", value: :open_menu}
169
+
170
+ options += self.instance.current_menu.menu_items.select{|mi| mi.user?}.map{|mi| mi.as_tty}
171
+ options += self.instance.current_menu.menu_items.select{|mi| mi.system?}.map{|mi| mi.as_tty}
172
+
173
+ options
174
+ end
175
+
176
+ def self.exec_browse_data_bases!
177
+ Aro::Dom::Ma_ain.open!(:browse_data_bases)
178
+ end
179
+
180
+ def self.exec_settings!
181
+ Aro::Dom::Ma_ain.open!(:settings)
182
+ end
183
+
184
+ def self.exec_quit!
185
+ exit
186
+ end
187
+
188
+ def get_store_for(aro_file)
189
+ raise "invalid aro_file!" if aro_file.nil?
190
+
191
+ if @stores[aro_file.uuid].nil?
192
+ new_store = Aro::Dom::Store.new
193
+ new_store.open_file_path = aro_file.aro_file_path
194
+ @stores[aro_file.uuid] = new_store
195
+ end
196
+
197
+ return Aro::Dom::Ma_ain.instance.stores[aro_file.uuid]
198
+ end
199
+
200
+ end
201
+ end
202
+ end
data/sys/reiquire.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  =begin
2
4
 
3
5
  reiquire.rb
@@ -10,6 +12,10 @@
10
12
 
11
13
  module Reiquire
12
14
  def self.aro
15
+
16
+ # ensure i18n is initialized
17
+ initialize_i18n!
18
+
13
19
  # require runtime dependencies
14
20
  require_dependencies!
15
21
 
@@ -19,8 +25,7 @@ module Reiquire
19
25
  # configure locale
20
26
  configure_i18n
21
27
 
22
- # ensure base migrations exist
23
- copy_db_migrations_from_gem! if Aro::Mancy.in_aro?
28
+ require_relative "./ma_ain"
24
29
  end
25
30
 
26
31
  def self.requires(dirs)
@@ -48,34 +53,30 @@ module Reiquire
48
53
  File.join(gem_locale_dir, "*.yml")
49
54
  end
50
55
 
51
- def self.copy_db_migrations_from_gem!
52
- puts __method__
53
- puts Aro::Cor.ivar(:OSS_OM_HOME)
54
- return if Aro::Cor.ivar(:OSS_OM_HOME).nil? || oss_om_up_to_date?(
55
- Aro::Db.gem_migrations_filepaths,
56
- Aro::Db.migrations_filepaths
57
- )
56
+ private
58
57
 
59
- FileUtils.mkdir_p(Aro::Db.migrate_dir)
60
- FileUtils.cp_r(
61
- gem_migrations_path,
62
- Aro::Db.migrate_dir
63
- )
58
+
59
+ def self.require_dependencies!
60
+ [
61
+ :active_record,
62
+ :"active_record/schema_dumper",
63
+ :fileutils,
64
+ :"tty-font",
65
+ :"tty-prompt"
66
+ ].each{|d| require d.to_s}
64
67
  end
65
68
 
66
- private
67
69
 
68
70
  def self.copy_locale_files_from_gem!
69
- puts __method__
70
- puts Aro::Cor.ivar(:OSS_OM_HOME)
71
+ Aro::D.say(__method__)
71
72
  return if Aro::Cor.ivar(:OSS_OM_HOME).nil? || oss_om_up_to_date?(
72
73
  gem_locales_filepaths,
73
74
  Aro::Dom::Locale.locales_filepaths
74
75
  )
75
76
 
76
- oss_wtf = File.join(Aro::Mancy.root_dir, :locale.to_s, :locale.to_s)
77
- if Dir.exist?(oss_wtf)
78
- FileUtils.rm_rf(oss_wtf)
77
+ file_utils_wtf = File.join(Aro::Mancy.root_dir, :locale.to_s, :locale.to_s)
78
+ if Dir.exist?(file_utils_wtf)
79
+ FileUtils.rm_rf(file_utils_wtf)
79
80
  oss_om_up_to_date!(
80
81
  gem_locales_filepaths,
81
82
  Aro::Dom::Locale.locale_dir
@@ -91,47 +92,34 @@ module Reiquire
91
92
  end
92
93
 
93
94
  def self.oss_om_up_to_date!(gem_filepaths, oss_om_dir)
94
- puts __method__
95
+ Aro::D.say(__method__)
95
96
  gem_files_abs = Dir[gem_filepaths].map{|fp| File.absolute_path(fp)}
96
- puts "gem_files_abs: #{gem_files_abs}"
97
+ Aro::D.say("gem_files_abs: #{gem_files_abs}")
97
98
 
98
- puts "FileUtils.mkdir_p(#{oss_om_dir})"
99
+ Aro::D.say("FileUtils.mkdir_p(#{oss_om_dir})")
99
100
  FileUtils.mkdir_p(oss_om_dir)
100
101
  gem_files_abs.each{|gfa|
101
- puts "FileUtils.cp(#{File.basename(gfa)}, #{File.basename(oss_om_dir)})"
102
+ Aro::D.say("FileUtils.cp(#{File.basename(gfa)}, #{File.basename(oss_om_dir)})")
102
103
  FileUtils.cp(gfa, oss_om_dir)
103
104
  }
104
105
  end
105
106
 
106
107
  def self.oss_om_up_to_date?(gem_filepaths, oss_om_filepaths)
107
- puts __method__
108
+ Aro::P.say(__method__)
108
109
  file_names = Dir[oss_om_filepaths].map{|fp| File.basename(fp)}
109
- puts "file_names: #{file_names}"
110
+ Aro::D.say("file_names: #{file_names}")
110
111
  gem_file_names = Dir[gem_filepaths].map{|fp| File.basename(fp)}
111
- puts "gem_file_names: #{gem_file_names}"
112
- mfs_all = gem_file_names.all?{|gfn|
112
+ Aro::D.say("gem_file_names: #{gem_file_names}")
113
+ up_to_date = gem_file_names.all?{|gfn|
113
114
  file_names.include?(gfn)
114
115
  }
115
- puts "mfs_all: #{mfs_all}"
116
- mfs_all
116
+ Aro::P.say("up_to_date: #{up_to_date}")
117
+ up_to_date
117
118
  end
118
119
 
119
120
  def self.require_reiquires!
120
121
  # require sys folders
121
- Reiquire::requires([:shr, :aro, :cli])
122
-
123
- # require cli module
124
- require_relative :"./cli".to_s
125
- end
126
-
127
- def self.require_dependencies!
128
- [
129
- :active_record,
130
- :"active_record/schema_dumper",
131
- :fileutils,
132
- :i18n,
133
- :"tty-prompt"
134
- ].each{|d| require d.to_s}
122
+ Reiquire::requires([:shr, :aro])
135
123
  end
136
124
 
137
125
  def self.gem_dir
@@ -140,8 +128,16 @@ module Reiquire
140
128
  ].first
141
129
  end
142
130
 
131
+ def self.initialize_i18n!
132
+ require :i18n.to_s
133
+ aro_i18n_library = File.join(gem_dir, :locale.to_s, "*.yml")
134
+ I18n.load_path += Dir[aro_i18n_library]
135
+ I18n.available_locales = [:en]
136
+ I18n.default_locale = :en
137
+ I18n.reload!
138
+ end
139
+
143
140
  def self.configure_i18n
144
- Aro::D.say(__method__)
145
141
  gem_dir_variable = gem_dir
146
142
  copy_locale_files_from_gem!
147
143
  aro_i18n_library = File.join(gem_dir_variable, :locale.to_s, "*.yml")
@@ -153,17 +149,8 @@ module Reiquire
153
149
  aro_i18n_library = File.join(Aro::Dom::Locale.locale_dir, "*.yml")
154
150
  end
155
151
  I18n.load_path += Dir[aro_i18n_library]
156
-
157
152
  I18n.available_locales = [:en]
158
153
  I18n.default_locale = :en
159
- Aro::D.say("I18n.load_path")
160
- Aro::D.say(I18n.load_path)
161
- Aro::D.say("I18n.available_locales")
162
- Aro::D.say(I18n.available_locales)
163
- Aro::D.say("I18n.default_locale")
164
- Aro::D.say(I18n.default_locale)
165
- Aro::D.say("I18n.reload!")
166
- Aro::D.say(I18n.reload!)
167
154
  end
168
155
 
169
156
  end
data/sys/shr/prompt.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  =begin
2
4
 
3
5
  prompt.rb
@@ -26,6 +28,10 @@ module Aro
26
28
  Aro::Cor::BOOLS[:TRUE]
27
29
  end
28
30
 
31
+ def self.ask(message)
32
+ gets message
33
+ end
34
+
29
35
  def self.say(message)
30
36
  p.say(normalize_message(message))
31
37
  end
@@ -36,7 +42,6 @@ module Aro
36
42
 
37
43
  def self.normalize_message(message)
38
44
  return message.join("\n") if message.kind_of?(Array)
39
-
40
45
  message
41
46
  end
42
47
  end
data/sys/shr/version.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  =begin
2
4
 
3
5
  version.rb
@@ -9,13 +11,10 @@
9
11
  =end
10
12
 
11
13
  module Aro
12
- VERSION = :"0.2.6"
14
+ VERSION = :"0.2.7"
13
15
  RELEASE_NOTES = [
14
- :removes_aos,
15
- :removes_ino,
16
- :reduces_ruby_4_0_7_to_3_4_7,
17
- :adds_menus_and_data,
18
- :removes_aro_cli,
19
- :adds_oss_om
20
- ].join("\n:")
16
+ :galvinizes_foss_om_utility,
17
+ :creates_foss_om_foundation,
18
+ :removes_tecks
19
+ ].join(" | ")
21
20
  end