starbash 0.1.35__tar.gz → 0.2.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.
Files changed (58) hide show
  1. {starbash-0.1.35 → starbash-0.2.0}/PKG-INFO +34 -28
  2. {starbash-0.1.35 → starbash-0.2.0}/README.md +33 -27
  3. {starbash-0.1.35 → starbash-0.2.0}/pyproject.toml +1 -1
  4. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/app.py +14 -2
  5. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/commands/process.py +12 -6
  6. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/commands/user.py +1 -0
  7. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/processing.py +1 -1
  8. {starbash-0.1.35 → starbash-0.2.0}/LICENSE +0 -0
  9. {starbash-0.1.35 → starbash-0.2.0}/src/repo/__init__.py +0 -0
  10. {starbash-0.1.35 → starbash-0.2.0}/src/repo/http_client.py +0 -0
  11. {starbash-0.1.35 → starbash-0.2.0}/src/repo/manager.py +0 -0
  12. {starbash-0.1.35 → starbash-0.2.0}/src/repo/repo.py +0 -0
  13. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/__init__.py +0 -0
  14. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/aliases.py +0 -0
  15. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/analytics.py +0 -0
  16. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/check_version.py +0 -0
  17. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/commands/__init__.py +0 -0
  18. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/commands/info.py +0 -0
  19. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/commands/repo.py +0 -0
  20. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/commands/select.py +0 -0
  21. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/database.py +0 -0
  22. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/defaults/__init__.py +0 -0
  23. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/defaults/starbash.toml +0 -0
  24. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/doit.py +0 -0
  25. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/doit_types.py +0 -0
  26. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/dwarf3.py +0 -0
  27. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/exception.py +0 -0
  28. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/filtering.py +0 -0
  29. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/icon.py +0 -0
  30. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/linux.py +0 -0
  31. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/main.py +0 -0
  32. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/os.py +0 -0
  33. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/parameters.py +0 -0
  34. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/paths.py +0 -0
  35. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/processed_target.py +0 -0
  36. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/processing_like.py +0 -0
  37. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/recipes/README.md +0 -0
  38. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/recipes/__init__.py +0 -0
  39. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/recipes/osc.py +0 -0
  40. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/rich.py +0 -0
  41. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/safety.py +0 -0
  42. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/score.py +0 -0
  43. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/selection.py +0 -0
  44. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/templates/__init__.py +0 -0
  45. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/templates/repo/master.toml +0 -0
  46. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/templates/repo/processed.toml +0 -0
  47. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/templates/target/master.toml +0 -0
  48. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/templates/target/processed.toml +0 -0
  49. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/templates/userconfig.toml +0 -0
  50. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/toml.py +0 -0
  51. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/tool/__init__.py +0 -0
  52. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/tool/base.py +0 -0
  53. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/tool/context.py +0 -0
  54. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/tool/graxpert.py +0 -0
  55. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/tool/python.py +0 -0
  56. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/tool/siril.py +0 -0
  57. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/url.py +0 -0
  58. {starbash-0.1.35 → starbash-0.2.0}/src/starbash/windows.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: starbash
3
- Version: 0.1.35
3
+ Version: 0.2.0
4
4
  Summary: A tool for automating/standardizing/sharing astrophotography workflows.
5
5
  License-File: LICENSE
6
6
  Author: Kevin Hester
@@ -29,15 +29,17 @@ Description-Content-Type: text/markdown
29
29
 
30
30
  # [Starbash](https://github.com/geeksville/starbash)
31
31
 
