From 2b293cff733370c0ee4075d6ac788ddc433d58c0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 22 Jul 2025 18:32:56 +0000 Subject: [PATCH 1/5] Initial plan From 1236c942f7a61a52285eab3119140ac2dde870df Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 22 Jul 2025 18:35:45 +0000 Subject: [PATCH 2/5] Initial plan for automatic versioning and GitHub releases Co-authored-by: cancel-cloud <76657167+cancel-cloud@users.noreply.github.com> --- __pycache__/app.cpython-312.pyc | Bin 0 -> 6047 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 __pycache__/app.cpython-312.pyc diff --git a/__pycache__/app.cpython-312.pyc b/__pycache__/app.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dd06b83df60075876b25c8f324bd7a0a44c3734b GIT binary patch literal 6047 zcmb_gO>h%Qmd=t&Qt8+757_3%F2KeuKoS^C15Njg!9VS$u^DU{5Hq7KE7Mlll1gNi zY+P;ksAp$l?C9CB+2{z|JrH;|dUu&)-u;4}x<2(NB`U4I=ah*0GAS+<39uhR_X! z5#~}TR(f(V4*Ir~Ep3b0()O60E7AEF4|IFVk#@$MX;;hzbUr3vN6d|#F%Nddyjb`d ziur7a_`WPp5c3mmVuv+t^*Pa6ZCfqu{*o)TV?pe}UhKPR!+snfL0p4_(5}UGHyyEB zT#p;@7Q7WV-sEF-xQWz{*>LmE_*etp2J>&h+fB+2plroEfzn8taLeQy2+_}BZOw$A zIAYCNeOhzl*2x~=-1T}c+}aExSTwcOfVM{KO*sU;?HE~lI7EVK6VP_xT~(Ud-~CE| zJ8pfY-+=eL(%)ju5ZejT4Y;j3irah8kGu%QT3}==*-2Wyg!5#DL%;O%Y())tZITv*I+`eN zT7>|O3CHGMsf{^ovo>lDxsm3wcxEfdK8*GtO|a-~i0Iz(vU9Db zwIHq_HR95^pAVG z>+Szi$3boQE)4gckN0<CQp!MEZ##J8 z7&+Y4*%^MbYZQl%93JZmAMe6a_$WynI?^?I{LRk8lHO_A>lBW_yI#$Ka4sFuNFo`X zCZkD3nKZ35J|(4O@E{pB+}6_z)7oTgxDwze8lCA2ISfH1nkHw);bhNxy!svv$$<$1WjFSwO=u9F> zRPDQY|B~iWC6iM-L%iWCZ-wD1uitQ2W;L88X2X>xsw$0>L^*na*&)Qk-vk>S8UQwx zvDbl(#<I-E5+2S7B-0g#w*a*Lm{X>N;e)@E^WXoe3t^nQ;By|JOeUNB^hj+ueNk)?7*3)$%|#%6{MRg=GcPYr(w_gVEJsv~ckIYr*dPK+zwV zpP8Rru3PS3K3?#)=X)OW?)kQ#pLqeID8VYLRNy}bXYqfXh!u0^VAmP!WBX0}95?&g zu%KDl)F$AciKK+6{^dk{*>FqD_B%m1Da^CxU0{J#%kMYVfU>4SLl|_+!xQyO`&WSf>y{o zs0RT9Q*y$@x#)zdWOVOYMVBGEN4p{iLw4PFTFGc6qlHIivczz9ClVy9z4S0p3wMK8 zYk-VA6Es{&B7rHYh6Bu(WO65A72n>vA&#(~IH_bnPdVaEDQVHvFwheoE+q@1G&)Xb zZVXtb31!hx?>Ga-Ulu1cDWzZ?;%h{6BFwaL`_tIh973US=((uNc1b5IP{DnpqZQUSl|OS(c=k@Ku_v zMCU0{v-BXas0?qw=Sogz_#x)xvT?P{%(nO#19`<8o z^4p5rcdvAHzPmdKyGkGpocA`S0QIa_mUKDgPQcyE??_9Qd@DBssu^V0yFgP+?if8P$X?RQi8&7~r zgV)G44Fcy07@=>oVK>Xr;u#4pR`wiC(YJu8vTb2*TJ}?i`DXN8pq^vH{{&SY6@&FR z0@nj;K`}q@*wgUo%u4xX2f2ioKW3IYvU)jwZ6{6)6 zm-nHoan;qhd}7tr4n8?gmIjvIDzqFe_}+XV94os058chH?&js;`)-kqk1btZI#XyJ zDflit5I*=L%ft8I8MyOS;b`C2+Qa^ftNj-XeU}Qp%j-g{oTaz@L+EcpE87dc@B<-Y z`syoznYj%Ml`lsAAAz~*nwHVcvC#F}bP2*X{J{Mf+(9t|c;#+ZqOlrtlRt!WsF~$9 z-PHKImD`vOa0{{!{&jF(015`bW`V%XGL}Cp5Q584@0K^gmI9Z>skRl+?afhZIhe99I?Sp{K%PbxWTIMZ?l9LI2~ zB%x%m;Z4g4s+2lU8BoIYkH^xCDhJ^mpR%ZsYlCXz_UCz#UHioHy|3&(6kHE%oWkdU zNNyJ}4&M7Bk%W|zLO!V}X$XrdKmskXi@CI@JIq8<_eaDYNfl*P6CpI~e(*l?>MBAl z>TdC@xzJ1`QWK&Xt&@+t0j@fWxc`B{IrKi;b42B8g5F`k_`7|3TeGLt!i*_m6@06h?Xlhz{Oyig=ESiXZZp^ zuK-&d{_3xxg2?HqTRgCE;L~es9x;FVNlo42hYKIBaCdfn)&2FM`487>dh_oVU7lZD z`}o?@p`Xqbh2WVA>TWH z{BdpLvU{a-t#M|f(A0QyD(6xvjJ|$}a(5weFC}GE1vJ??gGLhwiFf&+2hU6l- z5KRB==b!!8Zx%(d@7`~dl!$P~ne@Fc?%kFlH!Rzalv5#?@WM#QMj7T)#+ln~v0uFR&%m3}UMoV`*GVc?1U7Cjek^vU;BC7n+1(u! zv&0h2Ii;v7WR;;-+Q~$`tYTPJvPHW(qZ$JH*dfEGu}xoB1o-M=f;~OOn7g1dg!hN~ z<9!3~_nIF@O#7xR-jJ2-`aeqKHzeDcdqc?ts zJikXrHU#7o^FqLj>dFBr<9$Pr} zmvc*3@4K3ohi_l{?9z(#*_Au*-QRiik+5T3Xn7>~=6~=@*EinAM}of)7+M$3nT@yC zg?Fqm=1Pax`6J(Wn?CtozULd(53Te2ivB&%5$9-}=Rjm0FLnP_05-|d_{@nMLO}?x g^N~mF{<-8`=XaD^!aCn<%7-8Dk&Q6ox0xINKhUKF3;+NC literal 0 HcmV?d00001 From f57026c7fba048b737c1ed5714c0a11fe5ecea96 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 22 Jul 2025 18:39:22 +0000 Subject: [PATCH 3/5] Implement automatic versioning and GitHub releases system Co-authored-by: cancel-cloud <76657167+cancel-cloud@users.noreply.github.com> --- ...-publish.yml => docker-publish.yml.backup} | 0 .github/workflows/version-and-release.yml | 133 ++++++++++++++++++ .gitignore | 5 + __pycache__/app.cpython-312.pyc | Bin 6047 -> 0 bytes app.py | 5 +- version.py | 31 ++++ 6 files changed, 172 insertions(+), 2 deletions(-) rename .github/workflows/{docker-publish.yml => docker-publish.yml.backup} (100%) create mode 100644 .github/workflows/version-and-release.yml delete mode 100644 __pycache__/app.cpython-312.pyc create mode 100644 version.py diff --git a/.github/workflows/docker-publish.yml b/.github/workflows/docker-publish.yml.backup similarity index 100% rename from .github/workflows/docker-publish.yml rename to .github/workflows/docker-publish.yml.backup diff --git a/.github/workflows/version-and-release.yml b/.github/workflows/version-and-release.yml new file mode 100644 index 0000000..8fb0759 --- /dev/null +++ b/.github/workflows/version-and-release.yml @@ -0,0 +1,133 @@ +name: Auto Version and Release + +on: + push: + branches: [ "main" ] + pull_request: + types: [ closed ] + branches: [ "main" ] + +jobs: + version-and-release: + if: github.event_name == 'push' || (github.event.pull_request.merged == true && github.event.pull_request.base.ref == 'main') + runs-on: ubuntu-latest + permissions: + contents: write + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + fetch-depth: 0 + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.11' + + - name: Get current version + id: current_version + run: | + VERSION=$(python3 -c "from version import get_version; print(get_version())") + echo "current_version=$VERSION" >> $GITHUB_OUTPUT + echo "Current version: $VERSION" + + - name: Increment version + id: new_version + run: | + # Get the current version and increment patch number + CURRENT_VERSION="${{ steps.current_version.outputs.current_version }}" + IFS='.' read -ra VERSION_PARTS <<< "$CURRENT_VERSION" + MAJOR=${VERSION_PARTS[0]} + MINOR=${VERSION_PARTS[1]} + PATCH=${VERSION_PARTS[2]} + NEW_PATCH=$((PATCH + 1)) + NEW_VERSION="$MAJOR.$MINOR.$NEW_PATCH" + echo "new_version=$NEW_VERSION" >> $GITHUB_OUTPUT + echo "New version: $NEW_VERSION" + + - name: Update version in code + run: | + NEW_VERSION="${{ steps.new_version.outputs.new_version }}" + sed -i "s/__version__ = \".*\"/__version__ = \"$NEW_VERSION\"/" version.py + echo "Updated version.py with version $NEW_VERSION" + + - name: Generate changelog + id: changelog + run: | + # Get the latest tag + LATEST_TAG=$(git describe --tags --abbrev=0 2>/dev/null || echo "") + if [ -z "$LATEST_TAG" ]; then + echo "No previous tag found, getting all commits" + COMMITS=$(git log --oneline --pretty=format:"- %s" HEAD) + else + echo "Getting commits since $LATEST_TAG" + COMMITS=$(git log --oneline --pretty=format:"- %s" $LATEST_TAG..HEAD) + fi + + # Create changelog + { + echo "## Changes in v${{ steps.new_version.outputs.new_version }}" + echo "" + if [ -n "$COMMITS" ]; then + echo "$COMMITS" + else + echo "- Minor updates and improvements" + fi + } > CHANGELOG.md + + # Set output for release notes + { + echo 'changelog<> $GITHUB_OUTPUT + + - name: Commit version update + run: | + git config --local user.email "action@github.com" + git config --local user.name "GitHub Action" + git add version.py + git commit -m "Bump version to v${{ steps.new_version.outputs.new_version }}" || echo "No changes to commit" + git push + + - name: Create Git Tag + run: | + git tag "v${{ steps.new_version.outputs.new_version }}" + git push origin "v${{ steps.new_version.outputs.new_version }}" + + - name: Create GitHub Release + uses: ncipollo/release-action@v1 + with: + tag: v${{ steps.new_version.outputs.new_version }} + name: Release v${{ steps.new_version.outputs.new_version }} + body: ${{ steps.changelog.outputs.changelog }} + draft: false + prerelease: false + token: ${{ secrets.GITHUB_TOKEN }} + + - name: Log in to the GitHub Container Registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ghcr.io/${{ github.repository }} + tags: | + type=raw,value=latest + type=raw,value=v${{ steps.new_version.outputs.new_version }} + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + push: true + tags: ${{ steps.meta.outputs.tags }} + labels: ${{ steps.meta.outputs.labels }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index e43b0f9..eb1a52c 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,6 @@ .DS_Store + +# Python +__pycache__/ +*.py[cod] +*$py.class diff --git a/__pycache__/app.cpython-312.pyc b/__pycache__/app.cpython-312.pyc deleted file mode 100644 index dd06b83df60075876b25c8f324bd7a0a44c3734b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6047 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 diff --git a/app.py b/app.py index 84a62a3..70d365d 100644 --- a/app.py +++ b/app.py @@ -4,6 +4,7 @@ from datetime import datetime, timedelta import sys from zoneinfo import ZoneInfo, ZoneInfoNotFoundError +from version import get_version # Basis-URLs @@ -103,7 +104,7 @@ def show_startup_message(): hours, remainder = divmod(time_diff.seconds, 3600) minutes, _ = divmod(remainder, 60) - log("🚀 Idle Outpost Claimer gestartet.") + log(f"🚀 Idle Outpost Claimer v{get_version()} gestartet.") log(f"Nächster automatischer Claim um {next_run.strftime('%H:%M')}. Das ist in {hours} Stunden und {minutes} Minuten.") @@ -117,7 +118,7 @@ def show_startup_message(): print("Bitte setze sie und starte den Container neu.") exit(1) - log("⚙️ Führe planmäßigen Claim aus...") + log(f"⚙️ Idle Outpost Claimer v{get_version()} - Führe planmäßigen Claim aus...") # Session initialisieren sess = setup_session() diff --git a/version.py b/version.py new file mode 100644 index 0000000..85bba57 --- /dev/null +++ b/version.py @@ -0,0 +1,31 @@ +#!/usr/bin/env python3 +""" +Version management for IdleOutpostClaimer +""" + +# Current version of the application +__version__ = "1.0.4" + +def get_version(): + """ + Get the current version string + + Returns: + str: Current version number + """ + return __version__ + +def get_version_info(): + """ + Get detailed version information + + Returns: + dict: Version information including major, minor, and patch numbers + """ + parts = __version__.split('.') + return { + 'major': int(parts[0]) if len(parts) > 0 else 0, + 'minor': int(parts[1]) if len(parts) > 1 else 0, + 'patch': int(parts[2]) if len(parts) > 2 else 0, + 'version_string': __version__ + } \ No newline at end of file From 269b8a47fab9a00ca51023f7adcab0f981663cf1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Tue, 22 Jul 2025 18:41:38 +0000 Subject: [PATCH 4/5] Add comprehensive documentation for versioning system Co-authored-by: cancel-cloud <76657167+cancel-cloud@users.noreply.github.com> --- README.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/README.md b/README.md index 1eefa8f..bb1c1cd 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ Dein persönlicher Assistent, der nie schläft! Dieses Tool meldet sich täglich GitHub Forks License Last Commit + Latest Release --- @@ -30,6 +31,33 @@ Sind wir ehrlich: Tägliche Anmeldeboni sind super, aber man vergisst sie leicht - **📦 Docker-isoliert**: Läuft in einem sauberen, abgeschotteten Container. "Set it and forget it!" - **⚙️ Minimale Konfiguration**: Alles, was du brauchst, ist deine `USER_GAME_ID`. - **📝 Detailliertes Logging**: Jede Aktion wird protokolliert. Du hast volle Kontrolle und Transparenz. +- **🔄 Automatische Versionierung**: Das System erstellt automatisch neue Releases und aktualisiert Versionsnummern bei jeder Aktualisierung. +- **📊 Versionsverfolgung**: Jeder Log-Eintrag zeigt die aktuelle Version an, sodass du immer weißt, welche Version läuft. + +--- + +## 📋 Versionierung & Releases + +Das Projekt verwendet ein automatisches Versionierungssystem: + +- **🏷️ Automatische Releases**: Bei jedem Push oder Merge in den `main`-Branch wird automatisch eine neue Version erstellt +- **📈 Patch-Versionierung**: Versionen werden automatisch hochgezählt (z.B. 1.0.4 → 1.0.5 → 1.0.6) +- **📝 Changelog**: Jedes Release enthält eine Liste der Änderungen seit der letzten Version +- **🐳 Docker Tags**: Docker Images werden automatisch mit der aktuellen Versionsnummer getaggt +- **📊 Logs mit Version**: Die Anwendung zeigt die aktuelle Version in allen Log-Ausgaben an + +### Aktuelle Version anzeigen + +Die aktuelle Version wird beim Start der Anwendung angezeigt: +``` +[22.07.25-20:37] 🚀 Idle Outpost Claimer v1.0.4 gestartet. +[22.07.25-20:37] ⚙️ Idle Outpost Claimer v1.0.4 - Führe planmäßigen Claim aus... +``` + +Du kannst auch die Version direkt abfragen: +```bash +docker exec idle-outpost-claimer python3 -c "from version import get_version; print(f'Version: {get_version()}')" +``` --- From 8c998d9134b98edad08447702abe692297b1e06c Mon Sep 17 00:00:00 2001 From: Lukas Date: Tue, 22 Jul 2025 20:45:40 +0200 Subject: [PATCH 5/5] Update app.py removed double version naming --- app.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app.py b/app.py index 70d365d..ab1fb12 100644 --- a/app.py +++ b/app.py @@ -118,7 +118,7 @@ def show_startup_message(): print("Bitte setze sie und starte den Container neu.") exit(1) - log(f"⚙️ Idle Outpost Claimer v{get_version()} - Führe planmäßigen Claim aus...") + log("⚙️ Führe planmäßigen Claim aus...") # Session initialisieren sess = setup_session() @@ -130,4 +130,4 @@ def show_startup_message(): claim(sess, 'legendary') claim(sess, 'weekly') - log("\n🏁 Alle Aktionen abgeschlossen.") \ No newline at end of file + log("\n🏁 Alle Aktionen abgeschlossen.")