123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- package main
- import (
- "fmt"
- "unicode"
- )
- const gitEmptyTree = "4b825dc642cb6eb9a060e54bf8d69288fbee4904"
- type mapStringSet map[string]stringSet
- type intRange struct {
- min int
- max int
- }
- func makeIntRange(min, max int) intRange {
- return intRange{
- min,
- max,
- }
- }
- func (r intRange) get(n int) bool {
- return n >= r.min && n <= r.max
- }
- type intRanges []intRange
- func (rs intRanges) get(n int) bool {
- for _, r := range rs {
- if r.get(n) {
- return true
- }
- }
- return false
- }
- func min(a, b int) int {
- if a < b {
- return a
- }
- return b
- }
- func max(a, b int) int {
- if a < b {
- return b
- }
- return a
- }
- func (mss mapStringSet) Add(n string, v string) {
- _, ok := mss[n]
- if !ok {
- mss[n] = make(stringSet)
- }
- mss[n].set(v)
- }
- func lessRunes(iRunes, jRunes []rune) bool {
- max := len(iRunes)
- if max > len(jRunes) {
- max = len(jRunes)
- }
- for idx := 0; idx < max; idx++ {
- ir := iRunes[idx]
- jr := jRunes[idx]
- lir := unicode.ToLower(ir)
- ljr := unicode.ToLower(jr)
- if lir != ljr {
- return lir < ljr
- }
- // the lowercase runes are the same, so compare the original
- if ir != jr {
- return ir < jr
- }
- }
- return len(iRunes) < len(jRunes)
- }
- func stringSliceEqual(a, b []string) bool {
- if a == nil && b == nil {
- return true
- }
- if a == nil || b == nil {
- return false
- }
- if len(a) != len(b) {
- return false
- }
- for i := 0; i < len(a); i++ {
- if a[i] != b[i] {
- return false
- }
- }
- return true
- }
- func removeInvalidTargets(targets []string) []string {
- filteredTargets := make([]string, 0)
- for _, target := range targets {
- db, _ := splitDbFromName(target)
- if db == "aur" && mode == ModeRepo {
- fmt.Printf("%s %s %s\n", bold(yellow(arrow)), cyan(target), bold("Can't use target with option --repo -- skipping"))
- continue
- }
- if db != "aur" && db != "" && mode == ModeAUR {
- fmt.Printf("%s %s %s\n", bold(yellow(arrow)), cyan(target), bold("Can't use target with option --aur -- skipping"))
- continue
- }
- filteredTargets = append(filteredTargets, target)
- }
- return filteredTargets
- }
|