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  }