lint/lint_license_comment.go (107 lines of code) (raw):

package main import ( "path/filepath" "strings" ) // ~~~~~~~~~~~~~~~~~~~~ define each license ~~~~~~~~~~~~~~~~~~~~ var common = ` /* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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. */ ` var sh = ` # Licensed to the Apache Software Foundation (ASF) under one or more # contributor license agreements. See the NOTICE file distributed with # this work for additional information regarding copyright ownership. # The ASF licenses this file to You 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. ` var xml = ` <!-- * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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. --> ` // ~~~~~~~~~~~~~~~~ end ~~~~~~~~~~~~~~~~ var ( lic License supportedFileNames = []string{"Makefile", ".npmignore"} ) type License map[string]string // init license func NewLicense() License { // cache license if lic != nil { return lic } // make license license := make(map[string]string) license[".go"] = strings.TrimSpace(common) license[".py"] = strings.TrimSpace(sh) license[".sh"] = strings.TrimSpace(sh) license[".yml"] = strings.TrimSpace(sh) license[".yaml"] = strings.TrimSpace(sh) license[".ts"] = strings.TrimSpace(common) license[".java"] = strings.TrimSpace(common) license[".js"] = strings.TrimSpace(common) license["Makefile"] = strings.TrimSpace(sh) license[".npmignore"] = strings.TrimSpace(sh) license[".xml"] = strings.TrimSpace(xml) return license } // support check current file is supported with license func (l License) support(file string) bool { // check file name for _, name := range supportedFileNames { if file == name { return true } } // check file suffix for suffix := range l { if strings.HasSuffix(file, suffix) { return true } } return false } // get license by file and ext name func (l License) get(file string) string { // check file name for _, name := range supportedFileNames { if file == name { return l[name] } } // check file for suffix, license := range l { ext := filepath.Ext(file) if ext == suffix { return license } } return "" }