daemon-ogre 1.2.5 → 1.2.8

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -38,17 +38,32 @@ start command will check does the application already running or not, so you don
38
38
  * debugger - this will call the ruby debugger gem to aid you in trouble
39
39
  you should use these commands:
40
40
 
41
- set autolist on #show the code, and the position like and editor, in every step.
42
- s #step in any kind of method, beware to use carefully because you end up in really deep somewhere in Alice world
43
- n #step to next code/codeblock etc, without enter it (usefull when you find the right place)
44
- l #list your current position
45
- #simply hit enter to repeate the last one
41
+
42
+ set autolist on #show the code, and the position like and editor, in every step.
43
+ s #step in any kind of method, beware to use carefully because you end up in really deep somewhere in Alice world
44
+ n #step to next code/codeblock etc, without enter it (usefull when you find the right place)
45
+ l #list your current position
46
+ #simply hit enter to repeate the last one
47
+
46
48
 
47
49
  * daemon or -d -this will fork a child process by the given parameters
48
50
  * log or -l -you can set the log file position n by terminal for one time run
49
51
  * pid or -p -you can set the pid file position n name by terminal for one time run
50
52
  * status or -s -this will tell you ,does your process is running not
51
53
  * help -this will invoke some help to the terminal if you out of luck and forget everything from this page
54
+ * clear -this will remove every log by the prev given paths, usefull in debugging
55
+
56
+ example:
57
+
58
+ ruby my_awsome_app.rb start debugger
59
+ ruby my_awsome_app.rb start clear
60
+ ruby my_awsome_app.rb status
61
+ ruby my_awsome_app.rb stop
62
+ ruby my_awsome_app.rb debug
63
+
64
+
65
+ or if you dont use terminate command , than you can start simply as how you do normaly
66
+
52
67
 
53
68
 
54
69
  othere stuffs to use:
@@ -163,6 +178,7 @@ in Short:
163
178
 
164
179
 
165
180
 
181
+
166
182
  Contributing to daemon-ogre
167
183
  ---------------------------
168
184
 
data/README.rdoc CHANGED
@@ -38,17 +38,32 @@ start command will check does the application already running or not, so you don
38
38
  * debugger - this will call the ruby debugger gem to aid you in trouble
39
39
  you should use these commands:
40
40
 
41
- set autolist on #show the code, and the position like and editor, in every step.
42
- s #step in any kind of method, beware to use carefully because you end up in really deep somewhere in Alice world
43
- n #step to next code/codeblock etc, without enter it (usefull when you find the right place)
44
- l #list your current position
45
- #simply hit enter to repeate the last one
41
+
42
+ set autolist on #show the code, and the position like and editor, in every step.
43
+ s #step in any kind of method, beware to use carefully because you end up in really deep somewhere in Alice world
44
+ n #step to next code/codeblock etc, without enter it (usefull when you find the right place)
45
+ l #list your current position
46
+ #simply hit enter to repeate the last one
47
+
46
48
 
47
49
  * daemon or -d -this will fork a child process by the given parameters
48
50
  * log or -l -you can set the log file position n by terminal for one time run
49
51
  * pid or -p -you can set the pid file position n name by terminal for one time run
50
52
  * status or -s -this will tell you ,does your process is running not
51
53
  * help -this will invoke some help to the terminal if you out of luck and forget everything from this page
54
+ * clear -this will remove every log by the prev given paths, usefull in debugging
55
+
56
+ example:
57
+
58
+ ruby my_awsome_app.rb start debugger
59
+ ruby my_awsome_app.rb start clear
60
+ ruby my_awsome_app.rb status
61
+ ruby my_awsome_app.rb stop
62
+ ruby my_awsome_app.rb debug
63
+
64
+
65
+ or if you dont use terminate command , than you can start simply as how you do normaly
66
+
52
67
 
53
68
 
54
69
  othere stuffs to use:
@@ -163,6 +178,7 @@ in Short:
163
178
 
164
179
 
165
180
 
181
+
166
182
  Contributing to daemon-ogre
167
183
  ---------------------------
168
184
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.2.5
1
+ 1.2.8
data/lib/daemon-ogre.rb CHANGED
@@ -2,195 +2,216 @@
2
2
  begin
3
3
  module DaemonOgre
4
4
 
