[Idle-dev] CVS: idle configHandler.py,1.16,1.17
Stephen M. Gava
elguavas@users.sourceforge.net
Thu, 31 Jan 2002 19:02:40 -0800
Update of /cvsroot/idlefork/idle
In directory usw-pr-cvs1:/tmp/cvs-serv16137
Modified Files:
configHandler.py
Log Message:
improve user config dir handling
Index: configHandler.py
===================================================================
RCS file: /cvsroot/idlefork/idle/configHandler.py,v
retrieving revision 1.16
retrieving revision 1.17
diff -C2 -r1.16 -r1.17
*** configHandler.py 2002/02/01 01:33:36 1.16
--- configHandler.py 2002/02/01 03:02:37 1.17
***************
*** 153,177 ****
#build idle install path
if __name__ != '__main__': # we were imported
! idledir=os.path.dirname(__file__)
else: # we were exec'ed (for testing only)
! idledir=os.path.abspath(sys.path[0])
! #print idledir
! try: #build user home path
! userdir = os.environ['HOME'] #real home directory
! except KeyError:
! userdir = os.getcwd() #hack for os'es without real homedirs
! userdir=os.path.join(userdir,'.idlerc')
! #print userdir
! if not os.path.exists(userdir):
! os.mkdir(userdir)
configTypes=('main','extensions','highlight','keys')
defCfgFiles={}
usrCfgFiles={}
for cfgType in configTypes: #build config file names
! defCfgFiles[cfgType]=os.path.join(idledir,'config-'+cfgType+'.def')
! usrCfgFiles[cfgType]=os.path.join(userdir,'config-'+cfgType+'.cfg')
for cfgType in configTypes: #create config parsers
self.defaultCfg[cfgType]=IdleConfParser(defCfgFiles[cfgType])
self.userCfg[cfgType]=IdleUserConfParser(usrCfgFiles[cfgType])
def GetOption(self, configType, section, option, default=None, type=None):
--- 153,195 ----
#build idle install path
if __name__ != '__main__': # we were imported
! idleDir=os.path.dirname(__file__)
else: # we were exec'ed (for testing only)
! idleDir=os.path.abspath(sys.path[0])
! userDir=self.GetUserCfgDir()
configTypes=('main','extensions','highlight','keys')
defCfgFiles={}
usrCfgFiles={}
for cfgType in configTypes: #build config file names
! defCfgFiles[cfgType]=os.path.join(idleDir,'config-'+cfgType+'.def')
! usrCfgFiles[cfgType]=os.path.join(userDir,'config-'+cfgType+'.cfg')
for cfgType in configTypes: #create config parsers
self.defaultCfg[cfgType]=IdleConfParser(defCfgFiles[cfgType])
self.userCfg[cfgType]=IdleUserConfParser(usrCfgFiles[cfgType])
+
+ def GetUserCfgDir(self):
+ """
+ Creates (if required) and returns a filesystem directory for storing
+ user config files.
+ """
+ cfgDir='.idlerc'
+ userDir=os.path.expanduser('~')
+ if userDir != '~': #'HOME' exists as a key in os.environ
+ if not os.path.exists(userDir):
+ warn=('\n Warning: HOME environment variable points to\n '+
+ userDir+'\n but the path does not exist.\n')
+ sys.stderr.write(warn)
+ userDir='~'
+ if userDir=='~': #we still don't have a home directory
+ #traditionally idle has defaulted to os.getcwd(), is this adeqate?
+ userDir = os.getcwd() #hack for no real homedir
+ userDir=os.path.join(userDir,cfgDir)
+ if not os.path.exists(userDir):
+ try: #make the config dir if it doesn't exist yet
+ os.mkdir(userDir)
+ except IOError:
+ warn=('\n Warning: unable to create user config directory\n '+
+ userDir+'\n')
+ sys.stderr.write(warn)
+ return userDir
def GetOption(self, configType, section, option, default=None, type=None):