Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

030 New Tool: mosactl #589

Merged
merged 22 commits into from Feb 8, 2019

Conversation

Projects
None yet
2 participants
@Arakis
Copy link
Member

commented Feb 6, 2019

As i announced in #583, here's a new tool: mosactl

mosactl

[service|stage] [action] [options] [name]

possible name: helloworld, coolworld, testworld.
(Name can also be a path to a project. This feature is in development.)

if actions is ommited, it's always "build"

# builds the compiler tools. Rebuild is only required if compiler source has been changed.
tools build

# Compiles kernel source to .NET Assembly (.dll)
net build <name>

# Compiles .NET kernel .dll to .bin file
binary build <name>
//binary delete name

# Build the Disk
//disk build <name>
//disk build --efi <name>

# Alias for net, binary and disk at once (typical rebuild when source code of OS has been changed)
build helloworld (calls: cil, binary, disk)

# Run the os. --vm and --build are not implemented yet. Qemu is always used.
run [--vm qemu] [--build] <name>

# Debug the os. GDB on Linux and Mosa Debugger on Windows
debug [--debugger gdb] [--build] <name>

test <name>

Example:

# Unix
mosactl run helloworld
# Windows
mosactl.ps1 run helloworld

Will call the following tool chain:

  • build Mosa.Tool.Mosactl.sln
  • build other Mosa Tools & Compiler
  • Compile C# of HelloWorld kernel so .dll
  • Build Kernel binary
  • Launch Qemu with direct kernel boot.

Dependencies will only be invoked, if the files does not exists in filesystem. So there's never a recompile/rebuild of the whole solution, only to launch the kernel a second time. This is a greate improvement.

Notes:

  • Disks generation is not added yet. It will follow very shortly
  • Better help & validation coming soon
  • Accept Path to forein kernel csproj is planned.
  • Mosactl is not indeed to replace any existing tool. The benefit if mosactl is to bundle all the "every day" tasks in very simple commands, accessable from command lin. Greate for CI/CD, too.
  • Test-Target will be implemented after the current test case is fxed. After that, it will be integrated within the CI/CD pipeline.

@tgiphil tgiphil merged commit 371f5ac into mosa:master Feb 8, 2019

1 check passed

continuous-integration/appveyor/pr AppVeyor build succeeded
Details
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.