Release 0.8.0 of stevedore - minor feature enhancement
Tags: docker, stevedore, cli, ignore
Published: 2023-02-17 22:22:21

---
title: Release 0.8.0 of stevedore - minor feature enhancement
published: true
description: Feature release improving the stevedore tool for .dockerignore files
tags: docker, stevedore, cli, ignore
# cover_image: https://direct_url_to_image.jpg
# Use a ratio of 100:42 for best results.
# published_at: 2023-02-17 21:22 +0000
---
I only just recently I published [my first blog post on stevedore](https://dev.to/jonasbn/stevedore-a-side-project-to-help-ignoring-for-docker-eol), now it is time for a follow up.

This is the first release since that blog post, which pretty much described release 0.7.0 of my side-project: **stevedore** (see: [GitHub repository](https://github.com/jonasbn/stevedore))

As the project matures I have come up with a few more ideas and I have extended the descriptions of some of the things I want to do.

```shell
gh issue list --state all --json number,title,state --template '{{range .}}{{tablerow .number .title .state}}{{"\n"}}{{end}}'
```

```text
21  Proposed feature: watch mode                                 OPEN
19  Handle issue with having . in the output                     CLOSED
18  Option to optimize output for improved ignorefile artefacts  OPEN
17  Proposed feature: Stacked ignore files                       OPEN
11  Proposed feature: configuration file                         OPEN
6   Proposed feature: output as tree structure                   OPEN
5   Proposed feature: read from STDIN                            CLOSED
4   Proposed feature: interactive edit mode                      OPEN
2   Dependency Dashboard                                         CLOSED
```

Issue [#5](https://github.com/jonasbn/stevedore/issues/5) has been implemented some time ago and with release 0.8.0 issue [#19](https://github.com/jonasbn/stevedore/issues/19) was closed.

Starting to use **stevedore** on some of my other projects demonstrated that it was a bad idea to emit: "`.`" for possible inclusion in a `.dockerignore` file, since what I am aiming for is something along the lines of:

```shell
stevedore --included . >> .dockerignore
```

The files included in Docker image would be:

```text
.
.DS_Store
.dockerignore
.editorconfig
.github
.github/ISSUE_TEMPLATE.md
.github/PULL_REQUEST_TEMPLATE.md
.github/auto_assign.yml
.github/dependabot.yml
.github/renovate.json
.github/workflows
.github/workflows/markdownlint.yml
.github/workflows/publish.yml
.github/workflows/spellcheck.yml
.gitignore
.markdownlint.json
.spellcheck.yml
.stevedoreignore
.yakignore
.yaksums.json
CONTRIBUTING.md
_config.yml
assets
assets/ebirah_by_zappazee.png
cpanfile
cpanfile.snapshot
dictionary.dic
ebirah.code-workspace
```

And the files already excluded by the `.dockerignore` file would be:

```text
.wordlist.txt
CHANGELOG.md
CODE_OF_CONDUCT.md
Dockerfile
LICENSE
README.md
prototypes
prototypes/Dockerfile
prototypes/ebirah.sh
```

Based on the existing `.dockerignore` file

```text
CHANGELOG.md
Dockerfile
LICENSE
README.md
prototypes
.wordlist.txt
CODE_OF_CONDUCT.md
```

But as you can see the "`.`" was emitted from our invocation, which we wanted to use for updating our `.dockerignore` file.

From release 0.8.0 this is not longer the case. So now we can do:

```shell
stevedore --included . >> .dockerignore
```

```text
CHANGELOG.md
Dockerfile
LICENSE
README.md
prototypes
.wordlist.txt
CODE_OF_CONDUCT.md
.DS_Store
.dockerignore
.editorconfig
.github
.github/ISSUE_TEMPLATE.md
.github/PULL_REQUEST_TEMPLATE.md
.github/auto_assign.yml
.github/dependabot.yml
.github/renovate.json
.github/workflows
.github/workflows/markdownlint.yml
.github/workflows/publish.yml
.github/workflows/spellcheck.yml
.gitignore
.markdownlint.json
.spellcheck.yml
.stevedoreignore
.yakignore
.yaksums.json
CONTRIBUTING.md
_config.yml
assets
assets/ebirah_by_zappazee.png
cpanfile
cpanfile.snapshot
dictionary.dic
ebirah.code-workspace
```

Now we just need to do a manual change, since we need: `cpanfile` and `cpanfile.snapshot` to be included in the Docker image.

So our final `.dockerignore` files will look as follows:

```text
CHANGELOG.md
Dockerfile
LICENSE
README.md
prototypes
.wordlist.txt
CODE_OF_CONDUCT.md
.DS_Store
.dockerignore
.editorconfig
.github
.github/ISSUE_TEMPLATE.md
.github/PULL_REQUEST_TEMPLATE.md
.github/auto_assign.yml
.github/dependabot.yml
.github/renovate.json
.github/workflows
.github/workflows/markdownlint.yml
.github/workflows/publish.yml
.github/workflows/spellcheck.yml
.gitignore
.markdownlint.json
.spellcheck.yml
.stevedoreignore
.yakignore
.yaksums.json
CONTRIBUTING.md
_config.yml
assets
assets/ebirah_by_zappazee.png
!cpanfile
!cpanfile.snapshot
dictionary.dic
ebirah.code-workspace
```

This is good, but we do need to address the issue of: `cpanfile` and `.cpanfile` being reported as not ignored, hence included, but these are handled, so I somehow need to indicate this, so it is back to the drawing board.

Running stevedore with `--verbose`:

```shell
stevedore --verbose .
. is ignored, but traversed by stevedore by default
path .DS_Store ignored and is not included in Docker image
path .dockerignore ignored and is not included in Docker image
path .editorconfig ignored and is not included in Docker image
.git have been ignored by stevedore, no traversal
path .github ignored and is not included in Docker image
path .github/ISSUE_TEMPLATE.md ignored and is not included in Docker image
path .github/PULL_REQUEST_TEMPLATE.md ignored and is not included in Docker image
path .github/auto_assign.yml ignored and is not included in Docker image
path .github/dependabot.yml ignored and is not included in Docker image
path .github/renovate.json ignored and is not included in Docker image
path .github/workflows ignored and is not included in Docker image
path .github/workflows/markdownlint.yml ignored and is not included in Docker image
path .github/workflows/publish.yml ignored and is not included in Docker image
path .github/workflows/spellcheck.yml ignored and is not included in Docker image
path .gitignore ignored and is not included in Docker image
path .markdownlint.json ignored and is not included in Docker image
path .spellcheck.yml ignored and is not included in Docker image
path .stevedoreignore ignored and is not included in Docker image
path .wordlist.txt ignored and is not included in Docker image
path .yakignore ignored and is not included in Docker image
path .yaksums.json ignored and is not included in Docker image
path CHANGELOG.md ignored and is not included in Docker image
path CODE_OF_CONDUCT.md ignored and is not included in Docker image
path CONTRIBUTING.md ignored and is not included in Docker image
path Dockerfile ignored and is not included in Docker image
path LICENSE ignored and is not included in Docker image
path README.md ignored and is not included in Docker image
path _config.yml ignored and is not included in Docker image
path assets ignored and is not included in Docker image
path assets/ebirah_by_zappazee.png ignored and is not included in Docker image
path cpanfile not ignored and is included in Docker image
path cpanfile.snapshot not ignored and is included in Docker image
path dictionary.dic ignored and is not included in Docker image
path ebirah.code-workspace ignored and is not included in Docker image
local have been ignored by stevedore, no traversal
path prototypes ignored and is not included in Docker image
path prototypes/Dockerfile ignored and is not included in Docker image
path prototypes/ebirah.sh ignored and is not included in Docker image
```

Emits a verbose message on the new handling of "`.`".

```text
. is ignored, but traversed by stevedore by default
```

In addition to this new _problem_ I need to handle, I would also like to emit a more intelligent proposal for the `.dockerignore` file. For example collapsing  `.github` etc. I have already created an issue for this ([#18](https://github.com/jonasbn/stevedore/issues/18)).

Well `.github` should perhaps be included in `.stevedoreignore` as `.git` and `local`, but `assets/` could be collapsed into a single: `assets/` instead of listing all contents separately.

I know this will be more easy to maintain, I am however unsure whether it has any impact on performance, perhaps some benchmarking would be beneficial, before making a decision.

As mentioned in the change log (see below), I am not completely satisfied with the solution of _hard-coding_ handling of "`.`" inside **stevedore**, but it will do for now. Perhaps a better solution will show itself as **stevedore** evolves.

## Change log for 0.8.0

### 0.8.0 2023-02-17 feature release, update not required

- "`.`" was included in the ignore pattern output, which does not really make sense, so it has been eliminated from the output. It is not super solution since it is no so flexible, but it will have to do for now, ref: [#19](https://github.com/jonasbn/stevedore/issues/19)