func()

in oss/lib/mb.go [216:274]


func (mc *MakeBucketCommand) RunCommand() error {

	cloudURL, err := CloudURLFromString(mc.command.args[0], "")
	if err != nil {
		return err
	}

	if cloudURL.bucket == "" {
		return fmt.Errorf("invalid cloud url: %s, miss bucket", mc.command.args[0])
	}

	if cloudURL.object != "" {
		return fmt.Errorf("invalid cloud url: %s, object not empty, upload object please use \"cp\" command", mc.command.args[0])
	}

	client, err := mc.command.ossClient(cloudURL.bucket)
	if err != nil {
		return err
	}
	var op []oss.Option
	mc.mcOption.ossMeta, _ = GetString(OptionMeta, mc.command.options)
	if mc.mcOption.ossMeta != "" {
		metas, err := mc.command.parseHeaders(mc.mcOption.ossMeta, false)
		if err != nil {
			return err
		}
		options, err := mc.command.getOSSOptions(headerOptionMap, metas)
		if err != nil {
			return err
		}
		op = append(op, options...)
	}
	if len(mc.command.args) >= 2 {
		return mc.createBucketXmlFile(client, cloudURL.bucket, mc.command.args[1], op)
	}

	aclStr, _ := GetString(OptionACL, mc.command.options)
	language, _ := GetString(OptionLanguage, mc.command.options)
	language = strings.ToLower(language)
	strRedundancy, _ := GetString(OptionRedundancyType, mc.command.options)

	if aclStr != "" {
		acl, err := mc.getACL(aclStr, language)
		if err != nil {
			return err
		}
		op = append(op, oss.ACL(acl))
	}

	if strRedundancy != "" {
		if strings.ToUpper(strRedundancy) != string(oss.RedundancyLRS) && strings.ToUpper(strRedundancy) != string(oss.RedundancyZRS) {
			return fmt.Errorf("--redundancy-type muse be %s or %s", string(oss.RedundancyLRS), string(oss.RedundancyZRS))
		}
		redundancyType := oss.DataRedundancyType(strings.ToUpper(strRedundancy))
		op = append(op, oss.RedundancyType(redundancyType))
	}

	return mc.ossCreateBucketRetry(client, cloudURL.bucket, op...)
}