5
- #config
6
- begin
7
- class App
8
- class << self
9
- attr_accessor :log_path,
10
- :pid_path,
11
- :app_name,
12
- :port,
13
- :terminate,
14
- :debug
15
- end
16
- end
17
- end
18
-
19
- #default
20
- App.log_path = "./var/log/logfile.log"
21
- App.pid_path = "./var/pid/pidfile.pid"
22
- App.terminate = false
23
- App.port = 80
24
- App.app_name = $0
25
- App.debug = false
26
-
27
5
  #OgreClassMethods
28
6
  begin
29
7
  class << self
30
- #Based on the rb location
31
- def load_directory(directory,*args)
32
- arg = Hash[*args]
8
+ #Based on the rb location
9
+ def load_directory(directory,*args)
10
+ arg = Hash[*args]
33
11
 
34
- if !arg[:delayed].nil?
35
- raise ArgumentError, "Delayed items must be in an "+\
12
+ if !arg[:delayed].nil?
13
+ raise ArgumentError, "Delayed items must be in an "+\
36
14
  "Array! Example:\n:delayed => ['abc']" if arg[:delayed].class == Array
37
- end
15
+ end
38
16
 
39
- if !arg[:exclude].nil?
40
- raise ArgumentError, "Exclude items must be in an "+\
17
+ if !arg[:exclude].nil?
18
+ raise ArgumentError, "Exclude items must be in an "+\
41
19
  "Array! Example:\n:exclude => ['abc']" if arg[:exclude].class == Array
42
- end
20
+ end
43
21
 
44
22
 
45
- #=================================================================================================================
23
+ #=================================================================================================================
46
24
 
47
- puts "LOADING_FILES_FROM_"+directory.to_s.split('/').last.split('.').first.capitalize if App.debug
25
+ puts "LOADING_FILES_FROM_"+directory.to_s.split('/').last.split('.').first.capitalize if App.debug
48
26
 
49
- delayed_loads = Array.new
50
- Dir["#{directory}/**/*.rb"].each do |file|
27
+ delayed_loads = Array.new
28
+ Dir["#{directory}/**/*.rb"].each do |file|
51
29
 
52
- arg[:delayed]= [nil] if arg[:delayed].nil?
53
- arg[:exclude]= [nil] if arg[:exclude].nil?
30
+ arg[:delayed]= [nil] if arg[:delayed].nil?
31
+ arg[:exclude]= [nil] if arg[:exclude].nil?
54
32
 
55
- arg[:exclude].each do |except|
56
- if file.split('/').last.split('.').first == except.to_s.split('.').first
57
- puts file.to_s + " cant be loaded because it's an exception"
58
- else
59
- arg[:delayed].each do |delay|
60
- if file.split('/').last.split('.').first == delay.to_s.split('.').first
61
- delayed_loads.push(file)
62
- else
63
- load(file)
64
- puts file.to_s
33
+ arg[:exclude].each do |except|
34
+ if file.split('/').last.split('.').first == except.to_s.split('.').first
35
+ puts file.to_s + " cant be loaded because it's an exception"
36
+ else
37
+ arg[:delayed].each do |delay|
38
+ if file.split('/').last.split('.').first == delay.to_s.split('.').first
39
+ delayed_loads.push(file)
40
+ else
41
+ load(file)
42
+ puts file.to_s
43
+ end
65
44
  end
66
45
  end
67
46
  end
68
47
  end
48
+ delayed_loads.each do |delayed_load_element|
49
+ load(delayed_load_element)
50
+ puts delayed_load_element.to_s if App.debug
51
+ end
52
+ puts "DONE_LOAD_FILES_FROM_"+directory.to_s.split('/').last.split('.').first.capitalize if App.debug
53
+
69
54
  end
70
- delayed_loads.each do |delayed_load_element|
71
- load(delayed_load_element)
72
- puts delayed_load_element.to_s if App.debug
73
- end
74
- puts "DONE_LOAD_FILES_FROM_"+directory.to_s.split('/').last.split('.').first.capitalize if App.debug
75
55
 
76
- end
56
+ def get_port(port,max_port=65535 ,host="0.0.0.0")
77
57
 
78
- def get_port(port,max_port=65535 ,host="0.0.0.0")
58
+ require 'socket'
59
+ port = port.to_i
79
60
 
