~tinarussell/tinasplash/trunk

« back to all changes in this revision

Viewing changes to tinasplash_rw.py

  • Committer: Tina Russell
  • Date: 2007-07-10 09:09:32 UTC
  • Revision ID: tina@vibraniumspoon-20070710090932-gr2p8b8pgf1wj8qi
Okay, so, since I added the backup system, the program now actually 
changes your GRUB splashimage. Cool, right? Two notes:

1. Run it as root! Without root access, the program can't make any 
actual changes. Run the program as root by running it, from a terminal, 
with "sudo python tinasplash.py" or "gksu python tinasplash.py" while in 
the relevant directory. I'll work on making a launcher and package so 
that this will all be more reasonable.

2. Make a backup! You might want to back up /boot/grub/menu.lst before 
starting. To do that, just make a copy under a different name, like 
"sudo cp menu.lst menu.lst.bak" or something, while in /boot/grub. 
TinaSplash should have no trouble making its own backups; each session, 
the first time it writes to menu.lst, it creates a backup in the name of 
"menu.lst.backup0" in the directory /boot/grub/backup (which it creates 
if not present). It stores up to ten backups, numbered 0-9, lowest = 
most recent. Though it should work fine, you may want to create your own
backup, just in case, as this is a really important file--a _really_ 
important file--and the write mechanism in TinaSplash is rather wonky 
and I wouldn't touch it with a ten-foot series of tubes. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
10
10
import shutil
11
11
from linecache import *
12
12
 
13
 
#Get the script's current directory. This won't be in the final program.
14
 
 
15
 
myPath = sys.modules[__name__].__file__
16
 
 
17
 
if myPath[0] != "/":
18
 
    myPath = os.getcwd() + "/" + myPath
19
 
 
20
 
myPath = os.path.dirname(myPath) + "/"
 
13
class FlagrantError(Exception):
 
14
    """A class for program-defined errors.
 
15
    The term "Flagrant Error" comes from
 
16
    "Homestar Runner." """
 
17
    def __init__(string):
 
18
        if string == "menulst":
 
19
            print "Cannot find menu.lst"
 
20
 
 
21
def findMenuLst():
 
22
    """Find menu.lst from a list of likely paths."""
 
23
    if os.path.exists("/boot/grub/menu.lst"):
 
24
        return "/boot/grub/menu.lst"
 
25
    if os.path.exists("/boot/menu.lst"):
 
26
        return "/boot/menu.lst"
 
27
    else:
 
28
        raise FlagrantError("menulst")
21
29
 
22
30
#Assign names to locations of related files.
23
31
 
24
 
testmenulst = myPath + "testmenu.lst" #This is a dummy menu.lst for testing.
25
 
splashPath = myPath + "splashimages/" #This is the default splashimages directory.
26
 
backupPath = myPath + "backup/"
 
32
myPath = os.path.dirname(os.path.join(os.getcwd(), sys.modules[__name__].__file__)) + "/"
 
33
grubPath = os.path.dirname(findMenuLst()) + "/"
 
34
splashPath = grubPath + "splashimages/" #This is the default splashimages directory.
 
35
backupPath = grubPath + "backup/"
27
36
 
28
37
madeBackup = 0
29
38
 
112
121
    relFile.writelines(backupInLines)
113
122
    relFile.close
114
123
 
115
 
def findMenuLst():
116
 
    """Find menu.lst from a list of likely paths. Right now, this is just a
117
 
    placeholder."""
118
 
    return testmenulst
119
 
 
120
124
def replaceSplash(path):
121
125
    """Find the location of the splashimage setting in menu.lst and change it."""
122
126
    backupMenuLst()