Add basic skeleton of libpod runtime
Signed-off-by: Matthew Heon <mheon@redhat.com>
This commit is contained in:
parent
3473e8afed
commit
2a121111b5
5 changed files with 715 additions and 28 deletions
129
vendor/github.com/ulule/deepcopier/README.md
generated
vendored
Normal file
129
vendor/github.com/ulule/deepcopier/README.md
generated
vendored
Normal file
|
@ -0,0 +1,129 @@
|
|||
# Deepcopier
|
||||
|
||||
[](http://travis-ci.org/ulule/deepcopier)
|
||||
|
||||
This package is meant to make copying of structs to/from others structs a bit easier.
|
||||
|
||||
## Installation
|
||||
|
||||
```bash
|
||||
go get -u github.com/ulule/deepcopier
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
```golang
|
||||
// Deep copy instance1 into instance2
|
||||
Copy(instance1).To(instance2)
|
||||
|
||||
// Deep copy instance1 into instance2 and passes the following context (which
|
||||
// is basically a map[string]interface{}) as first argument
|
||||
// to methods of instance2 that defined the struct tag "context".
|
||||
Copy(instance1).WithContext(map[string]interface{}{"foo": "bar"}).To(instance2)
|
||||
|
||||
// Deep copy instance2 into instance1
|
||||
Copy(instance1).From(instance2)
|
||||
|
||||
// Deep copy instance2 into instance1 and passes the following context (which
|
||||
// is basically a map[string]interface{}) as first argument
|
||||
// to methods of instance1 that defined the struct tag "context".
|
||||
Copy(instance1).WithContext(map[string]interface{}{"foo": "bar"}).From(instance2)
|
||||
```
|
||||
|
||||
Available options for `deepcopier` struct tag:
|
||||
|
||||
| Option | Description |
|
||||
| --------- | -------------------------------------------------------------------- |
|
||||
| `field` | Field or method name in source instance |
|
||||
| `skip` | Ignores the field |
|
||||
| `context` | Takes a `map[string]interface{}` as first argument (for methods) |
|
||||
| `force` | Set the value of a `sql.Null*` field (instead of copying the struct) |
|
||||
|
||||
**Options example:**
|
||||
|
||||
```golang
|
||||
type Source struct {
|
||||
Name string
|
||||
SkipMe string
|
||||
SQLNullStringToSQLNullString sql.NullString
|
||||
SQLNullStringToString sql.NullString
|
||||
|
||||
}
|
||||
|
||||
func (Source) MethodThatTakesContext(c map[string]interface{}) string {
|
||||
return "whatever"
|
||||
}
|
||||
|
||||
type Destination struct {
|
||||
FieldWithAnotherNameInSource string `deepcopier:"field:Name"`
|
||||
SkipMe string `deepcopier:"skip"`
|
||||
MethodThatTakesContext string `deepcopier:"context"`
|
||||
SQLNullStringToSQLNullString sql.NullString
|
||||
SQLNullStringToString string `deepcopier:"force"`
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Example:
|
||||
|
||||
```golang
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/ulule/deepcopier"
|
||||
)
|
||||
|
||||
// Model
|
||||
type User struct {
|
||||
// Basic string field
|
||||
Name string
|
||||
// Deepcopier supports https://golang.org/pkg/database/sql/driver/#Valuer
|
||||
Email sql.NullString
|
||||
}
|
||||
|
||||
func (u *User) MethodThatTakesContext(ctx map[string]interface{}) string {
|
||||
// do whatever you want
|
||||
return "hello from this method"
|
||||
}
|
||||
|
||||
// Resource
|
||||
type UserResource struct {
|
||||
DisplayName string `deepcopier:"field:Name"`
|
||||
SkipMe string `deepcopier:"skip"`
|
||||
MethodThatTakesContext string `deepcopier:"context"`
|
||||
Email string `deepcopier:"force"`
|
||||
|
||||
}
|
||||
|
||||
func main() {
|
||||
user := &User{
|
||||
Name: "gilles",
|
||||
Email: sql.NullString{
|
||||
Valid: true,
|
||||
String: "gilles@example.com",
|
||||
},
|
||||
}
|
||||
|
||||
resource := &UserResource{}
|
||||
|
||||
deepcopier.Copy(user).To(resource)
|
||||
|
||||
fmt.Println(resource.DisplayName)
|
||||
fmt.Println(resource.Email)
|
||||
}
|
||||
```
|
||||
|
||||
Looking for more information about the usage?
|
||||
|
||||
We wrote [an introduction article](https://github.com/ulule/deepcopier/blob/master/examples/rest-usage/README.rst).
|
||||
Have a look and feel free to give us your feedback.
|
||||
|
||||
## Contributing
|
||||
|
||||
* Ping us on twitter [@oibafsellig](https://twitter.com/oibafsellig), [@thoas](https://twitter.com/thoas)
|
||||
* Fork the [project](https://github.com/ulule/deepcopier)
|
||||
* Help us improving and fixing [issues](https://github.com/ulule/deepcopier/issues)
|
||||
|
||||
Don't hesitate ;)
|
Loading…
Add table
Add a link
Reference in a new issue