80
- require 'socket'
81
- port = port.to_i
61
+ begin
62
+ server = TCPServer.new('0.0.0.0', port)
63
+ server.close
64
+ return port
65
+ rescue Errno::EADDRINUSE
66
+ port = port.to_i + 1 if port < max_port+1
67
+ retry
68
+ end
82
69
 
83
- begin
84
- server = TCPServer.new('0.0.0.0', port)
85
- server.close
86
- return port
87
- rescue Errno::EADDRINUSE
88
- port = port.to_i + 1 if port < max_port+1
89
- retry
90
70
  end
91
71
 
92
- end
93
-
94
- def error_logger(error_msg,prefix="",log_file=App.log_path)
72
+ def error_logger(error_msg,prefix="",log_file=App.log_path)
95
73
 
96
- create_on_filesystem(log_file)
74
+ if File.exists?(File.expand_path(log_file))
75
+ error_log = File.open( File.expand_path(log_file), "a+")
76
+ error_log << "\n#{Time.now} | #{prefix}#{":" if prefix != ""} #{error_msg}"
77
+ error_log.close
78
+ else
79
+ File.new(File.expand_path(log_file), "w").write(
80
+ "#{Time.now} | #{prefix}#{":" if prefix != ""} #{error_msg}"
81
+ )
82
+ end
97
83
 
98
- if File.exists?(File.expand_path(log_file))
99
- error_log = File.open( File.expand_path(log_file), "a+")
100
- error_log << "\n#{Time.now} | #{prefix}#{":" if prefix != ""} #{error_msg}"
101
- error_log.close
102
- else
103
- File.new(File.expand_path(log_file), "w").write(
104
- "#{Time.now} | #{prefix}#{":" if prefix != ""} #{error_msg}"
105
- )
84
+ return {:error => error_msg}
106
85
  end
107
86
 
108
- return {:error => error_msg}
109
- end
110
-
111
- def load_ymls(directory)
87
+ def load_ymls(directory)
112
88
 
113
- require 'yaml'
114
- #require "hashie"
89
+ require 'yaml'
90
+ #require "hashie"
115
91
 
116
- yaml_files = Dir["#{directory}/**/*.yml"].each { |f| puts f.to_s if App.debug }
117
- puts "\nyaml file found: "+yaml_files.inspect.to_s if App.debug
118
- @result_hash = {}
119
- yaml_files.each_with_index do |full_path_file_name|
92
+ yaml_files = Dir["#{directory}/**/*.yml"].each { |f| puts f.to_s if App.debug }
93
+ puts "\nyaml file found: "+yaml_files.inspect.to_s if App.debug
94
+ @result_hash = {}
95
+ yaml_files.each_with_index do |full_path_file_name|
120
96
 
121
97
 
122
- file_name = full_path_file_name.split('/').last.split('.').first
98
+ file_name = full_path_file_name.split('/').last.split('.').first
123
99
 
124
- hash_key = file_name
125
- @result_hash[hash_key] = YAML.load(File.read("#{full_path_file_name}"))
100
+ hash_key = file_name
101
+ @result_hash[hash_key] = YAML.load(File.read("#{full_path_file_name}"))
126
102
 
127
- #@result_hash = @result_hash.merge!(tmp_hash)
103
+ #@result_hash = @result_hash.merge!(tmp_hash)
128
104
 
129
105
 
130
- puts "==========================================================" if App.debug
131
- puts "Loading "+file_name.to_s.capitalize+"\n" if App.debug
132
- puts YAML.load(File.read("#{full_path_file_name}")) if App.debug
133
- puts "__________________________________________________________" if App.debug
106
+ puts "==========================================================" if App.debug
107
+ puts "Loading "+file_name.to_s.capitalize+"\n" if App.debug
108
+ puts YAML.load(File.read("#{full_path_file_name}")) if App.debug
109
+ puts "__________________________________________________________" if App.debug
134
110
 
135
- end
111
+ end
136
112
 
137
- puts "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" if App.debug
138
- puts "The Main Hash: \n"+@result_hash.inspect.to_s if App.debug
139
- puts "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n" if App.debug
113
+ puts "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" if App.debug
114
+ puts "The Main Hash: \n"+@result_hash.inspect.to_s if App.debug
115
+ puts "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n" if App.debug
140
116
 
