Upload command line
This commit is contained in:
3
game-backuper.py
Normal file
3
game-backuper.py
Normal file
@@ -0,0 +1,3 @@
|
||||
# You can use `pyinstaller -c game-backuper.py` to get a package version
|
||||
from game_backuper import start
|
||||
start()
|
||||
@@ -1,3 +1,4 @@
|
||||
__version__ = "1.0.0"
|
||||
from game_backuper.main import main
|
||||
|
||||
|
||||
@@ -6,4 +7,6 @@ def start():
|
||||
try:
|
||||
sys.exit(main())
|
||||
except Exception:
|
||||
from traceback import print_exc
|
||||
print_exc()
|
||||
sys.exit(-1)
|
||||
|
||||
@@ -5,7 +5,7 @@ from game_backuper.config import (
|
||||
ConfigNormalFile,
|
||||
ConfigLeveldb,
|
||||
)
|
||||
from game_backuper.cml import Opts
|
||||
from game_backuper.cml import Opts, OptAction
|
||||
from threading import Thread
|
||||
from os.path import exists, join
|
||||
from os import mkdir
|
||||
@@ -58,11 +58,23 @@ class Backuper:
|
||||
self.opts = opts
|
||||
self.tasks = []
|
||||
|
||||
def run(self):
|
||||
for prog in self.conf.progs:
|
||||
def deal_prog(self, prog: Program):
|
||||
if self.opts.action == OptAction.BACKUP:
|
||||
t = BackupTask(prog, self.db, self.conf)
|
||||
self.tasks.append(t)
|
||||
t.start()
|
||||
|
||||
def run(self):
|
||||
if self.opts.programs_list is None:
|
||||
for prog in self.conf.progs:
|
||||
self.deal_prog(prog)
|
||||
else:
|
||||
for n in self.opts.programs_list:
|
||||
if n not in self.conf.progs_name:
|
||||
raise ValueError(f'Can not find "{n}" in config file.')
|
||||
for n in self.opts.programs_list:
|
||||
prog = self.conf.progs[self.conf.progs_name.index(n)]
|
||||
self.deal_prog(prog)
|
||||
self.wait()
|
||||
return 0
|
||||
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
from getopt import getopt, GetoptError
|
||||
from typing import List
|
||||
from platform import system
|
||||
from enum import IntEnum, unique
|
||||
if system() == "Windows":
|
||||
import os
|
||||
DEFAULT_CONFIG = f'{os.environ["APPDATA"]}\\game-backuper.yaml'
|
||||
@@ -8,8 +9,27 @@ else:
|
||||
DEFAULT_CONFIG = '/etc/game-backuper.yaml'
|
||||
|
||||
|
||||
@unique
|
||||
class OptAction(IntEnum):
|
||||
BACKUP = 0
|
||||
RESTORE = 1
|
||||
|
||||
@staticmethod
|
||||
def from_str(v: str) -> IntEnum:
|
||||
if isinstance(v, str):
|
||||
t = v.lower()
|
||||
if t == 'backup':
|
||||
return OptAction.BACKUP
|
||||
elif t == 'restore':
|
||||
return OptAction.RESTORE
|
||||
else:
|
||||
raise TypeError('Must be str.')
|
||||
|
||||
|
||||
class Opts:
|
||||
config_file: str = DEFAULT_CONFIG
|
||||
action = OptAction.BACKUP
|
||||
programs_list = None
|
||||
|
||||
def __init__(self, cml: List[str]):
|
||||
try:
|
||||
@@ -21,6 +41,14 @@ class Opts:
|
||||
sys.exit(0)
|
||||
elif i[0] == '-c':
|
||||
self.config_file = i[1]
|
||||
if len(r[1]) > 0:
|
||||
cm = r[1]
|
||||
re = OptAction.from_str(cm[0])
|
||||
if re is not None:
|
||||
self.action = re
|
||||
li = cm if re is None else cm[1:]
|
||||
if len(li) > 0:
|
||||
self.programs_list = li
|
||||
except GetoptError:
|
||||
from traceback import print_exc
|
||||
print_exc()
|
||||
@@ -28,4 +56,4 @@ class Opts:
|
||||
sys.exit(-1)
|
||||
|
||||
def print_help(self):
|
||||
print('''game-backuper [options] [game names]''')
|
||||
print('''game-backuper [options] [backup|restore] [game names]''')
|
||||
|
||||
@@ -79,6 +79,7 @@ class Program:
|
||||
class Config:
|
||||
dest = ''
|
||||
progs = []
|
||||
progs_name = []
|
||||
|
||||
def __init__(self, fn: str):
|
||||
with open(fn, 'r', encoding='UTF-8') as f:
|
||||
@@ -99,4 +100,8 @@ class Config:
|
||||
p = Program(prog)
|
||||
if not p.check():
|
||||
raise ValueError('Config error: program information error')
|
||||
self.progs.append(p)
|
||||
if p.name not in self.progs_name:
|
||||
self.progs_name.append(p.name)
|
||||
self.progs.append(p)
|
||||
else:
|
||||
raise ValueError(f'have same name "{p.name}" in programs.')
|
||||
|
||||
12
setup.py
12
setup.py
@@ -1,16 +1,24 @@
|
||||
# flake8: noqa
|
||||
import sys
|
||||
from game_backuper import __version__
|
||||
if len(sys.argv) == 2 and sys.argv[1] == "py2exe":
|
||||
from distutils.core import setup
|
||||
import py2exe
|
||||
params = {
|
||||
"console": [{
|
||||
'script': "game_backuper/__main__.py",
|
||||
"dest_base": 'game-backuper'
|
||||
"dest_base": 'game-backuper',
|
||||
'version': __version__,
|
||||
'product_name': 'game-backuper',
|
||||
'product_version': __version__,
|
||||
'company_name': 'lifegpc',
|
||||
'description': 'A game backuper',
|
||||
}],
|
||||
"options": {
|
||||
"py2exe": {
|
||||
"optimize": 2,
|
||||
"compressed": 1,
|
||||
"excludes": ["pydoc"]
|
||||
}
|
||||
},
|
||||
"zipfile": None,
|
||||
@@ -25,7 +33,7 @@ else:
|
||||
}
|
||||
setup(
|
||||
name="game-backuper",
|
||||
version="1.0.0",
|
||||
version=__version__,
|
||||
url="https://github.com/lifegpc/game-backuper",
|
||||
author="lifegpc",
|
||||
author_email="[email protected]",
|
||||
|
||||
Reference in New Issue
Block a user