You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
					
					
						
							119 lines
						
					
					
						
							4.1 KiB
						
					
					
				
			
		
		
		
			
			
			
		
		
	
	
							119 lines
						
					
					
						
							4.1 KiB
						
					
					
				| /* | |
|  * This program source code file is part of KiCad, a free EDA CAD application. | |
|  * | |
|  * Copyright The KiCad Developers, see AUTHORS.txt for contributors. | |
|  * | |
|  * This program is free software: you can redistribute it and/or modify it | |
|  * under the terms of the GNU General Public License as published by the | |
|  * Free Software Foundation, either version 3 of the License, or (at your | |
|  * option) any later version. | |
|  * | |
|  * This program is distributed in the hope that it will be useful, but | |
|  * WITHOUT ANY WARRANTY; without even the implied warranty of | |
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU | |
|  * General Public License for more details. | |
|  * | |
|  * You should have received a copy of the GNU General Public License along | |
|  * with this program.  If not, see <http://www.gnu.org/licenses/>. | |
|  */ | |
| 
 | |
| /** | |
|  * @file env_vars.h | |
|  * | |
|  * Functions related to environment variables, including help functions. | |
|  */ | |
| 
 | |
| #ifndef ENV_VARS_H | |
| #define ENV_VARS_H | |
|  | |
| #include <kicommon.h> | |
| #include <wx/string.h> | |
| #include <map> | |
| #include <vector> | |
| #include <optional> | |
|  | |
| class ENV_VAR_ITEM; | |
| 
 | |
| namespace ENV_VAR | |
| { | |
|     using ENV_VAR_LIST = std::vector<wxString>; | |
| 
 | |
|     /** | |
|      * Determine if an environment variable is "predefined", i.e. if the | |
|      * name of the variable is special to KiCad, and isn't just a user-specified | |
|      * substitution name. | |
|      * | |
|      * @param  aEnvVar the variable to check. | |
|      * @return         true if predefined. | |
|      */ | |
|     KICOMMON_API bool IsEnvVarImmutable( const wxString& aEnvVar ); | |
| 
 | |
|     /** | |
|      * Get the list of pre-defined environment variables. | |
|      */ | |
|     KICOMMON_API const ENV_VAR_LIST& GetPredefinedEnvVars(); | |
| 
 | |
|     /** | |
|      * Construct a versioned environment variable based on this KiCad major version. | |
|      * | |
|      * @param aBaseName is the suffix, like TEMPLATE_DIR. | |
|      * @return an environment variable name, like KICAD8_TEMPLATE_DIR. | |
|      */ | |
|     KICOMMON_API wxString GetVersionedEnvVarName( const wxString& aBaseName ); | |
| 
 | |
|     /** | |
|      * Attempt to retrieve the value of a versioned environment variable, such as | |
|      * KICAD8_TEMPLATE_DIR. | |
|      * | |
|      * If this value exists in the map, it will be returned.  If not, the map will be searched | |
|      * for keys matching KICAD*_<aBaseName>, and the first match's value will be returned.  If | |
|      * there are no matches, std::nullopt will be returned. | |
|      * | |
|      * @param aMap is an #ENV_VAR_MAP (@see environment.h). | |
|      * @param aBaseName is the suffix for the environment variable (@see GetVersionedEnvVarName). | |
|      */ | |
|     KICOMMON_API std::optional<wxString> | |
|                  GetVersionedEnvVarValue( const std::map<wxString, ENV_VAR_ITEM>& aMap, | |
|                                           const wxString&                         aBaseName ); | |
| 
 | |
|     /** | |
|      * Look up long-form help text for a given environment variable. | |
|      * | |
|      * This is intended for use in more verbose help resources (as opposed to tooltip text). | |
|      * | |
|      * @param  aEnvVar The variable to look up. | |
|      * @return         A string with help for that variable. Empty if | |
|      *                 no help available for this variable. | |
|      */ | |
|     KICOMMON_API wxString LookUpEnvVarHelp( const wxString& aEnvVar ); | |
| 
 | |
|     /** | |
|      * Get an environment variable as a specific type, if set correctly. | |
|      * | |
|      * @param aEnvVarName the name of the environment variable. | |
|      * @return an std::optional containing the value, if set and parseable, otherwise empty. | |
|      */ | |
|     template <typename VAL_TYPE> | |
|     KICOMMON_API std::optional<VAL_TYPE> GetEnvVar( const wxString& aEnvVarName ); | |
| 
 | |
|     /** | |
|      * Get a string environment variable, if it is set. | |
|      * | |
|      * @param aEnvVarName the name of the environment variable | |
|      * @return an std::optional containing the value, if set, otherwise empty. | |
|      */ | |
|     template<> | |
|     KICOMMON_API std::optional<wxString> GetEnvVar( const wxString& aEnvVarName ); | |
| 
 | |
|     /** | |
|      * Get a double from an environment variable, if set. | |
|      * | |
|      * @param aEnvVarName the name of the environment variable | |
|      * @return an std::optional containing the value, if set and parseable as a double, | |
|      * otherwise empty. | |
|      */ | |
|     template <> | |
|     KICOMMON_API std::optional<double> GetEnvVar( const wxString& aEnvVarName ); | |
| }; | |
| 
 | |
| #endif /* ENV_VARS_H */
 |