Skip to content

Simplifies the process of serializing JSON data to a file.

License

Notifications You must be signed in to change notification settings

tj-actions/json2file

Use this GitHub action with your project
Add this Action to an existing workflow or create a new one
View on Marketplace

Repository files navigation

Crates.io Codacy Badge codecov CI Update release version. Public workflows that use this action.

Ubuntu Mac OS Windows

json2file

Simplifies the process of serializing JSON data to a file.

Usage

...
    - name: Set output
      id: set-output
      run: |
        echo "color=green" >> $GITHUB_OUTPUT

    - name: Generate file output from json
      uses: tj-actions/json2file@v1
      with:
        directory: 'output'
        outputs:  ${{ toJSON(steps.set-output.outputs) }}
        keys: 'color'
        extension: 'txt'
...

The above example will create a file named color.txt in the output directory with the contents green.

$ cat ./output/color.txt
green

Inputs

INPUT TYPE REQUIRED DEFAULT DESCRIPTION
bin_path string false Path to the binary
directory string true ".github/outputs" Directory to write to
extension string false "txt" File extension to use, possible
values: txt, json
keys string true List of Keys to read
from the outputs JSON string
outputs string true JSON string
skip_missing_keys string false "false" Skip missing keys not found
in the outputs JSON string

Installation

To install json2file, open a terminal window (Command Prompt or PowerShell on Windows) and run the following command:

cargo install json2file

Building from Source

If you prefer to build from the source, follow these steps:

git clone https://github.com/tj-actions/json2file
cd json2file
cargo build --release

CLI Reference

Run json2file --help for more information.

$ json2file --help
Generate file output from JSON

Usage: json2file [OPTIONS] --keys <KEYS> --outputs <OUTPUTS> --directory <DIRECTORY>

Options:
  -k, --keys <KEYS>            Space delimited list of keys to extract from the JSON output
  -o, --outputs <OUTPUTS>      The JSON output to use
  -d, --directory <DIRECTORY>  The directory to output the files to
  -s, --skip-missing-keys      Skip missing keys
  -e, --extension <EXTENSION>  The extension to use for the files [default: txt] [possible values: txt, json, csv]
  -v, --verbose                
  -h, --help                   Print help
  -V, --version                Print version

Example

Run

json2file --keys="foo bar" --outputs="{\"foo\": \"value1\", \"bar\": \"value2\"}" --directory=/tmp --extension=txt

This creates two files with the following contents:

foo.txt

value1

bar.txt

value2

If you feel generous and want to show some extra appreciation:

Buy me a coffee

Credits

This package was created with Cookiecutter using cookiecutter-action

Report Bugs

Report bugs at https://github.com/tj-actions/json2file/issues.

If you are reporting a bug, please include:

  • Your operating system name and VERSION.
  • Any details about your workflow that might be helpful in troubleshooting.
  • Detailed steps to reproduce the bug.