42 lines
1.4 KiB
Nim
42 lines
1.4 KiB
Nim
## Learning osproc for NexusOS - External Command Execution
|
|
## This demonstrates how to run system commands from Nim
|
|
|
|
import std/osproc
|
|
import std/strutils
|
|
|
|
echo "=== NexusOS osproc Learning Example ==="
|
|
|
|
# Example 1: Simple command execution
|
|
echo "\n1. Running 'uname -a' to get system info:"
|
|
let unameResult = execProcess("uname -a")
|
|
echo "Result: ", unameResult.strip()
|
|
|
|
# Example 2: Check if pacman is available (needed for grafting)
|
|
echo "\n2. Checking if pacman is available:"
|
|
try:
|
|
let pacmanVersion = execProcess("pacman --version")
|
|
echo "Pacman found! Version info:"
|
|
echo pacmanVersion.split('\n')[0] # First line only
|
|
except:
|
|
echo "Pacman not found - we'll need to simulate grafting"
|
|
|
|
# Example 3: List files in current directory
|
|
echo "\n3. Listing current directory contents:"
|
|
let lsResult = execProcess("ls -la")
|
|
echo lsResult
|
|
|
|
# Example 4: Create a test directory structure (like /Programs/App/Version)
|
|
echo "\n4. Creating NexusOS-style directory structure:"
|
|
let testDir = "/tmp/nexusos-test/Programs/TestApp/1.0.0"
|
|
let mkdirResult = execProcess("mkdir -p " & testDir)
|
|
if mkdirResult.len == 0: # No output usually means success
|
|
echo "Successfully created: ", testDir
|
|
|
|
# Verify it exists
|
|
let verifyResult = execProcess("ls -la /tmp/nexusos-test/Programs/")
|
|
echo "Directory contents:"
|
|
echo verifyResult
|
|
else:
|
|
echo "Error creating directory: ", mkdirResult
|
|
|
|
echo "\n=== osproc learning complete! ===" |