https://github.com/bububa/goconfig
golang config
https://github.com/bububa/goconfig
Last synced: 4 months ago
JSON representation
golang config
- Host: GitHub
- URL: https://github.com/bububa/goconfig
- Owner: bububa
- License: bsd-2-clause
- Created: 2014-02-04T09:16:57.000Z (over 12 years ago)
- Default Branch: master
- Last Pushed: 2015-05-23T02:57:40.000Z (about 11 years ago)
- Last Synced: 2024-12-31T10:16:10.728Z (over 1 year ago)
- Language: Go
- Size: 358 KB
- Stars: 0
- Watchers: 2
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
goconfig
========
This package implements a basic configuration file parser language which
provides a structure similar to what you would find on Microsoft Windows INI
files.
The configuration file consists of sections, led by a "*[section]*" header and
followed by "*name: value*" entries; "*name=value*" is also accepted. Note that
leading whitespace is removed from values. The optional values can contain
format strings which refer to other values in the same section, or values in a
special *DEFAULT* section. Additional defaults can be provided on initialization
and retrieval. Comments are indicated by ";" or "#"; a comment may begin
anywhere on a line, including on the same line after parameters or section
declarations.
For example:
[My Section]
foodir: %(dir)s/whatever
dir=foo
would resolve the "*%(dir)s*" to the value of "*dir*" (*foo* in this case). All
reference expansions are done on demand.
The functionality and workflow is loosely based on the *configparser* package of
the Python Standard Library.
## Installation
go get github.com/kless/goconfig/config
To run the tests:
cd ${GOPATH//:*}/src/github.com/kless/goconfig/config && go test && cd -
## Operating instructions
Given a sample configuration file:
[DEFAULT]
host: www.example.com
protocol: http://
base-url: %(protocol)s%(host)s
[service-1]
url: %(base-url)s/some/path
delegation: on
maxclients: 200 # do not set this higher
comments: This is a multi-line
entry # And this is a comment
To read this configuration file, do:
c, _ := config.ReadDefault("config.cfg")
c.String("service-1", "url")
// result is string "http://www.example.com/some/path"
c.Int("service-1", "maxclients")
// result is int 200
c.Bool("service-1", "delegation")
// result is bool true
c.String("service-1", "comments")
// result is string "This is a multi-line\nentry"
Note the support for unfolding variables (such as *%(base-url)s*), which are read
from the special (reserved) section name *[DEFAULT]*.
A new configuration file can also be created with:
c := config.NewDefault()
c.AddSection("Section")
c.AddOption("Section", "option", "value")
c.WriteFile("config.cfg", 0644, "A header for this file")
This results in the file:
# A header for this file
[Section]
option: value
Note that sections, options and values are all case-sensitive.
## Copyright and licensing
*Copyright 2009 The "goconfig" Authors*. See file AUTHORS and CONTRIBUTORS.
Unless otherwise noted, the source files are distributed under the
*Apache License, version 2.0* found in the LICENSE file.
* * *
*Generated by [GoWizard](https://github.com/kless/GoWizard)*
=======
golang config