mirror of https://github.com/harness/drone.git
65 lines
2.1 KiB
Go
65 lines
2.1 KiB
Go
// Copyright 2023 Harness, Inc.
|
|
//
|
|
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
// you may not use this file except in compliance with the License.
|
|
// You may obtain a copy of the License at
|
|
//
|
|
// http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
// Unless required by applicable law or agreed to in writing, software
|
|
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
// See the License for the specific language governing permissions and
|
|
// limitations under the License.
|
|
|
|
package parser
|
|
|
|
import (
|
|
"regexp"
|
|
|
|
"github.com/harness/gitness/git/enum"
|
|
)
|
|
|
|
var regExpDiffExtHeader = regexp.MustCompile(
|
|
"^(" +
|
|
enum.DiffExtHeaderOldMode + "|" +
|
|
enum.DiffExtHeaderNewMode + "|" +
|
|
enum.DiffExtHeaderDeletedFileMode + "|" +
|
|
enum.DiffExtHeaderNewFileMode + "|" +
|
|
enum.DiffExtHeaderCopyFrom + "|" +
|
|
enum.DiffExtHeaderCopyTo + "|" +
|
|
enum.DiffExtHeaderRenameFrom + "|" +
|
|
enum.DiffExtHeaderRenameTo + "|" +
|
|
enum.DiffExtHeaderSimilarity + "|" +
|
|
enum.DiffExtHeaderDissimilarity + "|" +
|
|
enum.DiffExtHeaderIndex +
|
|
") (.+)$")
|
|
|
|
// ParseDiffFileExtendedHeader parses a generic extended header line.
|
|
func ParseDiffFileExtendedHeader(line string) (string, string) {
|
|
groups := regExpDiffExtHeader.FindStringSubmatch(line)
|
|
if groups == nil {
|
|
return "", ""
|
|
}
|
|
|
|
return groups[1], groups[2]
|
|
}
|
|
|
|
// regExpDiffFileIndexHeader parses the `index` extended header line with a format like:
|
|
//
|
|
// index f994c2cf569523ba736473bbfbac3700fa1db28d..0000000000000000000000000000000000000000
|
|
// index 68233d6cd204b0df84e91a1ce8c8b75e13529973..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644
|
|
//
|
|
// NOTE: it's NEW_SHA..OLD_SHA.
|
|
var regExpDiffFileIndexHeader = regexp.MustCompile(`^index ([0-9a-f]{4,64})\.\.([0-9a-f]{4,64})( [0-9]+)?$`)
|
|
|
|
// DiffExtParseIndex parses the `index` extended diff header line.
|
|
func DiffExtHeaderParseIndex(line string) (newSHA string, oldSHA string, ok bool) {
|
|
groups := regExpDiffFileIndexHeader.FindStringSubmatch(line)
|
|
if groups == nil {
|
|
return "", "", false
|
|
}
|
|
|
|
return groups[1], groups[2], true
|
|
}
|