sdk

Getting Started

This guide will walk you through the steps to get started with the SDK in a Go application. In this example, we’ll demonstrate how to use the GetSystemInfo function from the v1/system package to retrieve system information.

Prerequisites

The SDK is tested on Vanilla OS 2 and above. Ensure that you have a compatible environment before proceeding. For your convenience, we have provided a Docker image of Vanilla OS 2 with Go installed along with other useful tools and libraries. You can use easily use this image in Apx, using the vanilla-dev stack, by issuing the following command:

apx subsystems new --name sdk-demo --stack vanilla-dev --init

the --init flag is optional, it will initialize systemd in the container, allowing you to test SDK features that require systemd.

If you prefer to use your own environment, ensure that you have Go installed. Please note that the SDK is meant to be used in Vanilla OS only, and may not work as expected in other environments, do not expect support for issues encountered in other operating systems.

Create a Go Application

Start by creating a new Go application. Open your favorite text editor or integrated development environment (IDE) and create a new file named main.go in an empty directory. Add the following code:

package main

import (
	"fmt"
	"github.com/vanilla-os/sdk/pkg/v1/system"
)

func main() {
	// Call the GetSystemInfo function to retrieve system information
	systemInfo, err := system.GetSystemInfo()
	if err != nil {
		fmt.Printf("Error getting system information: %v\n", err)
		return
	}

	// Access and print the MachineType from the retrieved system information
	fmt.Printf("Operating System: %s\n", systemInfo.OS)
	fmt.Printf("Version: %s\n", systemInfo.Version)
	fmt.Printf("Machine Type: %s\n", systemInfo.MachineType)
}

Importing the SDK

In the main.go file, we import the system package from the Vanilla OS SDK since we aim to retrieve system information.

import (
	"fmt"
	"github.com/vanilla-os/sdk/pkg/v1/system"
)

If you need to use other packages from the SDK, you can import them in the same way, by specifying the package path.

Using GetSystemInfo

Call the GetSystemInfo function from the system package to retrieve system information.

systemInfo, err := system.GetSystemInfo()
if err != nil {
	fmt.Printf("Error getting system information: %v\n", err)
	return
}

By convention, the majority of functions in the SDK return an error as the last return value. Always handle the error returned by the function, even if it is unlikely to occur.

Accessing System Information

The GetSystemInfo function returns a SystemInfo struct, which contains information about the system. You can access the information by accessing the struct fields.

fmt.Printf("Operating System: %s\n", systemInfo.OS)
fmt.Printf("Version: %s\n", systemInfo.Version)
fmt.Printf("Machine Type: %s\n", systemInfo.MachineType)

Running the Application

Save the main.go file and run the application using the following command:

go run main.go

You should see the system information printed to the console. If you are performing this tutorial in Apx, you will notice that the Machine Type is container, this is because the application is running in a Docker container.

Congratulations! You have successfully integrated the Vanilla OS SDK into your Go application and used the system package to retrieve and display system information. Feel free to explore other packages and functionalities provided by the SDK for a more in-depth integration into your projects; each public function in the SDK is documented and offers a detailed description of its purpose along with example usage.