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.
- {starbash-0.1.35 → starbash-0.2.0}/PKG-INFO +34 -28
- {starbash-0.1.35 → starbash-0.2.0}/README.md +33 -27
- {starbash-0.1.35 → starbash-0.2.0}/pyproject.toml +1 -1
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/app.py +14 -2
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/commands/process.py +12 -6
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/commands/user.py +1 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/processing.py +1 -1
- {starbash-0.1.35 → starbash-0.2.0}/LICENSE +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/repo/__init__.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/repo/http_client.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/repo/manager.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/repo/repo.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/__init__.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/aliases.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/analytics.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/check_version.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/commands/__init__.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/commands/info.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/commands/repo.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/commands/select.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/database.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/defaults/__init__.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/defaults/starbash.toml +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/doit.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/doit_types.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/dwarf3.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/exception.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/filtering.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/icon.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/linux.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/main.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/os.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/parameters.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/paths.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/processed_target.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/processing_like.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/recipes/README.md +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/recipes/__init__.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/recipes/osc.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/rich.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/safety.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/score.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/selection.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/templates/__init__.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/templates/repo/master.toml +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/templates/repo/processed.toml +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/templates/target/master.toml +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/templates/target/processed.toml +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/templates/userconfig.toml +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/toml.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/tool/__init__.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/tool/base.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/tool/context.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/tool/graxpert.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/tool/python.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/tool/siril.py +0 -0
- {starbash-0.1.35 → starbash-0.2.0}/src/starbash/url.py +0 -0
- {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.
|
|
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
|
[](https://pypi.org/project/starbash/)
|
|
35
33
|
[](https://github.com/geeksville/starbash/actions/workflows/ci.yml)
|
|
36
34
|
[](https://codecov.io/github/geeksville/starbash)
|
|
37
35
|
|
|
38
36
|
A tool for automating/standardizing/sharing astrophotography workflows.
|
|
39
37
|
|
|
40
|
-
|
|
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
|
-
|
|
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
|
|
73
|
-
* Generates a per-target [report/config file](
|
|
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
|
-
*
|
|
81
|
-
* Support for mono-camera workflows (the alpha only
|
|
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
|
[](https://pypi.org/project/starbash/)
|
|
6
4
|
[](https://github.com/geeksville/starbash/actions/workflows/ci.yml)
|
|
7
5
|
[](https://codecov.io/github/geeksville/starbash)
|
|
8
6
|
|
|
9
7
|
A tool for automating/standardizing/sharing astrophotography workflows.
|
|
10
8
|
|
|
11
|
-
|
|
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
|
-
|
|
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
|
|
44
|
-
* Generates a per-target [report/config file](
|
|
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
|
-
*
|
|
52
|
-
* Support for mono-camera workflows (the alpha only
|
|
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
|
|
|
@@ -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
|
-
|
|
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
|
-
|
|
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(
|
|
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},
|
|
@@ -497,7 +497,7 @@ class Processing(ProcessingLike):
|
|
|
497
497
|
# for parallism etc...?
|
|
498
498
|
# self.doit.run(["list", "--all", "--status"])
|
|
499
499
|
|
|
500
|
-
logging.
|
|
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
|
|
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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|