The module adds drush command: fox:console (fox). Command allow you to obtain data at entity (context) levels. Context: entity_type.bundle .

The module can be useful during audits, migrations, developing, CI/CD and architecture reviews. May also be useful for CLI tools such as Pantheon hosting's terminus.

Console is a looped interactive command (like mysql console or FoxPro command window). The module keeps command history (by arrows up/down) and autocomplete (by tab).

Fox console has condition approach:
IF condition THEN command1&command2&... ELSE command3&command4&... .

The module uses variables that can be retrieved from the Fox Entity Query or using the SET command. A variable can be evaluated using the '@' symbol. Object field can be evaluated using the '.' symbol, e.g. @data.0.title.

A custom fox command can be easy added (example module is included).
Generating fox commands can be made by drush gen fox:command.

Usage examples:

    • # Block user with uid = 1
    • SELECT status FROM user WHERE uid = 1 INTO data
    • IF @data.0.status = 1 THEN REPLACE status WITH 0
    • # Create taxonomy vocabulary and taxonomy term
    • USE taxonomy_vocabulary
    • SELECT vid WHERE vid = test
    • IF @count <> 0 THEN QUIT
    • APPEND vid WITH test, name WITH Test, description WITH Test taxonomy, status WITH 1, weight WITH 0
    • USE taxonomy_term.test
    • APPEND name WITH test tags, description WITH Test tag, status WITH 1, weight WITH 0
    • PRINT Terms were created (count = @count)
    • # Delete orphaned nodes
    • SQL UNIX_TIMESTAMP(DATE_SUB(NOW(), INTERVAL 1 MONTH)) AS last_month INTO data
    • PRINT Month ago timestamp: @data.0.last_month
    • SELECT nid FROM node WHERE status = 0 AND changed < @data.0.last_month INTO nodes
    • DELETE FOR @nodes
    • # Replace a field by another field
    • USE node.page
    • SELECT nid,title INTO data
    • IF @count = 0 THEN QUIT
    • REPLACE field_title2 WITH @data.@__index.title FOR @data

... more examples available in the README.md file

Parameters:

  • --input
    Input commands: "command1;command2" or load file
  • --output
    Output command history to screen or to file
  • --mode
    Command mode: [default]|debug
  • --quit
    Non-interactive mode

Entity query:

  • SELECT fields FROM context WHERE conditions ORDER BY order LIMIT limit OFFSET offset INTO variable
  • SET active TO 1; FROM user WHERE status = @active

Fox commands:

Navigation

  • USE
    Select context, for example node.page (node entity type, page bundle).
    Usage: USE [context]. USE without context cleared existing context.
  • GO
    Set context record.
    Usage: GO {TOP|BOTTOM|PREV [number]|NEXT [number]|number}
  • SEEK
    Seek context record by entity ID.
    Usage: SEEK id
  • BROWSE
    Browse fields for context record.
    Usage: BROWSE [*|fields] --vertical, --json").

Mutations

  • CREATE
    Create record.
    Usage: CREATE id, label
  • APPEND
    Append record with fields.
    Usage: APPEND uField1 WITH eExpr1 [, uField2 WITH eExpr2]
  • CLONE
    Clone context record.
    Usage: CLONE [id, label]
  • REPLACE
    Replace fields for context record. Supports inner index variable @__index for FOR option.
    Usage: REPLACE uField1 WITH eExpr1 [, uField2 WITH eExpr2] [FOR @variable]
  • DELETE
    Delete context record.
    Usage: DELETE [FOR @variable]

Variables

  • SET
    Set variables.
    Usage: SET var1 TO eExpr1 [, var2 TO eExpr2].
    Delete variable: SET var1 TO
  • PRINT
    Print variable.
    Usage:PRINT @var
  • TEST
    Test variables.
    Usage: TEST function variable operand value [message].
    Functions: COUNT.

Loading

  • LOAD
    Load file with fox commands.
    Usage: LOAD file
  • DRUSH
    Call an external Drush command.
    Usage: DRUSH command [JSON args] [JSON options])

Information

  • INFO
    List entities,bundles or fields list for entity,bundle.
    Usage: INFO [entity_id.[bundle]]
  • LIST
    List Fox commands.
    Usage: LIST
  • SQL
    Execute native SELECT|SHOW|DESCRIBE SQL.
    Usage: SQL expressions [INTO variable]
  • FILE
    Get file information.
    Usage: FILE uri [INTO variable]

Similar projects:

Sponsorship

...have a feature you'd like to sponsor? Get in touch

Project information

  • caution Minimally maintained
    Maintainers monitor issues, but fast responses are not guaranteed.
  • caution Maintenance fixes only
    Considered feature-complete by its maintainers.
  • Project categories: Administration tools, Automation, Developer tools
  • Ecosystem: Drush
  • Created by goodboy on , updated
  • shieldStable releases for this project are covered by the security advisory policy.
    Look for the shield icon below.

Releases