60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
#
|
|
# Copyright (c) 2014 Wind River Systems, Inc.
|
|
#
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
#
|
|
import os
|
|
import sys
|
|
import argparse
|
|
import sqlite3
|
|
|
|
database_patches_dir = "/var/lib/sm/patches/"
|
|
database_master_name = "/var/lib/sm/sm.db"
|
|
database_running_name = "/var/run/sm/sm.db"
|
|
|
|
|
|
def main():
|
|
|
|
try:
|
|
parser = argparse.ArgumentParser(description='SM Patch')
|
|
subparsers = parser.add_subparsers(help='types')
|
|
db_parser = subparsers.add_parser('database', help='Database')
|
|
db_parser.set_defaults(which='database')
|
|
db_parser.add_argument('which_database', help='master or running')
|
|
db_parser.add_argument('patch_name', help='patch name')
|
|
|
|
args = parser.parse_args()
|
|
|
|
if args.which == 'database':
|
|
if args.which_database == 'master':
|
|
if not os.path.exists(database_master_name):
|
|
print("%s not available." % database_master_name)
|
|
sys.exit()
|
|
|
|
database = sqlite3.connect(database_master_name)
|
|
else:
|
|
if not os.path.exists(database_running_name):
|
|
print("%s not available." % database_running_name)
|
|
sys.exit()
|
|
|
|
database = sqlite3.connect(database_running_name)
|
|
|
|
cursor = database.cursor()
|
|
|
|
with open(database_patches_dir + args.patch_name) as patch_file:
|
|
for line in patch_file:
|
|
if not line.startswith('#'):
|
|
cursor.execute(line)
|
|
|
|
database.commit()
|
|
database.close()
|
|
|
|
sys.exit(0)
|
|
|
|
except KeyboardInterrupt:
|
|
sys.exit()
|
|
|
|
except Exception as e:
|
|
print(e)
|
|
sys.exit(-1)
|