packer-release 0.23.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- packer_release-0.23.0/LICENSE +21 -0
- packer_release-0.23.0/PKG-INFO +151 -0
- packer_release-0.23.0/README.md +125 -0
- packer_release-0.23.0/pyproject.toml +42 -0
- packer_release-0.23.0/setup.cfg +4 -0
- packer_release-0.23.0/src/packer/__init__.py +7 -0
- packer_release-0.23.0/src/packer/actions.py +25 -0
- packer_release-0.23.0/src/packer/assets/RELEASE.md +70 -0
- packer_release-0.23.0/src/packer/assets/audio/sounds/new notification 1.wav +0 -0
- packer_release-0.23.0/src/packer/assets/audio/sounds/new notification 2.wav +0 -0
- packer_release-0.23.0/src/packer/assets/audio/sounds/new notification 3.wav +0 -0
- packer_release-0.23.0/src/packer/assets/images/Packer icon.ico +0 -0
- packer_release-0.23.0/src/packer/assets/images/Packer icon.png +0 -0
- packer_release-0.23.0/src/packer/assets/integrity.json +1 -0
- packer_release-0.23.0/src/packer/assets/version.json +5 -0
- packer_release-0.23.0/src/packer/change.py +222 -0
- packer_release-0.23.0/src/packer/config.py +360 -0
- packer_release-0.23.0/src/packer/core.py +1131 -0
- packer_release-0.23.0/src/packer/custom_modules/et.py +718 -0
- packer_release-0.23.0/src/packer/custom_modules/etf.py +1071 -0
- packer_release-0.23.0/src/packer/exceptions.py +156 -0
- packer_release-0.23.0/src/packer/main.py +14 -0
- packer_release-0.23.0/src/packer/paths.py +20 -0
- packer_release-0.23.0/src/packer/setup.py +791 -0
- packer_release-0.23.0/src/packer/ui/cli.py +382 -0
- packer_release-0.23.0/src/packer/ui/tui.py +131 -0
- packer_release-0.23.0/src/packer/utils.py +222 -0
- packer_release-0.23.0/src/packer_release.egg-info/PKG-INFO +151 -0
- packer_release-0.23.0/src/packer_release.egg-info/SOURCES.txt +43 -0
- packer_release-0.23.0/src/packer_release.egg-info/dependency_links.txt +1 -0
- packer_release-0.23.0/src/packer_release.egg-info/entry_points.txt +2 -0
- packer_release-0.23.0/src/packer_release.egg-info/requires.txt +17 -0
- packer_release-0.23.0/src/packer_release.egg-info/top_level.txt +1 -0
- packer_release-0.23.0/tests/test 2.py +0 -0
- packer_release-0.23.0/tests/test 3.py +39 -0
- packer_release-0.23.0/tests/test.py +25 -0
- packer_release-0.23.0/tests/test4.py +13 -0
- packer_release-0.23.0/tests/test_build_project_wheel.py +0 -0
- packer_release-0.23.0/tests/test_changelog_filtering.py +47 -0
- packer_release-0.23.0/tests/test_cli_clear.py +26 -0
- packer_release-0.23.0/tests/test_cli_version_resolution.py +21 -0
- packer_release-0.23.0/tests/test_exception_handler.py +27 -0
- packer_release-0.23.0/tests/test_settings_merge.py +29 -0
- packer_release-0.23.0/tests/test_setup_scaffold_exceptions.py +16 -0
- packer_release-0.23.0/tests/test_smooth_output_queue.py +24 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 EMILIO
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: packer-release
|
|
3
|
+
Version: 0.23.0
|
|
4
|
+
Summary: A Python automation tool that streamlines python software release workflows
|
|
5
|
+
Requires-Python: >=3.10
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Requires-Dist: ollama
|
|
9
|
+
Requires-Dist: pygithub
|
|
10
|
+
Requires-Dist: requests
|
|
11
|
+
Requires-Dist: platformdirs
|
|
12
|
+
Requires-Dist: GitPython
|
|
13
|
+
Requires-Dist: dirhash
|
|
14
|
+
Requires-Dist: pyinstaller
|
|
15
|
+
Requires-Dist: tomlkit
|
|
16
|
+
Requires-Dist: pyzipper
|
|
17
|
+
Requires-Dist: pyperclip
|
|
18
|
+
Requires-Dist: plyer
|
|
19
|
+
Requires-Dist: argcomplete
|
|
20
|
+
Requires-Dist: pygame
|
|
21
|
+
Requires-Dist: cryptography
|
|
22
|
+
Requires-Dist: tdqm
|
|
23
|
+
Requires-Dist: build
|
|
24
|
+
Requires-Dist: twine
|
|
25
|
+
Dynamic: license-file
|
|
26
|
+
|
|
27
|
+
# Packer
|
|
28
|
+
|
|
29
|
+
A Python automation tool that streamlines Python release workflows: creating optimized archives, uploading releases to GoFile, updating Git repositories, and publishing GitHub releases with AI-generated notes.
|
|
30
|
+
|
|
31
|
+
## Contents
|
|
32
|
+
|
|
33
|
+
- [Installation](#installation)
|
|
34
|
+
- [Binary Downloads](#binary-downloads)
|
|
35
|
+
- [Usage](#usage)
|
|
36
|
+
- [Demos](#demos)
|
|
37
|
+
- [Configuration](#configuration)
|
|
38
|
+
- [Settings](#settings)
|
|
39
|
+
- [Config](#config)
|
|
40
|
+
- [Extra customization](#extra-customization)
|
|
41
|
+
- [Extra notes](#extra-notes)
|
|
42
|
+
- [Warning](#warning)
|
|
43
|
+
- [Features](#features)
|
|
44
|
+
- [Feedback and Suggestions](#feedback-and-suggestions)
|
|
45
|
+
- [Honorable mentions](#honorable-mentions)
|
|
46
|
+
- [Changelog](#changelog)
|
|
47
|
+
- [In future updates](#in-future-updates)
|
|
48
|
+
|
|
49
|
+
## Installation
|
|
50
|
+
|
|
51
|
+
Available via:
|
|
52
|
+
|
|
53
|
+
* **GitHub Releases:** [GitHub Releases](https://github.com/EMILIO888real/Packer/releases/)
|
|
54
|
+
* **Third-party website (GoFile):** [Archive](https://gofile.io/d/OktQl5)
|
|
55
|
+
|
|
56
|
+
You can also install from source in a virtual environment:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
python -m venv .venv
|
|
60
|
+
source .venv/bin/activate
|
|
61
|
+
pip install .
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### Binary Downloads
|
|
65
|
+
|
|
66
|
+
When downloading, please choose the correct build for your operating system:
|
|
67
|
+
|
|
68
|
+
| File Name | Platform | Description |
|
|
69
|
+
| --- | --- | --- |
|
|
70
|
+
| `packer` | Linux/macOS | Executable for Unix-based systems. |
|
|
71
|
+
| `packer.exe` | Windows | Executable for Windows systems. |
|
|
72
|
+
|
|
73
|
+
### To install:
|
|
74
|
+
|
|
75
|
+
* **GitHub:** Download the appropriate binary or archive for your system from the [Releases page](https://github.com/EMILIO888real/Packer/releases/).
|
|
76
|
+
* **Third-party website (GoFile):** Head to the website [Archive](https://gofile.io/d/OktQl5) and download the specific archive for the desired version.
|
|
77
|
+
|
|
78
|
+
After installing, continue following instructions in this README.
|
|
79
|
+
|
|
80
|
+
## Usage
|
|
81
|
+
|
|
82
|
+
After installing the project, you can run it from the command line using the package entry points.
|
|
83
|
+
|
|
84
|
+
### Basic example
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
python -m packer.main
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
If the package is installed in your environment, you can also run:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
packer
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Demos
|
|
97
|
+
|
|
98
|
+
- `TUI release Demo` - [Watch on youtube](https://youtu.be/dSdyEvqs394)
|
|
99
|
+
- `CLI setup demo` - [Watch on youtube](https://youtu.be/ZC9x80sogzA)
|
|
100
|
+
- `CLI change demo` - [Watch on youtube](https://youtu.be/TEoaclmCq2w)
|
|
101
|
+
|
|
102
|
+
## Configuration
|
|
103
|
+
|
|
104
|
+
### Settings
|
|
105
|
+
|
|
106
|
+
See [docs/SETTINGS.md](docs/SETTINGS.md#L1) for global Packer settings and [docs/PROJECT.md](docs/PROJECT.md#L1) for project-specific settings. For CLI options, see [docs/CLI.md](docs/CLI.md#L1).
|
|
107
|
+
|
|
108
|
+
### Config
|
|
109
|
+
|
|
110
|
+
Packer expects a project layout with `src/` code and an `assets/` folder containing at least `version.json` and `integrity.json`. A `CHANGELOG.md` at the project root is required for release-note generation.
|
|
111
|
+
|
|
112
|
+
### Extra customization
|
|
113
|
+
|
|
114
|
+
See [docs/PROJECT.md](docs/PROJECT.md#L1) for notes about adding custom assets and creating profiles.
|
|
115
|
+
|
|
116
|
+
## Extra notes
|
|
117
|
+
|
|
118
|
+
- Packer integrates with GoFile for archive hosting and GitHub for release publishing.
|
|
119
|
+
- Optional compilation via Nuitka is supported for producing compiled releases.
|
|
120
|
+
|
|
121
|
+
## Warning
|
|
122
|
+
|
|
123
|
+
- Possible problems might arise in that case, please back up your project before running for the first time and even if packer messed up, it won't destroy or corrupt your project so GL fixing it! Here is also a guide for manually reverting a release in case it fails catastrophically: [docs/MANUAL_REVERT.md](docs/MANUAL_REVERT.md#L1).
|
|
124
|
+
- Note that automatic error reporting is enabled by default. *You can disable it in the settings*
|
|
125
|
+
|
|
126
|
+
## Features
|
|
127
|
+
|
|
128
|
+
- Archive Creation: Packages your program with customizable exclusion rules.
|
|
129
|
+
- Cloud Upload: Uploads archives to GoFile with optional folder management.
|
|
130
|
+
- Git Integration: Handles repository updates and tagging.
|
|
131
|
+
- GitHub Releases: Publishes releases with AI-generated titles and descriptions.
|
|
132
|
+
- Optional Compilation: Supports Nuitka for compiled distributions.
|
|
133
|
+
- Error Handling: Automatic rollback to previous version if a step fails.
|
|
134
|
+
- AI-Powered: Uses Ollama (when available) to generate release notes.
|
|
135
|
+
|
|
136
|
+
## Feedback and Suggestions
|
|
137
|
+
|
|
138
|
+
Please open issues or pull requests on the project's GitHub repository, or email [emilspro888@gmail.com] to suggest improvements or report bugs.
|
|
139
|
+
|
|
140
|
+
## Honorable mentions
|
|
141
|
+
|
|
142
|
+
- Ollama — used for AI-generated release notes (optional).
|
|
143
|
+
- GoFile — used as archive hosting provider.
|
|
144
|
+
|
|
145
|
+
## Changelog
|
|
146
|
+
|
|
147
|
+
See the full history in [CHANGELOG.md](./CHANGELOG.md#L1).
|
|
148
|
+
|
|
149
|
+
## In future updates
|
|
150
|
+
|
|
151
|
+
See planned features and roadmap in [docs/ROADMAP.md](docs/ROADMAP.md#L1).
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
# Packer
|
|
2
|
+
|
|
3
|
+
A Python automation tool that streamlines Python release workflows: creating optimized archives, uploading releases to GoFile, updating Git repositories, and publishing GitHub releases with AI-generated notes.
|
|
4
|
+
|
|
5
|
+
## Contents
|
|
6
|
+
|
|
7
|
+
- [Installation](#installation)
|
|
8
|
+
- [Binary Downloads](#binary-downloads)
|
|
9
|
+
- [Usage](#usage)
|
|
10
|
+
- [Demos](#demos)
|
|
11
|
+
- [Configuration](#configuration)
|
|
12
|
+
- [Settings](#settings)
|
|
13
|
+
- [Config](#config)
|
|
14
|
+
- [Extra customization](#extra-customization)
|
|
15
|
+
- [Extra notes](#extra-notes)
|
|
16
|
+
- [Warning](#warning)
|
|
17
|
+
- [Features](#features)
|
|
18
|
+
- [Feedback and Suggestions](#feedback-and-suggestions)
|
|
19
|
+
- [Honorable mentions](#honorable-mentions)
|
|
20
|
+
- [Changelog](#changelog)
|
|
21
|
+
- [In future updates](#in-future-updates)
|
|
22
|
+
|
|
23
|
+
## Installation
|
|
24
|
+
|
|
25
|
+
Available via:
|
|
26
|
+
|
|
27
|
+
* **GitHub Releases:** [GitHub Releases](https://github.com/EMILIO888real/Packer/releases/)
|
|
28
|
+
* **Third-party website (GoFile):** [Archive](https://gofile.io/d/OktQl5)
|
|
29
|
+
|
|
30
|
+
You can also install from source in a virtual environment:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
python -m venv .venv
|
|
34
|
+
source .venv/bin/activate
|
|
35
|
+
pip install .
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Binary Downloads
|
|
39
|
+
|
|
40
|
+
When downloading, please choose the correct build for your operating system:
|
|
41
|
+
|
|
42
|
+
| File Name | Platform | Description |
|
|
43
|
+
| --- | --- | --- |
|
|
44
|
+
| `packer` | Linux/macOS | Executable for Unix-based systems. |
|
|
45
|
+
| `packer.exe` | Windows | Executable for Windows systems. |
|
|
46
|
+
|
|
47
|
+
### To install:
|
|
48
|
+
|
|
49
|
+
* **GitHub:** Download the appropriate binary or archive for your system from the [Releases page](https://github.com/EMILIO888real/Packer/releases/).
|
|
50
|
+
* **Third-party website (GoFile):** Head to the website [Archive](https://gofile.io/d/OktQl5) and download the specific archive for the desired version.
|
|
51
|
+
|
|
52
|
+
After installing, continue following instructions in this README.
|
|
53
|
+
|
|
54
|
+
## Usage
|
|
55
|
+
|
|
56
|
+
After installing the project, you can run it from the command line using the package entry points.
|
|
57
|
+
|
|
58
|
+
### Basic example
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
python -m packer.main
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
If the package is installed in your environment, you can also run:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
packer
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Demos
|
|
71
|
+
|
|
72
|
+
- `TUI release Demo` - [Watch on youtube](https://youtu.be/dSdyEvqs394)
|
|
73
|
+
- `CLI setup demo` - [Watch on youtube](https://youtu.be/ZC9x80sogzA)
|
|
74
|
+
- `CLI change demo` - [Watch on youtube](https://youtu.be/TEoaclmCq2w)
|
|
75
|
+
|
|
76
|
+
## Configuration
|
|
77
|
+
|
|
78
|
+
### Settings
|
|
79
|
+
|
|
80
|
+
See [docs/SETTINGS.md](docs/SETTINGS.md#L1) for global Packer settings and [docs/PROJECT.md](docs/PROJECT.md#L1) for project-specific settings. For CLI options, see [docs/CLI.md](docs/CLI.md#L1).
|
|
81
|
+
|
|
82
|
+
### Config
|
|
83
|
+
|
|
84
|
+
Packer expects a project layout with `src/` code and an `assets/` folder containing at least `version.json` and `integrity.json`. A `CHANGELOG.md` at the project root is required for release-note generation.
|
|
85
|
+
|
|
86
|
+
### Extra customization
|
|
87
|
+
|
|
88
|
+
See [docs/PROJECT.md](docs/PROJECT.md#L1) for notes about adding custom assets and creating profiles.
|
|
89
|
+
|
|
90
|
+
## Extra notes
|
|
91
|
+
|
|
92
|
+
- Packer integrates with GoFile for archive hosting and GitHub for release publishing.
|
|
93
|
+
- Optional compilation via Nuitka is supported for producing compiled releases.
|
|
94
|
+
|
|
95
|
+
## Warning
|
|
96
|
+
|
|
97
|
+
- Possible problems might arise in that case, please back up your project before running for the first time and even if packer messed up, it won't destroy or corrupt your project so GL fixing it! Here is also a guide for manually reverting a release in case it fails catastrophically: [docs/MANUAL_REVERT.md](docs/MANUAL_REVERT.md#L1).
|
|
98
|
+
- Note that automatic error reporting is enabled by default. *You can disable it in the settings*
|
|
99
|
+
|
|
100
|
+
## Features
|
|
101
|
+
|
|
102
|
+
- Archive Creation: Packages your program with customizable exclusion rules.
|
|
103
|
+
- Cloud Upload: Uploads archives to GoFile with optional folder management.
|
|
104
|
+
- Git Integration: Handles repository updates and tagging.
|
|
105
|
+
- GitHub Releases: Publishes releases with AI-generated titles and descriptions.
|
|
106
|
+
- Optional Compilation: Supports Nuitka for compiled distributions.
|
|
107
|
+
- Error Handling: Automatic rollback to previous version if a step fails.
|
|
108
|
+
- AI-Powered: Uses Ollama (when available) to generate release notes.
|
|
109
|
+
|
|
110
|
+
## Feedback and Suggestions
|
|
111
|
+
|
|
112
|
+
Please open issues or pull requests on the project's GitHub repository, or email [emilspro888@gmail.com] to suggest improvements or report bugs.
|
|
113
|
+
|
|
114
|
+
## Honorable mentions
|
|
115
|
+
|
|
116
|
+
- Ollama — used for AI-generated release notes (optional).
|
|
117
|
+
- GoFile — used as archive hosting provider.
|
|
118
|
+
|
|
119
|
+
## Changelog
|
|
120
|
+
|
|
121
|
+
See the full history in [CHANGELOG.md](./CHANGELOG.md#L1).
|
|
122
|
+
|
|
123
|
+
## In future updates
|
|
124
|
+
|
|
125
|
+
See planned features and roadmap in [docs/ROADMAP.md](docs/ROADMAP.md#L1).
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "packer-release"
|
|
7
|
+
version = "0.23.0"
|
|
8
|
+
description = "A Python automation tool that streamlines python software release workflows"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
dependencies = [
|
|
12
|
+
"ollama",
|
|
13
|
+
"pygithub",
|
|
14
|
+
"requests",
|
|
15
|
+
"platformdirs",
|
|
16
|
+
"GitPython",
|
|
17
|
+
"dirhash",
|
|
18
|
+
"pyinstaller",
|
|
19
|
+
"tomlkit",
|
|
20
|
+
"pyzipper",
|
|
21
|
+
"pyperclip",
|
|
22
|
+
"plyer",
|
|
23
|
+
"argcomplete",
|
|
24
|
+
"pygame",
|
|
25
|
+
"cryptography",
|
|
26
|
+
"tdqm",
|
|
27
|
+
"build",
|
|
28
|
+
"twine"
|
|
29
|
+
]
|
|
30
|
+
|
|
31
|
+
[tool.setuptools]
|
|
32
|
+
include-package-data = true
|
|
33
|
+
package-dir = {"" = "src"}
|
|
34
|
+
|
|
35
|
+
[tool.setuptools.packages.find]
|
|
36
|
+
where = ["src"]
|
|
37
|
+
|
|
38
|
+
[tool.setuptools.package-data]
|
|
39
|
+
packer = ["assets/**/*"]
|
|
40
|
+
|
|
41
|
+
[project.scripts]
|
|
42
|
+
packer = "packer.main:main"
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
from packer.core import Packer
|
|
2
|
+
from packer.setup import main as setup
|
|
3
|
+
from packer.change import main as commit_change
|
|
4
|
+
from packer.custom_modules.et import load_config, simple_merge_settings, normalize_settings_keys, tree
|
|
5
|
+
from packer.exceptions import Global_exception_handler
|
|
6
|
+
|
|
7
|
+
__all__ = ['load_config', 'Packer', 'setup', 'commit_change', 'simple_merge_settings', 'normalize_settings_keys', 'Global_exception_handler', 'tree']
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
from pathlib import Path
|
|
2
|
+
|
|
3
|
+
from packer.config import Project, all_settings, send_notification, exception_handler
|
|
4
|
+
import sys
|
|
5
|
+
|
|
6
|
+
from packer.core import Packer
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def run(new_version: dict, project_directory: Path, project_configuration: Project):
|
|
10
|
+
|
|
11
|
+
try:
|
|
12
|
+
packer = Packer(new_version, project_directory, **project_configuration.model_dump())
|
|
13
|
+
|
|
14
|
+
def packer_exception_handler(exc_type, exc_value, exc_traceback):
|
|
15
|
+
packer.revert_changes(False)
|
|
16
|
+
if all_settings.desktop_notifications:
|
|
17
|
+
send_notification('Packer encountered an error and reverted all changes.', 'error')
|
|
18
|
+
exception_handler.handle_exception(exc_type, exc_value, exc_traceback)
|
|
19
|
+
|
|
20
|
+
sys.excepthook = packer_exception_handler # replace the global exception handler with packer's to revert changes in case Packer was running.
|
|
21
|
+
|
|
22
|
+
packer.run()
|
|
23
|
+
except KeyboardInterrupt:
|
|
24
|
+
packer.print_and_log('Process interrupted by user!', [255, 255, 0], level=30)
|
|
25
|
+
packer.revert_changes()
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# $program_name Update [$new_version]
|
|
2
|
+
|
|
3
|
+
$version_description
|
|
4
|
+
|
|
5
|
+
## Installation
|
|
6
|
+
|
|
7
|
+
Available via:
|
|
8
|
+
|
|
9
|
+
* **GitHub:** [GitHub Releases](https://github.com/${github_repo_url}/releases/tag/${new_version})
|
|
10
|
+
* **Third-party website (GoFile):** [Archive]($gofile_download_url) (click the download button).
|
|
11
|
+
|
|
12
|
+
### Binary Downloads
|
|
13
|
+
|
|
14
|
+
When downloading, please choose the correct build for your operating system:
|
|
15
|
+
|
|
16
|
+
| File Name | Platform | Description |
|
|
17
|
+
| --- | --- | --- |
|
|
18
|
+
| `$program_name` | Linux/macOS | Executable for Unix-based systems. |
|
|
19
|
+
| `$program_name.exe` | Windows | Executable for Windows systems. |
|
|
20
|
+
|
|
21
|
+
### To install:
|
|
22
|
+
|
|
23
|
+
* **GitHub:**
|
|
24
|
+
Download the appropriate binary for your system from the [Releases page](https://github.com/${github_repo_url}/releases/tag/${new_version}).
|
|
25
|
+
* **Third-party website (GoFile):**
|
|
26
|
+
Head to the website [Archive]($gofile_download_url) and download the specific arhive with the appropriate version.
|
|
27
|
+
|
|
28
|
+
After installing, continue following instructions via the README.
|
|
29
|
+
|
|
30
|
+
## Changes in $new_version
|
|
31
|
+
|
|
32
|
+
$latest_changelog
|
|
33
|
+
|
|
34
|
+
[Full changelog](https://github.com/${github_repo_url}/blob/master/CHANGELOG.md)
|
|
35
|
+
|
|
36
|
+
## Tips
|
|
37
|
+
|
|
38
|
+
If you prefer to build from source via **GitHub**, you can clone the repository using:
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
git clone https://github.com/${github_repo_url} --depth 1
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Using `--depth 1` creates a "shallow clone," which only downloads the latest commit, saving you significant time and storage space compared to a full repository clone.
|
|
46
|
+
|
|
47
|
+
While downloading the pre-compiled binaries (like `$program_name` or `$program_name.exe`) is usually the fastest way to get started, cloning the repository allows you to easily pull future updates with `git pull` as they are released.
|
|
48
|
+
|
|
49
|
+
## Verification
|
|
50
|
+
|
|
51
|
+
To ensure the integrity of the downloaded files, you can verify their SHA256 checksums.
|
|
52
|
+
|
|
53
|
+
### How to verify:
|
|
54
|
+
|
|
55
|
+
* **Windows (PowerShell):**
|
|
56
|
+
Open PowerShell and run the following command:
|
|
57
|
+
```powershell
|
|
58
|
+
Get-FileHash .\$program_name.exe -Algorithm SHA256
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
* **Linux/macOS (Terminal):**
|
|
64
|
+
Open your terminal and run:
|
|
65
|
+
```bash
|
|
66
|
+
sha256sum $program_name
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Compare the resulting hash with the one provided in the GitHub release assets list to ensure it matches.
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"CWD": {"root_hash": "8630217fe25a8f5cffc622b9825526bc14ba74e1a5c0962da2eb4699b84232ea", "tree": {"files": {".gitignore": "d7ba4a10f60365e1b1ebad9c6df3aea7acbd0ae29b3732c614db22d65e0f89fc", "CHANGELOG.md": "bf7d79f61f5080f8bd48996e42d1a6cd14611f12ebb5e61d455391b054f3d84f", "LICENSE": "bf1c380e8205fa5c7872101cd09794e8c1d313d4326c2a7a21a9c150584d2f96", "README.md": "aa3284a20fe8f30bad89b895ccd5473ff6c4c66c4a098937a5a34f2a2ac64cd2", "main.spec": "cc61795424a36b70d1c9d1b0051e445c55610f1a45389206a8f6500855ccc00b", "pyproject.toml": "68e06cb39201354dae20165ec1494116310fa85687da883bb04814c5c84af062"}, ".github": {"workflows": {"files": {"build.yaml": "a5c406080d9bb26d57ef5a6c265ae145309171f3087a6daac63a97494ad196b6"}}}, "docs": {"files": {"CLI.md": "acfcc4d27a6789e3b90cd12ecbb94a7602bead7562cd123e5b68ee6add353fda", "MANUAL_REVERT.md": "ff061a209167f7ab303601ef3a49b147fad54616b955e53a73e103bd332eeac4", "PROJECT.md": "25021c22dfdd43b862f83ca182c528f92d6c5066e29488eeb1a20cea092051b5", "ROADMAP.md": "7aa1b20b64eda32e2482e649932d4bef3b98ebf58de6404f16d03bb018bde8a7", "SETTINGS.md": "0c3625de0701598340879af51261b970135f22ecedd3c677bb8bbdedd1e1be01"}}, "src": {"packer": {"files": {"__init__.py": "2f79f39d09df2cf1f2244835e20904c382ea1344851349a49908beb0a0a4e5a0", "actions.py": "062ec62bcd99b75d679a69aa01c1e9c1afba723bb4ef8480e5236df6de57a634", "change.py": "502cf95c317be92656611a15f9a4292e26d8ce5bf1f011454ab1ef58a8a07a7f", "config.py": "d07e0fd1aa831e649491a459f286f8dade61bbbe043084fd61fa95775607ee52", "core.py": "d9946fb705161189172168f71cbe60481bb656c639d28d77c62740a1498a3c7d", "exceptions.py": "cc4af0b3a01f920badae03f9cc4a702363594d8a77a7a3a0469418bd88b5bb87", "main.py": "5a6218853b4961eefe4100531614a4f889c8b8a6aef03c9071e13b0539f3a512", "paths.py": "691b5fb411de0194382b698754bc0b29969c401823547e5ad7eddfb5ade18322", "setup.py": "a2cecc29f53a8daac96629b015c3eeb0531d115499df7500e3918a1357f0f903", "utils.py": "715ebf84d5b611c97bdcd27e79d42a8259c9170d12902ffd1ff51cf8bea15e78"}, "assets": {"files": {"RELEASE.md": "22f25566487db873890765dd0d98059ad59358606db52daa175b2d0c0500f703", "integrity.json": "4b8972f0d88174e1db151260410eb0c2a16aa70293baef224ffe5ebff3009672", "version.json": "6a079cf0fad3cb40c726916a02a31997fb2c41e61de8192a8a919bccb5909931"}, "audio": {"sounds": {"files": {"new notification 1.wav": "47a227b0403611b4d650dd4322e8784ac8154ac80abbe73b1c259df755daf8da", "new notification 2.wav": "d7a0e41e28cdbaf92fcf77da82f1656c5284e79557f5bdd143d504bb00c3aa81", "new notification 3.wav": "0b3200bd3c279b4acc901c35cd899b1e3da62b6283bf34b8aea96fb82987dae4"}}}, "images": {"files": {"Packer icon.ico": "311cfef9f20c3d377bc3d3b19751a67f66e373cd4c6a5c80294e3dee3deca947", "Packer icon.png": "1d80eca39a6ff0e147ab8795fc6dc2d01b67e5a447780ba94dcee50f86ebd715"}}}, "custom_modules": {"files": {"et.py": "e4c6fb8d81b35f82f8dc6f4940fea9800e2bed2f7aaac1a7e84149852e8c3ce6", "etf.py": "885036a0b0ccd854eb4e4d93d4b2df815984d1a19f4c6ae628379e5ad731af94"}}, "ui": {"files": {"cli.py": "3775d67cf64fe28b39eabef33a5aa985a32b5e06fe2d3a14293d4b72ab8fac6e", "tui.py": "3a81c5e6bede48e2d31bac5ff950d7b110640bd17edcb4bdcf7789c2d77f8d40"}}}}}}}
|