diff --git a/.gitignore b/.gitignore index 4629ddb..64fcd66 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ # PXE Pilot compiled Binary # pxe-pilot +pxe-pilot-linux-amd64 # # PXE Configuration generated by PXE Pilots diff --git a/cli.go b/cli.go index 5452623..b387a0b 100644 --- a/cli.go +++ b/cli.go @@ -31,7 +31,7 @@ func setupCLI() { } }) - app.Command("bootloaders", "Bootloaders configuration commands", func(cmd *cli.Cmd) { + app.Command("bootloader", "Bootloaders configuration commands", func(cmd *cli.Cmd) { cmd.Command("list", "List available bootloaders", func(cmd *cli.Cmd) { cmd.Action = func() { logger.Init(!*debug) diff --git a/service/service.go b/service/service.go index 4116d43..862fd6e 100644 --- a/service/service.go +++ b/service/service.go @@ -3,6 +3,7 @@ package service import ( "io/ioutil" "os" + "sort" "strings" "sync" @@ -51,6 +52,12 @@ func ReadConfigurations(appConfig *model.AppConfig) []*model.Configuration { configurations := make([]*model.Configuration, 0) for _, bootloader := range appConfig.Configuration.Bootloaders { files, _ := ioutil.ReadDir(appConfig.Configuration.Directory + "/" + bootloader.Name) + + // Sort by age, keeping original order or equal elements. + sort.SliceStable(files, func(i, j int) bool { + return strings.Compare(files[i].Name(), files[j].Name()) < 1 + }) + for _, f := range files { configuration := &model.Configuration{ Name: f.Name(), diff --git a/test/tftp_root/pxelinux.cfg/conf/grub/a b/test/tftp_root/pxelinux.cfg/conf/grub/a new file mode 100644 index 0000000..e69de29 diff --git a/test/tftp_root/pxelinux.cfg/conf/grub/b b/test/tftp_root/pxelinux.cfg/conf/grub/b new file mode 100644 index 0000000..e69de29 diff --git a/test/tftp_root/pxelinux.cfg/conf/grub/c b/test/tftp_root/pxelinux.cfg/conf/grub/c new file mode 100644 index 0000000..e69de29 diff --git a/test/tftp_root/pxelinux.cfg/conf/grub/z b/test/tftp_root/pxelinux.cfg/conf/grub/z new file mode 100644 index 0000000..e69de29