yamine 0.14.0 → 0.14.1

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ab7c7e888dc8066ad10a7ed2fa90dcd684b27aa171038ac0ae5ea4c06b22251b
4
- data.tar.gz: '097d12693a71cf3969f481fd0f61b3f82e9a09d7958139e32b3fb79a7e667cd8'
3
+ metadata.gz: b5f2bd591be3e0b58deef894b8772575e46068fe4cc6287eaedf18926874f965
4
+ data.tar.gz: a1136bf238dc84bb2c150a00e02c385f19d3c9dd17ed94142091772712777768
5
5
  SHA512:
6
- metadata.gz: 99ddf961f8fa7e50038cb093b592f692c4c90a94279dc200b9ab7ea9e8a70355e6bf67659bf0cb53aac66d2868d99c6fc138750e490aa1fa4ff5b606bbfacc3f
7
- data.tar.gz: 825fb69b730125767e18472ca3d7d615514660b63dbcb7aa63697970f6733b1497997b505a6fde9f1e6b0c62785127fac0d2b1332544ff4d535b4076680623b8
6
+ metadata.gz: 65139ff9a320e9fd827ef4ee1ea2b2f43d3ddb5d8aa14e31a642085a2e74cfa8f95ecdd03d3d1bd12af567a971d1f124c3b80cb5baa835d582cf5633169e73ca
7
+ data.tar.gz: 69b45bfe7fa0852be260ed74a1985a4f3052afa6aecd4bf821e29de721c71005082ad4b3ba078532df9ecf759f19a8ee9495f650734c296fc6e878b9356459ed
data/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## [0.14.1] — 2026-09-13
4
+
5
+ ### Removed
6
+
7
+ - **`yamine run` has been removed.** `run` was an alias of `start` since
8
+ the config-first rewrite but kept its old help text, and the
9
+ compound-line error advice still pointed at `yamine run -- <cmd>` —
10
+ a command that silently ignores its argument. The subcommand now
11
+ prints the migration message every other removed command uses ("all
12
+ processes come from config/local.yml"), and the advice rewrites to
13
+ what is actually true: split the command into its own process in
14
+ config, or wrap it in a script. One-off routed commands (Docker,
15
+ ad-hoc ports) go through `yamine alias`, which gives them a hostname
16
+ without yamine owning the process lifecycle.
17
+
3
18
  ## [0.14.0] — 2026-09-13
4
19
 
5
20
  ### Added
data/README.md CHANGED
@@ -134,8 +134,8 @@ case) need `yamine hosts sync`.
134
134
 
135
135
  | Axis | Example | Source |
136
136
  |---|---|---|
137
- | app | `myapp` | inferred, `--name`, `yamine.json`, `YAMINE_NAME` |
138
- | service | `api.myapp` | `--service`, `YAMINE_SERVICE` (`web` stays bare) |
137
+ | app | `myapp` | `service:` in `config/local.yml` (`yamine init` infers it) |
138
+ | service | `api.myapp` | a non-web process name (every `proxy: true` process but `web`) |
139
139
  | variant | `fix-ui.myapp` | `--variant`, `YAMINE_VARIANT`, linked worktree branch |
140
140
  | tld | `myapp.preview.example.com` | `--tld` (default `localhost`) |
141
141
 
@@ -186,7 +186,6 @@ worktrees (the branch stays); `--dry-run` prints the plan; `remove
186
186
 
187
187
  ```bash
188
188
  yamine # -> https://myapp.localhost
189
- yamine --service api # -> https://api.myapp.localhost
190
189
  yamine --variant demo # -> https://demo.myapp.localhost
191
190
  yamine --tld preview.example.com # your own domain (OAuth parity)
192
191
  ```
@@ -217,7 +216,6 @@ to start it. `yamine status` reports which mode an app is in.
217
216
  yamine # boot app (waits until healthy, then supervises)
218
217
  yamine start --no-wait # fire-and-forget (register routes immediately)
219
218
  yamine start --json # machine-readable wait result (--wait default)
220
- yamine run -- <cmd> # run explicit command through proxy
221
219
  yamine get <name> # print URL for cross-service wiring
222
220
  yamine alias <name> <port> # static route (e.g. Docker)
223
221
  yamine list [--json] # show active routes (+ backend liveness)
@@ -244,18 +242,13 @@ OAuth callbacks, mailer hosts, webhook URLs), `PORT`, and `HOST`.
244
242
  ## Frameworks
245
243
 
246
244
  Rails and bare Rack (`config.ru`) boot managed on a unix socket (Puma
247
- when available; `rackup` on TCP otherwise). `Procfile.dev`/`bin/dev`,
248
- Jekyll, Bridgetown, and Middleman run in run mode with `PORT` injected
249
- (port-ignoring CLIs get explicit `--port/--host` flags). Anything else:
250
- `yamine run -- <cmd>`.
245
+ when available; `rackup` on TCP otherwise). Port-ignoring CLIs —
246
+ Jekyll, Bridgetown, Middleman — get explicit `--port/--host` flags
247
+ injected at boot; everything else comes from `processes:` in
248
+ `config/local.yml`, one process per entry.
251
249
 
252
- ```bash
253
- yamine --proc web # boot a specific Procfile process
254
- yamine --proc worker # (first line is the default)
255
- ```
256
-
257
- Procfile lines that are compound (`&&`, `||`, `|`, `;`) are refused with
258
- guidance rather than silently mis-injected.
250
+ Process commands that are compound (`&&`, `||`, `|`, `;`) are refused
251
+ with guidance rather than silently mis-injected.
259
252
 
260
253
  For Rails integration (hosts, Action Cable origins, Procfile rewrite,
261
254
  generators) — deprecated; core covers Rails now.
@@ -42,10 +42,6 @@ module Yamine
42
42
  opts[:json] ? $stderr.puts(message) : puts(message)
43
43
  end
44
44
 
45
- def run_explicit(ctx, args)
46
- run_inferred(ctx, args)
47
- end
48
-
49
45
  def run_named(ctx, name, _args)
50
46
  if name.to_s.start_with?("-")
51
47
  $stderr.puts "Error: unknown flag `#{name}`. Try `yamine --help` or `yamine start --help`."
