plover-run-applescript


Nameplover-run-applescript JSON
Version 0.3.13 PyPI version JSON
download
home_pagehttps://github.com/paulfioravanti/plover-run-applescript
SummaryRun AppleScripts from Plover
upload_time2024-10-04 01:51:30
maintainerNone
docs_urlNone
authorPaul Fioravanti
requires_pythonNone
licenseGNU General Public License v3 or later (GPLv3+)
keywords plover plover_plugin
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # Plover Run AppleScript

[![Build Status][Build Status image]][Build Status url] [![PyPI - Version][PyPI version image]][PyPI url] [![PyPI - Downloads][PyPI downloads image]][PyPI url] [![linting: pylint][linting image]][linting url]

This [Plover][] [extension][] [plugin][] contains a [command][] that can run
[AppleScript][] code, as well as load in and run external AppleScript files.

## Install

1. In the Plover application, open the Plugins Manager (either click the Plugins
   Manager icon, or from the `Tools` menu, select `Plugins Manager`).
2. From the list of plugins, find `plover-run-applescript`
3. Click "Install/Update"
4. When it finishes installing, restart Plover
5. After re-opening Plover, open the Configuration screen (either click the
   Configuration icon, or from the main Plover application menu, select
   `Preferences...`)
6. Open the Plugins tab
7. Check the box next to `plover_run_applescript` to activate the plugin

## How To Use

### One-Liners

If your AppleScript is one line long, then you can use the code directly in your
steno dictionary entry in the following way:

```json
"KR-PL": "{:COMMAND:APPLESCRIPT:activate application \"Google Chrome\"}"
```

### AppleScript Files

To run code in AppleScript files, create steno dictionary entry values that look
like the following:

```json
"KPH-PBD": "{:COMMAND:APPLESCRIPT:/path/to/your/applescript-file.scpt}"
```

> [!NOTE]
> You can compile your `.applescript` files into [`.scpt`][] files using the
> [`osacompile`][] tool:
>
> ```console
> osacompile -o my-file.scpt my-file.applescript
> ```

The path to your AppleScript file can contain a local `$ENVIRONMENT_VARIABLE`,
which will get expanded. For example, if you have a line like the following in
your `.zshrc` file:

```sh
export STENO_DICTIONARIES="$HOME/steno/steno-dictionaries"
```

You can use it in the command:

```json
"KPH-PBD": "{:COMMAND:APPLESCRIPT:$STENO_DICTIONARIES/path/to/applescript-file.scpt}"
```

### Sending Commands

If you want to test out a command before adding a steno dictionary entry
containing it, you can use Plover's [`plover_send_command`][] command-line tool.
For example:

```console
plover --script plover_send_command "APPLESCRIPT:activate application \"Google Chrome\""
plover --script plover_send_command "APPLESCRIPT:/path/to/your/applescript-file.scpt"
```

> Where `plover` in the command is a reference to your locally installed version
> of Plover. See the [Invoke Plover from the command line][] page for details on
> how to create that reference.

Pressing the "Disconnect and reconnect the machine" button on the Plover UI
resets the AppleScript script cache. If you make any changes to any AppleScript
files, make sure to press it so the file will be re-read in again.

> [!WARNING]
> Due to [this issue][] with [PyXA][], which this plugin relies on to talk to
> Apple's APIs, any AppleScript files that are referenced in a Plover outline
> cannot contain lists in the code (denoted by curly braces; e.g.
> `{"one", "two"}`).
>
> So, if you have code that looks like this:
>
> ```applescript
> keystroke "k" using {command down, shift down}
> ```
>
> You will have to re-write it out longhand to be able to use it with this
> plugin, like so:
>
> ```applescript
> key down command
> key down shift
> keystroke "k"
> key up shift
> key up command
> ```
>
> Or, extract the code you have that uses lists out into [script libraries][].
> I wrote about how I did this in _[Sharing AppleScript Handlers][]_.
>
> **Update**: The AppleScript-related issues have now been fixed, as can be seen
> in the issue. However, since those fixes are only in a version of PyXA that
> uses a Python version later than 3.9, we will have to wait until the Python
> version bundled in with Plover itself updates to at least 3.10 before this
> problem can be properly resolved.

## The Problem

The following is an example of how I used to run AppleScripts from [my Plover
dictionaries][] to perform some kind of automation task that could _only_ be
done on [macOS][] using AppleScript:

```json
"W-D": "{:COMMAND:SHELL:bash -ci 'osascript $STENO_DICTIONARIES/src/command/text/move-one-word-forward.scpt'}"
```

This solution does the following:

- uses the [Plover Run Shell][] plugin to run a shell command from Python
- calls `bash` in [interactive mode][] (`-i`) so that the command can see
  [environment variables][] (`$STENO_DICTIONARIES` in this case) outside of the
  Plover environment
- gets `bash` to use the [`osascript`][] command-line tool to load in and run
  the target compiled AppleScript ([`.scpt`][] file)

Running AppleScripts is generally _slow_, and constantly running one-off
commands that traverse a stack of `Python->Shell->osascript` made them _even
slower_.

So, this plugin leverages [PyXA][] to talk directly to Apple's APIs from Python,
and keeps a local cache of loaded scripts to avoid needing to re-read in
AppleScript files every time a command is run.

The above command now looks like this:

```json
"W-D": "{:COMMAND:APPLESCRIPT:$STENO_DICTIONARIES/src/command/text/move-one-word-forward.scpt}"
```

## Development

Clone from GitHub with [git][]:

```console
git clone git@github.com:paulfioravanti/plover-run-applescript.git
cd plover-run-applescript
python -m pip install --editable ".[test]"
```

If you are a [Tmuxinator][] user, you may find my [plover_run_applescript
project file][] of reference.

### Python Version

Plover's Python environment currently uses version 3.9 (see Plover's
[`workflow_context.yml`][] to confirm the current version).

So, in order to avoid unexpected issues, use your runtime version manager to
make sure your local development environment also uses Python 3.9.x.

### PyXA Version

This plugin depends on [PyXA][] for all Python-to-AppleScript interoperations.
The dependency is currently pinned at [version 0.0.9][] due to later versions
of PyXA using Python 3.10 syntax ([`match case`][] etc) that is too new for
Plover's Python version, and causes syntax errors.

### Testing

- [Pytest][] is used for testing in this plugin.
- [Coverage.py][] and [pytest-cov][] are used for test coverage, and to run
  coverage within Pytest
- [Pylint][] is used for code quality
- [Mypy][] is used for static type checking

Currently, the only parts able to be tested are ones that do not rely directly
on Plover or PyXA.

Run tests, coverage, and linting with the following commands:

```console
pytest --cov --cov-report=term-missing
pylint plover_run_applescript
mypy plover_run_applescript
```

To get a HTML test coverage report:

```console
coverage run --module pytest
coverage html
open htmlcov/index.html
```

If you are a [`just`][] user, you may find the [`justfile`][] useful during
development in running multiple test commands. You can run the following command
from the project root directory:

```console
just --working-directory . --justfile test/justfile
```

### Deploying Changes

After making any code changes, install the plugin into Plover with the following
command:

```console
plover --script plover_plugins install --editable .
```

> Where `plover` in the command is a reference to your locally installed version
> of Plover. See the [Invoke Plover from the command line][] page for details on
> how to create that reference.

When necessary, the plugin can be uninstalled via the command line with the
following command:

```console
plover --script plover_plugins uninstall plover-run-applescript
```

[AppleScript]: https://en.wikipedia.org/wiki/AppleScript
[Build Status image]: https://github.com/paulfioravanti/plover-run-applescript/actions/workflows/ci.yml/badge.svg
[Build Status url]: https://github.com/paulfioravanti/plover-run-applescript/actions/workflows/ci.yml
[command]: https://plover.readthedocs.io/en/latest/plugin-dev/commands.html
[Coverage.py]: https://github.com/nedbat/coveragepy
[environment variables]: https://en.wikipedia.org/wiki/Environment_variable
[extension]: https://plover.readthedocs.io/en/latest/plugin-dev/extensions.html
[git]: https://git-scm.com/
[interactive mode]: https://www.gnu.org/software/bash/manual/html_node/Interactive-Shell-Behavior.html
[Invoke Plover from the command line]: https://github.com/openstenoproject/plover/wiki/Invoke-Plover-from-the-command-line
[`just`]: https://github.com/casey/just
[`justfile`]: ./test/justfile
[linting image]: https://img.shields.io/badge/linting-pylint-yellowgreen
[linting url]: https://github.com/pylint-dev/pylint
[macOS]: https://en.wikipedia.org/wiki/MacOS
[`match case`]: https://peps.python.org/pep-0636/
[my Plover dictionaries]: https://github.com/paulfioravanti/steno-dictionaries/tree/main
[Mypy]: https://github.com/python/mypy
[`osacompile`]: https://ss64.com/osx/osacompile.html
[`osascript`]: https://ss64.com/osx/osascript.html
[Plover]: https://www.openstenoproject.org/
[plover_run_applescript project file]: https://github.com/paulfioravanti/dotfiles/blob/master/tmuxinator/plover_run_applescript.yml
[Plover Run Shell]: https://github.com/user202729/plover_run_shell
[`plover_send_command`]: https://plover.readthedocs.io/en/latest/cli_reference.html#sending-commands
[plugin]: https://plover.readthedocs.io/en/latest/plugins.html#types-of-plugins
[Pylint]: https://github.com/pylint-dev/pylint
[PyPI downloads image]:https://img.shields.io/pypi/dm/plover-run-applescript
[PyPI version image]: https://img.shields.io/pypi/v/plover-run-applescript
[PyPI url]: https://pypi.org/project/plover-run-applescript/
[Pytest]: https://pytest.org/
[pytest-cov]: https://github.com/pytest-dev/pytest-cov/
[PyXA]: https://github.com/SKaplanOfficial/PyXA
[`.scpt`]: https://fileinfo.com/extension/scpt
[script libraries]: https://developer.apple.com/library/archive/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/UseScriptLibraries.html
[Sharing AppleScript Handlers]: https://www.paulfioravanti.com/blog/sharing-applescript-handlers/
[this issue]: https://github.com/SKaplanOfficial/PyXA/issues/16
[Tmuxinator]: https://github.com/tmuxinator/tmuxinator
[version 0.0.9]: https://github.com/SKaplanOfficial/PyXA/tree/v0.0.9
[`workflow_context.yml`]: https://github.com/openstenoproject/plover/blob/master/.github/workflows/ci/workflow_context.yml

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/paulfioravanti/plover-run-applescript",
    "name": "plover-run-applescript",
    "maintainer": null,
    "docs_url": null,
    "requires_python": null,
    "maintainer_email": null,
    "keywords": "plover plover_plugin",
    "author": "Paul Fioravanti",
    "author_email": "paul@paulfioravanti.com",
    "download_url": "https://files.pythonhosted.org/packages/8c/e0/306239b0f9a430749bfe7638ba4da34e9049f2a0c0314e62453417e4e623/plover_run_applescript-0.3.13.tar.gz",
    "platform": null,
    "description": "# Plover Run AppleScript\n\n[![Build Status][Build Status image]][Build Status url] [![PyPI - Version][PyPI version image]][PyPI url] [![PyPI - Downloads][PyPI downloads image]][PyPI url] [![linting: pylint][linting image]][linting url]\n\nThis [Plover][] [extension][] [plugin][] contains a [command][] that can run\n[AppleScript][] code, as well as load in and run external AppleScript files.\n\n## Install\n\n1. In the Plover application, open the Plugins Manager (either click the Plugins\n   Manager icon, or from the `Tools` menu, select `Plugins Manager`).\n2. From the list of plugins, find `plover-run-applescript`\n3. Click \"Install/Update\"\n4. When it finishes installing, restart Plover\n5. After re-opening Plover, open the Configuration screen (either click the\n   Configuration icon, or from the main Plover application menu, select\n   `Preferences...`)\n6. Open the Plugins tab\n7. Check the box next to `plover_run_applescript` to activate the plugin\n\n## How To Use\n\n### One-Liners\n\nIf your AppleScript is one line long, then you can use the code directly in your\nsteno dictionary entry in the following way:\n\n```json\n\"KR-PL\": \"{:COMMAND:APPLESCRIPT:activate application \\\"Google Chrome\\\"}\"\n```\n\n### AppleScript Files\n\nTo run code in AppleScript files, create steno dictionary entry values that look\nlike the following:\n\n```json\n\"KPH-PBD\": \"{:COMMAND:APPLESCRIPT:/path/to/your/applescript-file.scpt}\"\n```\n\n> [!NOTE]\n> You can compile your `.applescript` files into [`.scpt`][] files using the\n> [`osacompile`][] tool:\n>\n> ```console\n> osacompile -o my-file.scpt my-file.applescript\n> ```\n\nThe path to your AppleScript file can contain a local `$ENVIRONMENT_VARIABLE`,\nwhich will get expanded. For example, if you have a line like the following in\nyour `.zshrc` file:\n\n```sh\nexport STENO_DICTIONARIES=\"$HOME/steno/steno-dictionaries\"\n```\n\nYou can use it in the command:\n\n```json\n\"KPH-PBD\": \"{:COMMAND:APPLESCRIPT:$STENO_DICTIONARIES/path/to/applescript-file.scpt}\"\n```\n\n### Sending Commands\n\nIf you want to test out a command before adding a steno dictionary entry\ncontaining it, you can use Plover's [`plover_send_command`][] command-line tool.\nFor example:\n\n```console\nplover --script plover_send_command \"APPLESCRIPT:activate application \\\"Google Chrome\\\"\"\nplover --script plover_send_command \"APPLESCRIPT:/path/to/your/applescript-file.scpt\"\n```\n\n> Where `plover` in the command is a reference to your locally installed version\n> of Plover. See the [Invoke Plover from the command line][] page for details on\n> how to create that reference.\n\nPressing the \"Disconnect and reconnect the machine\" button on the Plover UI\nresets the AppleScript script cache. If you make any changes to any AppleScript\nfiles, make sure to press it so the file will be re-read in again.\n\n> [!WARNING]\n> Due to [this issue][] with [PyXA][], which this plugin relies on to talk to\n> Apple's APIs, any AppleScript files that are referenced in a Plover outline\n> cannot contain lists in the code (denoted by curly braces; e.g.\n> `{\"one\", \"two\"}`).\n>\n> So, if you have code that looks like this:\n>\n> ```applescript\n> keystroke \"k\" using {command down, shift down}\n> ```\n>\n> You will have to re-write it out longhand to be able to use it with this\n> plugin, like so:\n>\n> ```applescript\n> key down command\n> key down shift\n> keystroke \"k\"\n> key up shift\n> key up command\n> ```\n>\n> Or, extract the code you have that uses lists out into [script libraries][].\n> I wrote about how I did this in _[Sharing AppleScript Handlers][]_.\n>\n> **Update**: The AppleScript-related issues have now been fixed, as can be seen\n> in the issue. However, since those fixes are only in a version of PyXA that\n> uses a Python version later than 3.9, we will have to wait until the Python\n> version bundled in with Plover itself updates to at least 3.10 before this\n> problem can be properly resolved.\n\n## The Problem\n\nThe following is an example of how I used to run AppleScripts from [my Plover\ndictionaries][] to perform some kind of automation task that could _only_ be\ndone on [macOS][] using AppleScript:\n\n```json\n\"W-D\": \"{:COMMAND:SHELL:bash -ci 'osascript $STENO_DICTIONARIES/src/command/text/move-one-word-forward.scpt'}\"\n```\n\nThis solution does the following:\n\n- uses the [Plover Run Shell][] plugin to run a shell command from Python\n- calls `bash` in [interactive mode][] (`-i`) so that the command can see\n  [environment variables][] (`$STENO_DICTIONARIES` in this case) outside of the\n  Plover environment\n- gets `bash` to use the [`osascript`][] command-line tool to load in and run\n  the target compiled AppleScript ([`.scpt`][] file)\n\nRunning AppleScripts is generally _slow_, and constantly running one-off\ncommands that traverse a stack of `Python->Shell->osascript` made them _even\nslower_.\n\nSo, this plugin leverages [PyXA][] to talk directly to Apple's APIs from Python,\nand keeps a local cache of loaded scripts to avoid needing to re-read in\nAppleScript files every time a command is run.\n\nThe above command now looks like this:\n\n```json\n\"W-D\": \"{:COMMAND:APPLESCRIPT:$STENO_DICTIONARIES/src/command/text/move-one-word-forward.scpt}\"\n```\n\n## Development\n\nClone from GitHub with [git][]:\n\n```console\ngit clone git@github.com:paulfioravanti/plover-run-applescript.git\ncd plover-run-applescript\npython -m pip install --editable \".[test]\"\n```\n\nIf you are a [Tmuxinator][] user, you may find my [plover_run_applescript\nproject file][] of reference.\n\n### Python Version\n\nPlover's Python environment currently uses version 3.9 (see Plover's\n[`workflow_context.yml`][] to confirm the current version).\n\nSo, in order to avoid unexpected issues, use your runtime version manager to\nmake sure your local development environment also uses Python 3.9.x.\n\n### PyXA Version\n\nThis plugin depends on [PyXA][] for all Python-to-AppleScript interoperations.\nThe dependency is currently pinned at [version 0.0.9][] due to later versions\nof PyXA using Python 3.10 syntax ([`match case`][] etc) that is too new for\nPlover's Python version, and causes syntax errors.\n\n### Testing\n\n- [Pytest][] is used for testing in this plugin.\n- [Coverage.py][] and [pytest-cov][] are used for test coverage, and to run\n  coverage within Pytest\n- [Pylint][] is used for code quality\n- [Mypy][] is used for static type checking\n\nCurrently, the only parts able to be tested are ones that do not rely directly\non Plover or PyXA.\n\nRun tests, coverage, and linting with the following commands:\n\n```console\npytest --cov --cov-report=term-missing\npylint plover_run_applescript\nmypy plover_run_applescript\n```\n\nTo get a HTML test coverage report:\n\n```console\ncoverage run --module pytest\ncoverage html\nopen htmlcov/index.html\n```\n\nIf you are a [`just`][] user, you may find the [`justfile`][] useful during\ndevelopment in running multiple test commands. You can run the following command\nfrom the project root directory:\n\n```console\njust --working-directory . --justfile test/justfile\n```\n\n### Deploying Changes\n\nAfter making any code changes, install the plugin into Plover with the following\ncommand:\n\n```console\nplover --script plover_plugins install --editable .\n```\n\n> Where `plover` in the command is a reference to your locally installed version\n> of Plover. See the [Invoke Plover from the command line][] page for details on\n> how to create that reference.\n\nWhen necessary, the plugin can be uninstalled via the command line with the\nfollowing command:\n\n```console\nplover --script plover_plugins uninstall plover-run-applescript\n```\n\n[AppleScript]: https://en.wikipedia.org/wiki/AppleScript\n[Build Status image]: https://github.com/paulfioravanti/plover-run-applescript/actions/workflows/ci.yml/badge.svg\n[Build Status url]: https://github.com/paulfioravanti/plover-run-applescript/actions/workflows/ci.yml\n[command]: https://plover.readthedocs.io/en/latest/plugin-dev/commands.html\n[Coverage.py]: https://github.com/nedbat/coveragepy\n[environment variables]: https://en.wikipedia.org/wiki/Environment_variable\n[extension]: https://plover.readthedocs.io/en/latest/plugin-dev/extensions.html\n[git]: https://git-scm.com/\n[interactive mode]: https://www.gnu.org/software/bash/manual/html_node/Interactive-Shell-Behavior.html\n[Invoke Plover from the command line]: https://github.com/openstenoproject/plover/wiki/Invoke-Plover-from-the-command-line\n[`just`]: https://github.com/casey/just\n[`justfile`]: ./test/justfile\n[linting image]: https://img.shields.io/badge/linting-pylint-yellowgreen\n[linting url]: https://github.com/pylint-dev/pylint\n[macOS]: https://en.wikipedia.org/wiki/MacOS\n[`match case`]: https://peps.python.org/pep-0636/\n[my Plover dictionaries]: https://github.com/paulfioravanti/steno-dictionaries/tree/main\n[Mypy]: https://github.com/python/mypy\n[`osacompile`]: https://ss64.com/osx/osacompile.html\n[`osascript`]: https://ss64.com/osx/osascript.html\n[Plover]: https://www.openstenoproject.org/\n[plover_run_applescript project file]: https://github.com/paulfioravanti/dotfiles/blob/master/tmuxinator/plover_run_applescript.yml\n[Plover Run Shell]: https://github.com/user202729/plover_run_shell\n[`plover_send_command`]: https://plover.readthedocs.io/en/latest/cli_reference.html#sending-commands\n[plugin]: https://plover.readthedocs.io/en/latest/plugins.html#types-of-plugins\n[Pylint]: https://github.com/pylint-dev/pylint\n[PyPI downloads image]:https://img.shields.io/pypi/dm/plover-run-applescript\n[PyPI version image]: https://img.shields.io/pypi/v/plover-run-applescript\n[PyPI url]: https://pypi.org/project/plover-run-applescript/\n[Pytest]: https://pytest.org/\n[pytest-cov]: https://github.com/pytest-dev/pytest-cov/\n[PyXA]: https://github.com/SKaplanOfficial/PyXA\n[`.scpt`]: https://fileinfo.com/extension/scpt\n[script libraries]: https://developer.apple.com/library/archive/documentation/LanguagesUtilities/Conceptual/MacAutomationScriptingGuide/UseScriptLibraries.html\n[Sharing AppleScript Handlers]: https://www.paulfioravanti.com/blog/sharing-applescript-handlers/\n[this issue]: https://github.com/SKaplanOfficial/PyXA/issues/16\n[Tmuxinator]: https://github.com/tmuxinator/tmuxinator\n[version 0.0.9]: https://github.com/SKaplanOfficial/PyXA/tree/v0.0.9\n[`workflow_context.yml`]: https://github.com/openstenoproject/plover/blob/master/.github/workflows/ci/workflow_context.yml\n",
    "bugtrack_url": null,
    "license": "GNU General Public License v3 or later (GPLv3+)",
    "summary": "Run AppleScripts from Plover",
    "version": "0.3.13",
    "project_urls": {
        "Homepage": "https://github.com/paulfioravanti/plover-run-applescript"
    },
    "split_keywords": [
        "plover",
        "plover_plugin"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "b8bce2ab9d1fcf4592b50cdc96f13d5196bea56dab42aed6f221db6a481de3cf",
                "md5": "14f2303e8ccd8f82dd129a8a18002659",
                "sha256": "bde5cdde9ced13cf8bfaf1094fc5862bf2ff158595fdd418cf6ad16464941ce2"
            },
            "downloads": -1,
            "filename": "plover_run_applescript-0.3.13-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "14f2303e8ccd8f82dd129a8a18002659",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": null,
            "size": 24652,
            "upload_time": "2024-10-04T01:51:28",
            "upload_time_iso_8601": "2024-10-04T01:51:28.839856Z",
            "url": "https://files.pythonhosted.org/packages/b8/bc/e2ab9d1fcf4592b50cdc96f13d5196bea56dab42aed6f221db6a481de3cf/plover_run_applescript-0.3.13-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8ce0306239b0f9a430749bfe7638ba4da34e9049f2a0c0314e62453417e4e623",
                "md5": "c36d7265a08d8bb967a3a1c10e716dbe",
                "sha256": "ba46ff7ec118b8a533bd8bd8155f394e01591781cd34a94bbc6662aea605699d"
            },
            "downloads": -1,
            "filename": "plover_run_applescript-0.3.13.tar.gz",
            "has_sig": false,
            "md5_digest": "c36d7265a08d8bb967a3a1c10e716dbe",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": null,
            "size": 25291,
            "upload_time": "2024-10-04T01:51:30",
            "upload_time_iso_8601": "2024-10-04T01:51:30.578955Z",
            "url": "https://files.pythonhosted.org/packages/8c/e0/306239b0f9a430749bfe7638ba4da34e9049f2a0c0314e62453417e4e623/plover_run_applescript-0.3.13.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-10-04 01:51:30",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "paulfioravanti",
    "github_project": "plover-run-applescript",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "plover-run-applescript"
}
        
Elapsed time: 0.33701s