Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Added patch scripts to enable releasing fork to existing PoB installs #1

Closed

Conversation

edmundsmith
Copy link
Contributor

@edmundsmith edmundsmith commented Oct 1, 2019

Hi,
I've been using/tweaking PoB for a while now, and I was getting frustrated at some of the slowdown in being kept up to date or reviewing pull reqs on the master repo combined with the inability for a non-technical user to use a fork repo. As Openarl appears to be the only person with the sources to SimpleGraphics engine, installer, etc., while PoB's core was open source, if he didn't have time to make a public release then nobody else could make an easy-to-use public release either.
I saw that a few people had made efforts to re-create SimpleGraphics to allow for users to install their forks without needing dev mode/git, but these had stagnated. I started looking into how to make my own release packages, and after finding the graphics re-impls and skipping over install wizards to auto-install forks into dev mode I looked into how the manifest.xml and update system works.
From this, I created a python script to allow devs to make compatible manifest.xml files for their forks so that PoB can auto-update from the new forks, and I added a small PowerShell script for end users to use to switch their update sources from the Openarl repo to an updater-compatible fork.
The python script will only need to be run by the dev, so a Python dependency there is ok, while I used PowerShell for the end-user manifest-patcher script as Powershell 2.0 and higher should already be installed on every Windows 7 and higher machine (this is also why I used WebClient objects instead of the newer Invoke-RestMethod/WebRequest commands not included in PowerShell 2.0, the Windows 7 default version).

To use, updatemanifest.py will read the existing manifest.xml and output manifest-updated.xml, which can then be checked over/version incremented before replacing the old manifest. To add a new source file to the update system, it will need a entry in the manifest, then have updatemanifest.py run again.
Once the remote repo contains the appropriate updated manifest file, end users can then run patch_fork.ps1 to replace their installed PoB's manifest with this fork's updated manifest file. The next time PoB checks for an update, it will update itself from the fork's repo instead, using the fork's manifest.xml to check for which files to download and replace.
Once this is done, PoB will auto-update from the fork's repo as per usual (keeping the manifest.xml updated is therefore important, hence having the updatemanifest script).

You will want to change the $fork variable in patch_forks.ps1 to point to your repo.

TL;DR

These scripts allow a dev to make their repo PoB-update compatible (updatemanifest.py) and allow an end user to switch their regular, installed PoB's update channel from Openarl to any compatible fork (just edit the $fork variable in patch_fork.ps1`) and then PoB-update Just Works

Add fork info to about

Changed Tree lua sources to use the repo instead of the zip as its master/DL src

Added Pantheons to manifest, moved fork info to manifest version number
@LocalIdentity
Copy link
Contributor

I have this in the repo at the moment, but the patch_forks.ps1 does not always work. When my friends have tried it, it will lock them into dev mode as it does not add the platform="win32" branch="master" after the end of the version number. I also had to add the ability for the updatemanifest script to work on .txt files so the changelog would receive an updated manifest number

@edmundsmith
Copy link
Contributor Author

Ah, I think I've found the issue. My manifest.xml in the PR/my fork had a change to include the branch="master" attribute in the xml's version tag.

Since the logic to detect dev mode in Launch.lua is

        if localManXML and not self.versionBranch and not self.versionPlatform then
		-- Looks like a remote manifest, so we're probably running from a repository
		-- Enable dev mode to disable updates and set user path to be the script path
		self.devMode = true
	end

