This commit is contained in:
2025-04-04 21:21:50 +02:00
parent bf5eb2f6fc
commit 5b006ff328
33 changed files with 2406 additions and 201 deletions

View File

@@ -8,105 +8,89 @@ println(`Buildah exists: ${buildah_exists}`);
// List available images (only if buildah is installed)
println("Listing available container images:");
if buildah_exists != "" {
// This try/catch block will handle any errors that might occur
// when trying to use buildah functions
try {
let images = buildah_images();
println(`Found ${images.len()} images`);
// Print image details (limited to 3)
let count = 0;
for img in images {
if count >= 3 {
break;
}
println(` - ID: ${img.id}, Name: ${img.name}, Created: ${img.created}`);
count += 1;
}
} catch(err) {
println(`Error accessing buildah: ${err}`);
// if ! buildah_exists != "" {
// //EXIT
// }
let images = bah_images();
println(`Found ${images.len()} images`);
// Print image details (limited to 3)
let count = 0;
for img in images {
if count >= 3 {
break;
}
} else {
println("Buildah is not installed. Skipping container image operations.");
println(` - ID: ${img.id}, Name: ${img.name}, Created: ${img.created}`);
count += 1;
}
// Remove the duplicate code that was causing the error
//Create a container from an image
println("\nCreating a container from alpine image:");
let container = bah_from("alpine:latest");
println(`Container result: success=${container.success}, code=${container.code}`);
println(`Container stdout: "${container.stdout}"`);
println(`Container stderr: "${container.stderr}"`);
let container_id = container.stdout;
println(`Container ID: ${container_id}`);
// The following operations are commented out as they require buildah to be installed
// and may need root privileges. Uncomment them if you want to try them out.
//Run a command in the container
println("\nRunning a command in the container:");
let run_result = bah_run(container_id, "echo 'Hello from container'");
println(`Command output: ${run_result.stdout}`);
// Create a container from an image
// println("\nCreating a container from alpine image:");
// let container = from("alpine:latest");
// println(`Container ID: ${container.stdout.trim()}`);
//Add a file to the container
println("\nAdding a file to the container:");
let test_file = "test_file.txt";
run(`echo "Test content" > ${test_file}`);
let add_result = bah_add(container_id, test_file, "/");
println(`Add result: ${add_result.success}`);
// Run a command in the container
// println("\nRunning a command in the container:");
// let run_result = run(container.stdout.trim(), "echo 'Hello from container'");
// println(`Command output: ${run_result.stdout}`);
//Commit the container to create a new image
println("\nCommitting the container to create a new image:");
let commit_result = bah_commit(container_id, "my-custom-image:latest");
println(`Commit result: ${commit_result.success}`);
// Add a file to the container
// println("\nAdding a file to the container:");
// let test_file = "test_file.txt";
// run_command(`echo "Test content" > ${test_file}`);
// let add_result = add(container.stdout.trim(), test_file, "/");
// println(`Add result: ${add_result.success}`);
//Remove the container
println("\nRemoving the container:");
let remove_result = bah_remove(container_id);
println(`Remove result: ${remove_result.success}`);
// Commit the container to create a new image
// println("\nCommitting the container to create a new image:");
// let commit_result = commit(container.stdout.trim(), "my-custom-image:latest");
// println(`Commit result: ${commit_result.success}`);
//Clean up the test file
delete(test_file);
// Remove the container
// println("\nRemoving the container:");
// let remove_result = remove(container.stdout.trim());
// println(`Remove result: ${remove_result.success}`);
// Demonstrate build options
println("\nDemonstrating build options:");
let build_options = bah_new_build_options();
build_options.tag = "example-image:latest";
build_options.context_dir = ".";
build_options.file = "example_Dockerfile";
// Clean up the test file
// delete(test_file);
println("Build options configured:");
println(` - Tag: ${build_options.tag}`);
println(` - Context: ${build_options.context_dir}`);
println(` - Dockerfile: ${build_options.file}`);
// Only demonstrate buildah options if buildah is installed
if buildah_exists != "" {
try {
// Demonstrate build options
println("\nDemonstrating build options:");
let build_options = buildah_new_build_options();
build_options.tag = "example-image:latest";
build_options.context_dir = ".";
build_options.file = "example_Dockerfile";
// Demonstrate commit options
println("\nDemonstrating commit options:");
let commit_options = bah_new_commit_options();
commit_options.format = "docker";
commit_options.squash = true;
commit_options.rm = true;
println("Build options configured:");
println(` - Tag: ${build_options.tag}`);
println(` - Context: ${build_options.context_dir}`);
println(` - Dockerfile: ${build_options.file}`);
println("Commit options configured:");
println(` - Format: ${commit_options.format}`);
println(` - Squash: ${commit_options.squash}`);
println(` - Remove container: ${commit_options.rm}`);
// Demonstrate commit options
println("\nDemonstrating commit options:");
let commit_options = buildah_new_commit_options();
commit_options.format = "docker";
commit_options.squash = true;
commit_options.rm = true;
// Demonstrate config options
println("\nDemonstrating config options:");
let config_options = bah_new_config_options();
config_options.author = "Rhai Example";
config_options.cmd = "/bin/sh -c 'echo Hello from Buildah'";
println("Commit options configured:");
println(` - Format: ${commit_options.format}`);
println(` - Squash: ${commit_options.squash}`);
println(` - Remove container: ${commit_options.rm}`);
println("Config options configured:");
println(` - Author: ${config_options.author}`);
println(` - Command: ${config_options.cmd}`);
// Demonstrate config options
println("\nDemonstrating config options:");
let config_options = buildah_new_config_options();
config_options.author = "Rhai Example";
config_options.cmd = "/bin/sh -c 'echo Hello from Buildah'";
println("Config options configured:");
println(` - Author: ${config_options.author}`);
println(` - Command: ${config_options.cmd}`);
} catch(err) {
println(`Error accessing buildah options: ${err}`);
}
} else {
println("\nSkipping buildah options demonstration since buildah is not installed.");
}
"Buildah operations script completed successfully!"