141
- return @result_hash
142
- end
117
+ return @result_hash
118
+ end
143
119
 
144
- def create_on_filesystem(input,optionable_data=nil,optionable_file_mod="w")
145
- begin
120
+ def create_on_filesystem(route_name,optionable_file_mod="w",optionable_data=nil)
121
+ begin
146
122
 
147
- #file_name generate
148
- if !input.to_s.split('/').last.nil? || input.to_s.split('/').last != ''
149
- file_name = input.to_s.split('/').last
150
- else
151
- file_name = nil?
152
- end
123
+ #file_name generate
124
+ if !route_name.to_s.split('/').last.nil? || route_name.to_s.split('/').last != ''
125
+ file_name = route_name.to_s.split('/').last
126
+ else
127
+ file_name = nil?
128
+ end
153
129
 
154
- #path_way
155
- begin
156
- raise ArgumentError, "missing input: #{input}" if input.nil?
157
- path = File.expand_path(input).to_s.split('/')
158
- path = path - [File.expand_path(input).to_s.split('/').last]
159
- path.shift
160
- end
130
+ #path_way
131
+ begin
132
+ raise ArgumentError, "missing route_name: #{route_name}" if route_name.nil?
133
+ path = File.expand_path(route_name).to_s.split('/')
134
+ path = path - [File.expand_path(route_name).to_s.split('/').last]
135
+ path.shift
136
+ end
161
137
 
162
- #job
163
- begin
164
- if !Dir.exists?("/"+path.join("/"))
138
+ #job
139
+ begin
140
+ if !Dir.exists?('/'+path.join('/'))
165
141
 
166
- at_now = "/"
167
- path.each do |dir_to_be_checked|
142
+ at_now = '/'
143
+ path.each do |dir_to_be_checked|
168
144
 
169
- at_now += "#{dir_to_be_checked}/"
170
- Dir.mkdir(at_now) if !Dir.exists?(at_now)
145
+ at_now += "#{dir_to_be_checked}/"
146
+ Dir.mkdir(at_now) if !Dir.exists?(at_now)
171
147
 
148
+ end
172
149
  end
173
150
  end
174
- end
175
151
 
176
- #file_create
177
- File.new("/#{path.join("/")}/#{file_name}", optionable_file_mod ).write optionable_data
152
+ #file_create
153
+ File.new("/#{path.join('/')}/#{file_name}", optionable_file_mod ).write optionable_data
178
154
 
179
- rescue Exception => ex
155
+ rescue Exception => ex
180
156
  puts ex
157
+ end
158
+ end
159
+
160
+ def process_running?(input)
161
+ begin
162
+ Process.getpgid input.chomp.to_i
163
+ return true
164
+ rescue Exception
165
+ return false
166
+ end
167
+ end
168
+
169
+ def clone_mpath(original_path,new_name)
170
+ log_path = File.expand_path(original_path)
171
+ log_path = log_path.split('/')
172
+ log_path.pop
173
+ log_path.push(new_name)
174
+ log_path = log_path.join('/')
175
+
176
+ return log_path
181
177
  end
178
+
182
179
  end
180
+ end
183
181
 
184
- def process_running?(input)
185
- begin
186
- Process.getpgid input.chomp.to_i
187
- return true
188
- rescue Exception
189
- return false
182
+ #config
183
+ begin
184
+ class App
185
+ class << self
186
+ attr_accessor :log_path,
187
+ :pid_path,
188
+ :daemon_stderr,
189
+ :exceptions,
190
+ :app_name,
191
+ :port,
192
+ :terminate,
193
+ :debug
190
194
  end
191
195
  end
196
+ end
197
+
198
+ #default
199
+ begin
200
+ App.log_path = "./var/log/logfile.log"
201
+ App.pid_path = "./var/pid/pidfile.pid"
202
+ App.terminate = false
203
+ App.port = 80
204
+ App.app_name = $0
205
+ App.debug = false
206
+
207
+ begin
208
+ ['daemon_stderr','exceptions'].each do |one_log|
192
209
 
210
+ App.__send__(one_log+"=",clone_mpath(App.log_path,one_log+".log"))
211
+
212
+ end
193
213
  end
214
+
194
215
  end
195
216
 
196
217
  #DaemonEngine
