samples

package
v1.12.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 16, 2022 License: Apache-2.0 Imports: 17 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Create added in v1.6.0

func Create(
	ctx context.Context,
	config *config.Config,
	sampleName string,
	selectedConfig *SelectedConfig,
	destination string,
	forceRefresh bool,
	resultChan chan<- CreationResult,
)

Create creates a sample at a destination with the selected integration, client language, and server language

func GetSamples added in v1.6.0

func GetSamples(mode string) (map[string]*SampleData, error)

GetSamples returns a list that contains a mapping of Stripe Samples that we want to be available in the CLI to some of their metadata. TODO: what do we want to name these for it to be easier for users to select? TODO: should we group them by products for easier exploring?

func Names

func Names(list map[string]*SampleData) []string

Names returns a list of all the sample's names

Types

type CreationResult added in v1.6.0

type CreationResult struct {
	State       CreationStatus
	Path        string
	PostInstall string
	Err         error
}

CreationResult is the return value sent over a channel

type CreationStatus added in v1.6.0

type CreationStatus int

CreationStatus is the current step in the sample creation routine

const (
	// WillInitialize means this sample will be initialized
	WillInitialize CreationStatus = iota

	// DidInitialize means this sample has finished initializing
	DidInitialize

	// WillCopy means the downloaded sample will be copied to the target path
	WillCopy

	// DidCopy means the downloaded sample has finished being copied to the target path
	DidCopy

	// WillConfigure means the .env of the sample will be configured with the user's Stripe account details
	WillConfigure

	// DidConfigure means the .env of the sample has finished being configured with the user's Stripe account details
	DidConfigure

	// Done means sample creation is complete
	Done
)

type SampleConfig added in v1.6.0

type SampleConfig struct {
	Name            string                    `json:"name"`
	ConfigureDotEnv bool                      `json:"configureDotEnv"`
	PostInstall     map[string]string         `json:"postInstall"`
	Integrations    []SampleConfigIntegration `json:"integrations"`
}

SampleConfig contains all the configuration options for a sample

func GetSampleConfig added in v1.6.0

func GetSampleConfig(sampleName string, forceRefresh bool) (*SampleConfig, error)

GetSampleConfig returns the available config for this sample

func (*SampleConfig) HasIntegrations added in v1.6.0

func (sc *SampleConfig) HasIntegrations() bool

HasIntegrations returns true if the sample has multiple integrations

func (*SampleConfig) IntegrationNames added in v1.6.0

func (sc *SampleConfig) IntegrationNames() []string

IntegrationNames returns the names of the available integrations for the sample

type SampleConfigIntegration added in v1.6.0

type SampleConfigIntegration struct {
	Name string `json:"name"`
	// Clients are the frontend clients built for each sample
	Clients []string `json:"clients"`
	// Servers are the backend server implementations available for a sample
	Servers []string `json:"servers"`
}

SampleConfigIntegration is a particular integration for a sample

func (*SampleConfigIntegration) HasMultipleClients added in v1.6.0

func (i *SampleConfigIntegration) HasMultipleClients() bool

HasMultipleClients returns true if this integration has multiple options for the client language

func (*SampleConfigIntegration) HasMultipleServers added in v1.6.0

func (i *SampleConfigIntegration) HasMultipleServers() bool

HasMultipleServers returns true if this integration has multiple options for the server language

type SampleData

type SampleData struct {
	Name        string `json:"name"`
	URL         string `json:"URL"`
	Description string `json:"description"`
}

SampleData stores the information needed for Stripe Samples to operate in the CLI

func (*SampleData) BoldName

func (sd *SampleData) BoldName() string

BoldName returns an ansi bold string for the name

func (*SampleData) GitRepo

func (sd *SampleData) GitRepo() string

GitRepo returns a string of the repo with the .git prefix

type SampleList added in v1.3.9

type SampleList struct {
	Samples []SampleData `json:"samples"`
}

SampleList is used to unmarshal the samples array from the JSON response

type Samples

type Samples struct {
	Config *config.Config
	Fs     afero.Fs
	Git    g.Interface

	SamplesList map[string]*SampleData

	SampleConfig SampleConfig

	SelectedConfig SelectedConfig
	// contains filtered or unexported fields
}

Samples stores the information for the selected sample in addition to the selected configuration option to copy over

func (*Samples) Cleanup added in v0.6.1

func (s *Samples) Cleanup(name string) error

Cleanup performs cleanup for the recently created sample

func (*Samples) ConfigureDotEnv

func (s *Samples) ConfigureDotEnv(ctx context.Context, sampleLocation string) error

ConfigureDotEnv takes the .env.example from the provided location and modifies it to automatically configure it for the users settings

func (*Samples) Copy

func (s *Samples) Copy(target string) error

Copy will copy all of the files from the selected configuration above oves. This has a few different behaviors, depending on the configuration. Ultimately, we want the user to do as minimal of folder traversing as possible. What we want to end up with is:

|- example-sample/ +-- client/ +-- server/ +-- readme.md +-- ... `-- .env.example

The behavior here is:

  • If there are no integrations available, copy the top-level files, the client folder, and the selected language inside of the server folder to the server top-level (example above)
  • If the user selects an integration, mirror the structure above for the selected integration (example above)

func (*Samples) DeleteCache added in v1.2.3

func (s *Samples) DeleteCache(sample string) error

DeleteCache forces the local sample cache to refresh in case something goes awry during the initial clone or to clean out stale samples

func (*Samples) GetFiles

func (s *Samples) GetFiles(path string) ([]string, error)

GetFiles returns a list of files for a given path

func (*Samples) GetFolders

func (s *Samples) GetFolders(path string) ([]string, error)

GetFolders returns a list of all folders for a given path

func (*Samples) Initialize

func (s *Samples) Initialize(app string) error

Initialize get the sample ready for the user to copy. It: 1. creates the sample cache folder if it doesn't exist 2. store the path of the locale cache folder for later use 3. if the selected app does not exist in the local cache folder, clone it 4. if the selected app does exist in the local cache folder, pull changes 5. parse the sample cli config file

func (*Samples) MakeFolder

func (s *Samples) MakeFolder(name string) (string, error)

MakeFolder creates the folder that'll contain the Stripe app the user is creating

func (*Samples) PostInstall added in v0.8.4

func (s *Samples) PostInstall() string

PostInstall returns any installation for post installation instructions

type SelectedConfig added in v1.6.0

type SelectedConfig struct {
	Integration *SampleConfigIntegration
	Client      string
	Server      string
}

SelectedConfig is the sample config that the user has selected to create

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL
JackTT - Gopher 🇻🇳