CleanUpWiki_v6 - itnett/FTD02N GitHub Wiki
Feilmeldingen du ser, OSError: [Errno 22] Invalid argument
, oppstår fordi filnavnet som brukes inneholder ugyldige tegn for et filnavn på Windows. Spesielt inneholder filnavnet tegn som ?
og &
, som ikke er tillatt i Windows-filnavn.
For å løse dette problemet, må vi endre hvordan filnavnene genereres i skriptet. Vi bør fjerne eller erstatte ugyldige tegn fra filnavnene før de brukes til å lagre filer.
wiki_code_migration.py
Oppdatert Her er en oppdatert versjon av skriptet der ugyldige tegn fjernes fra filnavnene:
Se skriptet her(.?)\n(.?)```', content, re.DOTALL) updated_content = content
for idx, (lang, code) in enumerate(code_blocks):
code_filename = sanitize_filename(f"{os.path.splitext(file)[0]}_snippet_{idx+1}.{lang}")
code_filepath = os.path.join(code_repo_dir, code_filename)
with open(code_filepath, 'w', encoding='utf-8') as code_file:
code_file.write(code.strip())
github_link = f"[{code_filename}]({code_repo_url}/blob/main/{code_filename})"
updated_content = updated_content.replace(f"```{lang}\n{code}```", github_link)
with open(wiki_filepath, 'w', encoding='utf-8') as f:
f.write(updated_content)
log(f"Processed {wiki_filepath} and moved code to {code_repo_dir}")
except Exception as e:
log_exception(e)
raise
def update_changelog(code_repo_dir, log_message): try: changelog_path = os.path.join(code_repo_dir, "CHANGELOG.md") timestamp = datetime.now().strftime('%Y-%m-%d %H:%M:%S') log_entry = f"{timestamp} - {log_message}\n"
with open(changelog_path, 'a' if os.path.exists(changelog_path) else 'w', encoding='utf-8') as changelog_file:
if not os.path.exists(changelog_path):
changelog_file.write("# CHANGELOG\n\n")
changelog_file.write(log_entry)
log(f"Updated CHANGELOG.md with: {log_message}")
except Exception as e:
log_exception(e)
raise
def init_commit_code_repo(code_repo_dir, commit_message): try: if not os.path.exists(os.path.join(code_repo_dir, ".git")): run_git_command(["git", "init"], cwd=code_repo_dir) log("Initialized a new git repo.") else: log("Git repo already initialized.")
run_git_command(["git", "add", "."], cwd=code_repo_dir)
run_git_command(["git", "commit", "-m", commit_message], cwd=code_repo_dir)
log(f"Committed changes with message: {commit_message}")
except Exception as e:
log_exception(e)
raise
def main(): try: config = load_input_config("input.yml") wiki_repo_url = config['wiki_repo_url'] dump_directory = config['dump_directory'] code_repo_url = config['code_repo_url'] code_repo_directory = config['code_repo_directory']
clone_wiki_repo(wiki_repo_url, dump_directory)
process_wiki_files(dump_directory, code_repo_url, code_repo_directory)
update_changelog(code_repo_directory, "Moved code from Wiki to code repository.")
init_commit_code_repo(code_repo_directory, "Initial commit: Imported code from Wiki.")
except Exception as e:
log_exception(e)
raise
if name == "main": main()
### Oppsummering av endringer:
1. **Sanitizing filnavn**:
- Funksjonen `sanitize_filename` erstatter ugyldige tegn i filnavn (som `<>:"/\|?*&`) med `_`. Dette sikrer at filnavnene er gyldige på Windows.
2. **Oppdatert kode**:
- Bruker `sanitize_filename` når filnavn genereres for å sikre at de er gyldige.
### Kjøring av skriptet:
1. **Kjør CMD som administrator**.
2. **Kjør det oppdaterte skriptet**:
```cmd
python C:\WikiMigration\wiki_code_migration.py
Dette skriptet bør nå kunne håndtere alle filer, inkludert de som tidligere forårsaket problemer på grunn av ugyldige filnavn. Skriptet vil nå korrekt flytte koden til code_repo_directory
og oppdatere Wiki-sidene med lenker til den nye koden.