@@ -217,7 +213,7 @@ module Yamine
217
213
  url = Hostname.url(hostname, port: ctx.proxy_port, tls: ctx.proxy_tls)
218
214
  cmd = entry["cmd"].to_s
219
215
  if cmd.match?(Yamine::Procfile::COMPOUND)
220
- $stderr.puts " [#{proc_name}] ERROR: compound line (&&, ||, |, ;) — run explicitly: yamine run -- #{cmd}"
216
+ $stderr.puts " [#{proc_name}] ERROR: compound line (&&, ||, |, ;) — split it into separate processes, or wrap in a script and point cmd: at it"
221
217
  next
222
218
  end
223
219
  port = opts[:app_port] || Ports.find_free
@@ -356,7 +352,7 @@ module Yamine
356
352
  def boot_background(ctx, runner, resolved, proc_name, entry, opts, children, db_url)
357
353
  cmd = entry["cmd"].to_s
358
354
  if cmd.match?(Yamine::Procfile::COMPOUND)
359
- $stderr.puts " [#{proc_name}] ERROR: compound line (&&, ||, |, ;) — run explicitly: yamine run -- #{cmd}"
355
+ $stderr.puts " [#{proc_name}] ERROR: compound line (&&, ||, |, ;) — split it into separate processes, or wrap in a script and point cmd: at it"
360
356
  return
361
357
  end
362
358
  port = opts[:app_port] || Ports.find_free
data/lib/yamine/cli.rb CHANGED
@@ -10,7 +10,7 @@ module Yamine
10
10
  # In non-interactive environments (no TTY or CI=1) we fail early with
11
11
  # a clear message instead of prompting (portless lesson).
12
12
  class CLI
13
- SUBCOMMANDS = %w[run get alias hosts list doctor trust clean prune proxy service sudoers kamal stop restart log status open setup start init db worktree].freeze
13
+ SUBCOMMANDS = %w[get alias hosts list doctor trust clean prune proxy service sudoers kamal stop restart log status open setup start init db worktree].freeze
14
14
 
15
15
  def self.run(argv)
16
16
  new.run(argv)
@@ -44,7 +44,6 @@ module Yamine
44
44
  cmd = args.shift
45
45
  ctx = Context.new
46
46
  case cmd
47
- when "run" then BootCommand.run_explicit(ctx, args)
48
47
  when "get" then RoutesCommand.get(ctx, args)
49
48
  when "alias" then RoutesCommand.alias_add(ctx, args)
50
49
  when "hosts" then SystemCommand.hosts(ctx, args)
@@ -81,11 +80,9 @@ module Yamine
81
80
  yamine - Stable named .localhost URLs for Ruby development.
82
81
 
83
82
  Usage:
84
- yamine start [name] [cmd...] One-setup-and-go: setup if needed, then boot -> https://<app>.localhost
83
+ yamine start One-setup-and-go: setup if needed, then boot -> https://<app>.localhost
85
84
  yamine setup One-shot workstation setup without booting (run once)
86
- yamine Bare form of `start` -> https://<app>.localhost
87
- yamine run [cmd] Same, with explicit command
88
- yamine <name> <cmd> Run with explicit name
85
+ yamine Bare form of `start` — boots every process in config/local.yml
89
86
  yamine get <name> Print URL for a service
90
87
  yamine alias <name> <port> Static route (e.g. Docker)
91
88
  yamine list Show active routes (+ backend liveness)
@@ -106,8 +103,8 @@ module Yamine
106
103
  yamine restart Touch tmp/restart.txt
107
104
  yamine log [-f] [n] Tail (or follow) this app's backend log
108
105
 
109
- Flags: --variant, --tld, --force, --app-port, --wait (default), --no-wait, --json
110
- Env: YAMINE_NAME/SERVICE/VARIANT/TLD/PORT/STATE_DIR, YAMINE_BRANCH=1
106
+ Flags: --variant, --tld, --force, --app-port, --wait (default), --no-wait, --json, --branch
107
+ Env: YAMINE_VARIANT/TLD/PORT/STATE_DIR/AGENT, YAMINE_BRANCH=1
111
108
  HELP
112
109
  end
113
110
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Yamine
4
- VERSION = "0.14.0"
4
+ VERSION = "0.14.1"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yamine
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.14.0
4
+ version: 0.14.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kaka Ruto