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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: cyclo-manager
3
- Version: 0.1.0.dev2
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 `-c`, `-r`, `--pull` are forwarded to `up`) |
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 config used on the host (default: bundled [`config/config.yml`](cyclo_manager_cli/config/config.yml))
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
- `cyclo_manager down` always sets `CYCLO_MANAGER_CONFIG_FILE` to the **bundled** config path when invoking Compose (see `cmd_down` in `cli.py`).
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 `-c`, `-r`, `--pull` are forwarded to `up`) |
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 config used on the host (default: bundled [`config/config.yml`](cyclo_manager_cli/config/config.yml))
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
- `cyclo_manager down` always sets `CYCLO_MANAGER_CONFIG_FILE` to the **bundled** config path when invoking Compose (see `cmd_down` in `cli.py`).
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.dev2
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 `-c`, `-r`, `--pull` are forwarded to `up`) |
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 config used on the host (default: bundled [`config/config.yml`](cyclo_manager_cli/config/config.yml))
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
- `cyclo_manager down` always sets `CYCLO_MANAGER_CONFIG_FILE` to the **bundled** config path when invoking Compose (see `cmd_down` in `cli.py`).
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
 
@@ -1,3 +1,3 @@
1
1
  """cyclo_manager CLI - pip-installable launcher for cyclo_manager server and UI containers."""
2
2
 
3
- __version__ = "0.1.0.dev2"
3
+ __version__ = "0.1.0.dev3"
@@ -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 by default for cyclo_manager up."""
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
- if args.config is None:
34
- config_path = _packaged_config_path()
35
- else:
36
- config_path = Path(args.config).expanduser().resolve()
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",
@@ -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.dev2"
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"
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = cyclo-manager
3
- version = 0.1.0.dev2
3
+ version = 0.1.0.dev3
4
4
 
5
5
  [egg_info]
6
6
  egg_base = .