summaryrefslogtreecommitdiff
path: root/fml/utils/bin/version_replace.pl
diff options
context:
space:
mode:
Diffstat (limited to 'fml/utils/bin/version_replace.pl')
-rwxr-xr-xfml/utils/bin/version_replace.pl69
1 files changed, 69 insertions, 0 deletions
diff --git a/fml/utils/bin/version_replace.pl b/fml/utils/bin/version_replace.pl
new file mode 100755
index 00000000..7a9929d0
--- /dev/null
+++ b/fml/utils/bin/version_replace.pl
@@ -0,0 +1,69 @@
+#!/usr/bin/env perl
+#
+# THE CHARSET OF THIS FILE is EUC-JP.
+#
+# $FML$
+#
+
+use strict;
+use Carp;
+use File::Basename;
+use File::Spec;
+
+my $base_dir = sprintf("%s/../../../", dirname($0));
+my $changes = File::Spec->catfile($base_dir, "CHANGES.txt");
+unless (-f $changes) {
+ croak("cannot find $changes\n");
+}
+
+my $fml_version = get_version($changes);
+my $date = get_date();
+my $fml_version_comment = sprintf("(バージョン %s-%s)", $fml_version, $date);
+my $sgml_version_comment = quotemeta("<!-- __FML_CURRENT_VERSION__ -->");
+
+while (<>) {
+ if (/^(.*)$sgml_version_comment/) {
+ my ($prefix) = ($1);
+ print $prefix, $fml_version_comment, "\n";
+ print "\t<!-- FML_CURRENT_VERSION=\"$fml_version_comment\" -->\n";
+ }
+ else {
+ print;
+ }
+}
+
+exit 0;
+
+sub get_version
+{
+ my ($file) = @_;
+ my $version = undef;
+
+ use FileHandle;
+ my $rh = new FileHandle $file;
+ if (defined $rh) {
+ my $buf;
+
+ LINE:
+ while ($buf = <$rh>) {
+ if ($buf =~ /FML_CURRENT_VERSION=(\S+)/) {
+ $version = $1;
+ $version =~ s/\s*$//;
+ last LINE;
+ }
+ }
+ $rh->close();
+ }
+
+ return $version;
+}
+
+
+sub get_date
+{
+ my ($time) = @_;
+
+ $time ||= time();
+ my ($sec,$min,$hour,$mday,$mon,$year,$wday) = (localtime($time))[0..6];
+ return sprintf("%04d%02d%02d", 1900 + $year, $mon + 1, $mday);
+}