54 Commits

Author SHA1 Message Date
Maarten
369bd805c9 2.3.0 2023-11-14 16:14:27 +01:00
Maarten
61f1852db1 Add instructions button
* Add instructions button
* reformat code
2023-11-14 16:13:20 +01:00
Maarten
1a2b91b78a Update README.md 2023-11-14 15:56:40 +01:00
Maarten
5b27e4a2c9 Update README.md 2023-11-14 14:13:13 +01:00
Maarten
882f4aa252 Outrule the possibility that the page might not be fully loaded on older machines will break stuff 2023-11-14 13:21:30 +01:00
Maarten
e7a4964400 Require the terminal dropdown to be filled in...
* Require the terminal dropdown to be filled in
* Add a default value to the terminal selection
2023-11-14 12:51:49 +01:00
Maarten
62e487abfe Add arm64 support, add script for easy renaming 2023-11-14 12:04:35 +01:00
Maarten
1f604460a0 Simplify the check of selection
* Simplify the check of selection
* rephrase and add console debugging output
2023-11-14 10:41:55 +01:00
Maarten
8a53d80502 (possibly) fix .zip path finding on Linux 2023-11-13 22:50:59 +01:00
Maarten
f93d53f574 Merge remote-tracking branch 'origin/master' 2023-11-13 22:19:20 +01:00
Maarten
32b014a283 Remove copyright year 2023-11-13 22:19:07 +01:00
Maarten
50de5b676a Update README.md 2023-11-13 22:10:42 +01:00
Maarten
799dea18be Allow spaces in path names.
* Allow spaces in path names. This was previously broken.
* Fix cool-retro-term
2023-11-13 21:58:57 +01:00
Maarten
45e14398f3 Update screenshot 2023-11-12 15:57:57 +01:00
Maarten
120dbb257c Add drop shadow
https://graphicdesign.stackexchange.com/a/117404
2023-11-12 15:17:26 +01:00
Maarten
98a8e5f853 Update screenshot in README
* Update screenshot in README
* auto switch for require star
* New title
2023-11-12 15:07:27 +01:00
Maarten
912ec9927c Merge remote-tracking branch 'origin/master' 2023-11-11 18:22:19 +01:00
Maarten
00d80a603c add note 2023-11-11 18:22:02 +01:00
Maarten
6c0fc19381 Merge pull request #136 from mmvanheusden/dependabot/npm_and_yarn/electron-27.0.4
Bump electron from 27.0.3 to 27.0.4
2023-11-11 16:33:29 +01:00
Maarten van Heusden
8f7f231000 improve unzip description 2023-11-09 08:36:12 +01:00
dependabot[bot]
6360e4f553 Bump electron from 27.0.3 to 27.0.4
Bumps [electron](https://github.com/electron/electron) from 27.0.3 to 27.0.4.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v27.0.3...v27.0.4)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-08 21:54:50 +00:00
Maarten van Heusden
dba37f3563 Rewrite Buttons, auto platform detection, new title 2023-11-08 22:18:28 +01:00
Maarten
42ff7dcae3 Merge pull request #135 from mmvanheusden/dependabot/npm_and_yarn/eslint-8.53.0
Bump eslint from 8.52.0 to 8.53.0
2023-11-07 16:29:49 +01:00
dependabot[bot]
d8878896e7 Bump eslint from 8.52.0 to 8.53.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.52.0 to 8.53.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.52.0...v8.53.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-06 21:48:35 +00:00
Maarten
1723bc6af0 Merge pull request #134 from mmvanheusden/dependabot/npm_and_yarn/electron-27.0.3
Bump electron from 27.0.2 to 27.0.3
2023-11-04 20:50:44 +01:00
Maarten
274ece410a Update README.md 2023-11-04 20:47:38 +01:00
Maarten van Heusden
fce3c6cff3 Support more terminal emulators
- The following list of terminals were added:
	* Terminology
	* xterm
	* Kitty
	* LXTerminal
	* Tilix
	* Deepin Terminal
	* cool-retro-term

- The OS selection is now separated from the terminal emulators dropdown, causing less unnecessary bloat for most of the users.

- Primer CSS is updated to v21.0.9.
2023-11-04 20:12:27 +01:00
dependabot[bot]
a613d96f79 Bump electron from 27.0.2 to 27.0.3
Bumps [electron](https://github.com/electron/electron) from 27.0.2 to 27.0.3.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v27.0.2...v27.0.3)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-11-01 21:40:54 +00:00
Maarten
8686d3145a Merge pull request #122 from mmvanheusden/dependabot/npm_and_yarn/follow-redirects-1.15.3
Bump follow-redirects from 1.15.2 to 1.15.3
2023-10-21 15:19:01 +02:00
Maarten
c2ca657450 Merge pull request #131 from mmvanheusden/dependabot/npm_and_yarn/eslint-8.52.0
Bump eslint from 8.49.0 to 8.52.0
2023-10-21 15:18:48 +02:00
Maarten
8c6ba4dc76 Merge pull request #132 from mmvanheusden/dependabot/npm_and_yarn/electron-27.0.2
Bump electron from 26.2.1 to 27.0.2
2023-10-21 15:18:21 +02:00
dependabot[bot]
0bb41b8f90 Bump electron from 26.2.1 to 27.0.2
Bumps [electron](https://github.com/electron/electron) from 26.2.1 to 27.0.2.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v26.2.1...v27.0.2)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-20 21:58:29 +00:00
dependabot[bot]
eeacf5885d Bump eslint from 8.49.0 to 8.52.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.49.0 to 8.52.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.49.0...v8.52.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-10-20 21:57:20 +00:00
dependabot[bot]
0bb67ad0fb Bump follow-redirects from 1.15.2 to 1.15.3
Bumps [follow-redirects](https://github.com/follow-redirects/follow-redirects) from 1.15.2 to 1.15.3.
- [Release notes](https://github.com/follow-redirects/follow-redirects/releases)
- [Commits](https://github.com/follow-redirects/follow-redirects/compare/v1.15.2...v1.15.3)

---
updated-dependencies:
- dependency-name: follow-redirects
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-19 21:07:43 +00:00
Maarten
e87bc27904 Merge pull request #119 from mmvanheusden/dependabot/npm_and_yarn/eslint-8.49.0
Bump eslint from 8.48.0 to 8.49.0
2023-09-16 10:53:11 +02:00
Maarten
4de82acadf Merge pull request #120 from mmvanheusden/dependabot/npm_and_yarn/electron-26.2.1
Bump electron from 26.2.0 to 26.2.1
2023-09-16 10:53:01 +02:00
dependabot[bot]
67921755d3 Bump electron from 26.2.0 to 26.2.1
Bumps [electron](https://github.com/electron/electron) from 26.2.0 to 26.2.1.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v26.2.0...v26.2.1)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-12 21:12:44 +00:00
dependabot[bot]
4600cb0715 Bump eslint from 8.48.0 to 8.49.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.48.0 to 8.49.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.48.0...v8.49.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-08 21:17:46 +00:00
Maarten
63647166b0 Merge pull request #117 from mmvanheusden/dependabot/npm_and_yarn/electron-builder-24.6.4
Bump electron-builder from 24.6.3 to 24.6.4
2023-09-08 14:06:31 +02:00
dependabot[bot]
24b4789f16 Bump electron-builder from 24.6.3 to 24.6.4
Bumps [electron-builder](https://github.com/electron-userland/electron-builder/tree/HEAD/packages/electron-builder) from 24.6.3 to 24.6.4.
- [Release notes](https://github.com/electron-userland/electron-builder/releases)
- [Changelog](https://github.com/electron-userland/electron-builder/blob/master/packages/electron-builder/CHANGELOG.md)
- [Commits](https://github.com/electron-userland/electron-builder/commits/v24.6.4/packages/electron-builder)

---
updated-dependencies:
- dependency-name: electron-builder
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-08 11:56:06 +00:00
Maarten
8e60860365 Merge pull request #118 from mmvanheusden/dependabot/npm_and_yarn/electron-26.2.0
Bump electron from 25.8.0 to 26.2.0
2023-09-08 13:55:25 +02:00
dependabot[bot]
efe997e73d Bump electron from 25.8.0 to 26.2.0
Bumps [electron](https://github.com/electron/electron) from 25.8.0 to 26.2.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v25.8.0...v26.2.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-07 21:58:37 +00:00
Maarten
2f93efc1a5 Fix visitor count badge 2023-09-01 21:20:47 +02:00
mmvanheusden
cdcc7ff250 Merge remote-tracking branch 'origin/master'
# Conflicts:
#	package-lock.json
#	package.json
2023-09-01 09:05:01 +02:00
mmvanheusden
bd0b4c0857 Update DepotDownloader + dependencies 2023-09-01 09:04:36 +02:00
Maarten
1ae267e610 dependabot: ignore patch updates 2023-08-28 16:04:08 +02:00
Maarten
d2bf485db5 Merge pull request #114 from mmvanheusden/dependabot/npm_and_yarn/electron-26.1.0
Bump electron from 26.0.0 to 26.1.0
2023-08-28 15:58:24 +02:00
Maarten
9b436a81af Merge pull request #115 from mmvanheusden/dependabot/npm_and_yarn/eslint-8.48.0
Bump eslint from 8.47.0 to 8.48.0
2023-08-28 15:58:13 +02:00
dependabot[bot]
48ed904863 Bump eslint from 8.47.0 to 8.48.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.47.0 to 8.48.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.47.0...v8.48.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-25 21:23:28 +00:00
dependabot[bot]
11a63612e4 Bump electron from 26.0.0 to 26.1.0
Bumps [electron](https://github.com/electron/electron) from 26.0.0 to 26.1.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v26.0.0...v26.1.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-23 21:13:45 +00:00
Maarten
e94bafe100 Merge pull request #111 from mmvanheusden/dependabot/npm_and_yarn/eslint-8.47.0
Bump eslint from 8.46.0 to 8.47.0
2023-08-20 22:08:15 +02:00
Maarten
ff55b24bbb Merge pull request #112 from mmvanheusden/dependabot/npm_and_yarn/electron-26.0.0
Bump electron from 25.4.0 to 26.0.0
2023-08-20 22:08:11 +02:00
dependabot[bot]
de11c7bfda Bump electron from 25.4.0 to 26.0.0
Bumps [electron](https://github.com/electron/electron) from 25.4.0 to 26.0.0.
- [Release notes](https://github.com/electron/electron/releases)
- [Changelog](https://github.com/electron/electron/blob/main/docs/breaking-changes.md)
- [Commits](https://github.com/electron/electron/compare/v25.4.0...v26.0.0)

---
updated-dependencies:
- dependency-name: electron
  dependency-type: direct:development
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-15 21:11:13 +00:00
dependabot[bot]
e33e2b85f1 Bump eslint from 8.46.0 to 8.47.0
Bumps [eslint](https://github.com/eslint/eslint) from 8.46.0 to 8.47.0.
- [Release notes](https://github.com/eslint/eslint/releases)
- [Changelog](https://github.com/eslint/eslint/blob/main/CHANGELOG.md)
- [Commits](https://github.com/eslint/eslint/compare/v8.46.0...v8.47.0)

---
updated-dependencies:
- dependency-name: eslint
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-08-11 21:11:47 +00:00
14 changed files with 458 additions and 267 deletions

View File

@@ -4,3 +4,6 @@ updates:
directory: "/"
schedule:
interval: "daily"
# ignore small updates
ignore:
update-types: ["version-update:semver-patch"]

BIN
Hubot-Sans.woff2 Normal file

Binary file not shown.

106
README.md
View File

@@ -1,76 +1,58 @@
<h1 align="center">
<br>
SteamDepotDownloaderGUI
<br>
</h1>
<h1 align="center">SteamDepotDownloaderGUI
<h4 align="center">A graphical wrapper of Depotdownloader, designed to make downloading Steam depots easy. built on top of <a href="https://www.electronjs.org" target="_blank">Electron</a>.</h4>
<p align="center">
<a href="https://github.com/mmvanheusden/SteamDepotDownloaderGUI/releases/latest">
<img src="https://img.shields.io/github/downloads/mmvanheusden/SteamDepotDownloaderGUI/total?color=orange&label=downloads"
alt="Download count badge">
</a>
<a href="https://img.shields.io/github/last-commit/mmvanheusden/SteamDepotDownloaderGUI?color=crimson">
<img src="https://img.shields.io/github/last-commit/mmvanheusden/SteamDepotDownloaderGUI?color=crimson"
alt="Last contribution badge">
</a>
<a href="https://github.com/mmvanheusden/SteamDepotDownloaderGUI/releases/latest">
<img src="https://img.shields.io/badge/Download -ffbd03?style=for-the-badge&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAABd0lEQVRoge2XwUrDQBCGPz3Ee++2UBSvdsGbeLHeFX0lPQhei+8g2AfwSVREK+LJ1oqHUGjRQ7Z0laRJNtldKPPBwoTM7D9/sks2IAiCsKrsAK/AC7DtSmTd1cTAKbAJtIAzVyIuDURGvOFKxKUBL4iB0IiB0IiB0IiB0IiB0IiB0IiB0IgBoA08Ak+AKpCvdO6AGn416zBwDGyRGLljuQmlc9pAEzipKl6HgVtgpOMGSYOdlLyOvtfQ1yPgpgb9WlDAEPjRYwj0jet+yv0iy80ru8AHiyazxiewF6jHXPJMeG3+CoiBy5J1/5dTlWVzAXwD5yXrAJho4YlFbdqesFnzsa6PLWr/PD0bFPAA3GO/YXN7WMspLpLnktweVvooMTPiKDPLHabmLCtpmYF3I96v3E55Doz4zWaCaxYb6Bno4udNRMCR1pzr92wmagFfZH+UfI0xycHPim5gE2Pg0Lb5OU2SVzgAph6anmqtHhWevCAIgh9+AdLMtu/CZhHJAAAAAElFTkSuQmCC"
alt="Download latest release badge">
</a>
<a href="https://visitor-badge.glitch.me/badge?page_id=mmvanheusden.SteamDepotDownloaderGUI">
<img src="https://visitor-badge.glitch.me/badge?page_id=mmvanheusden.SteamDepotDownloaderGUI"
alt="Visitor count badge">
</a>
<a href="https://liberapay.com/barbapapa">
<img src="https://img.shields.io/badge/Donate-black?logo=liberapay"
alt="Donation badge">
</a>
<a href="https://www.codefactor.io/repository/github/mmvanheusden/steamdepotdownloadergui/badge/master">
<img src="https://www.codefactor.io/repository/github/mmvanheusden/steamdepotdownloadergui/badge/master"
alt="CodeFactor badge">
</a>
</p>
<p align="center"><a href="https://github.com/mmvanheusden/SteamDepotDownloaderGUI/releases/latest"><img src="https://img.shields.io/github/downloads/mmvanheusden/SteamDepotDownloaderGUI/total?color=orange&label=downloads" alt="Download count badge"></a><a href="https://img.shields.io/github/last-commit/mmvanheusden/SteamDepotDownloaderGUI?color=crimson"><img src="https://img.shields.io/github/last-commit/mmvanheusden/SteamDepotDownloaderGUI?color=crimson" alt="Last contribution badge"></a><a href="https://github.com/mmvanheusden/SteamDepotDownloaderGUI/releases/latest"><img src="https://img.shields.io/badge/Download -ffbd03?style=for-the-badge&logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAwCAYAAABXAvmHAAAABmJLR0QA/wD/AP+gvaeTAAABd0lEQVRoge2XwUrDQBCGPz3Ee++2UBSvdsGbeLHeFX0lPQhei+8g2AfwSVREK+LJ1oqHUGjRQ7Z0laRJNtldKPPBwoTM7D9/sks2IAiCsKrsAK/AC7DtSmTd1cTAKbAJtIAzVyIuDURGvOFKxKUBL4iB0IiB0IiB0IiB0IiB0IiB0IiB0IgBoA08Ak+AKpCvdO6AGn416zBwDGyRGLljuQmlc9pAEzipKl6HgVtgpOMGSYOdlLyOvtfQ1yPgpgb9WlDAEPjRYwj0jet+yv0iy80ru8AHiyazxiewF6jHXPJMeG3+CoiBy5J1/5dTlWVzAXwD5yXrAJho4YlFbdqesFnzsa6PLWr/PD0bFPAA3GO/YXN7WMspLpLnktweVvooMTPiKDPLHabmLCtpmYF3I96v3E55Doz4zWaCaxYb6Bno4udNRMCR1pzr92wmagFfZH+UfI0xycHPim5gE2Pg0Lb5OU2SVzgAph6anmqtHhWevCAIgh9+AdLMtu/CZhHJAAAAAElFTkSuQmCC" alt="Download latest release badge"></a><a href="https://img.shields.io/endpoint?url=https%3A%2F%2Fhits.dwyl.com%2Fmmvanheusden%2Fsteamdepotdownloadergui.json&color=lightblue"><img src="https://img.shields.io/endpoint?url=https%3A%2F%2Fhits.dwyl.com%2Fmmvanheusden%2Fsteamdepotdownloadergui.json&color=lightblue" alt="Visitor count badge"></a><a href="https://liberapay.com/barbapapa"><img src="https://img.shields.io/badge/Donate-black?logo=liberapay" alt="Donation badge"></a><a href="https://www.codefactor.io/repository/github/mmvanheusden/steamdepotdownloadergui/badge/master"><img src="https://www.codefactor.io/repository/github/mmvanheusden/steamdepotdownloadergui/badge/master" alt="CodeFactor badge"></a></p>
<p align="center">
<a href="#features">Features</a>
<a href="#installation">Installation</a>
<a href="#how-to-use">How to use</a>
<a href="#credits">Credits</a>
<a href="#support">Support</a>
<a href="#contribute">Contribute</a>
</p>
<p align="center">
<img alt="Screenshot of the downloader interface" src="screenshot.png"
style="max-width: 70%;"/>
style="max-width: 60%;"/>
</p>
## Features
* Cross platform
* **Cross platform**
- Windows
- <s>macOS</s>
- <s>macOS</s> (in development™)
- Linux
* Cross terminal
* **Cross terminal**
- Gnome Terminal
- cmd
- Konsole
- xfce4-terminal
- Terminator
- Terminology
- xterm
- Kitty
- LXTerminal
- Tilix
- Deepin Terminal
- cool-retro-term
- Manual: produce a script that can be copy pasted into a terminal of choice
* Support for anonymous downloads
* **Support for anonymous downloads**
## Installation
## Download
If you haven't already, install [.NET SDK 6.0](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) on your computer.
From then, download the appropriate binary from [here](https://github.com/mmvanheusden/SteamDepotDownloaderGUI/releases/latest).
### Windows:
* If you haven't already, install [.NET SDK 6.0](https://dotnet.microsoft.com/en-us/download/dotnet/6.0) on your computer.
Then, download the [latest Windows build](https://github.com/mmvanheusden/SteamDepotDownloaderGUI/releases/latest)
### **Linux:**
#### Arch Linux:
* An official [AUR package](https://aur.archlinux.org/packages/steamdepotdownloadergui-appimage) has been made. this can be installed using `yay -S steamdepotdownloadergui-appimage`.
#### Other Linux distros:
* **You'll need `unzip`, .NET runtime 6.0 and .NET sdk 6.0.**
* **Ubuntu:**
`sudo apt install unzip dotnet-runtime-6.0 dotnet-sdk-6.0`
* **Fedora:**
`sudo dnf install unzip dotnet-sdk-6.0 dotnet-runtime-6.0`
> **Note**
> No support will be provided for binaries downloaded from unofficial mirrors like softpedia.
* There are several options, AppImage, and a `.zip`, for both x64 and arm64.
[Download latest release](https://github.com/mmvanheusden/SteamDepotDownloaderGUI/releases/latest)
## How to use
@@ -80,33 +62,31 @@ Enter everything you normally would in the DepotDownloader console and select yo
## Credits
This software uses the following open source packages:
- [Electron](http://electron.atom.io/)
This software makes use of the following projects:
- [**DepotDownloader**](https://github.com/SteamRE/DepotDownloader/)
- [Electron](https://www.electronjs.org/)
- [Node.js](https://nodejs.org/)
- [Primer CSS](https://primer.style/css/)
- [DepotDownloader](https://github.com/SteamRE/DepotDownloader/)
- README inspired from [Markdownify](https://github.com/amitmerchant1990/electron-markdownify#readme)
- [follow-redirects](https://github.com/follow-redirects/follow-redirects)
- [Hubut Sans](https://github.com/github/hubot-sans) under [license](https://github.com/github/hubot-sans/blob/05d5ea150c20e6434485db8ffd2277ed18a9e911/LICENSE)
## Support
## Donate
Donations can be made through Liberapay :)
<a href="https://liberapay.com/barbapapa">
<img src="https://img.shields.io/badge/Donate-black?logo=liberapay&style=for-the-badge"
alt="Donation badge">
</a>
</a>
## Contribute
If you want to contribute to SteamDepotDownloaderGUI, please make sure to follow
If you would like to contribute to SteamDepotDownloaderGUI, please make sure to follow
the [contributing instructions and guidelines](contributing.md).
Pull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.
Please make sure to keep code consistent and cross-platform compatible.
Please make sure to keep code clean and cross-platform compatible.
##### --
##### enjoy 😘
![forthebadge](https://forthebadge.com/images/featured/featured-built-with-love.svg)

View File

@@ -2,8 +2,8 @@
SteamDepotDownloaderGUI is a graphical user interface for DepotDownloader.
It is written in Node.js and uses the [electron](https://electronjs.org/) framework.
The CSS framework is [Primer](https://primer.style).
It is written in Node.js and uses the [Electron](https://electronjs.org/) framework.
The CSS framework being used is [Primer](https://primer.style), by GitHub.
## Setup development environment
@@ -38,7 +38,7 @@ npm start
npm run build
```
* If you are using macOS, you may build using the following command:
* If you are using macOS, you can build using the following command:
```bash
npm run buildall

View File

@@ -1,16 +1,18 @@
// Uses a prebuild binary of https://github.com/SteamRE/DepotDownloader
// License can be found at https://github.com/SteamRE/DepotDownloader/blob/master/LICENSE
const {ipcRenderer, shell} = require("electron")
const {
preDownloadCheck,
download,
createCommand,
runCommand,
removeDir,
removeFile,
unzip
preDownloadCheck, download, createCommand, runCommand, removeDir, removeFile, unzip
} = require("./utils")
// Initializes the variable that holds the path to the specified download location
let exportedFile
(async () => {
let r = await fetch("https://api.github.com/zen")
console.debug(await r.text())
})()
function submitForm() {
// Check if the form is filled in and if dotnet is installed
preDownloadCheck().then(async function () {
@@ -18,19 +20,20 @@ function submitForm() {
document.getElementById("emptywarning").hidden = true
console.info("dotnet found in PATH")
// Remove the old depotdownloader directory
// Remove the old depotdownloader directory if there are any
await removeDir("depotdownloader")
// Download the DepotDownloader binary, so it doesn't have to be included in the source code
await download("https://github.com/SteamRE/DepotDownloader/releases/download/DepotDownloader_2.4.7/depotdownloader-2.4.7.zip")
// Download a prebuild DepotDownloader binary, so it doesn't have to be included in the source code
await download("https://github.com/SteamRE/DepotDownloader/releases/download/DepotDownloader_2.5.0/depotdownloader-2.5.0.zip")
// Unzip the DepotDownloader binary
await unzip("depotdownloader-2.4.7.zip", "depotdownloader")
await unzip("depotdownloader-2.5.0.zip", "depotdownloader")
// Clean up the old files
await removeFile("depotdownloader-2.4.7.zip")
await removeFile("depotdownloader-2.5.0.zip")
// Run the final command
if (document.getElementById("osdropdown").selectedIndex !== 3) await console.debug("Command issued: " + createCommand())
await runCommand(createCommand())
}).catch(function (error) {
if (error === "noDotnet") {
@@ -45,68 +48,112 @@ function submitForm() {
})
}
function submitDotnet() {
// Combines all buttons that are supposed to open an external URL into one big function.
function openRelevantPage(target) {
const electron = require("electron")
const os = process.platform.toString()
document.getElementById("dotnetwarning").hidden = true
if (os.includes("win")) {
console.debug("Opened .NET download page for " + os.charAt(0).toUpperCase() + os.slice(1))
void electron.shell.openExternal("https://aka.ms/dotnet/6.0/dotnet-sdk-win-x64.exe")
}
if (os.includes("linux")) {
console.debug("Opened .NET download page for " + os.charAt(0).toUpperCase() + os.slice(1))
void electron.shell.openExternal("https://docs.microsoft.com/en-us/dotnet/core/install/linux")
}
if (os.includes("darwin")) {
console.debug("Opened .NET download page for" + os)
//TODO: Apple Silicon(ARM64) URL
void electron.shell.openExternal("https://aka.ms/dotnet/6.0/dotnet-sdk-osx-x64.pkg")
switch (target) {
// why are you not indenting nicely eslint?
/* eslint-disable indent */
case "dotnet":
document.getElementById("dotnetwarning").hidden = true
if (os.includes("win")) {
console.debug("Opened .NET download page for " + os.charAt(0).toUpperCase() + os.slice(1))
void electron.shell.openExternal("https://aka.ms/dotnet/6.0/dotnet-sdk-win-x64.exe")
}
if (os.includes("linux")) {
const electron = require("electron")
console.debug("Opened .NET download page for " + os.charAt(0).toUpperCase() + os.slice(1))
void electron.shell.openExternal("https://docs.microsoft.com/en-us/dotnet/core/install/linux")
}
if (os.includes("darwin")) {
console.debug("Opened .NET download page for" + os)
//TODO: Apple Silicon(ARM64) URL
void electron.shell.openExternal("https://aka.ms/dotnet/6.0/dotnet-sdk-osx-x64.pkg")
}
break
case "issues":
console.debug("Opened GitHub issues page")
void electron.shell.openExternal("https://github.com/mmvanheusden/SteamDepotDownloaderGUI/issues/new")
break
case "steamdb":
console.debug("Opened SteamDB instant search page")
void electron.shell.openExternal("https://steamdb.info/instantsearch/")
break
case "donate":
console.debug("Opened donation page")
void electron.shell.openExternal("https://liberapay.com/barbapapa/")
break
case "instructions":
console.debug("Opened instructions page")
void electron.shell.openExternal("https://github.com/mmvanheusden/SteamDepotDownloaderGUI/#how-to-use")
break
default:
return
}
/* eslint-enable indent */
}
function openGitHubIssues() {
const electron = require("electron")
console.debug("Opened GitHub issues page")
void electron.shell.openExternal("https://github.com/mmvanheusden/SteamDepotDownloaderGUI/issues/new")
}
function openSteamDB() {
const electron = require("electron")
console.debug("Opened SteamDB instant search page")
void electron.shell.openExternal("https://steamdb.info/instantsearch/")
}
function openDonate() {
const electron = require("electron")
console.debug("Opened donation page")
void electron.shell.openExternal("https://liberapay.com/barbapapa/")
}
// Opens the chosen location where the game will be downloaded to
function checkPath() {
// Opens the chosen location where the game will be downloaded to
shell.openPath(exportedFile)
shell.openPath(exportedFile).then(() => {
console.log("Opened " + exportedFile + " in file explorer.")
})
}
/* Everything beyond this line runs when the page is loaded */
// If Linux is selected in the dropdown menu, enable the second dropdown so the user can choose their terminal emulator.
function checkSelection() {
/*
[0] - Windows
[1] - macOS
[2] - Linux
[3] - manual
*/
let os_dropdown = document.getElementById("osdropdown")
let terminal_dropdown = document.getElementById("osdropdown2")
// if the choice = 2, enable the terminal selection dropdown.
if (os_dropdown.selectedIndex === 2) {
terminal_dropdown.disabled = false
document.getElementById("osdropdown2label").classList.add("required")
} else {
terminal_dropdown.disabled = true
terminal_dropdown.selectedIndex = 11
document.getElementById("osdropdown2label").classList.remove("required")
}
}
const { ipcRenderer, shell} = require("electron")
// main.js sends a ready message if the page is loaded in. This will be received here.
// process.platform -> 'linux' -> selectedIndex = 2 (Linux)
// process.platform -> 'win32' -> selectedIndex = 0 (Windows)
// process.platform -> 'darwin' -> selectedIndex = 1 (macOS)
ipcRenderer.on("ready", () => {
const osdropdown = document.getElementById("osdropdown")
if (process.platform.toString().includes("linux")) {
osdropdown.selectedIndex = 2
} else if (process.platform.toString().includes("win")) {
osdropdown.selectedIndex = 0
} else if (process.platform.toString().includes("darwin")) {
osdropdown.selectedIndex = 1
}
checkSelection() // force check the selection so the terminal dropdown can be unhidden.
})
// Add event listeners to the buttons
window.addEventListener("DOMContentLoaded", () => {
document.getElementById("dotnetalertbtn").addEventListener("click", submitDotnet)
document.getElementById("downloadbtn").addEventListener("click", submitForm)
document.getElementById("smbtn1").addEventListener("click", openGitHubIssues)
document.getElementById("smbtn2").addEventListener("click", openSteamDB)
document.getElementById("smbtn3").addEventListener("click", openDonate)
document.getElementById("smbtn3").addEventListener("click", openDonate)
document.getElementById("pickpath").addEventListener("click", () => {
ipcRenderer.send("selectpath")
})
document.getElementById("dotnetalertbtn").addEventListener("click", () => openRelevantPage("dotnet"))
document.getElementById("smbtn1").addEventListener("click", () => openRelevantPage("issues"))
document.getElementById("smbtn2").addEventListener("click", () => openRelevantPage("steamdb"))
document.getElementById("smbtn3").addEventListener("click", () => openRelevantPage("donate"))
document.getElementById("smbtn4").addEventListener("click", () => openRelevantPage("instructions"))
document.getElementById("pickpath").addEventListener("click", () => ipcRenderer.send("selectpath"))
document.getElementById("checkpath").addEventListener("click", checkPath)
document.getElementById("osdropdown").addEventListener("input", checkSelection)
document.getElementById("downloadbtn").addEventListener("click", submitForm)
})
ipcRenderer.on("file", (event, file) => {
console.log("obtained file from main process: " + file)
console.log("path selected by user: " + file)
document.getElementById("checkpath").ariaDisabled = false // Makes the check button active
exportedFile = file.toString()
})

View File

@@ -1,6 +1,6 @@
appId: rocks.maarten.depotdownloader
productName: SteamDepotDownloaderGUI
copyright: Copyright © 2022 mmvanheusden | This work is free. Licensed under the GNU GPLv3 Public License
copyright: Copyright © mmvanheusden | This work is free. Licensed under the GNU GPLv3 Public License
linux:
executableName: SteamDepotDownloaderGUI
@@ -25,8 +25,9 @@ mac:
- x64
win:
legalTrademarks: Copyright © 2022 mmvanheusden | This work is free. Licensed under the GNU GPLv3 Public License
legalTrademarks: Copyright © mmvanheusden | This work is free. Licensed under the GNU GPLv3 Public License
target:
- target: portable
arch:
- x64
- arm64

View File

@@ -4,7 +4,8 @@
<head>
<meta charset="UTF-8">
<meta content="width=device-width, initial-scale=1" name="viewport"/>
<link href="https://unpkg.com/@primer/css@21.0.7/dist/primer.css" rel="stylesheet"/>
<link href="https://unpkg.com/@primer/css@21.0.9/dist/primer.css" rel="stylesheet"/>
<link rel="stylesheet" href="style.css">
<title>SteamDepotDownloaderGUI</title>
</head>
<body>
@@ -14,14 +15,14 @@
<div class="flash flash-error mx-2 mt-2 color-shadow-medium" id="dotnetalert">
<svg class="octicon" height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg">
<path d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm6.5-.25A.75.75 0 017.25 7h1a.75.75 0 01.75.75v2.75h.25a.75.75 0 010 1.5h-2a.75.75 0 010-1.5h.25v-2h-.25a.75.75 0 01-.75-.75zM8 6a1 1 0 100-2 1 1 0 000 2z"
fill-rule="evenodd"></path>
fill-rule="evenodd"></path>
</svg>
<code><span class="text-italic">dotnet</span></code> was not found.
<button class="btn btn-sm flash-action" id="dotnetalertbtn">
<svg class="octicon" height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg">
<path d="M7.47 10.78a.75.75 0 001.06 0l3.75-3.75a.75.75 0 00-1.06-1.06L8.75 8.44V1.75a.75.75 0 00-1.5
0v6.69L4.78 5.97a.75.75 0 00-1.06 1.06l3.75 3.75zM3.75 13a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5z"
fill-rule="evenodd"></path>
fill-rule="evenodd"></path>
</svg>
<span class="text-bold">Download</span>
</button>
@@ -32,25 +33,28 @@
<div class="flash flash-warn mx-2 mt-2 color-shadow-medium" id="emptyalert">
<svg class="octicon" height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg">
<path d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm6.5-.25A.75.75 0 017.25 7h1a.75.75 0 01.75.75v2.75h.25a.75.75 0 010 1.5h-2a.75.75 0 010-1.5h.25v-2h-.25a.75.75 0 01-.75-.75zM8 6a1 1 0 100-2 1 1 0 000 2z"
fill-rule="evenodd"></path>
</svg>Please fill in all required fields.
fill-rule="evenodd"></path>
</svg>
Please fill in all required fields.
</div>
</div>
<div class="f0-light text-center">Steam Depot Downloader</div>
<div class="f1-light text-center">Steam Depot Downloader</div>
<form id="theform">
<div class="form-group mx-3 mt-1">
<div class="form-group-header">
<label for="username">Username</label>
</div>
<input class="form-control input-block" id="username" type="text" placeholder="Leave empty for anonymous download"/>
<input class="form-control input-block" id="username" type="text"
placeholder="Leave empty for anonymous download"/>
</div>
<div class="form-group mx-3 mt-1">
<div class="form-group-header">
<label for="password">Password</label>
</div>
<input class="form-control input-block" id="password" type="password" placeholder="Leave empty for anonymous download"/>
<input class="form-control input-block" id="password" type="password"
placeholder="Leave empty for anonymous download"/>
</div>
<div class="form-group mx-3 mt-1 required">
@@ -78,11 +82,13 @@
<div class="form-group-header">
<label>Download Location</label>
</div>
<div aria-label="Pick the path/location where the game will be downloaded to." class="form-control btn btn-sm tooltipped tooltipped-ne" id="pickpath">
<div aria-label="Pick the path/location where the game will be downloaded to."
class="form-control btn btn-sm tooltipped tooltipped-ne" id="pickpath">
Set location
</div>
<div aria-label="Check the location that has been selected." class="form-control btn btn-sm ml-2 tooltipped tooltipped-ne" id="checkpath" aria-disabled="true">
<div aria-label="Check the location that has been selected."
class="form-control btn btn-sm ml-2 tooltipped tooltipped-ne" id="checkpath" aria-disabled="true">
Open location
</div>
</div>
@@ -94,16 +100,33 @@
<div aria-label="Select your OS/terminal here." class="form-group-body tooltipped tooltipped-n">
<select aria-label="Preference" class="form-select width-full" id="osdropdown">
<option disabled>Choose your OS</option>
<option>Windows</option>
<option disabled>macOS (NOT YET IMPLEMENTED)</option>
<option disabled>If you are using Linux</option>
<option disabled>Select your terminal</option>
<option>KDE Konsole</option>
<option>Linux</option>
<option>Print command in console (CTRL-SHIFT-I)</option>
</select>
</div>
</div>
<div class="form-group mx-3 mt-3" id="osdropdown2label">
<div class="form-group-header">
<label for="osdropdown2">Terminal</label>
</div>
<div aria-label="Select the terminal emulator you use." class="form-group-body tooltipped tooltipped-n">
<select aria-label="Preference" class="form-select width-full" id="osdropdown2" disabled>
<option>Gnome Terminal</option>
<option>KDE Konsole</option>
<option>Xfce Terminal</option>
<option>Terminator</option>
<option>Print command in console (CTRL-SHIFT-I)</option>
<option>Terminology</option>
<option>xterm</option>
<option>Kitty</option>
<option>LXTerminal</option>
<option>Tilix</option>
<option>Deepin Terminal</option>
<option>cool-retro-term</option>
<option selected hidden disabled>Choose your terminal emulator</option>
</select>
</div>
</div>
@@ -111,40 +134,53 @@
<div class="form-group mt-3 ml-3 mr-3">
<button class="btn btn-block btn-primary" id="downloadbtn">
<svg class="octicon filter-red" height="16" viewBox="0 0 16 16" width="16" xmlns="http://www.w3.org/2000/svg">
<svg class="octicon filter-red" height="16" viewBox="0 0 16 16" width="16"
xmlns="http://www.w3.org/2000/svg">
<path d="M7.47 10.78a.75.75 0 001.06 0l3.75-3.75a.75.75 0 00-1.06-1.06L8.75 8.44V1.75a.75.75 0 00-1.5 0v6.69L4.78 5.97a.75.75 0 00-1.06 1.06l3.75 3.75zM3.75 13a.75.75 0 000 1.5h8.5a.75.75 0 000-1.5h-8.5z"
fill-rule="evenodd"></path>
fill-rule="evenodd"></path>
</svg>
Download
</button>
</div>
<div aria-label="Visit the GitHub issues website." class="btn btn-sm ml-3 tooltipped tooltipped-ne mb-1" id="smbtn1">
<div aria-label="Visit the GitHub issues website." class="btn btn-sm ml-3 tooltipped tooltipped-ne mb-1"
id="smbtn1">
<svg fill="#8B949E" height="16" style="display: inline-block; vertical-align: text-bottom;" viewBox="0 0 16 16"
width="16" xmlns="http://www.w3.org/2000/svg">
width="16" xmlns="http://www.w3.org/2000/svg">
<path d="M8 1.5a6.5 6.5 0 100 13 6.5 6.5 0 000-13zM0 8a8 8 0 1116 0A8 8 0 010 8zm9 3a1 1 0 11-2 0 1 1 0 012 0zM6.92 6.085c.081-.16.19-.299.34-.398.145-.097.371-.187.74-.187.28 0 .553.087.738.225A.613.613 0 019 6.25c0 .177-.04.264-.077.318a.956.956 0 01-.277.245c-.076.051-.158.1-.258.161l-.007.004a7.728 7.728 0 00-.313.195 2.416 2.416 0 00-.692.661.75.75 0 001.248.832.956.956 0 01.276-.245 6.3 6.3 0 01.26-.16l.006-.004c.093-.057.204-.123.313-.195.222-.149.487-.355.692-.662.214-.32.329-.702.329-1.15 0-.76-.36-1.348-.863-1.725A2.76 2.76 0 008 4c-.631 0-1.155.16-1.572.438-.413.276-.68.638-.849.977a.75.75 0 101.342.67z"
fill-rule="evenodd"></path>
fill-rule="evenodd"></path>
</svg>
Help
</div>
<div aria-label="Visit the SteamDB instant search website." class="btn btn-sm ml-2 tooltipped tooltipped-n mb-1" id="smbtn2">
<div aria-label="Visit the SteamDB instant search website." class="btn btn-sm ml-2 tooltipped tooltipped-n mb-1"
id="smbtn2">
<svg aria-hidden="true" class="octicon" height="14" viewBox="0 0 128 128" width="14"
xmlns="http://www.w3.org/2000/svg">
xmlns="http://www.w3.org/2000/svg">
<path d="M63.9 0C30.5 0 3.1 11.9.1 27.1l35.6 6.7c2.9-.9 6.2-1.3 9.6-1.3l16.7-10c-.2-2.5 1.3-5.1 4.7-7.2 4.8-3.1 12.3-4.8 19.9-4.8 5.2-.1 10.5.7 15 2.2 11.2 3.8 13.7 11.1 5.7 16.3-5.1 3.3-13.3 5-21.4 4.8l-22 7.9c-.2 1.6-1.3 3.1-3.4 4.5-5.9 3.8-17.4 4.7-25.6 1.9-3.6-1.2-6-3-7-4.8L2.5 38.4c2.3 3.6 6 6.9 10.8 9.8C5 53 0 59 0 65.5c0 6.4 4.8 12.3 12.9 17.1C4.8 87.3 0 93.2 0 99.6 0 115.3 28.6 128 64 128c35.3 0 64-12.7 64-28.4 0-6.4-4.8-12.3-12.9-17 8.1-4.8 12.9-10.7 12.9-17.1 0-6.5-5-12.6-13.4-17.4 8.3-5.1 13.3-11.4 13.3-18.2 0-16.5-28.7-29.9-64-29.9zm22.8 14.2c-5.2.1-10.2 1.2-13.4 3.3-5.5 3.6-3.8 8.5 3.8 11.1 7.6 2.6 18.1 1.8 23.6-1.8s3.8-8.5-3.8-11c-3.1-1-6.7-1.5-10.2-1.5zm.3 1.7c7.4 0 13.3 2.8 13.3 6.2 0 3.4-5.9 6.2-13.3 6.2s-13.3-2.8-13.3-6.2c0-3.4 5.9-6.2 13.3-6.2zM45.3 34.4c-1.6.1-3.1.2-4.6.4l9.1 1.7a10.8 5 0 1 1-8.1 9.3l-8.9-1.7c1 .9 2.4 1.7 4.3 2.4 6.4 2.2 15.4 1.5 20-1.5s3.2-7.2-3.2-9.3c-2.6-.9-5.7-1.3-8.6-1.3zM109 51v9.3c0 11-20.2 19.9-45 19.9-24.9 0-45-8.9-45-19.9v-9.2c11.5 5.3 27.4 8.6 44.9 8.6 17.6 0 33.6-3.3 45.2-8.7zm0 34.6v8.8c0 11-20.2 19.9-45 19.9-24.9 0-45-8.9-45-19.9v-8.8c11.6 5.1 27.4 8.2 45 8.2s33.5-3.1 45-8.2z"
fill-rule="evenodd"></path>
fill-rule="evenodd"></path>
</svg>
SteamDB
</div>
<div aria-label="Donate to the authors of the project." class="btn btn-sm ml-2 tooltipped tooltipped-ne mb-1" id="smbtn3">
<div aria-label="Donate to the authors of the project." class="btn btn-sm ml-2 tooltipped tooltipped-nw mb-1"
id="smbtn3">
<svg fill="#8B949E" height="16" style="display: inline-block; vertical-align: text-bottom;" viewBox="0 0 16 16"
width="16" xmlns="http://www.w3.org/2000/svg">
width="16" xmlns="http://www.w3.org/2000/svg">
<path d="M2 2.75A2.75 2.75 0 0 1 4.75 0c.983 0 1.873.42 2.57 1.232.268.318.497.668.68 1.042.183-.375.411-.725.68-1.044C9.376.42 10.266 0 11.25 0a2.75 2.75 0 0 1 2.45 4h.55c.966 0 1.75.784 1.75 1.75v2c0 .698-.409 1.301-1 1.582v4.918A1.75 1.75 0 0 1 13.25 16H2.75A1.75 1.75 0 0 1 1 14.25V9.332C.409 9.05 0 8.448 0 7.75v-2C0 4.784.784 4 1.75 4h.55c-.192-.375-.3-.8-.3-1.25ZM7.25 9.5H2.5v4.75c0 .138.112.25.25.25h4.5Zm1.5 0v5h4.5a.25.25 0 0 0 .25-.25V9.5Zm0-4V8h5.5a.25.25 0 0 0 .25-.25v-2a.25.25 0 0 0-.25-.25Zm-7 0a.25.25 0 0 0-.25.25v2c0 .138.112.25.25.25h5.5V5.5h-5.5Zm3-4a1.25 1.25 0 0 0 0 2.5h2.309c-.233-.818-.542-1.401-.878-1.793-.43-.502-.915-.707-1.431-.707ZM8.941 4h2.309a1.25 1.25 0 0 0 0-2.5c-.516 0-1 .205-1.43.707-.337.392-.646.975-.879 1.793Z"
fill-rule="evenodd"></path>
fill-rule="evenodd"></path>
</svg>
Donate
</div>
<div aria-label="View the instructions on how to use SteamDepotDownloaderGUI." class="btn btn-sm ml-2 tooltipped tooltipped-nw mb-1"
id="smbtn4">
<svg fill="#8B949E" width="16" height="16" viewBox="0 0 16 16"
style="display: inline-block; vertical-align: text-bottom;">
<path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8Zm8-6.5a6.5 6.5 0 1 0 0 13 6.5 6.5 0 0 0 0-13ZM6.5 7.75A.75.75 0 0 1 7.25 7h1a.75.75 0 0 1 .75.75v2.75h.25a.75.75 0 0 1 0 1.5h-2a.75.75 0 0 1 0-1.5h.25v-2h-.25a.75.75 0 0 1-.75-.75ZM8 6a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path>
</svg>
Instructions
</div>
</div>
</body>
</html>

18
main.js
View File

@@ -2,19 +2,17 @@ const {app, BrowserWindow, dialog, ipcMain} = require("electron")
const {platformpath} = require("./utils")
const createWindow = () => {
// Create the browser window.
const mainWindow = new BrowserWindow({
autoHideMenuBar: true,
resizable: false,
width: 430,
height: 660,
width: 440,
height: 730,
useContentSize: true,
maximizable: false,
webPreferences: {
nodeIntegration: true,
contextIsolation: false
nodeIntegration: true, contextIsolation: false
}
})
@@ -38,6 +36,14 @@ app.whenReady().then(() => {
// dock icon is clicked and there are no other windows open.
if (BrowserWindow.getAllWindows().length === 0) createWindow()
})
})
// If the page is fully loaded in, send a sign.
app.on("web-contents-created", (event, contents) => {
contents.on("dom-ready", () => {
contents.send("ready")
})
})
// Quit when all windows are closed, except on macOS. There, it's common
@@ -56,7 +62,7 @@ ipcMain.on("selectpath", (event) => {
defaultPath: platformpath(),
buttonLabel: "Select"
}).then(file => {
//console.debug("Has path selection succeeded: " + ((file.canceled) ? "NO" : "YES; see below")) --- doesn't log to the dev console TODO
//console.debug("Has path selection succeeded: " + ((file.canceled) ? "NO" : "YES; see below")) --- doesn't log to the dev console
if (!file.canceled) {
const filepath = file.filePaths[0].toString()
// console.debug("Path selected is " + filepath) --- same thing

195
package-lock.json generated
View File

@@ -1,6 +1,6 @@
{
"name": "steamdepotdownloadergui",
"version": "2.2.0",
"version": "2.3.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
@@ -10,12 +10,12 @@
"license": "GPL-3.0",
"dependencies": {
"elecron": "^0.0.1-security",
"follow-redirects": "^1.15.2"
"follow-redirects": "^1.15.3"
},
"devDependencies": {
"electron": "^25.4.0",
"electron-builder": "^24.6.3",
"eslint": "^8.46.0"
"electron": "^27.0.4",
"electron-builder": "^24.6.4",
"eslint": "^8.53.0"
}
},
"node_modules/@aashutoshrathi/word-wrap": {
@@ -106,13 +106,14 @@
}
},
"node_modules/@electron/notarize": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-1.2.4.tgz",
"integrity": "sha512-W5GQhJEosFNafewnS28d3bpQ37/s91CDWqxVchHfmv2dQSTWpOzNlUVQwYzC1ay5bChRV/A9BTL68yj0Pa+TSg==",
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/@electron/notarize/-/notarize-2.1.0.tgz",
"integrity": "sha512-Q02xem1D0sg4v437xHgmBLxI2iz/fc0D4K7fiVWHa/AnW8o7D751xyKNXgziA6HrTOme9ul1JfWN5ark8WH1xA==",
"dev": true,
"dependencies": {
"debug": "^4.1.1",
"fs-extra": "^9.0.1"
"fs-extra": "^9.0.1",
"promise-retry": "^2.0.1"
},
"engines": {
"node": ">= 10.0.0"
@@ -155,9 +156,9 @@
}
},
"node_modules/@electron/osx-sign": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.4.tgz",
"integrity": "sha512-xfhdEcIOfAZg7scZ9RQPya1G1lWo8/zMCwUXAulq0SfY7ONIW+b9qGyKdMyuMctNYwllrIS+vmxfijSfjeh97g==",
"version": "1.0.5",
"resolved": "https://registry.npmjs.org/@electron/osx-sign/-/osx-sign-1.0.5.tgz",
"integrity": "sha512-k9ZzUQtamSoweGQDV2jILiRIHUu7lYlJ3c6IEmjv1hC17rclE+eb9U+f6UFlOOETo0JzY1HNlXy4YOlCvl+Lww==",
"dev": true,
"dependencies": {
"compare-version": "^0.1.2",
@@ -223,9 +224,9 @@
}
},
"node_modules/@electron/universal": {
"version": "1.3.4",
"resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.3.4.tgz",
"integrity": "sha512-BdhBgm2ZBnYyYRLRgOjM5VHkyFItsbggJ0MHycOjKWdFGYwK97ZFXH54dTvUWEfha81vfvwr5On6XBjt99uDcg==",
"version": "1.4.1",
"resolved": "https://registry.npmjs.org/@electron/universal/-/universal-1.4.1.tgz",
"integrity": "sha512-lE/U3UNw1YHuowNbTmKNs9UlS3En3cPgwM5MI+agIgr/B1hSze9NdOP0qn7boZaI9Lph8IDv3/24g9IxnJP7aQ==",
"dev": true,
"dependencies": {
"@electron/asar": "^3.2.1",
@@ -314,18 +315,18 @@
}
},
"node_modules/@eslint-community/regexpp": {
"version": "4.6.2",
"resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz",
"integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==",
"version": "4.8.0",
"resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.8.0.tgz",
"integrity": "sha512-JylOEEzDiOryeUnFbQz+oViCXS0KsvR1mvHkoMiu5+UiBvy+RYX7tzlIIIEstF/gVa2tj9AQXk3dgnxv6KxhFg==",
"dev": true,
"engines": {
"node": "^12.0.0 || ^14.0.0 || >=16.0.0"
}
},
"node_modules/@eslint/eslintrc": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.1.tgz",
"integrity": "sha512-9t7ZA7NGGK8ckelF0PQCfcxIUzs1Md5rrO6U/c+FIQNanea5UZC0wqKXH4vHBccmu4ZJgZ2idtPeW7+Q2npOEA==",
"version": "2.1.3",
"resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.3.tgz",
"integrity": "sha512-yZzuIG+jnVu6hNSzFEN07e8BxF3uAzYtQb6uDkaYZLo6oYZDCq454c5kB8zxnzfCYyP4MIuyBn10L0DqwujTmA==",
"dev": true,
"dependencies": {
"ajv": "^6.12.4",
@@ -368,21 +369,21 @@
}
},
"node_modules/@eslint/js": {
"version": "8.46.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.46.0.tgz",
"integrity": "sha512-a8TLtmPi8xzPkCbp/OGFUo5yhRkHM2Ko9kOWP4znJr0WAhWyThaw3PnwX4vOTWOAMsV2uRt32PPDcEz63esSaA==",
"version": "8.53.0",
"resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.53.0.tgz",
"integrity": "sha512-Kn7K8dx/5U6+cT1yEhpX1w4PCSg0M+XyRILPgvwcEBjerFWCwQj5sbr3/VmxqV0JGHCBCzyd6LxypEuehypY1w==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
}
},
"node_modules/@humanwhocodes/config-array": {
"version": "0.11.10",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.10.tgz",
"integrity": "sha512-KVVjQmNUepDVGXNuoRRdmmEjruj0KfiGSbS8LVc12LMsWDQzRXJ0qdhN8L8uUigKpfEHRhlaQFY0ib1tnUbNeQ==",
"version": "0.11.13",
"resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz",
"integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==",
"dev": true,
"dependencies": {
"@humanwhocodes/object-schema": "^1.2.1",
"@humanwhocodes/object-schema": "^2.0.1",
"debug": "^4.1.1",
"minimatch": "^3.0.5"
},
@@ -426,9 +427,9 @@
}
},
"node_modules/@humanwhocodes/object-schema": {
"version": "1.2.1",
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz",
"integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==",
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz",
"integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==",
"dev": true
},
"node_modules/@malept/cross-spawn-promise": {
@@ -624,9 +625,9 @@
"dev": true
},
"node_modules/@types/node": {
"version": "18.17.2",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.2.tgz",
"integrity": "sha512-wBo3KqP/PBqje5TI9UTiuL3yWfP6sdPtjtygSOqcYZWT232dfDeDOnkDps5wqZBP9NgGgYrNejinl0faAuE+HQ==",
"version": "18.17.12",
"resolved": "https://registry.npmjs.org/@types/node/-/node-18.17.12.tgz",
"integrity": "sha512-d6xjC9fJ/nSnfDeU0AMDsaJyb1iHsqCSOdi84w4u+SlN/UgQdY5tRhpMzaFYsI4mnpvgTivEaQd0yOUhAtOnEQ==",
"dev": true
},
"node_modules/@types/plist": {
@@ -666,6 +667,12 @@
"@types/node": "*"
}
},
"node_modules/@ungap/structured-clone": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz",
"integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==",
"dev": true
},
"node_modules/@xmldom/xmldom": {
"version": "0.8.10",
"resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz",
@@ -682,9 +689,9 @@
"dev": true
},
"node_modules/acorn": {
"version": "8.10.0",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
"integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==",
"version": "8.11.2",
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz",
"integrity": "sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==",
"dev": true,
"bin": {
"acorn": "bin/acorn"
@@ -770,15 +777,15 @@
"dev": true
},
"node_modules/app-builder-lib": {
"version": "24.6.3",
"resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.6.3.tgz",
"integrity": "sha512-++0Zp7vcCHfXMBGVj7luFxpqvMPk5mcWeTuw7OK0xNAaNtYQTTN0d9YfWRsb1MvviTOOhyHeULWz1CaixrdrDg==",
"version": "24.6.4",
"resolved": "https://registry.npmjs.org/app-builder-lib/-/app-builder-lib-24.6.4.tgz",
"integrity": "sha512-m9931WXb83teb32N0rKg+ulbn6+Hl8NV5SUpVDOVz9MWOXfhV6AQtTdftf51zJJvCQnQugGtSqoLvgw6mdF/Rg==",
"dev": true,
"dependencies": {
"@develar/schema-utils": "~2.6.5",
"@electron/notarize": "^1.2.3",
"@electron/osx-sign": "^1.0.4",
"@electron/universal": "1.3.4",
"@electron/notarize": "2.1.0",
"@electron/osx-sign": "1.0.5",
"@electron/universal": "1.4.1",
"@malept/flatpak-bundler": "^0.4.0",
"@types/fs-extra": "9.0.13",
"7zip-bin": "~5.1.1",
@@ -1440,12 +1447,12 @@
}
},
"node_modules/dmg-builder": {
"version": "24.6.3",
"resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.6.3.tgz",
"integrity": "sha512-O7KNT7OKqtV54fMYUpdlyTOCP5DoPuRMLqMTgxxV2PO8Hj/so6zOl5o8GTs8pdDkeAhJzCFOUNB3BDhgXbUbJg==",
"version": "24.6.4",
"resolved": "https://registry.npmjs.org/dmg-builder/-/dmg-builder-24.6.4.tgz",
"integrity": "sha512-BNcHRc9CWEuI9qt0E655bUBU/j/3wUCYBVKGu1kVpbN5lcUdEJJJeiO0NHK3dgKmra6LUUZlo+mWqc+OCbi0zw==",
"dev": true,
"dependencies": {
"app-builder-lib": "24.6.3",
"app-builder-lib": "24.6.4",
"builder-util": "24.5.0",
"builder-util-runtime": "9.2.1",
"fs-extra": "^10.1.0",
@@ -1565,9 +1572,9 @@
"integrity": "sha512-RS2M4DrK1s0BV84bBVC4pJ1Fu9ZvZ6askTnBmz2ZurFFqeTe0nnYwvP4Iq89gPyzPZ/L5lYrrSP3SjRcIy9eJw=="
},
"node_modules/electron": {
"version": "25.4.0",
"resolved": "https://registry.npmjs.org/electron/-/electron-25.4.0.tgz",
"integrity": "sha512-VLTRxDhL4UvQbqM7pTNENnJo62cdAPZT92N+B7BZQ5Xfok1wuVPEewIjBot4K7U3EpLUuHn1veeLzho3ihiP+Q==",
"version": "27.0.4",
"resolved": "https://registry.npmjs.org/electron/-/electron-27.0.4.tgz",
"integrity": "sha512-ob29rN1mtiyAXzF8HsHd5jh8bYKd9OQDakfdOExi0F7epU97gXPHaj6JPjbBJ/vpki5d32SyKVePW4vxeNZk1A==",
"dev": true,
"hasInstallScript": true,
"dependencies": {
@@ -1583,16 +1590,16 @@
}
},
"node_modules/electron-builder": {
"version": "24.6.3",
"resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.6.3.tgz",
"integrity": "sha512-O6PqhRXwfxCNTXI4BlhELSeYYO6/tqlxRuy+4+xKBokQvwDDjDgZMMoSgAmanVSCuzjE7MZldI9XYrKFk+EQDw==",
"version": "24.6.4",
"resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-24.6.4.tgz",
"integrity": "sha512-uNWQoU7pE7qOaIQ6CJHpBi44RJFVG8OHRBIadUxrsDJVwLLo8Nma3K/EEtx5/UyWAQYdcK4nVPYKoRqBb20hbA==",
"dev": true,
"dependencies": {
"app-builder-lib": "24.6.3",
"app-builder-lib": "24.6.4",
"builder-util": "24.5.0",
"builder-util-runtime": "9.2.1",
"chalk": "^4.1.2",
"dmg-builder": "24.6.3",
"dmg-builder": "24.6.4",
"fs-extra": "^10.1.0",
"is-ci": "^3.0.0",
"lazy-val": "^1.0.5",
@@ -1717,6 +1724,12 @@
"node": ">=6"
}
},
"node_modules/err-code": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz",
"integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==",
"dev": true
},
"node_modules/es6-error": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz",
@@ -1746,18 +1759,19 @@
}
},
"node_modules/eslint": {
"version": "8.46.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.46.0.tgz",
"integrity": "sha512-cIO74PvbW0qU8e0mIvk5IV3ToWdCq5FYG6gWPHHkx6gNdjlbAYvtfHmlCMXxjcoVaIdwy/IAt3+mDkZkfvb2Dg==",
"version": "8.53.0",
"resolved": "https://registry.npmjs.org/eslint/-/eslint-8.53.0.tgz",
"integrity": "sha512-N4VuiPjXDUa4xVeV/GC/RV3hQW9Nw+Y463lkWaKKXKYMvmRiRDAtfpuPFLN+E1/6ZhyR8J2ig+eVREnYgUsiag==",
"dev": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.2.0",
"@eslint-community/regexpp": "^4.6.1",
"@eslint/eslintrc": "^2.1.1",
"@eslint/js": "^8.46.0",
"@humanwhocodes/config-array": "^0.11.10",
"@eslint/eslintrc": "^2.1.3",
"@eslint/js": "8.53.0",
"@humanwhocodes/config-array": "^0.11.13",
"@humanwhocodes/module-importer": "^1.0.1",
"@nodelib/fs.walk": "^1.2.8",
"@ungap/structured-clone": "^1.2.0",
"ajv": "^6.12.4",
"chalk": "^4.0.0",
"cross-spawn": "^7.0.2",
@@ -1765,7 +1779,7 @@
"doctrine": "^3.0.0",
"escape-string-regexp": "^4.0.0",
"eslint-scope": "^7.2.2",
"eslint-visitor-keys": "^3.4.2",
"eslint-visitor-keys": "^3.4.3",
"espree": "^9.6.1",
"esquery": "^1.4.2",
"esutils": "^2.0.2",
@@ -1816,9 +1830,9 @@
}
},
"node_modules/eslint-visitor-keys": {
"version": "3.4.2",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.2.tgz",
"integrity": "sha512-8drBzUEyZ2llkpCA67iYrgEssKDUu68V8ChqqOfFupIaG/LCVPUT+CoGJpT77zJprs4T/W7p07LP7zAIMuweVw==",
"version": "3.4.3",
"resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz",
"integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==",
"dev": true,
"engines": {
"node": "^12.22.0 || ^14.17.0 || >=16.0.0"
@@ -2012,16 +2026,17 @@
}
},
"node_modules/flat-cache": {
"version": "3.0.4",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz",
"integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==",
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.1.0.tgz",
"integrity": "sha512-OHx4Qwrrt0E4jEIcI5/Xb+f+QmJYNj2rrK8wiIdQOIrB9WrrJL8cjZvXdXuBTkkEwEqLycb5BeZDV1o2i9bTew==",
"dev": true,
"dependencies": {
"flatted": "^3.1.0",
"flatted": "^3.2.7",
"keyv": "^4.5.3",
"rimraf": "^3.0.2"
},
"engines": {
"node": "^10.12.0 || >=12.0.0"
"node": ">=12.0.0"
}
},
"node_modules/flatted": {
@@ -2031,9 +2046,9 @@
"dev": true
},
"node_modules/follow-redirects": {
"version": "1.15.2",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz",
"integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
"version": "1.15.3",
"resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz",
"integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==",
"funding": [
{
"type": "individual",
@@ -2243,9 +2258,9 @@
}
},
"node_modules/globals": {
"version": "13.20.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz",
"integrity": "sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==",
"version": "13.23.0",
"resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz",
"integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==",
"dev": true,
"dependencies": {
"type-fest": "^0.20.2"
@@ -3077,6 +3092,19 @@
"node": ">=0.4.0"
}
},
"node_modules/promise-retry": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz",
"integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==",
"dev": true,
"dependencies": {
"err-code": "^2.0.2",
"retry": "^0.12.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/pump": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz",
@@ -3181,6 +3209,15 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/retry": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz",
"integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==",
"dev": true,
"engines": {
"node": ">= 4"
}
},
"node_modules/reusify": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
@@ -3485,9 +3522,9 @@
}
},
"node_modules/tar": {
"version": "6.1.15",
"resolved": "https://registry.npmjs.org/tar/-/tar-6.1.15.tgz",
"integrity": "sha512-/zKt9UyngnxIT/EAGYuxaMYgOIJiP81ab9ZfkILq4oNLPFX50qyYmu7jRj9qeXoxmJHjGlbH0+cm2uy1WCs10A==",
"version": "6.2.0",
"resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz",
"integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==",
"dev": true,
"dependencies": {
"chownr": "^2.0.0",

View File

@@ -1,6 +1,6 @@
{
"name": "steamdepotdownloadergui",
"version": "2.2.0",
"version": "2.3.0",
"description": "DepotDownloader Electron frontend",
"main": "main.js",
"scripts": {
@@ -30,12 +30,12 @@
},
"homepage": "https://github.com/mmvanheusden/SteamDepotDownloaderGUI#readme",
"devDependencies": {
"electron": "^25.4.0",
"electron-builder": "^24.6.3",
"eslint": "^8.46.0"
"electron": "^27.0.4",
"electron-builder": "^24.6.4",
"eslint": "^8.53.0"
},
"dependencies": {
"elecron": "^0.0.1-security",
"follow-redirects": "^1.15.2"
"follow-redirects": "^1.15.3"
}
}

11
package.sh Executable file
View File

@@ -0,0 +1,11 @@
#!/usr/bin/env bash
version=`jq '.version' package.json`
version="${version//\"}"
echo "version = ${version}"
mkdir -p ./dist/release-ready
cp ./dist/SteamDepotDownloaderGUI*.exe ./dist/release-ready/SteamDepotDownloaderGUI-windows-"${version}".exe
cp `ls -d1 dist/* | grep -E "SteamDepotDownloaderGUI-[0-9]+\.[0-9]+\.[0-9]+\.AppImage"` ./dist/release-ready/SteamDepotDownloaderGUI-linux-"${version}"-x64.AppImage
cp `ls -d1 dist/* | grep -E "steamdepotdownloadergui-[0-9]+\.[0-9]+\.[0-9]+\.zip"` ./dist/release-ready/SteamDepotDownloaderGUI-linux-"${version}"-x64.zip
cp `ls -d1 dist/* | grep -E "SteamDepotDownloaderGUI-[0-9]+\.[0-9]+\.[0-9]+\-arm64.AppImage"` ./dist/release-ready/SteamDepotDownloaderGUI-linux-"${version}"-arm64.AppImage
cp `ls -d1 dist/* | grep -E "steamdepotdownloadergui-[0-9]+\.[0-9]+\.[0-9]+\-arm64.zip"` ./dist/release-ready/SteamDepotDownloaderGUI-linux-"${version}"-arm64.zip
echo "done!"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 62 KiB

13
style.css Normal file
View File

@@ -0,0 +1,13 @@
@font-face {
font-family: 'Hubot Sans';
src:
url('Hubot-Sans.woff2') format('woff2 supports variations'),
url('Hubot-Sans.woff2') format('woff2-variations');
font-weight: 770;
font-stretch: expanded;
}
.f1-light {
font-family: 'Hubot Sans', sans-serif;
overflow: hidden;
white-space: nowrap;
}

107
utils.js
View File

@@ -1,5 +1,11 @@
/**
* Checks if dotnet is installed in the system path
*
* **rejects**:
*
* `emptyField` -> One or more required field(s) are not filled in.
*
* `noDotnet` -> `dotnet` has not been found in the path.
* @returns {Promise<unknown>} A promise that resolves to true if dotnet is installed, false otherwise
*/
function preDownloadCheck() {
@@ -13,6 +19,12 @@ function preDownloadCheck() {
input.parentElement.classList.toggle("errored", isInvalid) // toggle the 'errored' class depending on if isInvalid is true or false.
if (isInvalid) unfilledFields++
}
// If the selected OS is Linux, and the terminal selection is the default (11), error.
if (document.getElementById("osdropdown").selectedIndex === 2 && document.getElementById("osdropdown2").selectedIndex === 11) {
document.getElementById("osdropdown2label").classList.add("errored")
unfilledFields++
} else document.getElementById("osdropdown2label").classList.remove("errored")
if (unfilledFields > 0) {
reject("emptyField")
return
@@ -31,7 +43,8 @@ function preDownloadCheck() {
}
})
} else {
// Linux
// Others
// macOS seems to be broken.
const {exec} = require("child_process")
const command = "dotnet --version"
exec(command, function (error) {
@@ -108,7 +121,7 @@ function removeDir(dir,) {
/**
* Unzip a file to the current directory
* @param file The file to unzip, preferably a .zip file
* @param file The zip file to unzip.
* @param target The target directory to unzip to
* @returns {Promise<unknown>} A promise that resolves when the unzip is complete, or rejects if something fails
*/
@@ -151,12 +164,35 @@ const createCommand = () => {
let appid = document.forms["theform"]["appid"].value
let depotid = document.forms["theform"]["depotid"].value
let manifestid = document.forms["theform"]["manifestid"].value
let osdropdown = document.getElementById("osdropdown")
let os = document.getElementById("osdropdown").selectedIndex
let terminal = document.getElementById("osdropdown2").selectedIndex
/* OS dropdown choices
[0] - Windows
[1] - macOS
[2] - Linux
[3] - manual
*/
/* Terminal dropdown choices
[0] - Gnome Terminal
[1] - KDE Konsole
[2] - Xfce terminal
[3] - terminator
[4] - Terminology
[5] - xterm
[6] - Kitty
[7] - LXTerminal
[8] - Tilix
[9] - Deepin Terminal
[10] - cool-retro-term
[11] (default, hidden) - Choose your terminal emulator
*/
// if either the username or password fields are empty, anonymous login is used
let anonymous = username === "" || password === ""
// Allows enormous strings like &$§"&$="§$/"(§NJUIDW>;!%?aQ52V?*['YsDnRy|(+Q 1h6BmnDQp,(Xr&Th _fMMm|*1T5a^HBuJr)EYKdA$~V*9N~74zg3hf9ZH(!HR"§RH§"H(R being used as password
// allow enormous strings like &$§"&$="§$/"(§NJUIDW>;!%?aQ52V?*['YsDnRy|(+Q 1h6BmnDQp,(Xr&Th _fMMm|*1T5a^HBuJr)EYKdA$~V*9N~74zg3hf9ZH(!HR"§RH§"H(R being used as password
password = password.replace(/"/g, "\"\"")
// build the username and password flags into one string, allowing for anonymous login
@@ -164,25 +200,39 @@ const createCommand = () => {
// for some reason exportedFile doesn't have to be imported or exported
// eslint-disable-next-line no-undef
const finalPath = exportedFile + path.sep + appid
console.debug("download path will be: " + finalPath)
const finalPath = (exportedFile + path.sep + appid).replaceAll(" ", "\\ ")
// The final command to run, returned by this function
if (osdropdown.options[osdropdown.selectedIndex].text.includes("Gnome")) {
return `gnome-terminal -e 'bash -c "dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16";bash'`
} else if (osdropdown.options[osdropdown.selectedIndex].text.includes("Windows")) {
if (os === 0) {
return `start cmd.exe /k dotnet ${platformpath()}${path.sep}depotdownloader${path.sep}DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16`
} else if (osdropdown.options[osdropdown.selectedIndex].text.includes("macOS")) {
} else if (os === 1) {
return `osascript -c 'tell application "Terminal" to do script 'dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16'`
} else if (osdropdown.options[osdropdown.selectedIndex].text.includes("Konsole")) {
return `konsole --hold -e "dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16"`
} else if (osdropdown.options[osdropdown.selectedIndex].text.includes("Xfce")) {
return `xfce4-terminal -H -e "dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16"`
} else if (osdropdown.options[osdropdown.selectedIndex].text.includes("Terminator")) {
return `terminator -e 'bash -c "dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16";bash'`
} else if (osdropdown.options[osdropdown.selectedIndex].text.includes("Print command")) {
} else if (os === 2) {
if (terminal === 0) {
return `gnome-terminal -e 'bash -c "dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16";$SHELL'`
} else if (terminal === 1) {
return `konsole --hold -e "dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16"`
} else if (terminal === 2) {
return `xfce4-terminal -H -e "dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16"`
} else if (terminal === 3) {
return `terminator -e 'bash -c "dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16";$SHELL'`
} else if (terminal === 4) {
return `terminology -H -e "dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16"`
} else if (terminal === 5) {
return `xterm -hold -T "Downloading Depot..." -e "dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16"`
} else if (terminal === 6) {
return `kitty --hold sh -c "dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16"`
} else if (terminal === 7) {
return `lxterminal -e "dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16;$SHELL"`
} else if (terminal === 8) {
return `tilix -e sh -c "dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16;$SHELL"`
} else if (terminal === 9) {
return `deepin-terminal -e 'sh -c "dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16;$SHELL"'`
} else if (terminal === 10) {
return `cool-retro-term -e sh -c "cd ${platformpath()} && dotnet ./depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath}/ -max-servers 50 -max-downloads 16;$SHELL"`
}
} else if (os === 3) {
console.log(`COPY-PASTE THE FOLLOWING INTO YOUR TERMINAL OF CHOICE:\n\ndotnet ${platformpath()}/depotdownloader/DepotDownloader.dll ${userpass} -app ${appid} -depot ${depotid} -manifest ${manifestid} -dir ${finalPath} -max-servers 50 -max-downloads 16`)
return "echo hello"
return "echo hi"
}
}
@@ -205,20 +255,27 @@ function runCommand(command) {
/**
* Returns the path where the actual program is being run from, depending on the operating system.
* Because __dirname is inconsistent across operating systems, this function is used to get the correct path
* Because __dirname is inconsistent across operating systems, this function is used to get the correct path.
*
* Windows .exe -> process.env.PORTABLE_EXECUTABLE_DIR
* Linux .appimage -> process.cwd()
* Linux .zip -> process.cwd()
* @returns {string} The absolute path
*/
const platformpath = () => {
if ((__dirname.includes("AppData") || __dirname.includes("Temp")) && process.platform.toString().includes("win")) {
// Windows portable exe
return process.env.PORTABLE_EXECUTABLE_DIR
} else if (__dirname.includes("/tmp/") && process.platform.toString().includes("linux")) {
// Linux AppImage
} else if (/*__dirname.includes("/tmp/") && */process.platform.toString().includes("linux")) {
// in a .zip, __dirname seems to return a broken path, ending with app.asar.
// using process.cwd() fixes that, but might not work on all distros as this has been an issue in the past.
// see commit 894197e75e774f4a17cced00d9862ab3942a8a5a
// Linux AppImage / .zip
return process.cwd()
} else {
// .zip binary
} /*else {
return __dirname
}
}*/
}
module.exports = {preDownloadCheck, download, createCommand, runCommand, removeDir, removeFile, unzip, platformpath}