@@ -249,24 +270,28 @@ begin
249
270
  $stdout.sync = $stderr.sync = true
250
271
  end
251
272
  end
252
-
253
273
  end
254
274
 
255
275
  #server_model
256
276
  begin
257
277
  class Server
258
- @@startup = false
278
+ @@startup = false
259
279
  class << self
260
280
 
261
281
  def daemon
262
- puts "#{$0} daemon watching you..."
263
- DaemonOgre.create_on_filesystem DaemonOgre::App.pid_path
264
- DaemonOgre.create_on_filesystem DaemonOgre::App.log_path
265
- DaemonOgre.create_on_filesystem './var/daemon.stderr.log'
266
- Daemon.start fork,
282
+ puts "#{$0} daemon is watching you..."
283
+ DaemonOgre.create_on_filesystem DaemonOgre::App.pid_path,
284
+ 'a+'
285
+ DaemonOgre.create_on_filesystem DaemonOgre::App.log_path,
286
+ 'a+'
287
+ DaemonOgre.create_on_filesystem DaemonOgre::App.daemon_stderr,
288
+ 'a+'
289
+
290
+
291
+ DaemonOgre::Daemon.start fork,
267
292
  DaemonOgre::App.pid_path,
268
293
  DaemonOgre::App.log_path,
269
- ('./var/daemon.stderr.log')
294
+ DaemonOgre::App.daemon_stderr
270
295
  end
271
296
 
272
297
  def debug
@@ -402,7 +427,7 @@ begin
402
427
  File.new("#{File.dirname(__FILE__)}/#{DaemonOgre::App.pid_path}", "a+").write Process.pid.to_s+"\n"
403
428
  end
404
429
  rescue Exception => ex
405
- error_logger(ex)
430
+ ex.logger
406
431
  end
407
432
  end
408
433
 
@@ -421,6 +446,24 @@ begin
421
446
  DaemonOgre::App.terminate=true
422
447
  end
423
448
 
449
+ def clear
450
+
451
+ begin
452
+ File.delete DaemonOgre::App.log_path
453
+ rescue Exception
454
+ end
455
+ begin
456
+ File.delete DaemonOgre::App.daemon_stderr
457
+ rescue Exception
458
+ end
459
+
460
+ begin
461
+ File.delete DaemonOgre::App.exceptions
462
+ rescue Exception
463
+ end
464
+
465
+ end
466
+
424
467
  end
425
468
  end
426
469
  end
@@ -443,22 +486,22 @@ begin
443
486
  DaemonOgre.get_port(port,max_port,host)
444
487
  end
445
488
  def exlogger(error_msg,prefix="",log_file=DaemonOgre::App.log_path)
489
+ DaemonOgre.create_on_filesystem log_file,
490
+ 'a+'
446
491
  DaemonOgre.error_logger(error_msg,prefix,log_file)
447
492
  end
448
493
  class Exception
449
494
  def logger
450
- path = File.expand_path(DaemonOgre::App.log_path)
451
- path = path.split('/')
452
- path.pop
453
- path.push("exceptions.log")
454
- path = path.join("/")
455
- DaemonOgre.create_on_filesystem(path)
456
- DaemonOgre.error_logger(self.backtrace,self,path)
495
+ DaemonOgre.create_on_filesystem DaemonOgre::App.exceptions,
496
+ 'a+'
497
+ DaemonOgre.error_logger(self.backtrace,self,DaemonOgre::App.exceptions)
457
498
  end
458
499
  end
459
500
  class File
460
- def self.create!(input,optionable_data=nil,optionable_file_mod="w")
461
- DaemonOgre.create_on_filesystem(input,optionable_data,optionable_file_mod)
501
+ def self.create!(file,optionable_data=nil,optionable_file_mod="w")
502
+ DaemonOgre.create_on_filesystem file,
503
+ optionable_file_mod,
504
+ optionable_data
462
505
  end
463
506
  end
464
507
  class Class
@@ -518,6 +561,7 @@ begin
518
561
  #arg[:port]
519
562
 
520
563
  #arg[:terminate]
564
+ #arg[:clear]
521
565
 
522
566
  begin
523
567
 
@@ -558,6 +602,8 @@ begin
558
602
  when "-s" then DaemonOgre::Server.pid_check
559
603
  when "help" then DaemonOgre::Server.help
