quartz-cli 1.2.0

The command-line tool to build and test HTTP requests.
Documentation
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]

## [1.2.0] - 2024-05-01

### Added

- URLs that start with "**" will inherit the beginning from their parent handle (#21)
- **EDITOR** and **PAGER** environment variables are now used when no configuration is set for quartz preferences.
- **NO_COLOR**, **CLICOLOR**, and **CLICOLOR_FORCE** environment variables overrides quartz UI settings.

### Changed

- `ls` command method text alignment and dynamically pad it.
- Man page identation and headings reworked to be more consistent with Unix conventions.

### Fixed

- Trailing slash in handle name would cause infinite recursion.
- Missing ending newline in `curl` snippet when request has no body.

### Removed

- `--editor` option from `edit` command. Use environment variables instead.

## [1.1.0] - 2024-04-27

### Added

- When trying to `use` nonexistent handle or environment, quartz will prompt a yes/no confirmation to create it.

## [1.0.1] - 2024-03-09

### Fixed

- Missing some `send` options in man page.
- Emphasise ENDPOINT PATCH options in man page

## [1.0.0] - 2024-03-09

### Added

- Automatically follow redirects. It can be disable with `--no-follow` option.
- `show snippet` to generate code snippets for an endpoint.
- `send` command new edit flags: `-d,--data <DATA>`, `-H, --header <HEADER>`, `--query <QUERY>`, `-v, --var <VARIABLE>`, `-X, --request <METHOD>`.
- `use` command can now edit the current or to-be-used endpoint.
- `cp` copy command.
- `mv` move command.
- You can now make a handle empty again with `use`'s `--empty` option.
- When sending the request, it fills URL with HTTP scheme if none is present.
- New built-in cookie engine.
- `preferences.pager` configuration.

### Changed

- `context` were renamed to `env`
- `header`, `query`, `config` and `variable` commands now follow the same new pattern to promote consistency.
- `create` options were revisited for better semantics with **curl** and other `send` and `use` options.
- Variables are now edited in a plain-text file instead of TOML. (#41)
- `rm` requires `-r` option to remove handles recursively. (#38)
- History simplified. HTTP messages are displayed instead.

### Fixed

- After receiving response, quartz would only print and save the last chunk of response bytes instead of the entire body.
- `ls` command's `--depth` option was behaving inconsistently.
- Broken configuration file would break entire quartz usage.

### Removed

- Removed `send` command's `--show` option. Use `last` instead.
- Removed simple get/set endpoint commands `url` and `method`. Prefer `use` options.
- Removed `status` command. Use `show` instead.

## [0.8.0] - 2023-08-12

### Added

- New `last` command tree.
- `--show <FIELDS>` to `history` and `send` commands to specify fields to be shown on listing.

### Changed

- History saving format changed, which probably breaks previously saved entries.

## [0.7.1] - 2023-08-05

### Changed

- `variables` options `--set` and `--edit` are now executed in that order. Changes from `--set` will be committed before `--edit` comes in.

### Fixed

- It was possible to save malformed files through `edit` and `var --edit` commands. From now on, a parsing error is thrown. [#30]https://github.com/EduardoRodriguesF/quartz/issues/30
- Linux with aarch64 architecture were incompatible with quartz.

## [0.7.0] - 2023-07-29

### Added

- More convenient `--get` option for `header` command.
- It is now possible to use multiple `--set` in a single `variable` command.
- New `--apply-context` option to apply context variables as soon as possible.

### Changed

- `headers` command was renamed to `header`.
- Headers option `--add` was renamed to `--set`.

### Fixed

- Query params could not use context variables.
- Some outputs were inconsistent.

## [0.6.0] - 2023-07-25

### Added

- New create `--query` option to use new query params system.
- New url `--full` option to print with queries.
- Query params can be defined separate from URL through the `query` command.
- New `-x` option for temporary handle switch.

### Changed

- [**BREAKING CHANGE**] Handles are now separated by slash (/). What used to be "auth users create" is now "auth/users/create".
- List command outputs a flat list of all handles to improve readability.

## [0.5.1] - 2023-07-23

### Changed

- Man pages and `help` command outputs were reviewed to make it clearer..

## [0.5.0] - 2023-07-21

### Added

- UI configuration section, featuring `colors` flag to enable/disable colored outputs.
- New config command tree: `--get`, `--set` and `--list`.

### Fixed

- Piping quartz through grep or pagers would make it loose its colors.
- Releases are now automated and more reliable. Please, ignore testing versions 0.4.{0-6}...

## [0.4.6] - 2023-07-19

## [0.4.5] - 2023-07-19

## [0.4.4] - 2023-07-19

## [0.4.3] - 2023-07-19

## [0.4.2] - 2023-07-19

## [0.4.1] - 2023-07-18

## [0.4.0] - 2023-07-18

### Added

- `send` and `show` commands can receive endpoint handles for more convenient usage.

### Changed

- Terminology for endpoint pathing is now **handle**.

## [0.3.0] - 2023-07-15

### Added

- `status` command for getting current endpoint and/or context.

### Changed

- Uses `default` context in case none is specified.

### Fixed

- It is now impossible to overwrite an already existing endpoint with `create` command.
- Trying to create an endpoint without its reference would not exit with error.
- `variable` commands would always use the default context instead of the active one, causing completly broken behavior.
- Setting variables with quotation marks (e.g. `quartz variable --set baseUrl="localhost"`) would cause quartz to save the quotation marks itself. Those are now ignored.

## [0.2.1] - 2023-07-06

### Fixed
- `use` command would alter context instead of endpoint.

## [0.2.0] - 2023-07-04

### Added
- Multiple contexts can be defined to define variable values wrapped in {{<variable>}} notation when configuring an endpoint or its body. ([#14]https://github.com/EduardoRodriguesF/quartz/issues/17)
- Request history system, with the `quartz history` command to fetch it.

### Changed
- Endpoint response label "Time" has been changed to "Duration". This change was introduce to avoid confusion with Time as in Date time.

## [0.1.6] - 2023-06-10

## [0.1.5] - 2023-06-09

### Fixed

- Infinite loop on `body --print` command ([#17]https://github.com/EduardoRodriguesF/quartz/issues/17).
- Implement TLS for HTTPS requests to work ([#16]https://github.com/EduardoRodriguesF/quartz/issues/16).

## [0.1.4] - 2023-06-08

### Fixed

- Edit command opening non-existant file.

## [0.1.3] - 2023-06-07

### Changed
- License switched to Apache.

## [0.1.2] - 2023-06-05

### Fixed
- Fix `send` command not working due to stack overflowing.

## [0.1.1] - 2023-06-04

### Added
- Include intallation section on documentation.

### Changed
- Change invokation to be made with `quartz`.

## [0.1.0] - 2023-06-04

### Added
- Initial release.