Skip to content

Commit

Permalink
Fix javascript in installation page
Browse files Browse the repository at this point in the history
  • Loading branch information
LandonTClipp committed Jan 2, 2025
1 parent 4f232f1 commit 09bf81f
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 5 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/tag-and-release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ jobs:
- name: GoReleaser
uses: goreleaser/goreleaser-action@v2.7.0
with:
args: release --rm-dist
args: release --clean
version: "<2"
env:
GITHUB_TOKEN: ${{ secrets.GORELEASER_GITHUB_TOKEN }}
Expand Down
56 changes: 52 additions & 4 deletions docs/installation.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,20 +37,55 @@ Install through [brew](https://brew.sh/)


<script type="text/javascript">
const start = performance.now();

function insert_installation_command(element_to_override,version){
element_to_override.innerHTML=`
```
``` title=""
go install github.com/vektra/mockery/v3@${version}
```
`;
}

function compareSemver(v1, v2) {
const parseVersion = (version) => {
const [main, preRelease] = version.replace(/^v/, "").split("-");
const mainParts = main.split('.').map(Number);
const preParts = preRelease ? preRelease.split('.').map((part) => isNaN(part) ? part : Number(part)) : [];
return { mainParts, preParts };
};

const compareParts = (a, b) => {
for (let i = 0; i < Math.max(a.length, b.length); i++) {
const partA = a[i] || 0;
const partB = b[i] || 0;
if (partA > partB) return 1;
if (partA < partB) return -1;
}
return 0;
};

const { mainParts: main1, preParts: pre1 } = parseVersion(v1);
const { mainParts: main2, preParts: pre2 } = parseVersion(v2);

const mainComparison = compareParts(main1, main2);
if (mainComparison !== 0) return mainComparison;

// Compare pre-release parts
if (pre1.length === 0 && pre2.length > 0) return 1; // No pre-release > pre-release
if (pre1.length > 0 && pre2.length === 0) return -1; // Pre-release < no pre-release
return compareParts(pre1, pre2);
}



const version_key="/mockery/version";
const element = document.getElementById('mockery-install-go-command');
const url = `https://api.github.com/repos/vektra/mockery/releases/tags/v3`;
const url = `https://api.github.com/repos/vektra/mockery/releases`;

let version = sessionStorage.getItem(version_key);


if (version !== null) {
insert_installation_command(element,version);
} else {
Expand All @@ -61,13 +96,26 @@ if (version !== null) {
fetch(request)
.then((response) => response.json())
.then((data) => {
sessionStorage.setItem(version_key, data.name);
insert_installation_command(element,data.name);
let latest_version = "";
data.forEach((release) => {
let release_tag=release.tag_name;
if (!release_tag.startsWith("v3")){
return
};
if (latest_version === "" || compareSemver(release_tag, latest_version) === 1) {
latest_version=release_tag;
};
});
sessionStorage.setItem(version_key, latest_version);
insert_installation_command(element,latest_version);
})
.catch((error) =>{
console.error(error);
element.innerHTML=`failed to fetch latest release info from: https://api.github.com/repos/vektra/mockery/releases/tags/v3`;
}
);
}

const end = performance.now();
console.log(`Execution time for finding latest mockery tag: ${end - start} milliseconds`);
</script>

0 comments on commit 09bf81f

Please sign in to comment.