~lovesyao/+junk/transgs

« back to all changes in this revision

Viewing changes to nazo/appinfo.d

  • Committer: Nazo
  • Date: 2008-10-18 08:26:14 UTC
  • Revision ID: lovesyao@hotmail.com-20081018082614-22qgtg2gsotz5r2i
initial checkin

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
module nazo.appinfo;
 
2
/**
 
3
 * アプリケーションの情報
 
4
 * History:
 
5
 *          0.0.0.2 有効なオプションを追加
 
6
 *          0.0.0.1 バージョン付け開始
 
7
 * Authors: Nazo
 
8
 * Version: 0.0.0.2
 
9
 * License: Public Domain
 
10
 */
 
11
import std.string, std.stdio, std.compiler, nazo.date, nazo.token;
 
12
alias std.string.toString toString;
 
13
 
 
14
string time2str(int t,int k){
 
15
  return zfill(std.string.toString(t),k);
 
16
}
 
17
 
 
18
///アプリケーションに関する情報(派生して使う)
 
19
class AppInfo{
 
20
  ///名前
 
21
  abstract string name();
 
22
  ///バージョン
 
23
  abstract string stableVersion();
 
24
  ///ホームページ
 
25
  abstract string homepage();
 
26
  ///ナイトリーバージョンかどうか
 
27
  abstract bool isTesting();
 
28
  ///ライセンス
 
29
  abstract string license();
 
30
  ///作成者
 
31
  abstract string creator();
 
32
  ///貢献者
 
33
  abstract string contributor();
 
34
  ///有効なオプション
 
35
  abstract string enableOptions();
 
36
  ///コンパイラの名前とバージョン
 
37
  final string compiler;
 
38
  ///Dの仕様のバージョン
 
39
  final string DLangSpecificationVersion;
 
40
  ///コンパイルオプション
 
41
  final string buildFlag;
 
42
  ///コンパイルした時の日時
 
43
  final d_time datetime;
 
44
  final string subversion;
 
45
  ///バージョン
 
46
  string ver(){
 
47
    return stableVersion()~(isTesting()?"+":"")~(subversion?"("~subversion~")":"");
 
48
  };
 
49
  this(){
 
50
    Date* d=getTimeStamp;//new Date;
 
51
    datetime=getCompileTime();//parse(d);
 
52
//    assert(datetime==getCompileTime());
 
53
    DLangSpecificationVersion=.toString(D_major)~"."~.toString(D_minor);
 
54
    this.compiler=std.compiler.name~" v"~.toString(version_major)~"."~.toString(version_minor);
 
55
    //XXX ハック。普通の手段でしたいけど無理?
 
56
    debug{
 
57
      this.buildFlag="Debug";
 
58
    }else{
 
59
      this.buildFlag="Release";
 
60
      assert((this.buildFlag="")=="");
 
61
    }
 
62
    if(isTesting()){
 
63
      this.subversion=dumpDate(d);//dumpDate(datetime);
 
64
    }
 
65
  }
 
66
}