podman

Форк
0
155 строк · 4.9 Кб
1
// Copyright 2013-2022 Frank Schroeder. All rights reserved.
2
// Use of this source code is governed by a BSD-style
3
// license that can be found in the LICENSE file.
4

5
// Package properties provides functions for reading and writing
6
// ISO-8859-1 and UTF-8 encoded .properties files and has
7
// support for recursive property expansion.
8
//
9
// Java properties files are ISO-8859-1 encoded and use Unicode
10
// literals for characters outside the ISO character set. Unicode
11
// literals can be used in UTF-8 encoded properties files but
12
// aren't necessary.
13
//
14
// To load a single properties file use MustLoadFile():
15
//
16
//	p := properties.MustLoadFile(filename, properties.UTF8)
17
//
18
// To load multiple properties files use MustLoadFiles()
19
// which loads the files in the given order and merges the
20
// result. Missing properties files can be ignored if the
21
// 'ignoreMissing' flag is set to true.
22
//
23
// Filenames can contain environment variables which are expanded
24
// before loading.
25
//
26
//	f1 := "/etc/myapp/myapp.conf"
27
//	f2 := "/home/${USER}/myapp.conf"
28
//	p := MustLoadFiles([]string{f1, f2}, properties.UTF8, true)
29
//
30
// All of the different key/value delimiters ' ', ':' and '=' are
31
// supported as well as the comment characters '!' and '#' and
32
// multi-line values.
33
//
34
//	! this is a comment
35
//	# and so is this
36
//
37
//	# the following expressions are equal
38
//	key value
39
//	key=value
40
//	key:value
41
//	key = value
42
//	key : value
43
//	key = val\
44
//	      ue
45
//
46
// Properties stores all comments preceding a key and provides
47
// GetComments() and SetComments() methods to retrieve and
48
// update them. The convenience functions GetComment() and
49
// SetComment() allow access to the last comment. The
50
// WriteComment() method writes properties files including
51
// the comments and with the keys in the original order.
52
// This can be used for sanitizing properties files.
53
//
54
// Property expansion is recursive and circular references
55
// and malformed expressions are not allowed and cause an
56
// error. Expansion of environment variables is supported.
57
//
58
//	# standard property
59
//	key = value
60
//
61
//	# property expansion: key2 = value
62
//	key2 = ${key}
63
//
64
//	# recursive expansion: key3 = value
65
//	key3 = ${key2}
66
//
67
//	# circular reference (error)
68
//	key = ${key}
69
//
70
//	# malformed expression (error)
71
//	key = ${ke
72
//
73
//	# refers to the users' home dir
74
//	home = ${HOME}
75
//
76
//	# local key takes precedence over env var: u = foo
77
//	USER = foo
78
//	u = ${USER}
79
//
80
// The default property expansion format is ${key} but can be
81
// changed by setting different pre- and postfix values on the
82
// Properties object.
83
//
84
//	p := properties.NewProperties()
85
//	p.Prefix = "#["
86
//	p.Postfix = "]#"
87
//
88
// Properties provides convenience functions for getting typed
89
// values with default values if the key does not exist or the
90
// type conversion failed.
91
//
92
//	# Returns true if the value is either "1", "on", "yes" or "true"
93
//	# Returns false for every other value and the default value if
94
//	# the key does not exist.
95
//	v = p.GetBool("key", false)
96
//
97
//	# Returns the value if the key exists and the format conversion
98
//	# was successful. Otherwise, the default value is returned.
99
//	v = p.GetInt64("key", 999)
100
//	v = p.GetUint64("key", 999)
101
//	v = p.GetFloat64("key", 123.0)
102
//	v = p.GetString("key", "def")
103
//	v = p.GetDuration("key", 999)
104
//
105
// As an alternative properties may be applied with the standard
106
// library's flag implementation at any time.
107
//
108
//	# Standard configuration
109
//	v = flag.Int("key", 999, "help message")
110
//	flag.Parse()
111
//
112
//	# Merge p into the flag set
113
//	p.MustFlag(flag.CommandLine)
114
//
115
// Properties provides several MustXXX() convenience functions
116
// which will terminate the app if an error occurs. The behavior
117
// of the failure is configurable and the default is to call
118
// log.Fatal(err). To have the MustXXX() functions panic instead
119
// of logging the error set a different ErrorHandler before
120
// you use the Properties package.
121
//
122
//	properties.ErrorHandler = properties.PanicHandler
123
//
124
//	# Will panic instead of logging an error
125
//	p := properties.MustLoadFile("config.properties")
126
//
127
// You can also provide your own ErrorHandler function. The only requirement
128
// is that the error handler function must exit after handling the error.
129
//
130
//	  properties.ErrorHandler = func(err error) {
131
//		     fmt.Println(err)
132
//	      os.Exit(1)
133
//	  }
134
//
135
//	  # Will write to stdout and then exit
136
//	  p := properties.MustLoadFile("config.properties")
137
//
138
// Properties can also be loaded into a struct via the `Decode`
139
// method, e.g.
140
//
141
//	type S struct {
142
//	    A string        `properties:"a,default=foo"`
143
//	    D time.Duration `properties:"timeout,default=5s"`
144
//	    E time.Time     `properties:"expires,layout=2006-01-02,default=2015-01-01"`
145
//	}
146
//
147
// See `Decode()` method for the full documentation.
148
//
149
// The following documents provide a description of the properties
150
// file format.
151
//
152
// http://en.wikipedia.org/wiki/.properties
153
//
154
// http://docs.oracle.com/javase/7/docs/api/java/util/Properties.html#load%28java.io.Reader%29
155
package properties
156

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.