Add "dclient instances" command to list known instances from config,
with --json support.
Improve "No instance specified" and "No database specified" error
messages to show the exact commands needed to fix the problem.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add _migrate_v1_to_v2() to convert aliases.json to config.json format.
Single-path-segment URLs are split into instance URL + default_database.
Auth keys are migrated from URLs to alias names. Original files are
backed up as .bak.
7 tests covering simple migration, no path segment, auth migration,
URL fallback for unmatched auth, skip if config exists, skip if no
aliases, and multi-path-segment URLs.
refs #29
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add test_commands_v2.py with 28 tests covering databases, tables,
plugins, schema, default_query, upsert, auth status, actor, and
get commands.
Add test_alias_v2.py with 5 tests for alias default, alias default-db,
and removing the default alias.
Update aliases.md and authentication.md docs for v2 API.
refs #29
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace aliases.json with config.json storing instances with
default_database. Instance resolution: -i flag → config default →
DATASETTE_URL. Database resolution: -d flag → instance default_database →
DATASETTE_DATABASE. Token resolution: --token → auth.json by alias →
auth.json by URL → DATASETTE_TOKEN.
Add click-default-group dependency for bare SQL shortcut support.
Add DCLIENT_CONFIG_DIR env var to override config directory.
Rewrite query, insert, get, and actor commands for v2 API where
instance is always -i flag. Add upsert command sharing insert
implementation. Add databases, tables, schema, plugins commands.
Add default_query hidden command for bare SQL shortcut.
Add alias default, alias default-db subcommands.
Add auth status subcommand.
refs #29
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Allow configuring a base Datasette instance URL and API token via
environment variables, so users can run commands like
`dclient query data "select ..."` without specifying a full URL each time.
DATASETTE_URL is combined with the argument as a path segment.
DATASETTE_TOKEN is used as a lowest-priority fallback for auth.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Move making queries to own page, refs #7
* Documentation for the dclient insert feature, refs #8
* Implemented progress bar for insert, refs #8
* --pk option
* --ignore and --replace for insert, refs #8
* --batch-size option, refs #8
* First insert test, using a mock - refs #8
* insert test that exercises against an in-memory Datasette instance, refs #8
* Insert tests now cover an error case, refs #8
* Tests for --ignore and --replace, refs #8
* Tests for different formats, refs #8
* Test for --no-detect-types
* Support for --encoding, refs #8