1313
1414## 🛠️ Usage Examples
1515
16+ ### my-unicorn self-update
17+
18+ ``` bash
19+ # Check for update
20+ my-unicorn self-update --check-only
21+
22+ # Update my-unicorn
23+ my-unicorn self-update
24+ ```
25+
1626### Installation
1727
1828``` bash
1929# Install via URL
20- python run.py install https://github.com/johannesjo/super-productivity
30+ my-unicorn install https://github.com/johannesjo/super-productivity
2131
2232# Install from catalog
23- python run.py install appflowy,qownotes
33+ my-unicorn install appflowy,qownotes
34+ my-unicorn install appflowy qownotes
2435
2536# Install with options
26- python run.py install appflowy --no-icon --no-verify
37+ my-unicorn install appflowy --no-icon --no-verify
2738```
2839
2940### Updates
3041
3142``` bash
32- # Check for updates
33- python run.py update --check-only
43+ # Check for updates without installation
44+ my-unicorn update --check-only
3445
3546# Update specific apps
36- python run.py update appflowy,joplin
47+ my-unicorn update appflowy,joplin
3748
3849# Update all installed apps
39- python run.py update
50+ my-unicorn update
4051```
4152
4253### Management
4354
4455``` bash
4556# List installed apps
46- python run.py list
57+ my-unicorn list
4758
4859# List available catalog apps
49- python run.py list --available
60+ my-unicorn list --available
5061
5162# Remove apps
52- python run.py remove appflowy --keep-config
63+ my-unicorn remove appflowy --keep-config
5364
5465# Show configuration
55- python run.py config --show
66+ my-unicorn config --show
5667```
5768
5869### Authentication
5970
6071``` bash
6172# Save GitHub token
62- python run.py auth --save-token
73+ my-unicorn auth --save-token
6374
6475# Check auth status
65- python run.py auth --status
76+ my-unicorn auth --status
6677
6778# Remove token
68- python run.py auth --remove-token
79+ my-unicorn auth --remove-token
6980```
7081
7182### Backup
@@ -74,45 +85,48 @@ python run.py auth --remove-token
7485
7586``` bash
7687# Create backup of current version
77- backup < app_name>
88+ my-unicorn backup < app_name>
7889
7990# Restore latest backup version
80- backup < app_name> --restore-last
91+ my-unicorn backup < app_name> --restore-last
8192
8293# Restore specific version
83- backup < app_name> --restore-version < version>
94+ my-unicorn backup < app_name> --restore-version < version>
8495```
8596
8697#### Information & Management
8798
8899``` bash
89100# List backups for specific app
90- backup < app_name> --list-backups
101+ my-unicorn backup < app_name> --list-backups
91102
92103# List all apps with backups
93- backup --list-backups
104+ my-unicorn backup --list-backups
94105
95106# Show detailed backup info
96- backup < app_name> --info
107+ my-unicorn backup < app_name> --info
97108
98109# Clean up old backups
99- backup --cleanup # All apps
100- backup < app_name> --cleanup # Specific app
110+ my-unicorn backup --cleanup # All apps
111+ my-unicorn backup < app_name> --cleanup # Specific app
101112
102113# Migrate old backup format
103- backup --migrate
114+ my-unicorn backup --migrate
104115```
105116
106117## 📋 Dependencies
107118
108- ### Core (working now)
119+ ### Core
109120
110121- Python 3.12+
111122
112123### Required Dependencies
113124
125+ > [ !TIP]
126+ > These dependencies are already installed when you used my-unicorn-installer.sh to install my-unicorn.
127+
114128``` bash
115- pip install aiohttp uvloop tqdm keyring orjson
129+ pip install aiohttp uvloop tqdm keyring orjson packaging
116130```
117131
118132### Config Management
@@ -172,9 +186,24 @@ cache = "~/.config/my-unicorn/cache"
172186tmp = " ~/.config/my-unicorn/tmp"
173187```
174188
175- #### Catalog Entry (catalog/appflowy.json)
189+ #### Catalog Configuration
176190
177- ``` json
191+ ##### 1. ** Catalog Configuration Folder Structure**
192+
193+ > [ !NOTE]
194+ > Catalog entries are JSON files that contain metadata about the app, such as its name, version, and download URL.
195+ > It's stored in the repository.
196+
197+ ```
198+ my-unicorn/my_unicorn/catalog/
199+ ├── appflowy.json
200+ ├── freetube.json
201+ └── obsidian.json
202+ ```
203+
204+ ##### Catalog Entry JSON Structure
205+
206+ ``` jsonc
178207{
179208 " owner" : " AppFlowy-IO" ,
180209 " repo" : " AppFlowy" ,
@@ -183,13 +212,13 @@ tmp = "~/.config/my-unicorn/tmp"
183212 " rename" : " AppFlowy" ,
184213 " name_template" : " {rename}-{latest_version}-linux-{characteristic_suffix}.AppImage" ,
185214 // List of suffixes that are preferred for the AppImage filename. (e.g `x86_64`, `linux`, `Qt6`)
186- "characteristic_suffix" : [" " ]
215+ " characteristic_suffix" : [" " ],
187216 },
188217 " github" : {
189218 // app installed from github repo
190219 " repo" : true ,
191220 // Beta/prerelease used to download the latest beta version of the appimage.
192- "prerelease" : false
221+ " prerelease" : false ,
193222 },
194223 " verification" : {
195224 // provided by the github api if the developer provides it.
@@ -201,50 +230,48 @@ tmp = "~/.config/my-unicorn/tmp"
201230 // This is the hash type of the checksum file.
202231 // - sha256 example files: SHA256SUMS.txt, <appimage_name>.AppImage.sha256sum
203232 // - sha512 example files: latest-linux.yml, <appimage_name>.AppImage.sha512sum
204- "checksum_hash_type" : " "
233+ " checksum_hash_type" : " " ,
205234 },
206235 " icon" : {
207236 // direct link to an SVG image file hosted on GitHub's raw content server
208237 " url" : " https://raw.githubusercontent.com/AppFlowy-IO/AppFlowy/main/frontend/resources/flowy_icons/40x/app_logo.svg" ,
209238 // used to name the icon file.
210- "name" : " appflowy.svg"
211- }
239+ " name" : " appflowy.svg" ,
240+ },
212241}
213242```
214243
215- ``` json
216- {
217- "owner" : " FreeTubeApp" ,
218- "repo" : " FreeTube" ,
219- "appimage" : {
220- "rename" : " freetube" ,
221- "name_template" : " {rename}-{latest_version}-{characteristic_suffix}.AppImage" ,
222- "characteristic_suffix" : [" amd64" , " x86_64" ]
223- },
224- "github" : {
225- "repo" : true ,
226- "prerelease" : true
227- },
228- "verification" : {
229- "digest" : false ,
230- "skip" : true ,
231- "checksum_file" : " " ,
232- "checksum_hash_type" : " sha256"
233- },
234- "icon" : {
235- "url" : " https://raw.githubusercontent.com/FreeTubeApp/FreeTube/development/_icons/icon.svg" ,
236- "name" : " freetube.svg"
237- }
238- }
244+ #### App-specific Configuration
245+
246+ > [ !NOTE]
247+ > Each of these files also represents the state of the installed appimages.
248+ > appimage_version and appimage_name are mandatory fields.
249+ > Other fields are needed only if the user installed unsupported appimage(with URL install)
250+
251+ ##### 1. ** Configuration Folder Structure**
252+
253+ ```
254+ ~/.config/my-unicorn/
255+ ├── tmp/
256+ ├── cache/
257+ ├── settings.conf
258+ ├── apps/
259+ │ ├── appflowy.json
260+ │ ├── obsidian.json
261+ │ └── qownnotes.json
262+ └── logs/
263+ ├── my-unicorn.log
264+ ├── my-unicorn.log.1
265+ ├── my-unicorn.log.2
266+ ├── my-unicorn.log.3
239267```
240268
241- #### App-specific Config ( ~ /.config/my-unicorn/apps/appflowy.json)
269+ ##### 2. ** App-Specific Configuration JSON Structure **
242270
243- - Each of these files also represents the state of the installed appimages.
244- - appimage_version and appimage_name are mandatory fields.
245- - Other fields are needed only if the user installed unsupported appimage(with URL install)
271+ > [ !NOTE]
272+ > Directory: ` ~/.config/my-unicorn/apps `
246273
247- ``` json
274+ ``` jsonc
248275{
249276 // Configuration version for future migrations
250277 " config_version" : " 1.0.0" ,
@@ -261,13 +288,13 @@ tmp = "~/.config/my-unicorn/tmp"
261288 // installed date of the appimage
262289 " installed_date" : " 2025-08-03T14:57:00.204029" ,
263290 // digest algorithm used to verify the integrity of the appimage, provided by github api assets
264- "digest" : " sha256:bd8b9374ec9c59fa98b08080fa7f96696d135e6173213d039939f94cc757c587"
291+ " digest" : " sha256:bd8b9374ec9c59fa98b08080fa7f96696d135e6173213d039939f94cc757c587" ,
265292 },
266293 " owner" : " AppFlowy-IO" ,
267294 " repo" : " AppFlowy" ,
268295 " github" : {
269296 " repo" : true ,
270- "prerelease" : false
297+ " prerelease" : false ,
271298 },
272299 " verification" : {
273300 // Verify the appimage with digest algorithm
@@ -277,16 +304,18 @@ tmp = "~/.config/my-unicorn/tmp"
277304 // checksum file used to verify the integrity of the appimage
278305 " checksum_file" : " " ,
279306 // hash type used to verify the integrity of the appimage
280- "checksum_hash_type" : " sha256"
307+ " checksum_hash_type" : " sha256" ,
281308 },
282309 " icon" : {
283310 " url" : " https://raw.githubusercontent.com/AppFlowy-IO/AppFlowy/main/frontend/resources/flowy_icons/40x/app_logo.svg" ,
284311 " name" : " appflowy.svg" ,
285- "installed" : true
286- }
312+ " installed" : true ,
313+ },
287314}
288315```
289316
317+ Example joplin.json:
318+
290319``` json
291320{
292321 "config_version" : " 1.0.0" ,
@@ -365,6 +394,6 @@ tmp = "~/.config/my-unicorn/tmp"
365394> [ !TIP]
366395> This would remove the package if you installed globally.
367396
368- ```bash
369- pip uninstall my-unicorn
370- ```
397+ ``` bash
398+ pip uninstall my-unicorn
399+ ```
0 commit comments