Skip to content

Commit

Permalink
Merge pull request #576 from objectionary/563-how-to-contribute-secti…
Browse files Browse the repository at this point in the history
…on-is-missing-in-the-documentation

563 how to contribute section is missing in the documentation
  • Loading branch information
deemp authored Nov 28, 2024
2 parents 0642f62 + 077f7c3 commit f417b6f
Show file tree
Hide file tree
Showing 4 changed files with 235 additions and 9 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/ghc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ jobs:
if: env.branch_is_not_master && runner.os == 'Linux'
run: |
source scripts/lib.sh
files=('site' 'proposals' 'README.md')
files=('site' 'proposals' 'README.md' 'CONTRIBUTING.md')
commit_and_push_if_changed "$files" "Markdown files"
- name: Create a directory for docs
Expand Down
214 changes: 214 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,214 @@
# Contributing

## Issues

Check open issues ([link](https://github.com/objectionary/eo-phi-normalizer/issues)).

### Issue labels

- `priority N` - an issue with the priority `N`.
- `1` - The highest priority (the most important issues).
- `5` - The lowest priority (the least important issues).
- `(scope)` - An issue concerning a particular part of the project. Note the parentheses.
- `[non-functional requirement]` - An issue concerning a non-functional requirement. Note the square brackets.

## Enter the repository

Clone and enter the project repository.

```sh
git clone https://github.com/objectionary/eo-phi-normalizer --recurse-submodules
cd eo-phi-normalizer
```

## Install stack

We recommend using [stack](https://docs.haskellstack.org/en/stable) for quick local development and testing.

## Build

Build the project using `stack`.

```sh
export LC_ALL=C.UTF-8
stack build
```

## Test

Run all tests

```sh
export LC_ALL=C.UTF-8
stack test
```

## Run

Run the `eo-phi-normalizer` executable via `stack run`.

```$ as console
stack run eo-phi-normalizer -- --help
```

```console
Usage: eo-phi-normalizer COMMAND

Work with PHI expressions.

Available options:
-h,--help Show this help text
--version Show version information

Available commands:
rewrite Rewrite a PHI program.
metrics Collect metrics for a PHI program.
dataize Dataize a PHI program.
pipeline Run pipeline-related commands.
print-rules Print rules in LaTeX format.
test Run unit tests in given files with user-defined
rules.
```

Or, omit the executable name.

```$ as console
stack run -- --help
```

```console
Usage: eo-phi-normalizer COMMAND

Work with PHI expressions.

Available options:
-h,--help Show this help text
--version Show version information

Available commands:
rewrite Rewrite a PHI program.
metrics Collect metrics for a PHI program.
dataize Dataize a PHI program.
pipeline Run pipeline-related commands.
print-rules Print rules in LaTeX format.
test Run unit tests in given files with user-defined
rules.
```

## Docs

### Math expressions

Use the syntax supported by `mdBook` - see [docs](https://rust-lang.github.io/mdBook/format/mathjax.html).

### mdsh

We use [mdsh](https://github.com/zimbatm/mdsh) to document command outputs (see [Multiline Shell Code](https://github.com/zimbatm/mdsh#multiline-shell-code)).

You can install `mdsh` via `cargo` or `nix` ([link](https://github.com/zimbatm/mdsh#installation)).

### prettier

We format docs with [prettier](https://prettier.io/).

Run `npm i` to locally install the `prettier` version that we use.

### Automatic updates

In CI, on the `master` branch, we run a [script](https://github.com/objectionary/eo-phi-normalizer/blob/master/scripts/update-markdown.sh) to update Markdown files and then we commit changes.

So, no worries if you haven't run `mdsh` in your PR!

## Code quality

### Checks in CI

We run `fourmolu` and `hlint` checks in CI.

These checks are also implemented as pre-commit hooks.

## pre-commit hooks

We use [pre-commit](https://pre-commit.com/) hooks to ensure code quality.

Collaborators **MUST** set up the hooks before commiting any code to our repository.

### Set up pre-commit

#### Single command

```console
pip3 install
pre-commit install
stack install fourmolu
chmod +x scripts/run-fourmolu.sh
```

#### Step by step

1. Install [Python 3](https://www.python.org/downloads/) (e.g., Python 3.10).
1. [Install pre-commit](https://pre-commit.com/#1-install-pre-commit).
- Alternatively, run `pip3 install`.
1. [Install the git hook scripts](https://pre-commit.com/#3-install-the-git-hook-scripts).
1. Install [fourmolu](https://github.com/fourmolu/fourmolu).

```console
stack install fourmolu
```

- You can remove `fourmolu` later (see [SO post](https://stackoverflow.com/a/38639959))

1. Make a script executable.

```console
chmod +x scripts/run-fourmolu.sh
```

### pre-commit configs

See [docs](https://pre-commit.com/#adding-pre-commit-plugins-to-your-project).

See [.pre-commit-config.yaml](https://github.com/objectionary/eo-phi-normalizer/blob/master/.pre-commit-config.yaml).

You can run a specific hook (see [docs](https://pre-commit.com/#pre-commit-run)):

```console
pre-commit run -c .pre-commit-config.yaml fourmolu-format --all
```

### pre-commit workflow

- `pre-commit` runs before a commit (at the [pre-commit phase](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks#_committing_workflow_hooks))

> The pre-commit hook is run first, before you even type in a commit message. It's used to inspect the snapshot that's about to be committed, to see if you've forgotten something, to make sure tests run, or to examine whatever you need to inspect in the code. Exiting non-zero from this hook aborts the commit ...
- `pre-commit` stashes ([link](https://git-scm.com/docs/git-stash)) unstaged ([link](https://git-scm.com/book/en/v2/Getting-Started-What-is-Git%3F#_the_three_states)) files.

```console
[WARNING] Unstaged files detected.
[INFO] Stashing unstaged files to /home/eyjafjallajokull/.cache/pre-commit/patch1705090051-437857.
```

- `pre-commit` runs hooks.
- A hook may exit with an error, e.g.:

```md
Format Haskell (.hs) files...............................................Failed

- hook id: fourmolu
- exit code: 102
- files were modified by this hook
```

- In case of the [fourmolu](https://github.com/fourmolu/fourmolu) formatter,
it's assumed that formatting a formatted `Haskell` file doesn't modify it.
However, `pre-commit` runs the `fourmolu` hook and reports that it has modified some files.
This error won't allow you to commit.

- `pre-commit` unstashes files.

- You should stage all changes so that `pre-commit` does not complain.

- In case of `fourmolu`, stage the formatted code regions.

- Now, you can commit.
15 changes: 12 additions & 3 deletions flake.nix
Original file line number Diff line number Diff line change
Expand Up @@ -199,9 +199,6 @@
let
name = "update-markdown";
text = ''
# This file was generated automatically.
# You can edit the script in 'flake.nix'
mdsh
${lib.concatMapStringsSep "\n" (x: "mdsh -i site/docs/src/${x} --work_dir .") [
Expand All @@ -218,6 +215,8 @@
"contributing.md"
]}
cp site/docs/docs/markdown/contributing.md CONTRIBUTING.md
rm celsius.phi
npm i
Expand All @@ -228,8 +227,18 @@
stack install
cat << EOF > scripts/${name}.sh
${lib.trivial.pipe ./LICENSE.txt [
builtins.readFile
(builtins.split "\n")
(builtins.filter (x: x != [ ]))
(builtins.map (x: "# ${x}"))
(builtins.concatStringsSep "\n")
]}
# shellcheck disable=SC2148
# This file was generated automatically.
# You can edit the script in 'flake.nix'
${text}
EOF
Expand Down
13 changes: 8 additions & 5 deletions scripts/update-markdown.sh
Original file line number Diff line number Diff line change
@@ -1,29 +1,30 @@
# The MIT License (MIT)

#
# Copyright (c) 2016-2024 Objectionary.com

#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:

#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.

#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#

# shellcheck disable=SC2148

# This file was generated automatically.
# You can edit the script in 'flake.nix'

mdsh

mdsh -i site/docs/src/common/celsius.md --work_dir .
Expand All @@ -38,6 +39,8 @@ mdsh -i site/docs/src/eo-phi-normalizer/print-rules.md --work_dir .
mdsh -i site/docs/src/eo-phi-normalizer/test.md --work_dir .
mdsh -i site/docs/src/contributing.md --work_dir .

cp site/docs/docs/markdown/contributing.md CONTRIBUTING.md

rm celsius.phi

npm i
Expand Down

1 comment on commit f417b6f

@0pdd
Copy link

@0pdd 0pdd commented on f417b6f Nov 28, 2024

Choose a reason for hiding this comment

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

I wasn't able to retrieve PDD puzzles from the code base and submit them to github. If you think that it's a bug on our side, please submit it to yegor256/0pdd:

set -x && set -e && set -o pipefail && cd /tmp/0pdd20241128-2-tzafzy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA && pdd -v -f /tmp/20241128-7127-5r6u7e [1]: + set -e + set -o pipefail + cd...

Please, copy and paste this stack trace to GitHub:

UserError
set -x && set -e && set -o pipefail && cd /tmp/0pdd20241128-2-tzafzy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA && pdd -v -f /tmp/20241128-7127-5r6u7e [1]:
+ set -e
+ set -o pipefail
+ cd /tmp/0pdd20241128-2-tzafzy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA
+ pdd -v -f /tmp/20241128-7127-5r6u7e

My version is 0.24.0
Ruby version is 3.1.4 at x86_64-linux
Reading from root dir /tmp/0pdd20241128-2-tzafzy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA
/tmp/0pdd20241128-2-tzafzy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/.markdownlint.jsonc is a binary file (23 bytes)
/tmp/0pdd20241128-2-tzafzy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/.vscode/settings.json is a binary file (650 bytes)
/tmp/0pdd20241128-2-tzafzy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/flake.lock is a binary file (5296 bytes)
/tmp/0pdd20241128-2-tzafzy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/package-lock.json is a binary file (30789 bytes)
/tmp/0pdd20241128-2-tzafzy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/package.json is a binary file (126 bytes)
/tmp/0pdd20241128-2-tzafzy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/renovate.json is a binary file (114 bytes)
/tmp/0pdd20241128-2-tzafzy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/site/docs/src/image.png is a binary file (245811 bytes)
/tmp/0pdd20241128-2-tzafzy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/site/docs/src/media/metrics.png is a binary file (95050 bytes)
/tmp/0pdd20241128-2-tzafzy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/site/docs/src/media/phi-grammar.png is a binary file (131415 bytes)
/tmp/0pdd20241128-2-tzafzy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/site/docs/src/media/print-rules-tex-compact.png is a binary file (235249 bytes)
/tmp/0pdd20241128-2-tzafzy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/site/docs/src/media/print-rules-tex.png is a binary file (588712 bytes)
/tmp/0pdd20241128-2-tzafzy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/site/docs/src/media/rules.jpg is a binary file (76143 bytes)
/tmp/0pdd20241128-2-tzafzy/Z2l0QGdpdGh1Yi5jb206b2JqZWN0aW9uYXJ5L2VvLXBoaS1ub3JtYWxpemVyLmdpdA/stack.nix is a binary file (66 bytes)
Reading .envrc ...
Reading .gitattributes ...
Reading .github/workflows/ghc.yml ...
Puzzle 340-40b07064 10/DEV at .github/workflows/ghc.yml
Reading .github/workflows/release.yml ...
Reading .gitignore ...
Reading .gitmodules ...
Reading .hlint.yaml ...
Reading .pre-commit-config.yaml ...
Reading .prettierignore ...
Reading CONTRIBUTING.md ...
Reading LICENSE.txt ...
Reading README.md ...
Reading cabal.project ...
Reading default.nix ...
Reading eo-phi-normalizer/.gitignore ...
Reading eo-phi-normalizer/CHANGELOG.md ...
Reading eo-phi-normalizer/LICENSE ...
Reading eo-phi-normalizer/README.md ...
Reading eo-phi-normalizer/Setup.hs ...
Reading eo-phi-normalizer/app/Main.hs ...
Reading eo-phi-normalizer/data/0.36.0/dependencies.md ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/as-phi.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/bool.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/bytes.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/cage.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/cti.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/dataized.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/error.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/float.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/go.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/goto.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/heap.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/if.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/int.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/io/stdin.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/io/stdout.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/malloc.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/memory.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/nan.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/negative-infinity.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/nop.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/positive-infinity.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/ram.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/rust.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/seq.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/string.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/switch.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/try.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/tuple.phi ...
Reading eo-phi-normalizer/data/0.36.0/org/eolang/while.phi ...
Reading eo-phi-normalizer/data/0.37.0/dependencies.md ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/as-phi.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/bytes.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/cage.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/cti.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/dataized.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/error.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/false.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/float.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/go.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/int.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/io/stdin.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/io/stdout.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/malloc.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/nan.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/negative-infinity.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/positive-infinity.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/rust.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/seq.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/string.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/switch.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/true.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/try.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/tuple.phi ...
Reading eo-phi-normalizer/data/0.37.0/org/eolang/while.phi ...
Reading eo-phi-normalizer/data/0.38.0/dependencies.md ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/as-phi.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/bytes.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/cage.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/cti.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/dataized.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/error.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/false.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/float.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/go.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/int.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/io/stdin.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/io/stdout.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/malloc.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/nan.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/negative-infinity.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/positive-infinity.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/rust.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/seq.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/string.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/switch.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/true.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/try.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/tuple.phi ...
Reading eo-phi-normalizer/data/0.38.0/org/eolang/while.phi ...
Reading eo-phi-normalizer/data/0.38.4/dependencies.md ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/as-phi.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/bytes.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/cage.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/cti.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/dataized.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/error.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/false.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/float.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/go.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/int.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/io/stdin.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/io/stdout.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/malloc.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/nan.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/negative-infinity.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/positive-infinity.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/rust.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/seq.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/string.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/switch.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/true.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/try.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/tuple.phi ...
Reading eo-phi-normalizer/data/0.38.4/org/eolang/while.phi ...
Reading eo-phi-normalizer/data/0.41.2/dependencies.md ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/as-phi.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/bytes.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/cage.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/cti.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/dataized.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/error.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/false.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/fs/dir.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/fs/file.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/fs/path.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/fs/tmpdir.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/go.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/i16.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/i32.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/i64.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/io/bytes-as-input.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/io/console.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/io/dead-input.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/io/dead-output.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/io/input-length.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/io/malloc-as-output.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/io/stdin.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/io/stdout.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/io/tee-input.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/malloc.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/math/angle.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/math/e.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/math/integral.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/math/numbers.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/math/pi.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/math/random.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/math/real.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/nan.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/negative-infinity.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/net/socket.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/number.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/positive-infinity.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/rust.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/seq.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/string.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/structs/bytes-as-array.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/structs/hash-code-of.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/structs/list.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/structs/map.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/structs/range-of-ints.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/structs/range.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/structs/set.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/switch.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/sys/getenv.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/sys/line-separator.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/sys/os.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/sys/posix.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/sys/win32.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/true.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/try.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/tuple.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/txt/regex.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/txt/sprintf.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/txt/sscanf.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/txt/text.phi ...
Reading eo-phi-normalizer/data/0.41.2/org/eolang/while.phi ...
Reading eo-phi-normalizer/eo-phi-normalizer.cabal ...
Reading eo-phi-normalizer/grammar/EO/Phi/Syntax.cf ...
Reading eo-phi-normalizer/package.yaml ...
Reading eo-phi-normalizer/report/main.js ...
Reading eo-phi-normalizer/report/styles.css ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Dataize/Atoms.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Dataize/Context.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Dataize.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Dependencies.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Metrics/Collect.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Metrics/Data.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Normalize.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Pipeline/Config.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Pipeline/Dataize/PrintConfigs.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Pipeline/EOTests/Data.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Pipeline/EOTests/PrepareTests.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Report/Data.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Report/Html.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Rules/Common.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Rules/Fast.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Rules/PhiPaper.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Rules/RunYegor.hs ...
Reading eo-phi-normalizer/src/Language/EO/Phi/Rules/Yaml.hs ...
ERROR: ERROR: eo-phi-normalizer/src/Language/EO/Phi/Rules/Yaml.hs; PDD::Error at eo-phi-normalizer/src/Language/EO/Phi/Rules/Yaml.hs:152: TODO found, but puzzle can't be parsed, most probably because TODO is not followed by a puzzle marker, as this page explains: https://github.com/cqfn/pdd#how-to-format
If you can't understand the cause of this issue or you don't know how to fix it, please submit a GitHub issue, we will try to help you: https://github.com/cqfn/pdd/issues. This tool is still in its beta version and we will appreciate your feedback. Here is where you can find more documentation: https://github.com/cqfn/pdd/blob/master/README.md.
Exit code is 1

/app/objects/git_repo.rb:74:in `rescue in block in xml'
/app/objects/git_repo.rb:71:in `block in xml'
/app/vendor/ruby-3.1.4/lib/ruby/3.1.0/tempfile.rb:317:in `open'
/app/objects/git_repo.rb:70:in `xml'
/app/objects/puzzles.rb:46:in `deploy'
/app/objects/jobs/job.rb:38:in `proceed'
/app/objects/jobs/job_starred.rb:32:in `proceed'
/app/objects/jobs/job_recorded.rb:31:in `proceed'
/app/objects/jobs/job_emailed.rb:33:in `proceed'
/app/objects/jobs/job_commiterrors.rb:33:in `proceed'
/app/objects/jobs/job_detached.rb:48:in `exclusive'
/app/objects/jobs/job_detached.rb:36:in `block in proceed'
/app/objects/jobs/job_detached.rb:36:in `fork'
/app/objects/jobs/job_detached.rb:36:in `proceed'
/app/0pdd.rb:549:in `process_request'
/app/0pdd.rb:380:in `block in <top (required)>'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1804:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1804:in `block in compile!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1071:in `block (3 levels) in route!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1089:in `route_eval'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1071:in `block (2 levels) in route!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1120:in `block in process_route'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1118:in `catch'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1118:in `process_route'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1069:in `block in route!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1066:in `each'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1066:in `route!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1190:in `block in dispatch!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1161:in `catch'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1161:in `invoke'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1185:in `dispatch!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1001:in `block in call!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1161:in `catch'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1161:in `invoke'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1001:in `call!'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:990:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-3.0.9/lib/rack/rewindable_input.rb:25:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-3.0.9/lib/rack/deflater.rb:47:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-4.0.0/lib/rack/protection/xss_header.rb:20:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-4.0.0/lib/rack/protection/path_traversal.rb:18:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-4.0.0/lib/rack/protection/json_csrf.rb:28:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-4.0.0/lib/rack/protection/base.rb:53:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-4.0.0/lib/rack/protection/base.rb:53:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-protection-4.0.0/lib/rack/protection/frame_options.rb:33:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-3.0.9/lib/rack/logger.rb:19:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-3.0.9/lib/rack/common_logger.rb:43:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:266:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:259:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-3.0.9/lib/rack/head.rb:15:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rack-3.0.9/lib/rack/method_override.rb:28:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:224:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:2115:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1674:in `block in call'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1890:in `synchronize'
/app/vendor/bundle/ruby/3.1.0/gems/sinatra-4.0.0/lib/sinatra/base.rb:1674:in `call'
/app/vendor/bundle/ruby/3.1.0/gems/rackup-2.1.0/lib/rackup/handler/webrick.rb:111:in `service'
/app/vendor/bundle/ruby/3.1.0/gems/webrick-1.8.1/lib/webrick/httpserver.rb:140:in `service'
/app/vendor/bundle/ruby/3.1.0/gems/webrick-1.8.1/lib/webrick/httpserver.rb:96:in `run'
/app/vendor/bundle/ruby/3.1.0/gems/webrick-1.8.1/lib/webrick/server.rb:310:in `block in start_thread'

Please sign in to comment.