Removed unreliable find_examples() and will use list_profiles() instead, as it covers a wider range of profiles and search area.

This commit is contained in:
Anton Hvornum 2020-11-29 19:49:55 +00:00
parent 4f2a6372f6
commit 9db54786f0
2 changed files with 12 additions and 17 deletions

View File

@ -64,25 +64,10 @@ def list_profiles(filter_irrelevant_macs=True):
return cache
def find_examples():
"""
Used to locate the examples, bundled with the module or executable.
:return: {'guided.py' : './examples/guided.py', '<profile #2>' : '<path #2>'}
:rtype: dict
"""
# We need to traverse backwards one step with /../ because
# We're living in src/lib/ and we're not executing from src/ anymore.
cwd = os.path.abspath(f'{os.path.dirname(__file__)}/../')
examples = f"{cwd}/examples"
return {os.path.basename(path): path for path in glob.glob(f'{examples}/*.py')}
def find_installation_script(profile):
parsed_url = urllib.parse.urlparse(profile)
if not parsed_url.scheme:
examples = find_examples()
examples = list_profiles()
if f"{profile}.py" in examples:
with open(examples[f"{profile}.py"]) as file:
return Script(file.read(), filename=os.path.basename(profile)+".py")

View File

@ -1,5 +1,15 @@
storage = {}
PROFILE_PATH = ['./profiles', '~/.config/archinstall/profiles', os.path.join(os.path.dirname(os.path.abspath(__file__)), 'profiles')]
# There's a few scenarios of execution:
# 1. In the git repository, where ./profiles/ exist
# 2. When executing from a remote directory, but targeted a script that starts from the git repository
# 3. When executing as a python -m archinstall module where profiles exist one step back for library reasons.
# (4. Added the ~/.config directory as a additional option for future reasons)
PROFILE_PATH = [
'./profiles',
'~/.config/archinstall/profiles',
os.path.join(os.path.dirname(os.path.abspath(__file__)), 'profiles'),
os.path.abspath(f'{os.path.dirname(__file__)}/../examples')
]
UPSTREAM_URL = 'https://raw.githubusercontent.com/Torxed/archinstall/master/profiles'
PROFILE_DB = None # Used in cases when listing profiles is desired, not mandatory for direct profile grabing.