Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

First class dagger shell #1947

Merged
merged 23 commits into from
Feb 6, 2025
Merged

First class dagger shell #1947

merged 23 commits into from
Feb 6, 2025

Conversation

sourishkrout
Copy link
Member

@sourishkrout sourishkrout commented Feb 5, 2025

This PR integrates with the new Kernel APIs to transform a notebook into a working Dagger Shell script on-demand.

Currently this will only happen if the notebook's shell is set to dagger shell as part of the frontmatter. In a separate PR we might also default based on file extensions (e.g. .dag).

This PR requires stateful/runme#736 with local-gen protos to work. An example notebook is committed here: 7ed343c.

PS: Tests might fail. Will work on fixing them.

Copy link
Contributor

@pastuxso pastuxso left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Everything works fine locally to me 🚀

sourishkrout added a commit to stateful/runme that referenced this pull request Feb 6, 2025
In order to natively support Dagger's shell Runme needs to take the
entire notebook as opposed to an atomic cell into account. This PR
introduces the APIs necessary to transform a notebook into a Dagger
Shell script using some basic AST transformation.

Integration with extension in
stateful/vscode-runme#1947.

PS: The protos are not published yet and need local-gen to work.

The new service will turn a deserialized version of the following
markdown into a runnable Dagger shell script.

## Simple example notebook

Unamed cell:

```sh {"closeTerminalOnSuccess":"false","interactive":"true","openTerminalOnError":"true","terminalRows":"23"}
git github.com/stateful/runme |
    head |
    tree |
    file examples/README.md
```

And the same as a named cell:

```sh {"name":"README"}
# Named in README in cell attributes
git github.com/stateful/runme |
    head |
    tree |
    file examples/README.md
```

## Resulting Dagger Shell Script

Running the unamed cell:

```sh
DAGGER_01JKE40B6A0F5NBESE49X122RD()
{
  git github.com/stateful/runme \
    | head \
    | tree \
    | file examples/README.md
}
DAGGER_01JKE40B6A0F5NBESE49X122RD
```

Running the named cell:

```sh
DAGGER_01JKE4K781F87XRK9SQZ9T1GQD()
{
  git github.com/stateful/runme \
    | head \
    | tree \
    | file examples/README.md
}
README()
{
  git github.com/stateful/runme | head | tree | file examples/README.md
}
README
```
@sourishkrout sourishkrout force-pushed the seb/first-class-dagger-shell branch 2 times, most recently from 4a62c34 to 391a31b Compare February 6, 2025 18:32
@sourishkrout sourishkrout force-pushed the seb/first-class-dagger-shell branch from bf53039 to a898b42 Compare February 6, 2025 18:57
@sourishkrout sourishkrout merged commit b68b02a into main Feb 6, 2025
1 check passed
@sourishkrout sourishkrout deleted the seb/first-class-dagger-shell branch February 6, 2025 19:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants