Skip to main content

Kenvs

Credit for this page goes to BeSpunky.

Concepts And Terminology

A kenv, short for kit environment, in Script Kit is a directory containing a scripts directory, allowing the Script Kit application to identify where to look for scripts. This term comes from the idea of project environments in other languages like Python (pyenv) and Ruby (rbenv).

While a kenv only requires a scripts directory, other directories like lib, db, logs, etc. can be included for organization and utility purposes. These are not mandatory and depend on the user's preferences and needs. However, once Script Kit identifies the scripts in a scripts directory, it can watch, build, and run scripts while generating relevant materials like database files, logs, and so on.

my-kenv/  
├── scripts/
├── lib/
├── db/
├── logs/

Script Kit doesn't impose any restrictions on the scripts; they are just Node.js scripts. The only special aspect of Script Kit is the global helpers it injects to enhance script development.

Main vs Secondary Kenvs

When Script Kit is installed, it creates a 'main' kenv in the <user folder>/.kenv directory. This main kenv acts as the root project directory for Script Kit.

Secondary kenvs can be created inside the kenvs folder located in the main kenv directory (<user folder>/.kenv/kenvs/). These secondary kenvs allow users to group scripts and share them between different work environments or users.

.kenv/
├── scripts/
├── lib/
├── kenvs/
│ ├── secondary-kenv1/
│ │ ├── scripts/
│ │ ├── lib/
│ ├── secondary-kenv2/
│ │ ├── scripts/
│ │ ├── lib/

Installation and Initialization

Script Kit doesn't automatically initialize Git when a kenv is created. This is because Script Kit follows a "Don't assume anything about the users' environment" philosophy. However, Git is implicitly suggested for version control, as observed from the .gitignore file generated with a new kenv and the ability to clone a kenv from a Git repository.

In the future, Script Kit plans to bundle isomorphic-git to perform basic Git commands even if the user doesn't have Git installed. Also, adding a "git init" prompt to the "new kenv" actions is being considered.

How Kenvs Operate

Script Kit actively watches the scripts and lib folders of a kenv to detect changes. Any changes made in these directories trigger a rebuild of the scripts, making the updated versions immediately accessible through Script Kit's user interface.

Managing Kenvs

In Script Kit, you can perform a number of actions to manage your kenvs. You can use the Script Kit UI or handle these tasks manually.

Cloning a Kenv Repo

You can clone a kenv repository to create a secondary kenv in your main kenv. This allows you to use and modify scripts from other users or your other workstations.

Placeholder for illustration image

Creating a New Local Kenv

If you want to start a new set of scripts that are isolated from your main kenv, you can create a new local kenv. This is similar to creating a new project or a new workspace.

Placeholder for illustration image

Removing Kenvs

If a kenv is no longer needed, you can remove it from your system. This will delete all scripts and related files in that kenv.

Placeholder for illustration image

Pushing and Pulling a Cloned Kenv

If you have cloned a kenv from a git repository, you can push your changes to the remote repository or pull updates from it. This is useful when you're collaborating with others on a script or a set of scripts.

Placeholder for illustration image

Linking Folders as Kenvs

You can link any folder on your system as a kenv as long as it contains a scripts directory. This allows you to run scripts located outside the main kenv or any secondary kenvs.

Placeholder for illustration image

Unlinking Folders from Kenvs

If a linked folder is no longer needed as a kenv, you can unlink it. Unlinking a folder does not delete the folder or its content, it only removes the link from Script Kit.

Placeholder for illustration image

How to Use

Once you have set up your kenvs, you can start using them. The scripts in your main kenv and secondary kenvs will be available in the Script Kit interface for you to run.

To run a script from another kenv, you can use the kenvPath() function like so:

let scriptPath = kenvPath('kenvs', 'my-kenv', 'scripts', 'my-script.js')

If you need a utility function from a kenv's lib folder, you can import it using relative imports. For example, to import a function named doMagic from a file in a secondary kenv, you would write:

import { doMagic } from '../kenvs/my-kenv/lib/my-file'

Script Kit will automatically rebuild the scripts in your kenvs when changes are made, so the latest version of the scripts will always be available in the Script Kit interface.

Roadmap

Script Kit is looking at introducing the following features in the future:

  • Automatic GitHub Syncing: While it's a long way off, the team is considering automatic syncing with GitHub to make version control and script sharing easier.
  • Trusted Kenvs: This feature would allow the app to run scripts automatically based on their metadata. This is intended to prevent users from accidentally downloading malicious kenvs and running scripts without their knowledge.
  • GitHub Repo Creation: Script Kit is exploring the idea of leveraging GitHub's repo creation URL to allow users to create repositories directly from the app.

Remember, Script Kit is a flexible tool designed to adapt to your workflow, so feel free to experiment and find