github.com/symfony-cli/symfony-cli@v0.0.0-20240514161054-ece2df437dfa/local/php/composer_unix.go (about)

     1  //go:build !windows
     2  // +build !windows
     3  
     4  /*
     5   * Copyright (c) 2021-present Fabien Potencier <fabien@symfony.com>
     6   *
     7   * This file is part of Symfony CLI project
     8   *
     9   * This program is free software: you can redistribute it and/or modify
    10   * it under the terms of the GNU Affero General Public License as
    11   * published by the Free Software Foundation, either version 3 of the
    12   * License, or (at your option) any later version.
    13   *
    14   * This program is distributed in the hope that it will be useful,
    15   * but WITHOUT ANY WARRANTY; without even the implied warranty of
    16   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
    17   * GNU Affero General Public License for more details.
    18   *
    19   * You should have received a copy of the GNU Affero General Public License
    20   * along with this program. If not, see <http://www.gnu.org/licenses/>.
    21   */
    22  
    23  package php
    24  
    25  import (
    26  	"os"
    27  	"path/filepath"
    28  	"strings"
    29  )
    30  
    31  func findComposerSystemSpecific(extraBin string) string {
    32  	// Special Support for NixOS
    33  	for _, path := range strings.Split(os.Getenv("buildInputs"), " ") {
    34  		nixPharPath := filepath.Join(path, "libexec/composer/composer.phar")
    35  		d, err := os.Stat(nixPharPath)
    36  		if err != nil {
    37  			continue
    38  		}
    39  		if m := d.Mode(); !m.IsDir() {
    40  			// Yep!
    41  			return nixPharPath
    42  		}
    43  	}
    44  
    45  	return ""
    46  }