Update the reference implementation
This commit is contained in:
parent
5ab9ba8c21
commit
d73004270d
2 changed files with 124 additions and 7 deletions
38
README.md
38
README.md
|
@ -37,10 +37,10 @@ python3 main.py get connection
|
|||
|
||||
```bash
|
||||
# Example 1
|
||||
python3 main.py set connection system
|
||||
python3 main.py set connection 'system'
|
||||
|
||||
# Example 2
|
||||
python3 main.py set connection tor
|
||||
python3 main.py set connection 'tor'
|
||||
```
|
||||
|
||||
### Sync
|
||||
|
@ -111,6 +111,40 @@ python3 main.py profile disable -i 4
|
|||
python3 main.py profile disable -i 4 -f
|
||||
```
|
||||
|
||||
### Applications
|
||||
|
||||
#### List Applications
|
||||
|
||||
```bash
|
||||
# Example 1
|
||||
python3 main.py application list
|
||||
|
||||
# Example 2
|
||||
python3 main.py application list -c 'firefox'
|
||||
```
|
||||
|
||||
#### Show Application
|
||||
|
||||
```bash
|
||||
python3 main.py application show -a 'chromium:122.0.6261.94-1'
|
||||
```
|
||||
|
||||
#### Install Application
|
||||
|
||||
```bash
|
||||
# Install (halt in case the application is already installed).
|
||||
python3 main.py application install -a 'firefox:123.0'
|
||||
|
||||
# Install (reinstall the application if it already exists).
|
||||
python3 main.py application install -a 'firefox:123.0' -r
|
||||
```
|
||||
|
||||
#### Uninstall Application
|
||||
|
||||
```bash
|
||||
python3 main.py application uninstall -a 'brave:1.63.165'
|
||||
```
|
||||
|
||||
### Version Information
|
||||
|
||||
```bash
|
||||
|
|
93
main.py
93
main.py
|
@ -9,6 +9,7 @@ from core.controllers.LocationController import LocationController
|
|||
from core.controllers.ProfileController import ProfileController
|
||||
from core.controllers.SubscriptionController import SubscriptionController
|
||||
from core.controllers.SubscriptionPlanController import SubscriptionPlanController
|
||||
from core.models.session.Application import Application
|
||||
from core.models.session.SessionConnection import SessionConnection
|
||||
from core.models.session.SessionProfile import SessionProfile
|
||||
from core.models.system.SystemConnection import SystemConnection
|
||||
|
@ -19,8 +20,10 @@ from core.observers.ConnectionObserver import ConnectionObserver
|
|||
from core.observers.InvoiceObserver import InvoiceObserver
|
||||
from core.observers.ProfileObserver import ProfileObserver
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
import argparse
|
||||
import pprint
|
||||
import re
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
|
@ -46,6 +49,18 @@ if __name__ == '__main__':
|
|||
profile_observer.subscribe('disabled', lambda event: pprint.pp((event.subject, 'Disabled')) if event.meta.get('explicitly') else None)
|
||||
profile_observer.subscribe('enabled', lambda event: pprint.pp((event.subject, 'Enabled')))
|
||||
|
||||
def __parse_application_string(application_string: Optional[str] = None):
|
||||
|
||||
if application_string is None:
|
||||
return dict(application_code='', version_number='')
|
||||
|
||||
parsed_application_string = re.match('^(?P<application_code>.*?):(?P<version_number>.*?)$', application_string)
|
||||
|
||||
if parsed_application_string is None:
|
||||
return dict(application_code='', version_number='')
|
||||
else:
|
||||
return parsed_application_string.groupdict()
|
||||
|
||||
pristine_parser = argparse.ArgumentParser(add_help=False)
|
||||
pristine_parser.add_argument('--pristine', '-p', action='store_true')
|
||||
|
||||
|
@ -89,6 +104,22 @@ if __name__ == '__main__':
|
|||
profile_subparsers.add_parser('enable', parents=[profile_base_parser, pristine_parser, safe_parser])
|
||||
profile_subparsers.add_parser('disable', parents=[profile_base_parser, safe_parser])
|
||||
|
||||
application_parser = main_subparsers.add_parser('application')
|
||||
application_subparsers = application_parser.add_subparsers(title='subcommands', dest='subcommand')
|
||||
|
||||
application_base_parser = argparse.ArgumentParser(add_help=False)
|
||||
application_base_parser.add_argument('--application', '-a', required=True)
|
||||
|
||||
application_list_parser = application_subparsers.add_parser('list')
|
||||
application_list_parser.add_argument('--code', '-c')
|
||||
|
||||
application_show_parser = application_subparsers.add_parser('show', parents=[application_base_parser])
|
||||
|
||||
application_install_parser = application_subparsers.add_parser('install', parents=[application_base_parser])
|
||||
application_install_parser.add_argument('--reinstall', '-r', action='store_true')
|
||||
|
||||
application_uninstall_parser = application_subparsers.add_parser('uninstall', parents=[application_base_parser])
|
||||
|
||||
get_parser = main_subparsers.add_parser('get')
|
||||
get_subparsers = get_parser.add_subparsers(title='subcommands', dest='subcommand')
|
||||
|
||||
|
@ -127,11 +158,8 @@ if __name__ == '__main__':
|
|||
|
||||
if arguments.profile_type == 'session':
|
||||
|
||||
if not arguments.application:
|
||||
arguments.application = ':'
|
||||
|
||||
application_details = arguments.application.split(':', 1)
|
||||
application_version = ApplicationVersionController.get(application_details[0], application_details[1])
|
||||
application_details = __parse_application_string(arguments.application)
|
||||
application_version = ApplicationVersionController.get(application_details.get('application_code'), application_details.get('version_number'))
|
||||
|
||||
if application_version is None:
|
||||
main_parser.error('the following argument should be a valid reference: --application/-a')
|
||||
|
@ -248,15 +276,70 @@ if __name__ == '__main__':
|
|||
else:
|
||||
main_parser.error('the following argument should be a valid reference: --id/-i')
|
||||
|
||||
elif arguments.command == 'application':
|
||||
|
||||
if arguments.subcommand is None:
|
||||
application_parser.print_help()
|
||||
|
||||
if arguments.subcommand == 'list':
|
||||
|
||||
if arguments.code:
|
||||
|
||||
application = Application.find(arguments.code)
|
||||
|
||||
if application is not None:
|
||||
pprint.pp(ApplicationVersionController.get_all(application))
|
||||
else:
|
||||
main_parser.error('the following argument should be a valid reference: --code/-c')
|
||||
|
||||
else:
|
||||
pprint.pp(ApplicationVersionController.get_all())
|
||||
|
||||
elif arguments.subcommand == 'show':
|
||||
|
||||
application_details = __parse_application_string(arguments.application)
|
||||
application_version = ApplicationVersionController.get(application_details.get('application_code'), application_details.get('version_number'))
|
||||
|
||||
if application_version is not None:
|
||||
pprint.pp(application_version)
|
||||
else:
|
||||
main_parser.error('the following argument should be a valid reference: --application/-a')
|
||||
|
||||
elif arguments.subcommand == 'install':
|
||||
|
||||
application_details = __parse_application_string(arguments.application)
|
||||
application_version = ApplicationVersionController.get(application_details.get('application_code'), application_details.get('version_number'))
|
||||
|
||||
if application_version is not None:
|
||||
ApplicationVersionController.install(application_version, arguments.reinstall, application_version_observer=application_version_observer, connection_observer=connection_observer)
|
||||
else:
|
||||
main_parser.error('the following argument should be a valid reference: --application/-a')
|
||||
|
||||
elif arguments.subcommand == 'uninstall':
|
||||
|
||||
application_details = __parse_application_string(arguments.application)
|
||||
application_version = ApplicationVersionController.get(application_details.get('application_code'), application_details.get('version_number'))
|
||||
|
||||
if application_version is not None:
|
||||
ApplicationVersionController.uninstall(application_version)
|
||||
else:
|
||||
main_parser.error('the following argument should be a valid reference: --application/-a')
|
||||
|
||||
elif arguments.command == 'sync':
|
||||
ClientController.sync(client_observer=client_observer, connection_observer=connection_observer)
|
||||
|
||||
elif arguments.command == 'get':
|
||||
|
||||
if arguments.subcommand is None:
|
||||
get_parser.print_help()
|
||||
|
||||
if arguments.subcommand == 'connection':
|
||||
print(ConfigurationController.get_connection())
|
||||
|
||||
elif arguments.command == 'set':
|
||||
|
||||
if arguments.subcommand is None:
|
||||
set_parser.print_help()
|
||||
|
||||
if arguments.subcommand == 'connection':
|
||||
ConfigurationController.set_connection(arguments.connection_type)
|
||||
|
|
Loading…
Reference in a new issue