diff --git a/kpkg b/kpkg
index e5bc926..701e62f 100755
--- a/kpkg
+++ b/kpkg
@@ -1,4 +1,4 @@
-#!/usr/bin/env kc3s
+#!/usr/bin/env -S kc3s --load /dev/stdin --quit
# -*- elixir -*-
# kc3
# Copyright from 2022 to 2025 kmx.io <contact@kmx.io>
@@ -11,117 +11,7 @@
# PURPOSE AND PERFORMANCE. IN NO EVENT WHATSOEVER SHALL THE
# AUTHOR BE CONSIDERED LIABLE FOR THE USE AND PERFORMANCE OF
# THIS SOFTWARE.
-
-defmodule Kpkg do
-
- require Kpkg.Package
-
- def dir = do
- dir = if kpg_dir = getenv("KPKG_DIR") do
- kpkg_dir
- else
- if home = getenv("HOME") do
- "#{home}/kpkg"
- end
- end
- if Str.ends_with?(dir, "/") do
- dir
- else
- dir + "/"
- end
- end
-
- def db = Facts.database()
-
- def defpackage = fn (package) {
- Facts.add_tags(db, package.name, :is_a, Kpkg.Package)
- Facts.replace_tags(db, package.name,
- :kpkg_package_depends_on, package.depends_on)
- Facts.replace_tags(db, package.name,
- :kpkg_package_dir, package.dir)
- Facts.replace_tags(db, package.name,
- :kpkg_package_git, package.git)
- Facts.replace_tags(db, package.name,
- :kpkg_package_module, package.module)
- }
-
- def defalias = fn (name, target) {
- Facts.add_tags(db, name, :is_a, Kpkg.Package.Alias)
- Facts.add_tags(db, name, :kpkg_package_alias_target, target)
- }
-
- def get_kpkg_package = fn (name) {
- Facts.first_with(db, [[name, :is_a, Kpkg.Package],
- [name, :kpkg_package_dir, dir = ?],
- [name, :kpkg_package_git, git = ?],
- [name, :kpkg_package_module, module = ?]],
- fn (fact) { %Kpkg.Package{name: name, dir: dir, git: git,
- module: module} })
- }
+require Kpkg
- def get_kpkg_package_alias = fn (name) {
- if name = Sym.find(name) do
- while (new_name = Facts.first_with_tags(db, name,
- :kpkg_package_alias_target, new_name,
- fn (fact) { new_name })) do
- name = new_name
- end
- name
- end
- }
-
- def get_package = fn (name) {
- if name = get_kpkg_package_alias(name) do
- get_kpkg_package(name)
- end
- }
-
- def load = fn () {
- load_directory(__DIR__ + "repos/")
- File.ensure_directory(dir, 0o755)
- }
-
- def main = fn {
- ([]) {
- puts("Usage: KPKG_DIR=~/kpkg kpkg PKG [OPTIONS] COMMAND [ARG ...] ...")
- puts(" Options :")
- puts(" --tree=TREE work on $TREE")
- puts(" Source directory commands :")
- puts(" checkout into src/$DIR/$TREE")
- puts(" clone into git/$DIR")
- puts(" clean-source-tree clean src/$DIR/$TREE")
- puts(" clean-source-git clean git/$DIR")
- puts(" clean-sources clean src/$DIR and git/$DIR")
- puts(" Build commands :")
- puts(" configure")
- puts(" clean-configure remove configure-done tag")
- puts(" build run parallel build")
- puts(" clean-build remove object files")
- 0
- }
- ([name | rest]) {
- load()
- if pkg = get_package(name) do
- main_args(pkg, rest)
- else
- puts("kpkg: package not found: #{name}")
- 1
- end
- }
- }
-
- def main_args = fn {
- (pkg, args) { main_args(pkg, args, 0) }
- (pkg, ["checkout", tree | rest], ret) {
- if ret == 0 do
- main_args(pkg, rest, fetch(pkg, tree))
- else
- ret
- end
- }
- (pkg, [], ret) { ret }
- }
-
-end
-
-exit(Kpkg.main(args()))
+[argv0 | args_rest] = args()
+exit(Kpkg.main(args_rest))
diff --git a/package.kc3 b/package.kc3
deleted file mode 100644
index b3927ca..0000000
--- a/package.kc3
+++ /dev/null
@@ -1,10 +0,0 @@
-defmodule Kpkg.Package do
-
- defstruct [name: (Sym) ?,
- depends_on: [],
- dir: "org/subdir/repo",
- git: "https://github.com/dir.git",
- make: "make",
- module: Module]
-
-end
diff --git a/repos/kc3.kc3 b/repos/kc3.kc3
deleted file mode 100644
index 20a8a86..0000000
--- a/repos/kc3.kc3
+++ /dev/null
@@ -1,3 +0,0 @@
-defmodule Kpkg.Repos.Kc3 do
-
- defpackage