OS

The OS: module provides operating-system services: working directory, directory listing, environment variables, and process control.


Call Effect
OS:Args(listName) Populate a pre-declared List:String with the positional script arguments
OS:Cwd(outVar) / OS:CurrentDirectory(outVar) Current working directory → outVar
OS:ChDir(p) / OS:ChangeDirectory(p) Change working directory
OS:ListDir(p, listName) / OS:ListDirectory(p, listName) Populate a pre-declared List:String with filenames (sorted)
OS:MkDir(p, outVar) / OS:MakeDirectory(p, outVar) Create directory; true if newly created → outVar
OS:MkDirs(p, outVar) / OS:MakeDirectories(p, outVar) Create directory tree; true if any dir was created → outVar
OS:Remove(p, outVar) Remove file or empty dir; true if removed → outVar
OS:Rename(old, new) Rename/move a file or directory
OS:GetEnv(name, outVar) / OS:GetEnvironment(name, outVar) Environment variable value ("" if not set) → outVar
OS:SetEnv(name, value) / OS:SetEnvironment(name, value) Set environment variable
OS:System(cmd, outVar) Run shell command; exit code → outVar
OS:Exit(code) Terminate the process
// Script arguments: minks script.ks hello world
List:String args;
OS:Args(args);
Var:Number count;
List:Size(args, count);
Konsol:Print(count);            // 2
Var:String first;
List:Get(args, 0, first);
Konsol:Print(first);            // hello

Var:String cwd;
OS:Cwd(cwd);
Konsol:Print(cwd);              // /home/user/project  (or C:\… on Windows)

Var:String greeting;
OS:SetEnv("GREETING", "hi");
OS:GetEnv("GREETING", greeting);
Konsol:Print(greeting);         // hi

Var:Boolean ok;
OS:MkDir("output", ok);

List:String entries;
OS:ListDir(".", entries);
Var:Number sz;
List:Size(entries, sz);
Konsol:Print(sz);               // number of entries in current directory

Examples

OS and Path

// 27_os_path.ks — OS and Path modules

Var:String result;
Var:Boolean exists;
Var:Boolean isFile;
Var:Boolean isDir;
Var:String envVal;
Var:String cwd;
Var:Boolean ok;
Var:Number sz;
List:String entries;

// ── Path: pure string operations (no filesystem access) ──────────────────────
Konsol:Print("=== Path:BaseName ===");
Path:BaseName("foo/bar/baz.ks", result);
Konsol:Print(result);         // baz.ks

Konsol:Print("=== Path:DirName ===");
Path:DirName("foo/bar/baz.ks", result);
Konsol:Print(result);         // foo/bar

Konsol:Print("=== Path:Stem ===");
Path:Stem("foo/bar/baz.ks", result);
Konsol:Print(result);         // baz

Konsol:Print("=== Path:Extension ===");
Path:Extension("foo/bar/baz.ks", result);
Konsol:Print(result);         // .ks

Konsol:Print("=== Path:Join ===");
Path:Join("foo/bar", "baz.ks", result);
Konsol:Print(result);         // foo/bar/baz.ks  (separator is platform-native)

// ── Path: filesystem queries ─────────────────────────────────────────────────
Konsol:Print("=== Path:Exists / IsFile / IsDir ===");
Path:Exists("27_os_path.ks", exists);
Konsol:Print(exists);         // true
Path:IsFile("27_os_path.ks", isFile);
Konsol:Print(isFile);         // true
Path:IsDir("27_os_path.ks", isDir);
Konsol:Print(isDir);          // false

// ── OS: environment ──────────────────────────────────────────────────────────
Konsol:Print("=== OS:GetEnv / SetEnv ===");
OS:SetEnv("MINKS_TEST", "hello");
OS:GetEnv("MINKS_TEST", envVal);
Konsol:Print(envVal);         // hello

OS:GetEnv("THIS_VAR_DOES_NOT_EXIST_XYZ", envVal);
Konsol:Print(envVal);         // (empty string)

// ── OS: cwd ──────────────────────────────────────────────────────────────────
Konsol:Print("=== OS:Cwd ===");
OS:Cwd(cwd);
Konsol:Print(cwd);            // some absolute path

// ── OS: MkDir / ListDir / Remove ─────────────────────────────────────────────
Konsol:Print("=== OS:MkDir / ListDir / Remove ===");
OS:MkDir("_minks_tmp_dir", ok);
Path:IsDir("_minks_tmp_dir", isDir);
Konsol:Print(isDir);          // true

OS:ListDir(".", entries);
List:Size(entries, sz);
Konsol:Print(sz);             // >= 1

OS:Remove("_minks_tmp_dir", ok);
Path:Exists("_minks_tmp_dir", exists);
Konsol:Print(exists);         // false

// ── OS: MkDirs ───────────────────────────────────────────────────────────────
Konsol:Print("=== OS:MkDirs ===");
OS:MkDirs("_minks_a/b/c", ok);
Path:IsDir("_minks_a/b/c", isDir);
Konsol:Print(isDir);          // true
OS:Remove("_minks_a/b/c", ok);
OS:Remove("_minks_a/b", ok);
OS:Remove("_minks_a", ok);

Konsol:Print("done");

OS args

// 42_os_args.ks — OS:Args() exposes script positional arguments
// Run as: minks 42_os_args.ks hello world 42

List:String args;
OS:Args(args);

Var:Number count;
List:Size(args, count);
Konsol:Print(count);          // 3 (when called with hello world 42)

foreach (Var:String a in args) {
    Konsol:Print(a);
}

// Access by index
Var:String first;
List:Get(0, args, first);
Konsol:Print(first);          // hello

// Zero-arg case
List:String empty;
OS:Args(empty);
List:Size(empty, count);
Konsol:Print(count);          // same count (args are whatever was passed)

Konsol:Print("done");