12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- #!/usr/bin/env python
- #
- # use_example_configs [repo:]configpath
- #
- # Examples:
- # use_example_configs
- # use_example_configs Creality/CR-10/CrealityV1
- # use_example_configs release-2.0.9.4:Creality/CR-10/CrealityV1
- #
- # If a configpath has spaces (or quotes) escape them or enquote the path
- # If no branch: prefix is given use configs based on the current branch name.
- # e.g., For `latest-2.1.x` name the working branch something like "my_work-2.1.x."
- # The branch or tag must first exist at MarlinFirmware/Configurations.
- # The fallback branch is bugfix-2.1.x.
- #
- import os, subprocess, sys, urllib.request
- def get_current_branch():
- try:
- result = subprocess.run(['git', 'branch'], capture_output=True, text=True, check=True)
- for line in result.stdout.splitlines():
- if line.startswith('*'):
- return line[2:]
- except subprocess.CalledProcessError:
- return None
- def fetch_configs(branch, config_path):
- print(f"Fetching {config_path} configurations from {branch}...")
- base_url = f"https://raw.githubusercontent.com/MarlinFirmware/Configurations/{branch}/config/{config_path}"
- files = ["Configuration.h", "Configuration_adv.h", "_Bootscreen.h", "_Statusscreen.h"]
- marlin_dir = os.path.join(os.getcwd(), "Marlin")
- if not os.path.exists(marlin_dir):
- print(f"Directory {marlin_dir} does not exist.")
- sys.exit(1)
- for file in files:
- url = f"{base_url}/{file}"
- dest_file = os.path.join(marlin_dir, file)
- if os.getenv('DEBUG', '0') == '1':
- print(f"Fetching {file} from {url} to {dest_file}")
- try:
- urllib.request.urlretrieve(url, dest_file)
- except urllib.error.HTTPError as e:
- if e.code == 404:
- if os.getenv('DEBUG', '0') == '1':
- print(f"File {file} not found (404), skipping.")
- else:
- raise
- def main():
- branch = get_current_branch()
- if not branch:
- print("Not a git repository or no branch found.")
- sys.exit(1)
- if branch.startswith("bugfix-2."):
- branch = branch
- elif branch.endswith("-2.1.x") or branch == "2.1.x":
- branch = "latest-2.1.x"
- elif branch.endswith("-2.0.x") or branch == "2.0.x":
- branch = "latest-2.0.x"
- elif branch.endswith("-1.1.x") or branch == "1.1.x":
- branch = "latest-1.1.x"
- elif branch.endswith("-1.0.x") or branch == "1.0.x":
- branch = "latest-1.0.x"
- else:
- branch = "bugfix-2.1.x"
- if len(sys.argv) > 1:
- arg = sys.argv[1]
- if ':' in arg:
- part1, part2 = arg.split(':', 1)
- config_path = part2
- branch = part1
- else:
- config_path = arg
- config_path = 'examples/'+config_path.replace(' ', '%20')
- else:
- config_path = "default"
- try:
- subprocess.run(['restore_configs'], check=True)
- except FileNotFoundError:
- print("restore_configs not found, skipping.")
- fetch_configs(branch, config_path)
- if __name__ == "__main__":
- main()
|