560
604
  when "debug" then DaemonOgre::Server.debug
605
+ when "clear" then serv_load.push "clear"
606
+
561
607
  end
562
608
  end
563
609
 
@@ -566,6 +612,7 @@ begin
566
612
  DaemonOgre::Server.restart if serv_load.include? "restart"
567
613
  DaemonOgre::Server.start if serv_load.include? "start"
568
614
  DaemonOgre::Server.stop if serv_load.include? "stop"
615
+ DaemonOgre::Server.clear if serv_load.include? "clear"
569
616
  DaemonOgre::Server.daemon if serv_load.include? "daemon"
570
617
  end
571
618
 
@@ -3,10 +3,16 @@ require_relative "../lib/daemon-ogre.rb"
3
3
  DaemonOgre.start :name => "api_one", #this will be the name of the application
4
4
  :log_path => "./var/log/log_file_name", #this will be the logfile place and name
5
5
  :pid_path => "./var/pid/pid_file_name", #this will be the pidfile place and name
6
- :terminate => false #this command not let start your code if it's not started
7
- # with "start" arguments like :
6
+ :terminate => true, #this command not let start your code if it's not started
7
+ :clear => true # with "start" arguments like :
8
8
  # ruby my_awsome_app.rb start
9
9
 
10
+ begin
11
+ raise ArgumentError, "wuf"
12
+ rescue Exception => ex
13
+ ex.logger
14
+ end
15
+
10
16
 
11
17
 
12
18
  #my awesome Hello App
@@ -18,5 +24,3 @@ until i > 1200
18
24
  puts "hello, there! A wonderful day for the #{i}. time! isn't it?"
19
25
  i+=1
20
26
  end
21
-
22
- puts "-=end=-"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: daemon-ogre
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.5
4
+ version: 1.2.8
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-30 00:00:00.000000000 Z
12
+ date: 2013-06-01 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rdoc
@@ -97,9 +97,6 @@ files:
97
97
  - lib/daemon-ogre.rb
98
98
  - test/helper.rb
99
99
  - test/test_daemon-ogre.rb
100
- - test/var/daemon.stderr.log
101
- - test/var/log/log_file_name
102
- - test/var/pid/pid_file_name
103
100
  homepage: http://github.com/adamluzsi/daemon-ogre
104
101
  licenses:
105
102
  - MIT
@@ -113,6 +110,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
113
110
  - - ! '>='
114
111
  - !ruby/object:Gem::Version
115
112
  version: '0'
113
+ segments:
114
+ - 0
115
+ hash: 878568399509540350
116
116
  required_rubygems_version: !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
File without changes
@@ -1,25 +0,0 @@
1
- hello App!
2
- hello, there! A wonderful day for the 0. time! isn't it?
3
- hello, there! A wonderful day for the 1. time! isn't it?
4
- hello, there! A wonderful day for the 2. time! isn't it?
5
- hello, there! A wonderful day for the 3. time! isn't it?
6
- hello, there! A wonderful day for the 4. time! isn't it?
7
- hello, there! A wonderful day for the 5. time! isn't it?
8
- hello, there! A wonderful day for the 6. time! isn't it?
9
- hello, there! A wonderful day for the 7. time! isn't it?
10
- hello, there! A wonderful day for the 8. time! isn't it?
11
- hello, there! A wonderful day for the 9. time! isn't it?
12
- hello, there! A wonderful day for the 10. time! isn't it?
13
- hello, there! A wonderful day for the 11. time! isn't it?
14
- hello, there! A wonderful day for the 12. time! isn't it?
15
- hello, there! A wonderful day for the 13. time! isn't it?
16
- hello, there! A wonderful day for the 14. time! isn't it?
17
- hello, there! A wonderful day for the 15. time! isn't it?
18
- hello, there! A wonderful day for the 16. time! isn't it?
19
- hello, there! A wonderful day for the 17. time! isn't it?
20
- hello, there! A wonderful day for the 18. time! isn't it?
21
- hello, there! A wonderful day for the 19. time! isn't it?
22
- hello, there! A wonderful day for the 20. time! isn't it?
23
- hello, there! A wonderful day for the 21. time! isn't it?
24
- hello, there! A wonderful day for the 22. time! isn't it?
25
- hello, there! A wonderful day for the 23. time! isn't it?
File without changes