mirror of
https://github.com/cheat/cheat.git
synced 2024-09-08 12:41:34 +02:00
80c91cbdee
Integrate `go-git` into the application, and use it to `git clone` cheatsheets when the installer runs. Previously, the installer required that `git` be installed on the system `PATH`, so this change has to big advantages: 1. It removes that system dependency on `git` 2. It paves the way for implementing the `--update` command Additionally, `cheat` now performs a `--depth=1` clone when installing cheatsheets, which should at least somewhat improve installation times (especially on slow network connections).
30 lines
771 B
Go
30 lines
771 B
Go
// Copyright (c) 2015, Emir Pasic. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style
|
|
// license that can be found in the LICENSE file.
|
|
|
|
package utils
|
|
|
|
import "sort"
|
|
|
|
// Sort sorts values (in-place) with respect to the given comparator.
|
|
//
|
|
// Uses Go's sort (hybrid of quicksort for large and then insertion sort for smaller slices).
|
|
func Sort(values []interface{}, comparator Comparator) {
|
|
sort.Sort(sortable{values, comparator})
|
|
}
|
|
|
|
type sortable struct {
|
|
values []interface{}
|
|
comparator Comparator
|
|
}
|
|
|
|
func (s sortable) Len() int {
|
|
return len(s.values)
|
|
}
|
|
func (s sortable) Swap(i, j int) {
|
|
s.values[i], s.values[j] = s.values[j], s.values[i]
|
|
}
|
|
func (s sortable) Less(i, j int) bool {
|
|
return s.comparator(s.values[i], s.values[j]) < 0
|
|
}
|