OSDN Git Service

Support load/save of NBO info
[molby/Molby.git] / update_version.rb
1 #!/usr/bin/ruby
2
3 require 'kconv'
4
5 #  Get the version string
6 #  version = "X.X.X"
7 version = nil
8 date = nil
9 eval IO.read("Version")
10 ver = version
11 t = Time.now
12 year = t.year
13 month = t.month
14 day = t.day
15 d = sprintf("%04d%02d%02d", year, month, day)
16 # exit 0 if date == d
17 #File.open("Version", "w") { |fp|
18 #  fp.print "version = \"#{version}\"\n"
19 #  fp.print "date = \"#{d}\"\n"
20 #}
21 build = "build " + d
22 # verstr = "v#{ver} #{build}"
23 verstr = "v#{ver}"
24 yrange = (year > 2008 ? "2008-#{year}" : "2008")
25
26 def modify_file(name, &block)
27   ary = IO.readlines(name) rescue return
28   modified = false
29   ary.each_with_index { |s, i|
30     s1 = block.call(s.dup)
31     if s1 && s1 != s
32       ary[i] = s1
33       modified = true
34     end
35   }
36   if modified
37     File.rename(name, name + "~")
38     open(name, "wb") { |fp|
39       ary.each { |s| fp.write(s) }
40     }
41     File.delete(name + "~")
42   end
43 end
44
45 #  Modify Info.plist
46 nm = "build-xcode/Molby-Info.plist"
47 version = false
48 modify_file(nm) { |s|
49   if s =~ /Copyright/
50     s.sub(/[-0-9]+ Toshi Nagata/, "#{yrange} Toshi Nagata")
51   elsif s =~ /Version \d+\.\d+/
52     "\t<string>Version #{ver}</string>\n"
53   elsif version
54     version = false
55     "\t<string>#{verstr}</string>\n"
56   else
57     version = (s =~ /\bCFBundleVersion\b/)
58     nil
59   end
60 }
61
62 #  Modify_MacLegacy Info.plist
63 nm = "build-xcode/Molby_MacLegacy-Info.plist"
64 version = false
65 modify_file(nm) { |s|
66   if s =~ /Copyright/
67     s.sub(/[-0-9]+ Toshi Nagata/, "#{yrange} Toshi Nagata")
68   elsif s =~ /Version \d+\.\d+/
69     "\t<string>Version #{ver}</string>\n"
70   elsif version
71     version = false
72     "\t<string>#{verstr}</string>\n"
73   else
74     version = (s =~ /\bCFBundleVersion\b/)
75     nil
76   end
77 }
78   
79 #  Modify InfoPlist.strings
80 Dir["xcode-build/*.lproj/InfoPlist.strings"].each { |nm|
81   modify_file(nm) { |s|
82     s = s.kconv(Kconv::UTF8, Kconv::UTF16)
83     if s =~ /Copyright/ && s.sub!(/Toshi Nagata, [-0-9]+/, "Toshi Nagata, #{yrange}")
84       s = s.kconv(Kconv::UTF16, Kconv::UTF8)
85     else
86       nil
87     end
88   }
89 }
90
91 #  Modify Molby.iss
92 modify_file("build-win/molby64.iss") { |s|
93   if s =~ /AppVerName/ && s.sub!(/\(.*\)*/, "(#{verstr})")
94     s
95   else
96     nil
97   end
98 }
99
100 modify_file("build-win32/molby32.iss") { |s|
101   if s =~ /AppVerName/ && s.sub!(/\(.*\)*/, "(#{verstr})")
102     s
103   else
104     nil
105   end
106   }
107   
108 #  Modify MyVersion.c
109 modify_file("wxSources/MyVersion.c") { |s|
110   if s =~ /Version/ && s.sub!(/\".*\"/, "\"#{verstr}\"")
111     s
112   elsif s =~ /Copyright/ && s =~ /Toshi Nagata/ && s.sub!(/\d\d\d\d(-\d\d\d\d)?/, yrange)
113     s
114   else
115     nil
116   end
117 }
118
119 #  Modify doc_source.html
120 modify_file("Documents/src/doc_source.html") { |s|
121   if s =~ /Version/ && s =~ /<!-- version -->/ && s.sub!(/[Vv][-.0-9 A-Za-z_]*/, "Version #{ver}")
122     s
123   elsif s =~ /<!-- copyright -->/ && s.sub!(/\d\d\d\d(-\d\d\d\d)?/, yrange)
124     s
125   else 
126     nil
127   end
128 }
129
130 #  Modify README
131 modify_file("README") { |s|
132   if s =~ /        Version/ && s.sub!(/[Vv][-.0-9 A-Za-z_]*/, "Version #{ver}")
133     s
134   elsif s =~ /       Copyright/ && s =~ /Toshi Nagata/ && s.sub!(/\d\d\d\d(-\d\d\d\d)?/, yrange)
135     s
136   else
137     nil
138   end
139 }