CleanUpWiki - itnett/FTD02N GitHub Wiki
Ja, jeg ser forskjellen mellom de to repoene. Du ønsker å flytte koden fra den opprinnelige Wiki-repoen (FTD02H-N.wiki.git
) til en ny ren kode-repo (FTD02N.git
) og samtidig opprette en ny Wiki-repo (FTD02N.wiki.git
) som kun inneholder lenker til den nye kode-repoen.
Justert Skript for Din Oppgave
Her er hvordan vi kan justere skriptet og prosessen for å passe til denne strukturen:
- Klone den opprinnelige Wiki-repoen (
FTD02H-N.wiki.git
) til en lokaldump_directory
. - Ekstrahere og flytte kode fra den opprinnelige Wiki-repoen til den nye kode-repoen (
FTD02N.git
). - Oppdatere Wiki-sidene i
dump_directory
med lenker til skriptene i den nye kode-repoen. - Publisere det oppdaterte innholdet i
dump_directory
som den nye Wiki-repoen (FTD02N.wiki.git
).
Oppdatert Python-skript
Her er det oppdaterte Python-skriptet:
Se skriptet her(.?)\n(.?)```', content, re.DOTALL) updated_content = content
for idx, (lang, code) in enumerate(code_blocks):
# Generer filnavn for koden
code_filename = f"{os.path.splitext(file)[0]}_snippet_{idx+1}.{lang}"
code_filepath = os.path.join(code_repo_dir, code_filename)
# Lagre koden i kode-repo
with open(code_filepath, 'w') as code_file:
code_file.write(code.strip())
# Erstatt kodeblokken med en lenke i Wiki-filen
github_link = f"[{code_filename}]({code_repo_url}/blob/main/{code_filename})"
updated_content = updated_content.replace(f"```{lang}\n{code}```", github_link)
# Skriv oppdatert Wiki-fil tilbake
with open(wiki_filepath, 'w') as f:
f.write(updated_content)
print(f"Processed {wiki_filepath} and moved code to {code_repo_dir}")
Funksjon for å oppdatere CHANGELOG.md
def update_changelog(code_repo_dir, log_message): 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"
if os.path.exists(changelog_path):
with open(changelog_path, 'a') as changelog_file:
changelog_file.write(log_entry)
else:
with open(changelog_path, 'w') as changelog_file:
changelog_file.write("# CHANGELOG\n\n")
changelog_file.write(log_entry)
print(f"Updated CHANGELOG.md with: {log_message}")
Funksjon for å initialisere git repo og gjøre commits
def init_commit_code_repo(code_repo_dir, commit_message): if not os.path.exists(os.path.join(code_repo_dir, ".git")): subprocess.run(["git", "init"], cwd=code_repo_dir) print("Initialized a new git repo.") else: print("Git repo already initialized.")
subprocess.run(["git", "add", "."], cwd=code_repo_dir)
subprocess.run(["git", "commit", "-m", commit_message], cwd=code_repo_dir)
print(f"Committed changes with message: {commit_message}")
Hovedprogrammet
def main(): 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']
# Klon Wiki-repo
clone_wiki_repo(wiki_repo_url, dump_directory)
# Prosesser Wiki-filer og flytt kode til kode-repo
process_wiki_files(dump_directory, code_repo_url, code_repo_directory)
# Oppdater CHANGELOG.md
update_changelog(code_repo_directory, "Moved code from Wiki to code repository.")
# Initialiser og commit kode-repo
init_commit_code_repo(code_repo_directory, "Initial commit: Imported code from Wiki.")
if name == "main": main()
### `input.yml`-filen
Oppdater `input.yml`-filen til å inkludere den nye Wiki-repoen og kode-repoen:
```yaml
wiki_repo_url: "https://github.com/itnett/FTD02N/blob/main/"
dump_directory: "./git/code_dump"
code_repo_url: "https://github.com/itnett/FTD02N"
code_repo_directory: "./git/code_repo"
Slik fungerer det:
-
Klone den originale Wiki-repoen:
- Skriptet kloner
FTD02H-N.wiki.git
til./git/code_dump
.
- Skriptet kloner
-
Ekstrahere og lagre kode:
- Skriptet ekstraherer kodeblokker fra Wiki-sidene i
./git/code_dump
og lagrer dem som separate filer i./git/code_repo
.
- Skriptet ekstraherer kodeblokker fra Wiki-sidene i
-
Oppdatere lenker i Wiki-sidene:
- I hver Wiki-side i
./git/code_dump
blir kodeblokker erstattet med lenker til skriptene iFTD02N
kode-repoen på GitHub (https://github.com/itnett/FTD02N
).
- I hver Wiki-side i
-
Publisere ny Wiki-repo:
- Etter at skriptet er kjørt, vil
./git/code_dump
inneholde de oppdaterte Wiki-sidene. Du kan deretter initialisere dette som en ny Wiki-repo (FTD02N.wiki.git
) og pushe endringene.
- Etter at skriptet er kjørt, vil
Publisere den nye Wiki-repoen
-
Naviger til
dump_directory
(./git/code_dump): Se skriptet her -
Initialiser Git-repo og legg til remote: Se skriptet her
-
Commit og push endringene: Se skriptet her
Publisere kode-repoen
-
Naviger til
code_repo_directory
(./git/code_repo): Se skriptet her -
Initialiser Git-repo og legg til remote: Se skriptet her
-
Commit og push endringene: Se skriptet her
Resultat:
- FTD02H-N.wiki.git: Den opprinnelige Wiki-repoen er uberørt.
- FTD02N.wiki.git: Den nye Wiki-repoen inneholder oppdaterte sider med lenker til skript i kode-repoen.
- FTD02N.git: Kode-repoen inneholder alle skriptene som ble ekstrahert fra den opprinnelige Wiki-en.
Denne tilnærmingen holder koden og dokumentasjonen tydelig adskilt, og gjør det enkelt å vedlikeholde begge deler uavhengig av hverandre.