ISISComputingGroup / ISISComputingGroup/lewis

Cleaner External Device Referencing

Open
#260 1 comment 0 reactions 0 assignees View on GitHub
build tools packaging
Dominant language
Python
Stars
24
Forks
19
PR merge metrics
No merged PRs in 30d

Description

This came up while reviewing #259.

Currently, Lewis requires this sort of layout for a custom device directory:
```
/some/host/path <-- Must point -a here
├─ devices/ <-- Must name this using -k
│ ├─ epics_device/ <-- Must name this as positional argument
│ │ └─ ...
│ ├─ stream_device/
│ │ └─ ...
│ └ __init__.py <-- Must exist
```

From an internal implementation perspective, I understand why this is the case. But from a user's perspective, this is all very counter-intuitive, strange and inconvenient... because a user will be looking at it this way:

```
/path/to/my/devices <-- Lewis needs to know where my devices are
├─ epics_device/ <-- Lewis needs to know which device I want to start
│ └─ ...
├─ stream_device/
│ └─ ...
└ __init__.py <-- Why do I have to add this? Shouldn't be necessary!
```

> I have some devices. I've put them all in a folder.
> I understand Lewis needs to know where they are and which one to start. But...
> Why is `/path/to/my/devices` split into two options?
> Why does Lewis even care about `/path/to/my`? That has nothing to do with my `devices/`!
> Why do I have to put this weird `__init__.py` thing in `path/to/my/devices`? It's just a folder where I happened to put my devices!"

I think a cleaner syntax would be something like:

```
$ docker run -it -v /path/to/my/devices:/external dmscid/lewis -m /external epics_device
$ lewis -m /path/to/my/devices epics_device
```

Or maybe we could even integrate path detection with the device name parameter (If a `/` or `\` is present, treat `device_name` as a `path/to/device_name`):

```
$ docker run -it -v /path/to/my/devices:/external dmscid/lewis /external/epics_device
$ lewis /path/to/my/devices/epics_device
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.