(https://github.com/Openarl/PathOfBuilding/blob/8a712d8ecaa7eb2a828b5984286595f5216cc63d/Launch.lua#L51)

the existence of either a branch or a platform tag will stop the dev mode from enabling, which is why it was working for my testing on my dev fork where I've added the tag, but it won't yet be working for your friends using this fork which doesn't have it yet.

to fix

all you should need is to add in the branch="master" attribute to the manifest.xml\PoBVersion\Version tag, like how I have set up in my fork https://github.com/edmundsmith/PathOfBuilding/blob/78446dca1621742af588906f6ef679e476a94fd8/manifest.xml#L2

dclamage pushed a commit to dclamage/PathOfBuilding that referenced this pull request Mar 11, 2020
LocalIdentity pushed a commit that referenced this pull request Mar 15, 2020
dclamage added a commit to dclamage/PathOfBuilding that referenced this pull request Apr 7, 2020
…ves in Radius count towards Strength Melee Damage bonus" without a node

 - This happens when sorting the unique item list by DPS when a jewel socket on a cluster jewel is allocated

To reproduce the issue:
 - Create a new build
 - Go to the tree
 - Allocate an outer jewel socket
 - Go to items and craft a large cluster jewel with a jewel socket
 - Add the item and assign it to Socket PathOfBuildingCommunity#1
 - Go back to the tree and allocate the jewel socket in the new cluster jewel
 - Go back to items and sort the unique list by Combined DPS

Previous Result: The progress would stop around 62% complete and the list would not fill. In dev builds an exception is displayed.
New Result: The progress properly finishes and the list fills as expected.
@JJMAIHEM JJMAIHEM mentioned this pull request Jul 22, 2020
ppoelzl pushed a commit that referenced this pull request Jan 26, 2021
Slots with names like "Weapon 2 Abyssal Socket #1" will match the first group of digits as the slotNum for abyssal sockets, which is checked against the abyssal socket count on the parent item when considering whether an abyssal socket is active or not.
This fix ensures that we if possible match against the end of the string by anchoring the match, falling back on matching anywhere if that's not possible. This ensures that the match for items like "Weapon 2Swap" is still correct.
@faeroDK faeroDK mentioned this pull request Oct 2, 2021
2 tasks
Wires77 pushed a commit that referenced this pull request Jan 11, 2022
Adding ModSyntax document update for change.
Wires77 pushed a commit that referenced this pull request Jan 21, 2022
Minor tweak to docker compose and ignore files.
Wires77 pushed a commit that referenced this pull request Feb 4, 2022
Fix: subtract out BASE, INC, MORE increases to double and triple attributes
@Muramas Muramas mentioned this pull request Feb 10, 2022
2 tasks
LocalIdentity pushed a commit that referenced this pull request Sep 14, 2022
…qualities not applying. (#4906)

* FIX: fix binary mods from auras scaling with aura effect

* FIX: fix odd scaling of avoid modifiers from auras.

* FIX: wron argument to mergeBuffs

* FIX: Add unscalabe flags to tempest shield shock avoidance and add a dummy display stat. Re add entries in skillStatMap in case they're used by something.

* Add support for poision immunity and fix scalability

* Use a more standard format.

* Cleanup unscalable mod list

* minor cleanup

* Fix other related issues and add support for a couple mods. (#1)

* Fix Up several other instances of this and add support for a couple aura mods while at it.

* FIX: add a check in case (env.configInput["enemyCritChance"] ends up nil.

Co-authored-by: Paliak <91493239+Paliak@users.noreply.github.com>

* FIX: Artic Armour is a buff not an aura.

* FIX: Typo.

Co-authored-by: QuickStick <31533893+QuickStick123@users.noreply.github.com>
cloudily pushed a commit to cloudily/PathOfBuilding that referenced this pull request Nov 6, 2023
lua: Classes/PassiveSpec.lua:237: bad argument PathOfBuildingCommunity#1 to 'pairs' (table expected, got nil)
stack traceback:
[C]: in function 'pairs'
Classes/PassiveSpec.lua:237: in function 'ImportFromNodeList'
Classes/ImportTab.lua:627: in function 'ImportPassiveTreeAndJewels'
LocalIdentity pushed a commit that referenced this pull request Dec 1, 2023
lua: Classes/PassiveSpec.lua:237: bad argument #1 to 'pairs' (table expected, got nil)
stack traceback:
[C]: in function 'pairs'
Classes/PassiveSpec.lua:237: in function 'ImportFromNodeList'
Classes/ImportTab.lua:627: in function 'ImportPassiveTreeAndJewels'

Co-authored-by: Tony <tony@cldly.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants