1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
|
#!/usr/bin/env ruby -w
# encoding: UTF-8
#
# = AppConfig.rb -- The TaskJuggler III Project Management Software
#
# Copyright (c) 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014
# by Chris Schlaeger <cs@taskjuggler.org>
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of version 2 of the GNU General Public License as
# published by the Free Software Foundation.
#
require 'rbconfig'
# This class provides central management of configuration data to an
# application. It stores the version number, the name of the application and
# the suite it belongs to. It also holds copyright and license information.
# These infos have to be set in the main module of the application right after
# launch. Then, all other modules can retrieve them from the global instance
# as needed.
class AppConfig
def initialize
@@version = '0.0.0'
@@packageName = 'unnamed'
@@softwareName = 'unnamed'
@@packageInfo = 'no info'
@@appName = 'unnamed'
@@authors = []
@@copyright = []
@@contact = 'not specified'
@@license = 'no license'
end
def AppConfig.version=(version)
@@version = version
end
def AppConfig.version
@@version
end
def AppConfig.packageName=(name)
@@packageName = name
end
def AppConfig.packageName
@@packageName
end
def AppConfig.softwareName=(name)
@@softwareName = name
end
def AppConfig.softwareName
@@softwareName
end
def AppConfig.packageInfo=(info)
@@packageInfo = info
end
def AppConfig.packageInfo
@@packageInfo
end
def AppConfig.appName=(name)
@@appName = name
end
def AppConfig.appName
@@appName
end
def AppConfig.authors=(authors)
@@authors = authors
end
def AppConfig.authors
@@authors
end
def AppConfig.copyright=(copyright)
@@copyright = copyright
end
def AppConfig.copyright
@@copyright
end
def AppConfig.contact=(contact)
@@contact = contact
end
def AppConfig.contact
@@contact
end
def AppConfig.license=(license)
@@license = license
end
def AppConfig.license
@@license
end
def AppConfig.dataDirs(baseDir = 'data')
dirs = dataSearchDirs(baseDir)
# Remove non-existing directories from the list again
dirs.delete_if do |dir|
!File.exist?(dir)
end
dirs
end
def AppConfig.dataSearchDirs(baseDir = 'data')
rubyLibDir = RbConfig::CONFIG['rubylibdir']
rubyBaseDir, versionDir = rubyLibDir.scan(/(.*\/)(.*)/)[0]
dirs = []
if ENV['TASKJUGGLER_DATA_PATH']
ENV['TASKJUGGLER_DATA_PATH'].split(':').each do |path|
dirs << path + "/#{baseDir}/"
end
end
# For Debian package:
dirs << File.join('/usr/share/taskjuggler/', baseDir)
# This hopefully works for all setups. Otherwise we have to add more
# alternative pathes.
# This one is for RPM based distros like Novell
dirs << rubyBaseDir + "gems/" + versionDir + '/gems/' \
+ @@packageName + '-' + @@version + "/#{baseDir}/"
# This one is for Debian based distros
dirs << rubyLibDir + '/gems/' \
+ @@packageName + '-' + @@version + "/#{baseDir}/"
dirs
end
def AppConfig.dataFiles(fileName)
files = []
dirs = dataDirs
dirs.each { |d| files << d + fileName if File.exist?(d + fileName) }
files
end
def AppConfig.dataFile(fileName)
dirs = dataDirs
dirs.each { |d| return d + fileName if File.exist?(d + fileName) }
nil
end
end
|