バージョンのインクリメント

30分プログラム、その161。0.1.0のようなバージョン番号のインクリメント。

バージョン番号を直接ソースコードに埋めこまず、外部のファイルで管理するようにしている。

2.0.1

で、この外部ファイルに書かれたバージョン番号をインクリメントするスクリプトを書いてみた。

使い方

$ cat v.txt
1.2.3

# リビジョンだけ上げる
$ perl version.pl v.txt rev ; cat v.txt
1.2.4

# マイナーバージョンアップ
# リビジョンもリセットされる
$ perl version.pl v.txt; cat v.txt
1.3.0

# メジャーバージョンアップ
# リビジョン、マイナーバージョンのリセット
$ perl version.pl v.txt major; cat v.txt
2.0.0

ソースコード

#! /usr/bin/perl
# -*- mode:perl; coding:utf-8 -*-
#
# version.pl - version up script
#
# Copyright(C) 2007 by mzp
# Author: MIZUNO Hiroki <hiroki1124@gmail.com>
# http://mzp.sakura.ne.jp/
#
# Timestamp: 2007/10/21 22:45:22
#
# This program is free software; you can redistribute it and/or
# modify it under the same terms as Perl itself.
#

use strict;
use warnings;

my $path = $ARGV[0];
my $type = $ARGV[1] || 'minor';

open(FILE,$path);
my @version = split /\./,join("",<FILE>); #/
close(FILE);

if($type eq 'major'){
    $version[0]++;
    $version[1]= $version[2] = 0;
}elsif($type eq 'minor'){
    $version[1]++;
    $version[2]=0;
}elsif($type eq 'rev'){
    $version[2]++;
}else{
    die "unkown type: $type";
}

open(FILE,'>',$path);
print FILE join('.',@version),"\n";
close(FILE);