cyclo-manager 0.1.0.dev2__tar.gz → 0.1.0.dev3__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cyclo_manager-0.1.0.dev2 → cyclo_manager-0.1.0.dev3}/PKG-INFO +5 -8
- {cyclo_manager-0.1.0.dev2 → cyclo_manager-0.1.0.dev3}/README.md +4 -7
- {cyclo_manager-0.1.0.dev2 → cyclo_manager-0.1.0.dev3}/cyclo_manager.egg-info/PKG-INFO +5 -8
- {cyclo_manager-0.1.0.dev2 → cyclo_manager-0.1.0.dev3}/cyclo_manager_cli/__init__.py +1 -1
- {cyclo_manager-0.1.0.dev2 → cyclo_manager-0.1.0.dev3}/cyclo_manager_cli/cli.py +5 -45
- {cyclo_manager-0.1.0.dev2 → cyclo_manager-0.1.0.dev3}/cyclo_manager_cli/docker/docker-compose.yml +0 -2
- {cyclo_manager-0.1.0.dev2 → cyclo_manager-0.1.0.dev3}/pyproject.toml +1 -1
- {cyclo_manager-0.1.0.dev2 → cyclo_manager-0.1.0.dev3}/setup.cfg +1 -1
- {cyclo_manager-0.1.0.dev2 → cyclo_manager-0.1.0.dev3}/cyclo_manager.egg-info/SOURCES.txt +0 -0
- {cyclo_manager-0.1.0.dev2 → cyclo_manager-0.1.0.dev3}/cyclo_manager.egg-info/dependency_links.txt +0 -0
- {cyclo_manager-0.1.0.dev2 → cyclo_manager-0.1.0.dev3}/cyclo_manager.egg-info/entry_points.txt +0 -0
- {cyclo_manager-0.1.0.dev2 → cyclo_manager-0.1.0.dev3}/cyclo_manager.egg-info/requires.txt +0 -0
- {cyclo_manager-0.1.0.dev2 → cyclo_manager-0.1.0.dev3}/cyclo_manager.egg-info/top_level.txt +0 -0
- {cyclo_manager-0.1.0.dev2 → cyclo_manager-0.1.0.dev3}/cyclo_manager_cli/config/config.yml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cyclo-manager
|
|
3
|
-
Version: 0.1.0.
|
|
3
|
+
Version: 0.1.0.dev3
|
|
4
4
|
Summary: cyclo_manager CLI: pip-installable launcher for cyclo_manager server and UI containers. Run 'cyclo_manager up' to start Docker stack.
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -49,12 +49,10 @@ cyclo_manager up
|
|
|
49
49
|
|
|
50
50
|
| Command | What it does |
|
|
51
51
|
|--------|----------------|
|
|
52
|
-
| `cyclo_manager up` | `docker compose up -d` for **`cyclo_manager`** and **`ui`**; then `docker compose create --no-recreate` for **`rmw_zenoh`** and **`novnc-server`** so those containers exist but stay **stopped** |
|
|
53
|
-
| `cyclo_manager up -c /path/to/config.yml` | Same as `up`, but mounts this file into the API container as config. If the path does not exist, the CLI **copies** the bundled default config there first |
|
|
54
|
-
| `cyclo_manager up -r 35` | Sets **`ROS_DOMAIN_ID`** for the stack (default: **30**) |
|
|
52
|
+
| `cyclo_manager up` | `docker compose up -d` for **`cyclo_manager`** and **`ui`**; then `docker compose create --no-recreate` for **`rmw_zenoh`** and **`novnc-server`** so those containers exist but stay **stopped**. Always mounts the **bundled** [`config/config.yml`](config/config.yml) (no custom `-c` path). |
|
|
55
53
|
| `cyclo_manager up --pull` | Runs `docker compose pull` before up/create |
|
|
56
54
|
| `cyclo_manager down` | `docker compose down` for the **packaged** compose file (stops/removes containers for that project) |
|
|
57
|
-
| `cyclo_manager update` | Runs `cyclo_manager down`, then `pip install -U cyclo-manager`, then `cyclo_manager up` again (optional
|
|
55
|
+
| `cyclo_manager update` | Runs `cyclo_manager down`, then `pip install -U cyclo-manager`, then `cyclo_manager up` again (optional `--pull` is forwarded to `up`) |
|
|
58
56
|
| `cyclo_manager --help` | Top-level help |
|
|
59
57
|
|
|
60
58
|
Implementation reference: [`cyclo_manager_cli/cli.py`](cyclo_manager_cli/cli.py).
|
|
@@ -70,10 +68,9 @@ Implementation reference: [`cyclo_manager_cli/cli.py`](cyclo_manager_cli/cli.py)
|
|
|
70
68
|
|
|
71
69
|
### Environment passed into Compose
|
|
72
70
|
|
|
73
|
-
- **`CYCLO_MANAGER_CONFIG_FILE`**: absolute path to the YAML
|
|
74
|
-
- **`ROS_DOMAIN_ID`**: from `-r` / `--ros-domain-id` (default **30**)
|
|
71
|
+
- **`CYCLO_MANAGER_CONFIG_FILE`**: absolute path to the **bundled** YAML on the host ([`config/config.yml`](config/config.yml)). `up` and `down` both set this when invoking Compose.
|
|
75
72
|
|
|
76
|
-
|
|
73
|
+
**`ROS_DOMAIN_ID`** is **not** set by the CLI. Use each container’s **`~/.bashrc`** (or image defaults) and restart containers so DDS matches your robots. For a custom config mount or host dev workflow, use the repository **`docker-compose.dev.yml`** instead of the pip CLI.
|
|
77
74
|
|
|
78
75
|
## Bundled config
|
|
79
76
|
|
|
@@ -38,12 +38,10 @@ cyclo_manager up
|
|
|
38
38
|
|
|
39
39
|
| Command | What it does |
|
|
40
40
|
|--------|----------------|
|
|
41
|
-
| `cyclo_manager up` | `docker compose up -d` for **`cyclo_manager`** and **`ui`**; then `docker compose create --no-recreate` for **`rmw_zenoh`** and **`novnc-server`** so those containers exist but stay **stopped** |
|
|
42
|
-
| `cyclo_manager up -c /path/to/config.yml` | Same as `up`, but mounts this file into the API container as config. If the path does not exist, the CLI **copies** the bundled default config there first |
|
|
43
|
-
| `cyclo_manager up -r 35` | Sets **`ROS_DOMAIN_ID`** for the stack (default: **30**) |
|
|
41
|
+
| `cyclo_manager up` | `docker compose up -d` for **`cyclo_manager`** and **`ui`**; then `docker compose create --no-recreate` for **`rmw_zenoh`** and **`novnc-server`** so those containers exist but stay **stopped**. Always mounts the **bundled** [`config/config.yml`](config/config.yml) (no custom `-c` path). |
|
|
44
42
|
| `cyclo_manager up --pull` | Runs `docker compose pull` before up/create |
|
|
45
43
|
| `cyclo_manager down` | `docker compose down` for the **packaged** compose file (stops/removes containers for that project) |
|
|
46
|
-
| `cyclo_manager update` | Runs `cyclo_manager down`, then `pip install -U cyclo-manager`, then `cyclo_manager up` again (optional
|
|
44
|
+
| `cyclo_manager update` | Runs `cyclo_manager down`, then `pip install -U cyclo-manager`, then `cyclo_manager up` again (optional `--pull` is forwarded to `up`) |
|
|
47
45
|
| `cyclo_manager --help` | Top-level help |
|
|
48
46
|
|
|
49
47
|
Implementation reference: [`cyclo_manager_cli/cli.py`](cyclo_manager_cli/cli.py).
|
|
@@ -59,10 +57,9 @@ Implementation reference: [`cyclo_manager_cli/cli.py`](cyclo_manager_cli/cli.py)
|
|
|
59
57
|
|
|
60
58
|
### Environment passed into Compose
|
|
61
59
|
|
|
62
|
-
- **`CYCLO_MANAGER_CONFIG_FILE`**: absolute path to the YAML
|
|
63
|
-
- **`ROS_DOMAIN_ID`**: from `-r` / `--ros-domain-id` (default **30**)
|
|
60
|
+
- **`CYCLO_MANAGER_CONFIG_FILE`**: absolute path to the **bundled** YAML on the host ([`config/config.yml`](config/config.yml)). `up` and `down` both set this when invoking Compose.
|
|
64
61
|
|
|
65
|
-
|
|
62
|
+
**`ROS_DOMAIN_ID`** is **not** set by the CLI. Use each container’s **`~/.bashrc`** (or image defaults) and restart containers so DDS matches your robots. For a custom config mount or host dev workflow, use the repository **`docker-compose.dev.yml`** instead of the pip CLI.
|
|
66
63
|
|
|
67
64
|
## Bundled config
|
|
68
65
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: cyclo-manager
|
|
3
|
-
Version: 0.1.0.
|
|
3
|
+
Version: 0.1.0.dev3
|
|
4
4
|
Summary: cyclo_manager CLI: pip-installable launcher for cyclo_manager server and UI containers. Run 'cyclo_manager up' to start Docker stack.
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -49,12 +49,10 @@ cyclo_manager up
|
|
|
49
49
|
|
|
50
50
|
| Command | What it does |
|
|
51
51
|
|--------|----------------|
|
|
52
|
-
| `cyclo_manager up` | `docker compose up -d` for **`cyclo_manager`** and **`ui`**; then `docker compose create --no-recreate` for **`rmw_zenoh`** and **`novnc-server`** so those containers exist but stay **stopped** |
|
|
53
|
-
| `cyclo_manager up -c /path/to/config.yml` | Same as `up`, but mounts this file into the API container as config. If the path does not exist, the CLI **copies** the bundled default config there first |
|
|
54
|
-
| `cyclo_manager up -r 35` | Sets **`ROS_DOMAIN_ID`** for the stack (default: **30**) |
|
|
52
|
+
| `cyclo_manager up` | `docker compose up -d` for **`cyclo_manager`** and **`ui`**; then `docker compose create --no-recreate` for **`rmw_zenoh`** and **`novnc-server`** so those containers exist but stay **stopped**. Always mounts the **bundled** [`config/config.yml`](config/config.yml) (no custom `-c` path). |
|
|
55
53
|
| `cyclo_manager up --pull` | Runs `docker compose pull` before up/create |
|
|
56
54
|
| `cyclo_manager down` | `docker compose down` for the **packaged** compose file (stops/removes containers for that project) |
|
|
57
|
-
| `cyclo_manager update` | Runs `cyclo_manager down`, then `pip install -U cyclo-manager`, then `cyclo_manager up` again (optional
|
|
55
|
+
| `cyclo_manager update` | Runs `cyclo_manager down`, then `pip install -U cyclo-manager`, then `cyclo_manager up` again (optional `--pull` is forwarded to `up`) |
|
|
58
56
|
| `cyclo_manager --help` | Top-level help |
|
|
59
57
|
|
|
60
58
|
Implementation reference: [`cyclo_manager_cli/cli.py`](cyclo_manager_cli/cli.py).
|
|
@@ -70,10 +68,9 @@ Implementation reference: [`cyclo_manager_cli/cli.py`](cyclo_manager_cli/cli.py)
|
|
|
70
68
|
|
|
71
69
|
### Environment passed into Compose
|
|
72
70
|
|
|
73
|
-
- **`CYCLO_MANAGER_CONFIG_FILE`**: absolute path to the YAML
|
|
74
|
-
- **`ROS_DOMAIN_ID`**: from `-r` / `--ros-domain-id` (default **30**)
|
|
71
|
+
- **`CYCLO_MANAGER_CONFIG_FILE`**: absolute path to the **bundled** YAML on the host ([`config/config.yml`](config/config.yml)). `up` and `down` both set this when invoking Compose.
|
|
75
72
|
|
|
76
|
-
|
|
73
|
+
**`ROS_DOMAIN_ID`** is **not** set by the CLI. Use each container’s **`~/.bashrc`** (or image defaults) and restart containers so DDS matches your robots. For a custom config mount or host dev workflow, use the repository **`docker-compose.dev.yml`** instead of the pip CLI.
|
|
77
74
|
|
|
78
75
|
## Bundled config
|
|
79
76
|
|
|
@@ -24,30 +24,22 @@ def _config_dir() -> Path:
|
|
|
24
24
|
|
|
25
25
|
|
|
26
26
|
def _packaged_config_path() -> Path:
|
|
27
|
-
"""Path to the bundled config (config/config.yml). Used
|
|
27
|
+
"""Path to the bundled config (config/config.yml). Used for cyclo_manager up/down."""
|
|
28
28
|
return _config_dir() / "config.yml"
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
def cmd_up(args: argparse.Namespace) -> int:
|
|
32
32
|
"""Run docker compose: start API + UI; create zenoh + noVNC containers without starting them."""
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
if not config_path.exists():
|
|
38
|
-
config_path.parent.mkdir(parents=True, exist_ok=True)
|
|
39
|
-
shutil.copy2(_packaged_config_path(), config_path)
|
|
40
|
-
print(f"Created default config at {config_path}", file=sys.stderr)
|
|
41
|
-
if not config_path.is_file():
|
|
42
|
-
print(f"Config file not found: {config_path}", file=sys.stderr)
|
|
43
|
-
return 1
|
|
33
|
+
config_path = _packaged_config_path()
|
|
34
|
+
if not config_path.is_file():
|
|
35
|
+
print(f"Bundled config not found: {config_path}", file=sys.stderr)
|
|
36
|
+
return 1
|
|
44
37
|
compose_path = _docker_dir() / "docker-compose.yml"
|
|
45
38
|
if not compose_path.is_file():
|
|
46
39
|
print(f"Compose file not found: {compose_path}", file=sys.stderr)
|
|
47
40
|
return 1
|
|
48
41
|
env = os.environ.copy()
|
|
49
42
|
env["CYCLO_MANAGER_CONFIG_FILE"] = str(config_path)
|
|
50
|
-
env["ROS_DOMAIN_ID"] = str(args.ros_domain_id)
|
|
51
43
|
base = ["docker", "compose", "-f", str(compose_path)]
|
|
52
44
|
try:
|
|
53
45
|
if args.pull:
|
|
@@ -132,12 +124,8 @@ def cmd_update(args: argparse.Namespace) -> int:
|
|
|
132
124
|
|
|
133
125
|
print("Starting containers (cyclo_manager up)...")
|
|
134
126
|
up_args = [cyclo_manager_exe, "up"]
|
|
135
|
-
if getattr(args, "config", None) is not None:
|
|
136
|
-
up_args.extend(["-c", str(args.config)])
|
|
137
127
|
if getattr(args, "pull", False):
|
|
138
128
|
up_args.append("--pull")
|
|
139
|
-
if getattr(args, "ros_domain_id", None) is not None:
|
|
140
|
-
up_args.extend(["-r", str(args.ros_domain_id)])
|
|
141
129
|
try:
|
|
142
130
|
subprocess.run(up_args, check=True)
|
|
143
131
|
except subprocess.CalledProcessError as e:
|
|
@@ -155,20 +143,6 @@ def main() -> int:
|
|
|
155
143
|
sub = parser.add_subparsers(dest="command", help="Commands")
|
|
156
144
|
|
|
157
145
|
up_parser = sub.add_parser("up", help="Start cyclo_manager stack (docker compose)")
|
|
158
|
-
up_parser.add_argument(
|
|
159
|
-
"-c",
|
|
160
|
-
"--config",
|
|
161
|
-
metavar="PATH",
|
|
162
|
-
help="Config file path (default: use bundled config from package)",
|
|
163
|
-
)
|
|
164
|
-
up_parser.add_argument(
|
|
165
|
-
"-r",
|
|
166
|
-
"--ros-domain-id",
|
|
167
|
-
type=int,
|
|
168
|
-
default=30,
|
|
169
|
-
metavar="ID",
|
|
170
|
-
help="ROS2 domain ID for cyclo_manager server (default: 30)",
|
|
171
|
-
)
|
|
172
146
|
up_parser.add_argument(
|
|
173
147
|
"--pull",
|
|
174
148
|
action="store_true",
|
|
@@ -183,20 +157,6 @@ def main() -> int:
|
|
|
183
157
|
"update",
|
|
184
158
|
help="Down containers, pip install -U cyclo-manager, then up again",
|
|
185
159
|
)
|
|
186
|
-
update_parser.add_argument(
|
|
187
|
-
"-c",
|
|
188
|
-
"--config",
|
|
189
|
-
metavar="PATH",
|
|
190
|
-
help="Config file path for cyclo_manager up (default: use bundled config)",
|
|
191
|
-
)
|
|
192
|
-
update_parser.add_argument(
|
|
193
|
-
"-r",
|
|
194
|
-
"--ros-domain-id",
|
|
195
|
-
type=int,
|
|
196
|
-
default=30,
|
|
197
|
-
metavar="ID",
|
|
198
|
-
help="ROS2 domain ID for cyclo_manager up (default: 30)",
|
|
199
|
-
)
|
|
200
160
|
update_parser.add_argument(
|
|
201
161
|
"--pull",
|
|
202
162
|
action="store_true",
|
{cyclo_manager-0.1.0.dev2 → cyclo_manager-0.1.0.dev3}/cyclo_manager_cli/docker/docker-compose.yml
RENAMED
|
@@ -22,7 +22,6 @@ services:
|
|
|
22
22
|
- /var/run/docker.sock:/var/run/docker.sock # For Docker API access
|
|
23
23
|
environment:
|
|
24
24
|
- CONFIG_FILE=/app/config.yml
|
|
25
|
-
- ROS_DOMAIN_ID=${ROS_DOMAIN_ID:-30}
|
|
26
25
|
|
|
27
26
|
ui:
|
|
28
27
|
container_name: cyclo_manager_ui
|
|
@@ -45,7 +44,6 @@ services:
|
|
|
45
44
|
memlock: 8428281856
|
|
46
45
|
network_mode: host
|
|
47
46
|
environment:
|
|
48
|
-
- ROS_DOMAIN_ID=${ROS_DOMAIN_ID:-30}
|
|
49
47
|
- DISPLAY=:99
|
|
50
48
|
- DISPLAY_WIDTH=1920
|
|
51
49
|
- DISPLAY_HEIGHT=1080
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "cyclo-manager"
|
|
7
|
-
version = "0.1.0.
|
|
7
|
+
version = "0.1.0.dev3"
|
|
8
8
|
description = "cyclo_manager CLI: pip-installable launcher for cyclo_manager server and UI containers. Run 'cyclo_manager up' to start Docker stack."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "Apache-2.0"
|
|
File without changes
|
{cyclo_manager-0.1.0.dev2 → cyclo_manager-0.1.0.dev3}/cyclo_manager.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{cyclo_manager-0.1.0.dev2 → cyclo_manager-0.1.0.dev3}/cyclo_manager.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|