github.com/haagen/force@v0.19.6-0.20140911230915-22addd930b34/export.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "os" 7 "path/filepath" 8 ) 9 10 var cmdExport = &Command{ 11 Run: runExport, 12 Usage: "export [dir]", 13 Short: "Export metadata to a local directory", 14 Long: ` 15 Export metadata to a local directory 16 17 Examples: 18 19 force export 20 21 force export org/schema 22 `, 23 } 24 25 func runExport(cmd *Command, args []string) { 26 wd, _ := os.Getwd() 27 root := filepath.Join(wd, "metadata") 28 if len(args) == 1 { 29 root, _ = filepath.Abs(args[0]) 30 } 31 force, _ := ActiveForce() 32 query := ForceMetadataQuery{ 33 {Name: "AccountSettings", Members: "*"}, 34 {Name: "ActivitiesSettings", Members: "*"}, 35 {Name: "AddressSettings", Members: "*"}, 36 {Name: "AnalyticSnapshot", Members: "*"}, 37 {Name: "ApexClass", Members: "*"}, 38 {Name: "ApexComponent", Members: "*"}, 39 {Name: "ApexPage", Members: "*"}, 40 {Name: "ApexTrigger", Members: "*"}, 41 {Name: "ApprovalProcess", Members: "*"}, 42 {Name: "AssignmentRules", Members: "*"}, 43 {Name: "AuthProvider", Members: "*"}, 44 {Name: "AutoResponseRules", Members: "*"}, 45 {Name: "BusinessHoursSettings", Members: "*"}, 46 {Name: "BusinessProcess", Members: "*"}, 47 {Name: "CallCenter", Members: "*"}, 48 {Name: "CaseSettings", Members: "*"}, 49 {Name: "ChatterAnswersSettings", Members: "*"}, 50 {Name: "CompanySettings", Members: "*"}, 51 {Name: "Community", Members: "*"}, 52 {Name: "CompactLayout", Members: "*"}, 53 {Name: "ConnectedApp", Members: "*"}, 54 {Name: "ContractSettings", Members: "*"}, 55 {Name: "CustomApplication", Members: "*"}, 56 {Name: "CustomApplicationComponent", Members: "*"}, 57 {Name: "CustomApplication", Members: "*"}, 58 {Name: "CustomField", Members: "*"}, 59 {Name: "CustomLabels", Members: "*"}, 60 {Name: "CustomObject", Members: "*"}, 61 {Name: "CustomObjectTranslation", Members: "*"}, 62 {Name: "CustomPageWebLink", Members: "*"}, 63 {Name: "CustomSite", Members: "*"}, 64 {Name: "CustomTab", Members: "*"}, 65 {Name: "Dashboard", Members: "*"}, 66 {Name: "DataCategoryGroup", Members: "*"}, 67 {Name: "Document", Members: "*"}, 68 {Name: "EmailTemplate", Members: "*"}, 69 {Name: "EntitlementProcess", Members: "*"}, 70 {Name: "EntitlementSettings", Members: "*"}, 71 {Name: "EntitlementTemplate", Members: "*"}, 72 {Name: "ExternalDataSource", Members: "*"}, 73 {Name: "FieldSet", Members: "*"}, 74 {Name: "Flow", Members: "*"}, 75 {Name: "Folder", Members: "*"}, 76 {Name: "ForecastingSettings", Members: "*"}, 77 {Name: "Group", Members: "*"}, 78 {Name: "HomePageComponent", Members: "*"}, 79 {Name: "HomePageLayout", Members: "*"}, 80 {Name: "IdeasSettings", Members: "*"}, 81 {Name: "KnowledgeSettings", Members: "*"}, 82 {Name: "Layout", Members: "*"}, 83 {Name: "Letterhead", Members: "*"}, 84 {Name: "ListView", Members: "*"}, 85 {Name: "LiveAgentSettings", Members: "*"}, 86 {Name: "LiveChatAgentConfig", Members: "*"}, 87 {Name: "LiveChatButton", Members: "*"}, 88 {Name: "LiveChatDeployment", Members: "*"}, 89 {Name: "MilestoneType", Members: "*"}, 90 {Name: "MobileSettings", Members: "*"}, 91 {Name: "NamedFilter", Members: "*"}, 92 {Name: "Network", Members: "*"}, 93 {Name: "OpportunitySettings", Members: "*"}, 94 {Name: "PermissionSet", Members: "*"}, 95 {Name: "Portal", Members: "*"}, 96 {Name: "PostTemplate", Members: "*"}, 97 {Name: "ProductSettings", Members: "*"}, 98 {Name: "Profile", Members: "*"}, 99 {Name: "Queue", Members: "*"}, 100 {Name: "QuickAction", Members: "*"}, 101 {Name: "QuoteSettings", Members: "*"}, 102 {Name: "RecordType", Members: "*"}, 103 {Name: "RemoteSiteSetting", Members: "*"}, 104 {Name: "Report", Members: "*"}, 105 {Name: "ReportType", Members: "*"}, 106 {Name: "Role", Members: "*"}, 107 {Name: "SamlSsoConfig", Members: "*"}, 108 {Name: "Scontrol", Members: "*"}, 109 {Name: "SecuritySettings", Members: "*"}, 110 {Name: "SharingReason", Members: "*"}, 111 {Name: "Skill", Members: "*"}, 112 {Name: "StaticResource", Members: "*"}, 113 {Name: "Territory", Members: "*"}, 114 {Name: "Translations", Members: "*"}, 115 {Name: "ValidationRule", Members: "*"}, 116 } 117 files, err := force.Metadata.Retrieve(query) 118 if err != nil { 119 ErrorAndExit(err.Error()) 120 } 121 for name, data := range files { 122 file := filepath.Join(root, name) 123 dir := filepath.Dir(file) 124 if err := os.MkdirAll(dir, 0755); err != nil { 125 ErrorAndExit(err.Error()) 126 } 127 if err := ioutil.WriteFile(filepath.Join(root, name), data, 0644); err != nil { 128 ErrorAndExit(err.Error()) 129 } 130 } 131 fmt.Printf("Exported to %s\n", root) 132 }