procd 1.0.0__tar.gz → 1.0.2__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.
- {procd-1.0.0 → procd-1.0.2}/PKG-INFO +1 -1
- {procd-1.0.0 → procd-1.0.2}/pyproject.toml +1 -1
- {procd-1.0.0 → procd-1.0.2}/src/procd/cli.py +95 -7
- {procd-1.0.0 → procd-1.0.2}/LICENSE +0 -0
- {procd-1.0.0 → procd-1.0.2}/README_PYPI.md +0 -0
- {procd-1.0.0 → procd-1.0.2}/src/procd/__init__.py +0 -0
- {procd-1.0.0 → procd-1.0.2}/src/procd/_expand.py +0 -0
- {procd-1.0.0 → procd-1.0.2}/src/procd/_logger.py +0 -0
- {procd-1.0.0 → procd-1.0.2}/src/procd/builtin.py +0 -0
- {procd-1.0.0 → procd-1.0.2}/src/procd/config.py +0 -0
- {procd-1.0.0 → procd-1.0.2}/src/procd/download.py +0 -0
- {procd-1.0.0 → procd-1.0.2}/src/procd/process.py +0 -0
- {procd-1.0.0 → procd-1.0.2}/src/procd/supervisor.py +0 -0
|
@@ -490,6 +490,89 @@ def cmd_get(args: argparse.Namespace) -> None:
|
|
|
490
490
|
dl_mod.do_get_parallel(args.names, conf, force=args.force)
|
|
491
491
|
|
|
492
492
|
|
|
493
|
+
_INIT_TEMPLATE = '''\
|
|
494
|
+
# ============================================================
|
|
495
|
+
# Procd ローカルサービス定義
|
|
496
|
+
# ============================================================
|
|
497
|
+
|
|
498
|
+
[settings]
|
|
499
|
+
run_dir = "var/run" # *.pid ファイルの保存先
|
|
500
|
+
log_dir = "var/log" # procd.jsonl の保存先
|
|
501
|
+
|
|
502
|
+
[settings.download]
|
|
503
|
+
dest = "opt" # download の展開先ルート。各エントリは <dest>/<name>/ に配置される
|
|
504
|
+
|
|
505
|
+
# 全サービス・全コマンド共通の環境変数(下敷き)
|
|
506
|
+
# .env ファイルが存在する場合はその値が最優先で上書きされる
|
|
507
|
+
[env]
|
|
508
|
+
EXAMPLE_VAR = "example"
|
|
509
|
+
|
|
510
|
+
|
|
511
|
+
# --------------------------------------------------
|
|
512
|
+
# [opt.*] バイナリのダウンロード定義
|
|
513
|
+
# url : ダウンロード URL (zip / tar.gz / tgz / tar.bz2 / tar.xz / プレーンファイル)
|
|
514
|
+
# OS サブテーブル ([opt.<name>.win32] 等) で上書き可
|
|
515
|
+
# dest : 展開先ディレクトリ (省略時は settings.download.dest/<name>)
|
|
516
|
+
# strip : アーカイブ内トップディレクトリを何段剖がすか
|
|
517
|
+
# --------------------------------------------------
|
|
518
|
+
|
|
519
|
+
# [opt.example]
|
|
520
|
+
# win32_x86_64.url = "https://example.com/example-win.zip"
|
|
521
|
+
# win32_x86_64.checksum = "sha256:*"
|
|
522
|
+
# darwin_arm64.url = "https://example.com/example-mac.tar.gz"
|
|
523
|
+
# linux_x86_64.url = "https://example.com/example-linux.tar.gz"
|
|
524
|
+
# strip = 1
|
|
525
|
+
# as.CMD_EXAMPLE = "prog" # @{CMD_EXAMPLE} で opt/example/prog 参照できるようにする
|
|
526
|
+
|
|
527
|
+
# --------------------------------------------------
|
|
528
|
+
# [command.*] 名前付きコマンド列
|
|
529
|
+
# description : 説明 (省略可)
|
|
530
|
+
# shell : 実行シェル (bash / sh / cmd / powershell)
|
|
531
|
+
# 省略時は | < > && || を含む行を自動で shell=True 実行
|
|
532
|
+
# steps : 実行するコマンドのリスト
|
|
533
|
+
# @ で始まる行は Procd 組み込みコマンド
|
|
534
|
+
# --------------------------------------------------
|
|
535
|
+
|
|
536
|
+
[command.hello]
|
|
537
|
+
description = "Hello, Procd!"
|
|
538
|
+
steps = [
|
|
539
|
+
"echo Hello, Procd!",
|
|
540
|
+
"echo EXAMPLE_VAR is @{EXAMPLE_VAR}", # [env] で定義した変数を参照する
|
|
541
|
+
]
|
|
542
|
+
|
|
543
|
+
|
|
544
|
+
# --------------------------------------------------
|
|
545
|
+
# [service.*] 常駐プロセス定義
|
|
546
|
+
# bin : 実行ファイルパス (@{PROCD_HOME} 等の変数展開可)
|
|
547
|
+
# args : 引数リスト (@{PROCD_HOME} 等の変数展開可)
|
|
548
|
+
# ready : 起動確認方法 {tcp = "host:port"}
|
|
549
|
+
# --------------------------------------------------
|
|
550
|
+
|
|
551
|
+
[service.httpd]
|
|
552
|
+
bin = "uv"
|
|
553
|
+
args = ["run", "python", "-m", "http.server", "9999"]
|
|
554
|
+
ready = {tcp = "localhost:9999"}
|
|
555
|
+
|
|
556
|
+
|
|
557
|
+
# --------------------------------------------------
|
|
558
|
+
# [group.*] サービスグループ定義
|
|
559
|
+
# services : サービス名のリスト(起動順)
|
|
560
|
+
# --------------------------------------------------
|
|
561
|
+
|
|
562
|
+
[group.default]
|
|
563
|
+
services = ["httpd"]
|
|
564
|
+
'''
|
|
565
|
+
|
|
566
|
+
|
|
567
|
+
def cmd_init(args: argparse.Namespace) -> None:
|
|
568
|
+
path = Path(args.config)
|
|
569
|
+
if path.exists() and not args.force:
|
|
570
|
+
_err_console.print(f"[bold red]Error:[/bold red] {path} already exists. Use --force to overwrite.")
|
|
571
|
+
sys.exit(1)
|
|
572
|
+
path.write_text(_INIT_TEMPLATE, encoding="utf-8")
|
|
573
|
+
_console.print(f"[green]Created[/green] {path}")
|
|
574
|
+
|
|
575
|
+
|
|
493
576
|
def cmd_link(args: argparse.Namespace) -> None:
|
|
494
577
|
import shutil
|
|
495
578
|
try:
|
|
@@ -537,14 +620,19 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
537
620
|
description="Procd - ローカルサービスマネージャー",
|
|
538
621
|
)
|
|
539
622
|
parser.add_argument("-c", "--config", default="procd.toml", metavar="FILE")
|
|
540
|
-
parser.add_argument("-v", "--verbose",
|
|
541
|
-
parser.add_argument("--pause-on-error",
|
|
623
|
+
parser.add_argument("-v", "--verbose", action="store_true", help="展開後コマンドなどの詳細を表示する")
|
|
624
|
+
parser.add_argument("--pause-on-error", action="store_true", help="エラー発生時に終了前に一時停止する(デスクトップショートカット用)")
|
|
542
625
|
sub = parser.add_subparsers(dest="command", required=True)
|
|
543
626
|
|
|
627
|
+
# init
|
|
628
|
+
p = sub.add_parser("init", help="procd.toml のテンプレートを作成する")
|
|
629
|
+
p.add_argument("--force", action="store_true", help="既存ファイルがあっても上書きする")
|
|
630
|
+
p.set_defaults(func=cmd_init)
|
|
631
|
+
|
|
544
632
|
# up
|
|
545
633
|
p = sub.add_parser("up", help="サービスを起動する")
|
|
546
634
|
p.add_argument("names", nargs="*", metavar="NAME")
|
|
547
|
-
p.add_argument("-d", "--detach",
|
|
635
|
+
p.add_argument("-d", "--detach", action="store_true", help="バックグラウンド起動")
|
|
548
636
|
p.set_defaults(func=cmd_up)
|
|
549
637
|
|
|
550
638
|
# down
|
|
@@ -564,9 +652,9 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
564
652
|
# logs
|
|
565
653
|
p = sub.add_parser("logs", help="ログを表示する")
|
|
566
654
|
p.add_argument("name", nargs="?", default=None, metavar="NAME")
|
|
567
|
-
p.add_argument("-f", "--follow",
|
|
655
|
+
p.add_argument("-f", "--follow", action="store_true", help="tail -f スタイルで追跡")
|
|
568
656
|
p.add_argument("-n", "--lines", type=int, default=200, metavar="N", help="表示する行数(デフォルト: 200)")
|
|
569
|
-
p.add_argument("-t", "--timestamp",
|
|
657
|
+
p.add_argument("-t", "--timestamp", action="store_true", help="タイムスタンプを表示する")
|
|
570
658
|
p.add_argument("--up", nargs="*", metavar="NAME",
|
|
571
659
|
help="サービスを起動してからログをフォローし、終了時にサービスも停止する")
|
|
572
660
|
p.set_defaults(func=cmd_logs)
|
|
@@ -575,7 +663,7 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
575
663
|
p = sub.add_parser("run", help="[command.*] を実行する")
|
|
576
664
|
p.add_argument("name", nargs="?", default=None, metavar="NAME",
|
|
577
665
|
help="実行するコマンド名(省略時は一覧を表示する)")
|
|
578
|
-
p.add_argument("-e", "--env",
|
|
666
|
+
p.add_argument("-e", "--env", action="append", metavar="KEY=VALUE", default=[],
|
|
579
667
|
help="環境変数を追加・上書きする(複数指定可)")
|
|
580
668
|
p.add_argument("extra_args", nargs="*", metavar="ARG",
|
|
581
669
|
help="コマンドに渡す追加引数(@{ARGS} / @{ARG1} @{ARG2} … で参照)")
|
|
@@ -588,7 +676,7 @@ def build_parser() -> argparse.ArgumentParser:
|
|
|
588
676
|
# get
|
|
589
677
|
p = sub.add_parser("get", help="[opt.*] をダウンロード・展開する")
|
|
590
678
|
p.add_argument("names", nargs="+", metavar="NAME")
|
|
591
|
-
p.add_argument("--force",
|
|
679
|
+
p.add_argument("--force", action="store_true", help="既存でも強制的に再ダウンロードする")
|
|
592
680
|
p.set_defaults(func=cmd_get)
|
|
593
681
|
|
|
594
682
|
# link
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|