package tools func AWS() *aws { return &aws{} } type ( aws struct{} s3 struct { aws *aws } ec2 struct { aws *aws } ) func (t *aws) S3() *s3 { return &s3{aws: t} } func (t *aws) EC2() *ec2 { return &ec2{aws: t} } func (t *s3) Put(src, dst string) error { return nil } func (t *s3) Get(src, dst string) error { return nil } func (t *s3) List(path string) error { return nil } func (t *ec2) Create() error { return nil } func (t *ec2) Stop() error { return nil } func (t *ec2) Start() error { return nil } func (t *ec2) Terminate() error { return nil }