some abra recipe commands are for operators and others for maintainers #736

Open
opened 2025-12-16 16:47:01 +00:00 by fauno · 5 comments
Member

we were just talking with @ChasquiLabo about how confusing abra recipe is when abra recipe upgrade does very different things than abra app upgrade. we listed these commands as needed for operators:

  • fetch: before upgrading an app, you need to fetch the recipe
  • lint: to check the healthiness of a recipe before running it
  • list
  • versions

how can we make this more obvious?

we were just talking with @ChasquiLabo about how confusing `abra recipe` is when `abra recipe upgrade` does very different things than `abra app upgrade`. we listed these commands as needed for operators: * fetch: before upgrading an app, you need to fetch the recipe * lint: to check the healthiness of a recipe before running it * list * versions how can we make this more obvious?
Owner

how can we make this more obvious?

@fauno sorry can you elaborate on what needs to be improved?

The difference between recipe upgrade / app upgrade and the visibility of other commands?

> how can we make this more obvious? @fauno sorry can you elaborate on what needs to be improved? The difference between `recipe upgrade` / `app upgrade` and the visibility of other commands?
Author
Member

@decentral1se sure, the thing is that if you're an operator, you probably only need to run abra recipe fetch from time to time. the other commands are aimed at recipe maintainers.

for instance, @chasquilabo was asking me what they meant, because he initially thought that before running abra app upgrade he should run abra recipe upgrade, which is doing a whole other thing entirely. so he ended up with the idea that he broke his catalogue.

maybe abra app upgrade can have an option to fetch the recipe too? so recipe is only for maintainers.

@decentral1se sure, the thing is that if you're an operator, you probably only need to run `abra recipe fetch` from time to time. the other commands are aimed at recipe maintainers. for instance, @chasquilabo was asking me what they meant, because he initially thought that before running `abra app upgrade` he should run `abra recipe upgrade`, which is doing a whole other thing entirely. so he ended up with the idea that he broke his catalogue. maybe `abra app upgrade` can have an option to fetch the recipe too? so `recipe` is only for maintainers.
Owner

@fauno thanks.

AFAIK abra app upgrade does fetch the latest from the recipe:

cli/app/upgrade.go Lines 80 to 87 in b79c4f33b6
if err := app.Recipe.Ensure(recipe.EnsureContext{
Chaos: internal.Chaos,
Offline: internal.Offline,
// Ignore the env version for now, to make sure we are at the latest commit.
// This enables us to get release notes, that were added after a release.
IgnoreEnvVersion: true,
}); err != nil {
log.Fatal(err)

Running with --debug should confirm this.

I only run abra recipe fetch when I wanna hack on a recipe for which I have no local copy of. It shouldn't be necessary to know this command at all for regular daily ops and app maintenance.

@fauno thanks. AFAIK `abra app upgrade` does fetch the latest from the recipe: https://git.coopcloud.tech/toolshed/abra/src/commit/b79c4f33b611d44d905bed74c843eba03bd8b581/cli/app/upgrade.go#L80-L87 Running with `--debug` should confirm this. I only run `abra recipe fetch` when I wanna hack on a recipe for which I have no local copy of. It shouldn't be necessary to know this command at all for regular daily ops and app maintenance.
Author
Member

oh i didn't know that for instance :P

so abra recipe isn't needed at all for operators, ok

oh i didn't know that for instance :P so `abra recipe` isn't needed at all for operators, ok
Owner

Documentation patches welcome!

Documentation patches welcome!
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: toolshed/abra#736
No description provided.