32
- <img src="https://raw.githubusercontent.com/geeksville/starbash/refs/heads/main/doc/img/icon.jpg" alt="Starbash: Astrophotography workflows simplified" width="30%" align="right" style="margin-bottom: 20px;">
33
-
34
32
  [![PyPI - Version](https://img.shields.io/pypi/v/starbash)](https://pypi.org/project/starbash/)
35
33
  [![Continuous Integration](https://github.com/geeksville/starbash/actions/workflows/ci.yml/badge.svg)](https://github.com/geeksville/starbash/actions/workflows/ci.yml)
36
34
  [![codecov](https://codecov.io/github/geeksville/starbash/graph/badge.svg?token=47RE10I7O1)](https://codecov.io/github/geeksville/starbash)
37
35
 
38
36
  A tool for automating/standardizing/sharing astrophotography workflows.
39
37
 
40
- * Automatic - with sensible defaults that you can change as needed.
38
+ ## What is starbash?
39
+
40
+ <img src="https://raw.githubusercontent.com/geeksville/starbash/refs/heads/main/doc/img/icon.jpg" alt="Starbash: Astrophotography workflows simplified" width="30%" align="right" style="margin-bottom: 20px;">
41
+
42
+ * Automatic - with sensible defaults that you can change as needed. Just a few keystrokes to preprocess an entire repo of raw images.
41
43
  * Easy - provides a 'seestar-like' autoprocessing all your sessions (by default). You can optionally do manual postprocessing with all this 'grunt work' preprocessing.
42
44
  * Fast<sup>1</sup> - even with large image repositories. Automatic master bias and flat generation. Automatic preprocessing/ stacking/background-elimination with reasonable defaults.
43
45
  * Multi-session - by default. So your workflows can stack from multiple nights (and still use the correct flats etc...).
@@ -49,7 +51,22 @@ A tool for automating/standardizing/sharing astrophotography workflows.
49
51
  <sub>**Caveats:**
50
52
  1. 'Fast' in terms of you 'just need to click run and magically (ahem) everything just happens.' But if you ask it to process many images it can take hours - just come back when it is done.</sub>
51
53
 
52
- <br clear="right">
54
+ ## What is starbash NOT
55
+
56
+ ### Not a new image processing tool (like Siril)
57
+ It is important to understand that Starbash is primarily a tool for **repeatable**, **sharable**, **semi-automated** workflows. It is tool agnostic and really just focuses on the relationship between tools, images and sessions. It builds upon the great work of existing tools (currently mainly Siril and Graxpert) so we can grow an ecosystem of recipes.
58
+
59
+ ### Not a set of scripts
60
+
61
+ It is more a tool for moving away from (sometimes long and complex) opaque scripts. "Recipes" are kinda like scripts except they are small and atomic and use dependencies to be automatically installed at the appropriate stage of workflows. But the actual operations performed by a recipe can be for any of the supported tools.
62
+
63
+ For instance: if you don't like a particular "stack" stage recipe you can swap out just that portion of the workflow for an alternate implementation. Or make your own and share it with others. (With full automatic versioning so that workflows hopefully always keep working/evolving)
64
+
65
+ Starbash understands FITS metadata and how to run tools based on that metadata, but the actual image transformations are entirely up to you and anyone who writes a recipe.
66
+
67
+ We provide a few example recipes to enable auto-selection of common workflows (see below for example links). But hopefully others will either add to these recipes or host their own recipe repos.
68
+
69
+ If you are familar with the software enginering tools "npm, make and git", the goal of this project is to provide an analogous sharable workflows for astrophotography.
53
70
 
54
71
  # Current status
55
72
 
@@ -69,20 +86,27 @@ If you are interested in alpha-testing we ❤️ you. This README should have e
69
86
  * Uses Siril recipes for its pre-processing operations (support for Pixinsight-based recipes will probably be coming at some point...).
70
87
 
71
88
  ### From the alpha 2 (0.2.0) release (2025/12/12 ish)
72
- * Include a stretched 'thumbnail'(FIXME - link example thumbnail) jpg proof-of-concept render in the output directories
73
- * Generates a per-target [report/config file](FIXME - link example processed toml) which can be customized if the detected defaults or preprocessing are not what you want.
89
+ * Include a stretched 'thumbnail'(FIXME/link/example/thumbnail) jpg proof-of-concept render in the output directories
90
+ * Generates a per-target [report/config file](doc/toml/example/processed-repo/example-m20.toml) which can be customized if the detected defaults or preprocessing are not what you want.
74
91
  * '[Recipes](https://github.com/geeksville/starbash-recipes)' are now user-editable - provides repeatable/human-[readable](doc/toml/example/processed-repo/example-m20.toml)/shareable descriptions of all processing steps. [example Siril OSC stacking](https://github.com/geeksville/starbash-recipes/blob/6d255f48591c4991ddc1168ffa5c38050a500771/osc/osc_simple.toml), [example Graxpert BGE](https://github.com/geeksville/starbash-recipes/blob/6d255f48591c4991ddc1168ffa5c38050a500771/graxpert/background.toml), [example thumbnail generation](https://github.com/geeksville/starbash-recipes/blob/6d255f48591c4991ddc1168ffa5c38050a500771/common/thumbnail.toml)...
75
92
  * Repos can be on the local disk or shared via HTTPS/GitHub/etc. This is particularly useful for recipe repos.
76
93
  * [Graxpert](https://graxpert.com/) based [recipe stages](https://github.com/geeksville/starbash-recipes/tree/main/graxpert) added (support for Pixinsight-based recipes will probably be coming at some point...).
77
94
 
78
95
  ## Features coming soon
79
96
 
80
- * Better recipe 'writers guide' documentation.
81
- * Support for mono-camera workflows (the alpha only has osc recipes).
97
+ * Recipe 'writers guide' documentation. Currently iterating based on usage reports 😄
98
+ * Support for mono-camera workflows (the alpha only includes osc recipes).
82
99
  * The target report can be used to auto-generate a human-friendly 'postable/shareable' report about that image.
83
100
  * Target reports are shareable so that you can request comments from others and others can rerender with different settings.
84
101
  * Namespaces for recipes are disambiguated to be globally unique
85
102
 
103
+ ## Features (possibly) coming eventually
104
+
105
+ * [IPFS](https://ipfs.tech/) based sharing of images and the workflows used to build those images (if you wish)
106
+ * Nice graph view of raw images, recipes and operations that contributed to a final image. Also possibly exposed via IPFS.
107
+ * Pixinsight?
108
+ * Autostakkert?
109
+
86
110
  See the [TODO](TODO.md) file for work items and approximate schedule.
87
111
 
88
112
  ## Support
@@ -206,8 +230,6 @@ If you don't want the automated processing you can still ask Starbash to prepare
206
230
 
207
231
  ## Supported telescope software
208
232
 
209
- FIXME explain FITS and directory paths
210
-
211
233
  * N.I.N.A. - tested, seems fairly okay.
212
234
  * Asiair - tested, seems fairly okay.
213
235
  * Seestar - tested, seems fairly okay.
@@ -221,27 +243,11 @@ Starbash is a tool agnostic workflow manager. But it wouldn't be possible witho
221
243
  * [Graxpert](https://graxpert.com/) - for background and noise elimination
222
244
  * [Python](https://www.python.org/) (you can add Python code to recipes if necessary)
223
245
 
224
- ## Supported tools (future?)
225
-
226
- * Pixinsight?
227
- * Autostakkert?
228
-
229
246
  ## Credits
230
247
  * Various reddit users who submitted anonymous crash reports from alpha 1
231
248
  * [@codegistics](https://github.com/codegistics) for kindly donating Dwarf3 test data and invaluable debugging assistance.
232
249
  * The developers of Siril and Graxpert - which are wonderful tools.
233
- * The [doit](https://pydoit.org/) automation building tool, which substantially simiplified this tool's development.
234
-
235
- ## Design
236
-
237
- FIXME - write this
238
-
239
- FIXME - what this tool is
240
- a way to avoid opaque script blobs that are tied to a particular tool.
241
- instead a way to make sharable/extendable workflows from atomic mini-tools
242
- A way to capture preprocessing steps used to create an image
243
- FIXME - what this tool isn't
244
- Influences from make, npm, github.
250
+ * The [doit](https://pydoit.org/) an **amazing** automation building tool, which substantially simiplified this tool's development.
245
251
 
246
252
  ## Development
247
253
 
@@ -1,14 +1,16 @@
1
1
  # [Starbash](https://github.com/geeksville/starbash)
2
2
 
3
- <img src="https://raw.githubusercontent.com/geeksville/starbash/refs/heads/main/doc/img/icon.jpg" alt="Starbash: Astrophotography workflows simplified" width="30%" align="right" style="margin-bottom: 20px;">
4
-
5
3
  [![PyPI - Version](https://img.shields.io/pypi/v/starbash)](https://pypi.org/project/starbash/)
6
4
  [![Continuous Integration](https://github.com/geeksville/starbash/actions/workflows/ci.yml/badge.svg)](https://github.com/geeksville/starbash/actions/workflows/ci.yml)
7
5
  [![codecov](https://codecov.io/github/geeksville/starbash/graph/badge.svg?token=47RE10I7O1)](https://codecov.io/github/geeksville/starbash)
8
6
 
9
7
  A tool for automating/standardizing/sharing astrophotography workflows.
10
8
 
11
- * Automatic - with sensible defaults that you can change as needed.
9
+ ## What is starbash?
10
+
11
+ <img src="https://raw.githubusercontent.com/geeksville/starbash/refs/heads/main/doc/img/icon.jpg" alt="Starbash: Astrophotography workflows simplified" width="30%" align="right" style="margin-bottom: 20px;">
12
+
13
+ * Automatic - with sensible defaults that you can change as needed. Just a few keystrokes to preprocess an entire repo of raw images.
12
14
  * Easy - provides a 'seestar-like' autoprocessing all your sessions (by default). You can optionally do manual postprocessing with all this 'grunt work' preprocessing.
13
15
  * Fast<sup>1</sup> - even with large image repositories. Automatic master bias and flat generation. Automatic preprocessing/ stacking/background-elimination with reasonable defaults.
14
16
  * Multi-session - by default. So your workflows can stack from multiple nights (and still use the correct flats etc...).
@@ -20,7 +22,22 @@ A tool for automating/standardizing/sharing astrophotography workflows.
20
22
  <sub>**Caveats:**
21
23
  1. 'Fast' in terms of you 'just need to click run and magically (ahem) everything just happens.' But if you ask it to process many images it can take hours - just come back when it is done.</sub>
22
24
 
23
- <br clear="right">
25
+ ## What is starbash NOT
26
+
27
+ ### Not a new image processing tool (like Siril)
28
+ It is important to understand that Starbash is primarily a tool for **repeatable**, **sharable**, **semi-automated** workflows. It is tool agnostic and really just focuses on the relationship between tools, images and sessions. It builds upon the great work of existing tools (currently mainly Siril and Graxpert) so we can grow an ecosystem of recipes.
29
+
30
+ ### Not a set of scripts
31
+
32
+ It is more a tool for moving away from (sometimes long and complex) opaque scripts. "Recipes" are kinda like scripts except they are small and atomic and use dependencies to be automatically installed at the appropriate stage of workflows. But the actual operations performed by a recipe can be for any of the supported tools.
33
+
34
+ For instance: if you don't like a particular "stack" stage recipe you can swap out just that portion of the workflow for an alternate implementation. Or make your own and share it with others. (With full automatic versioning so that workflows hopefully always keep working/evolving)
35
+
36
+ Starbash understands FITS metadata and how to run tools based on that metadata, but the actual image transformations are entirely up to you and anyone who writes a recipe.
37
+
38
+ We provide a few example recipes to enable auto-selection of common workflows (see below for example links). But hopefully others will either add to these recipes or host their own recipe repos.
39
+
40
+ If you are familar with the software enginering tools "npm, make and git", the goal of this project is to provide an analogous sharable workflows for astrophotography.
24
41
 
25
42
  # Current status
26
43
 
@@ -40,20 +57,27 @@ If you are interested in alpha-testing we ❤️ you. This README should have e
40
57
  * Uses Siril recipes for its pre-processing operations (support for Pixinsight-based recipes will probably be coming at some point...).
41
58
 
42
59
  ### From the alpha 2 (0.2.0) release (2025/12/12 ish)
43
- * Include a stretched 'thumbnail'(FIXME - link example thumbnail) jpg proof-of-concept render in the output directories
44
- * Generates a per-target [report/config file](FIXME - link example processed toml) which can be customized if the detected defaults or preprocessing are not what you want.
60
+ * Include a stretched 'thumbnail'(FIXME/link/example/thumbnail) jpg proof-of-concept render in the output directories
61
+ * Generates a per-target [report/config file](doc/toml/example/processed-repo/example-m20.toml) which can be customized if the detected defaults or preprocessing are not what you want.
45
62
  * '[Recipes](https://github.com/geeksville/starbash-recipes)' are now user-editable - provides repeatable/human-[readable](doc/toml/example/processed-repo/example-m20.toml)/shareable descriptions of all processing steps. [example Siril OSC stacking](https://github.com/geeksville/starbash-recipes/blob/6d255f48591c4991ddc1168ffa5c38050a500771/osc/osc_simple.toml), [example Graxpert BGE](https://github.com/geeksville/starbash-recipes/blob/6d255f48591c4991ddc1168ffa5c38050a500771/graxpert/background.toml), [example thumbnail generation](https://github.com/geeksville/starbash-recipes/blob/6d255f48591c4991ddc1168ffa5c38050a500771/common/thumbnail.toml)...
46
63
  * Repos can be on the local disk or shared via HTTPS/GitHub/etc. This is particularly useful for recipe repos.
47
64
  * [Graxpert](https://graxpert.com/) based [recipe stages](https://github.com/geeksville/starbash-recipes/tree/main/graxpert) added (support for Pixinsight-based recipes will probably be coming at some point...).
48
65
 
49
66
  ## Features coming soon
50
67
 
51
- * Better recipe 'writers guide' documentation.
52
- * Support for mono-camera workflows (the alpha only has osc recipes).
68
+ * Recipe 'writers guide' documentation. Currently iterating based on usage reports 😄
69
+ * Support for mono-camera workflows (the alpha only includes osc recipes).
53
70
  * The target report can be used to auto-generate a human-friendly 'postable/shareable' report about that image.
54
71
  * Target reports are shareable so that you can request comments from others and others can rerender with different settings.
55
72
  * Namespaces for recipes are disambiguated to be globally unique
56
73
 
74
+ ## Features (possibly) coming eventually
75
+
76
+ * [IPFS](https://ipfs.tech/) based sharing of images and the workflows used to build those images (if you wish)
77
+ * Nice graph view of raw images, recipes and operations that contributed to a final image. Also possibly exposed via IPFS.
78
+ * Pixinsight?
79
+ * Autostakkert?
80
+
57
81
  See the [TODO](TODO.md) file for work items and approximate schedule.
58
82
 
59
83
  ## Support
@@ -177,8 +201,6 @@ If you don't want the automated processing you can still ask Starbash to prepare
177
201
 
178
202
  ## Supported telescope software
179
203
 
180
- FIXME explain FITS and directory paths
181
-
182
204
  * N.I.N.A. - tested, seems fairly okay.
183
205
  * Asiair - tested, seems fairly okay.
184
206
  * Seestar - tested, seems fairly okay.
@@ -192,27 +214,11 @@ Starbash is a tool agnostic workflow manager. But it wouldn't be possible witho
192
214
  * [Graxpert](https://graxpert.com/) - for background and noise elimination
193
215
  * [Python](https://www.python.org/) (you can add Python code to recipes if necessary)
194
216
 
195
- ## Supported tools (future?)
196
-
197
- * Pixinsight?
198
- * Autostakkert?
199
-
200
217
  ## Credits
201
218
  * Various reddit users who submitted anonymous crash reports from alpha 1
202
219
  * [@codegistics](https://github.com/codegistics) for kindly donating Dwarf3 test data and invaluable debugging assistance.
203
220
  * The developers of Siril and Graxpert - which are wonderful tools.
204
- * The [doit](https://pydoit.org/) automation building tool, which substantially simiplified this tool's development.
205
-
206
- ## Design
207
-
208
- FIXME - write this
209
-
210
- FIXME - what this tool is
211
- a way to avoid opaque script blobs that are tied to a particular tool.
212
- instead a way to make sharable/extendable workflows from atomic mini-tools
213
- A way to capture preprocessing steps used to create an image
214
- FIXME - what this tool isn't
215
- Influences from make, npm, github.
221
+ * The [doit](https://pydoit.org/) an **amazing** automation building tool, which substantially simiplified this tool's development.
216
222
 
217
223
  ## Development
218
224
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "starbash"
3
- version = "0.1.35"
3
+ version = "0.2.0"
4
4
  description = "A tool for automating/standardizing/sharing astrophotography workflows."
5
5
  authors = ["Kevin Hester <kevinh@geeksville.com>"]
6
6
  readme = "README.md"
@@ -271,6 +271,7 @@ class Starbash:
271
271
  return self
272
272
 
273
273
  def __exit__(self, exc_type, exc, tb) -> bool:
274
+ from starbash import _is_test_env
274
275
  from starbash.exception import UserHandledError
275
276
 
276
277
  handled = False
@@ -284,7 +285,18 @@ class Starbash:
284
285
  raise typer.Exit(code=1)
285
286
  else:
286
287
  handled = analytics_exception(exc)
287
- self.close()
288
+ self.close()
289
+ if not handled:
290
+ # Show the full exception for developers
291
+ starbash.console.print_exception(show_locals=True)
292
+
293
+ # In test environments, let exceptions propagate naturally for better test diagnostics
294
+ if not _is_test_env:
295
+ # But in any case, make our app exit with an error code
296
+ raise typer.Exit(code=1)
297
+ else:
298
+ self.close()
299
+
288
300
  return handled
289
301
 
290
302
  def _add_session(self, header: dict) -> None:
@@ -439,7 +451,7 @@ class Starbash:
439
451
  absolute_path = repo.resolve_path(relative_path)
440
452
  image["abspath"] = str(absolute_path)
441
453
  else:
442
- logging.error(f"Repo not found for URL: {repo_url}, skipping image...")
454
+ raise UserHandledError(f"Repo not found for URL: {repo_url}, session skipped.")
443
455
 
444
456
  return image
445
457
 
@@ -14,6 +14,7 @@ from starbash.commands.__init__ import (
14
14
  from starbash.commands.select import selection_by_number
15
15
  from starbash.database import SessionRow
16
16
  from starbash.doit import FileInfo
17
+ from starbash.paths import get_user_config_path
17
18
  from starbash.processed_target import ProcessedTarget
18
19
  from starbash.processing import Processing, ProcessingResult
19
20
  from starbash.rich import to_rich_link
@@ -110,7 +111,9 @@ def print_results(
110
111
  from rich.table import Table
111
112
 
112
113
  if not results:
113
- console.print(f"[yellow]{title}: No results, do you have a target selected?[/yellow]")
114
+ console.print(
115
+ f"[yellow]{title}: No results, do you have a target selected? If this is your first time here run 'sb user setup'[/yellow]"
116
+ )
114
117
  return
115
118
 
116
119
  table = Table(title=title, show_header=True, header_style=TABLE_HEADER_STYLE)
@@ -212,6 +215,14 @@ def auto(
212
215
  import starbash
213
216
 
214
217
  starbash.process_masters = False
218
+
219
+ # Users might run "process auto" as their first command without reading any docs...
220
+ if not get_user_config_path().exists():
221
+ from starbash import console
222
+
223
+ console.print("[red]No app setup found.[/red] Please run 'sb user setup'.")
224
+ raise typer.Exit(1)
225
+
215
226
  with Starbash("process.auto") as sb:
216
227
  with Processing(sb) as proc:
217
228
  from starbash import console
@@ -223,7 +234,6 @@ def auto(
223
234
  else:
224
235
  console.print("[yellow]Auto-processing all selected sessions...[/yellow]")
225
236
 
226
- try:
227
237
  results = proc.run_all_stages()
228
238
 
229
239
  title = "Autoprocessed"
@@ -237,10 +247,6 @@ def auto(
237
247
 
238
248
  print_results(title, results, console)
239
249
 
240
- except Exception:
241
- console.print_exception(show_locals=True)
242
- raise typer.Exit(code=1)
243
-
244
250
 
245
251
  @app.command(
246
252
  context_settings={"allow_extra_args": True, "ignore_unknown_options": True},
@@ -152,6 +152,7 @@ def _ask_user_config(sb: Starbash) -> None:
152
152
 
153
153
 
154
154
  def do_reinit(sb: Starbash) -> None:
155
+ """Do guided 1st time setup for starbash."""
155
156
  from starbash import console
156
157
 
157
158
  console.print()
@@ -497,7 +497,7 @@ class Processing(ProcessingLike):
497
497
  # for parallism etc...?
498
498
  # self.doit.run(["list", "--all", "--status"])
499
499
 
500
- logging.info("Running doit tasks...")
500
+ logging.debug("Running doit tasks...")
501
501
  doit_args: list[str] = []
502
502
  if starbash.force_regen:
503
503
  doit_args.append("-a") # force rebuild
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes