This project has been moved to abstra lib.
Command Line Interface for Abstra Cloud
Download preferably using pipx:
pipx install abstra-cliOr using pip:
pip install abstra-cliYou will need to be authenticated to run most commands.
- Run command below:
abstra login-
Credentials are stored at
.abstra/credentialspath inside current directory. -
Alternatively you can set the
ABSTRA_API_TOKENenvironment variable. -
Alternatively you can run
abstra configure <token>if you already have a token.
The general structure of the commands follows the pattern below:
abstra <command> <resource> [<argument>...] [--<optional-argument-name> <optional-argument-value> ...]The available commands are:
listaddupdateremoveplaylogs
Remote resources can be:
formshooksjobsfilesvarspackagessubdomaindash
List remote resources on your workspace.
abstra list RESOURCE{forms, hooks, jobs, files, vars, packages}Examples:
abstra list packages
abstra list vars
abstra list files
abstra list forms
abstra list hooks
abstra list jobs
abstra list subdomain
# Saving cloud packages to a requirements.txt file
abstra list packages > requirements.txt
# Saving cloud environment variables to a .env file
abstra list vars > .envAdds remote resources on your workspace.
abstra add RESOURCE [...OPTIONS]The current options for each resource are:
--nameor--nor--title: string--path: string--fileor--f: file_path*--codeor--c: string*--enabled: boolean--background: image_path or string--main-color: string--start-message: string--error-message: string--end-message: string--start-button-text: string--restart-button-text: string--timeout-message: string--logo-url: string--show-sidebar: boolean--log-messages: boolean--font-color: string--auto-start: boolean--allow-restart: boolean--welcome-title: string--brand-name: string--upsert: boolean
* Note: set either file or code, not both.
Examples:
abstra add form --name="my_form" -f main.py --background '#fffeee'
abstra add form --path=test -f test.py --enabled=False
abstra add form --name="Form Name" --code "from hackerforms import * \n\ndisplay('hello_world')" --background '#fffeee' --main-color red --start-message 'start message' --error-message 'error-message' --end-message 'end message' --start-button-text 'start button text' --show-sidebar --allow-restart--nameor--nor--title: string--path: string--fileor--f: file_path*--codeor--c: string*--enabled: boolean--upsert: boolean
* Note: set either file or code, but not both.
Examples:
abstra add hook --name="test hook" -f main.py --upsert
abstra add hook --path=test -f test.py --enabled=False--nameor--nor--title: string--identifieror--idt: string--scheduleor--crontab: string--fileor--f: file_path--codeor--c: string--enabled: boolean--upsert: boolean
* Note: set either file or code, but not both.
Examples:
abstra add job --idt new-job --noenabled --name="Test Job" --upsert
abstra add job --idt daily --schedule="00 00 1 * *" --name="Every midnight"- file_path[]: list of file or directory paths. Defaults to
.
Examples:
abstra add files foo.txt bar.log
abstra add files foo/ ./- environment_variable[]: list of Key=Value env vars
- -f or --file: file_path (ex. -f .env)
Examples:
abstra add vars ENVIRONMENT=production VERSION=1.0.0
abstra add vars -f .env
abstra add vars --file .env- package_name[]: list of packages with optional version (ex. numpy=1.0.1)
- -f or --file: file_path (ex. --file requirements.txt). Defaults to
requirements.txt
Examples:
abstra add packages pandas numpy=1.0.1 scipy>=1.0.1
abstra add packages -f requirements.txt
abstra add packages -r requirements.txt
abstra add packages --file requirements.txt
abstra add packages --requirement requirements.txtUpdates remote resources on your workspace.
Currently only available for forms, hooks and jobs
abstra update [IDENTIFIER OR PATH] [...OPTIONS]The options for each resource are:
form_path: string (required parameter)--name: string--path: string--file: file_path--code: string--enabled: boolean--background: image_path or string--main-color: string--start-message: string--error-message: string--end-message: string--start-button-text: string--restart-button-text: string--timeout-message: string--logo-url: string--show-sidebar: boolean--log-messages: boolean--font-color: string--auto-start: boolean--allow-restart: boolean--welcome-title: string--brand-name: string
Examples:
abstra update form new-onboarding --name="Another name" --allow-restartidentifier: string (required parameter)--nameor--nor--title: string--identifieror--idt: string--scheduleor--crontab: string--fileor--f: file_path--codeor--c: string--enabled: boolean
Example:
abstra update job daily --schedule="00 00 5 * *"hook_path: string (required parameter)--nameor--nor--title: string--path: string--fileor--f: file_path--codeor--c: string--enabled: boolean
Examples:
abstra update hook stripe-callback --enabled--name: string (required parameter)
Examples:
abstra update subdomain new-subdomain-nameRemove remote resources from your workspace.
abstra remove RESOURCE [...OPTIONS]Examples:
abstra remove form sales-onboarding
abstra remove job monthly
abstra remove hook stripe-test
abstra remove files foo.txt bar.log
abstra remove vars ENVIRONMENT VERSION
abstra remove packages pandas numpy scipyRun the resource on Abstra Cloud. Currently only available for forms.
abstra play RESOURCE [...OPTIONS]Examples:
abstra play form b2b-ingestionThis command allows you to specify several resources in a JSON file and deploy them in one command (great for CI/CD workflows).
The default path is abstra.json in the root directory.
abstra deploy [--file or -f]Examples:
abstra deploy -f prod.jsonThe file shoud follow a structure similar to what you can pass in each resource add command (using deploy the upsert flag will be added).
Example file:
{
"forms": [
{
"name": "Main Form",
"path": "main",
"file": "forms/main.py"
},
{
"name": "Secondary Form",
"path": "secondary",
"code": "forms/secondary.py",
"enabled": false
}
],
"hooks": [
{
"name": "Test",
"path": "test",
"file": "hooks/test.py"
},
{
"name": "Stripe",
"path": "stripe",
"file": "hooks/stripe.py"
}
],
"jobs": [
{
"name": "Monthly",
"idt": "month",
"file": "jobs/month.py",
"schedule": "00 00 1 * *",
"enabled": false
},
{
"name": "Weekly",
"idt": "week",
"file": "jobs/week.py",
"schedule": "00 00 * * 1"
}
],
"files": ["root.json", "files/"],
"packages": {
"file": "requirements.txt"
},
"vars": {
"file": ".env"
}
}For packages and vars you can also specify manually:
{
"packages": ["pydash", "stripe==1.1.0"],
"vars": ["ABSTRA_CLOUD=test", "STRIPE_KEY=foobar"]
}This command allows you to see the logs of one resource in your workspace.
abstra logs RESOURCE [...OPTIONS]The options for each resource are:
--path: string (optional)--limit: integer (optional, default to 20. To disable set to 0)--offset: integer (optional, default to 0)
Examples:
abstra logs dash --path my-dash --limit 10 --offset 0--id: string (optional)--limit: integer (optional, default to 20. To disable set to 0)--offset: integer (optional, default to 0)
abstra logs form --limit 10 --offset 0It lists all the logs in your workspace.
--limit: integer (optional, default to 20. To disable set to 0)--offset: integer (optional, default to 0)
abstra logs hooks --limit 10 --offset 0--idor--log_id: string--limit: integer (optional, default to 20. To disable set to 0)--offset: integer (optional, default to 0)
abstra logs hook --id 6a7788c1-7eaf-46a6-93d5-13dfba962e90 --limit 10 --offset 0It lists all the logs in your workspace.
--limit: integer (optional, default to 20. To disable set to 0)--offset: integer (optional, default to 0)
abstra logs jobs --limit 10 --offset 0It lists all the logs within a specific job or a specific log.
--idor--log_id: string--limit: integer (optional, default to 20. To disable set to 0)--offset: integer (optional, default to 0)
abstra logs job --id 6a7788c1-7eaf-46a6-93d5-13dfba962e90 --limit 10 --offset 0It lists the logs of all resources in your workspace.
--limit: integer (optional, default to 20. To disable set to 0)--offset: integer (optional, default to 0)
abstra logs workspaceSome commands have aliases.
# Alias for `abstra add files` with default argument `.`
abstra upload [FILES or DIRECTORIES, default: .]# Alias for `abstra list files`
abstra ls# Alias for `abstra remove files`
abstra rm# Alias for `abstra add packages`
abstra install [PACKAGES]You can ignore files placing a text file named .abstraignore at the target directory. The file .abstraignore itself will always be ignored.
Example:
__pycache__
tests/
*.ipynb