Skip to content

Commit

Permalink
refactor(core): split up plugin handler declarations to individual mo…
Browse files Browse the repository at this point in the history
…dules
  • Loading branch information
edvald committed May 29, 2019
1 parent 0860f7d commit ea86355
Show file tree
Hide file tree
Showing 92 changed files with 1,576 additions and 1,392 deletions.
6 changes: 3 additions & 3 deletions dashboard/src/api/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ import axios from "axios"
import { GraphOutput } from "garden-cli/src/commands/get/get-graph"
import { TaskResultOutput } from "garden-cli/src/commands/get/get-task-result"
import { TestResultOutput } from "garden-cli/src/commands/get/get-test-result"
import { ServiceLogEntry } from "garden-cli/src/types/plugin/outputs"
import { ServiceLogEntry } from "garden-cli/src/types/plugin/service/getServiceLogs"
import { CommandResult } from "garden-cli/src/commands/base"
import { ConfigDump } from "garden-cli/src/garden"
import { EnvironmentStatus } from "garden-cli/src/actions"
import { AllEnvironmentStatus } from "garden-cli/src/actions"

export interface ApiRequest {
command: string
Expand All @@ -35,7 +35,7 @@ export async function fetchGraph() {
}

export async function fetchStatus() {
return apiPost<EnvironmentStatus>("get.status", { output: "json" })
return apiPost<AllEnvironmentStatus>("get.status", { output: "json" })
}

export async function fetchLogs(services: FetchLogsParam) {
Expand Down
2 changes: 1 addition & 1 deletion dashboard/src/components/logs.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import { colors } from "../styles/variables"
import { LoadLogs } from "../context/data"
import { getServiceNames } from "../util/helpers"

import { ServiceLogEntry } from "garden-cli/src/types/plugin/outputs"
import { ServiceLogEntry } from "garden-cli/src/types/plugin/service/getServiceLogs"
import { ConfigDump } from "garden-cli/src/garden"
import { ActionIcon } from "./ActionIcon"

Expand Down
2 changes: 1 addition & 1 deletion dashboard/src/components/terminal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ import { padEnd } from "lodash"
import React from "react"

import { colors } from "../styles/variables"
import { ServiceLogEntry } from "garden-cli/src/types/plugin/outputs"
import { ServiceLogEntry } from "garden-cli/src/types/plugin/service/getServiceLogs"

interface Props {
entries: ServiceLogEntry[]
Expand Down
2 changes: 1 addition & 1 deletion dashboard/src/context/data.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ import {
fetchTaskResult,
fetchTestResult,
} from "../api/api"
import { ServiceLogEntry } from "garden-cli/src/types/plugin/outputs"
import { ServiceLogEntry } from "garden-cli/src/types/plugin/service/getServiceLogs"
import { ConfigDump } from "garden-cli/src/garden"
import { GraphOutput } from "garden-cli/src/commands/get/get-graph"
import { TaskResultOutput } from "garden-cli/src/commands/get/get-task-result"
Expand Down
124 changes: 56 additions & 68 deletions garden-service/src/actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,88 +7,76 @@
*/

import Bluebird = require("bluebird")

import chalk from "chalk"
import { Garden, ActionHandlerMap, ModuleActionHandlerMap, PluginActionMap, ModuleActionMap } from "./garden"
import * as Joi from "joi"
import { fromPairs, keyBy, mapValues, omit, pickBy, values } from "lodash"

import { PublishModuleParams, PublishResult } from "./types/plugin/module/publishModule"
import { SetSecretParams, SetSecretResult } from "./types/plugin/provider/setSecret"
import { validate } from "./config/common"
import { defaultProvider } from "./config/project"
import { ConfigurationError, ParameterError, PluginError } from "./exceptions"
import { ActionHandlerMap, Garden, ModuleActionHandlerMap, ModuleActionMap, PluginActionMap } from "./garden"
import { LogEntry } from "./logger/log-entry"
import { createPluginContext } from "./plugin-context"
import { ProcessResults, processServices } from "./process"
import { getDependantTasksForModule } from "./tasks/helpers"
import { Module } from "./types/module"
import {
ModuleActions,
ServiceActions,
PluginActions,
TaskActions,
ModuleAndRuntimeActions,
pluginActionDescriptions,
moduleActionDescriptions,
pluginActionNames,
moduleActionNames,
} from "./types/plugin/plugin"
import {
BuildResult,
BuildStatus,
DeleteSecretResult,
EnvironmentStatusMap,
ExecInServiceResult,
GetSecretResult,
GetServiceLogsResult,
ModuleActionOutputs,
PluginActionContextParams,
PluginActionParamsBase,
PluginModuleActionParamsBase,
PluginServiceActionParamsBase,
PluginTaskActionParamsBase,
RunResult,
ServiceActionOutputs,
SetSecretResult,
TestResult,
PluginActionOutputs,
PublishResult,
TaskActionOutputs,
HotReloadServiceResult,
RunTaskResult,
DebugInfoMap,
} from "./types/plugin/outputs"
} from "./types/plugin/base"
import { BuildModuleParams, BuildResult } from "./types/plugin/module/build"
import { BuildStatus, GetBuildStatusParams } from "./types/plugin/module/getBuildStatus"
import { GetTestResultParams, TestResult } from "./types/plugin/module/getTestResult"
import { RunModuleParams } from "./types/plugin/module/runModule"
import { TestModuleParams } from "./types/plugin/module/testModule"
import {
BuildModuleParams,
DeleteSecretParams,
DeployServiceParams,
DeleteServiceParams,
ExecInServiceParams,
GetSecretParams,
GetBuildStatusParams,
GetServiceLogsParams,
GetServiceStatusParams,
GetTestResultParams,
ModuleActionOutputs,
ModuleActionParams,
PluginActionContextParams,
ModuleActions,
ModuleAndRuntimeActions,
PluginActionOutputs,
PluginActionParams,
PluginActionParamsBase,
PluginServiceActionParamsBase,
HotReloadServiceParams,
RunModuleParams,
RunServiceParams,
PluginActions,
ServiceActionOutputs,
ServiceActionParams,
SetSecretParams,
TestModuleParams,
GetEnvironmentStatusParams,
PluginModuleActionParamsBase,
PublishModuleParams,
PluginTaskActionParamsBase,
RunTaskParams,
ServiceActions,
TaskActionOutputs,
TaskActionParams,
GetTaskResultParams,
} from "./types/plugin/params"
import { Service, ServiceStatus, getServiceRuntimeContext, ServiceStatusMap } from "./types/service"
import { mapValues, values, keyBy, omit, pickBy, fromPairs } from "lodash"
TaskActions,
moduleActionDescriptions,
moduleActionNames,
pluginActionDescriptions,
pluginActionNames,
} from "./types/plugin/plugin"
import { CleanupEnvironmentParams } from "./types/plugin/provider/cleanupEnvironment"
import { DeleteSecretParams, DeleteSecretResult } from "./types/plugin/provider/deleteSecret"
import { EnvironmentStatusMap, GetEnvironmentStatusParams } from "./types/plugin/provider/getEnvironmentStatus"
import { GetSecretParams, GetSecretResult } from "./types/plugin/provider/getSecret"
import { DeleteServiceParams } from "./types/plugin/service/deleteService"
import { DeployServiceParams } from "./types/plugin/service/deployService"
import { ExecInServiceParams, ExecInServiceResult } from "./types/plugin/service/execInService"
import { GetServiceLogsParams, GetServiceLogsResult } from "./types/plugin/service/getServiceLogs"
import { GetServiceStatusParams } from "./types/plugin/service/getServiceStatus"
import { HotReloadServiceParams, HotReloadServiceResult } from "./types/plugin/service/hotReloadService"
import { RunServiceParams } from "./types/plugin/service/runService"
import { GetTaskResultParams } from "./types/plugin/task/getTaskResult"
import { RunTaskParams, RunTaskResult } from "./types/plugin/task/runTask"
import { Service, ServiceStatus, ServiceStatusMap, getServiceRuntimeContext } from "./types/service"
import { Omit } from "./util/util"
import { processServices, ProcessResults } from "./process"
import { getDependantTasksForModule } from "./tasks/helpers"
import { LogEntry } from "./logger/log-entry"
import { createPluginContext } from "./plugin-context"
import { CleanupEnvironmentParams } from "./types/plugin/params"
import { ConfigurationError, PluginError, ParameterError } from "./exceptions"
import { defaultProvider } from "./config/project"
import { validate } from "./config/common"
import * as Joi from "joi"
import { DebugInfoMap } from "./types/plugin/provider/getDebugInfo"

type TypeGuard = {
readonly [P in keyof (PluginActionParams | ModuleActionParams<any>)]: (...args: any[]) => Promise<any>
}

export interface EnvironmentStatus {
export interface AllEnvironmentStatus {
providers: EnvironmentStatusMap
services: { [name: string]: ServiceStatus }
}
Expand Down Expand Up @@ -371,7 +359,7 @@ export class ActionHelper implements TypeGuard {
//region Helper Methods
//===========================================================================

async getStatus({ log, serviceNames }: { log: LogEntry, serviceNames?: string[] }): Promise<EnvironmentStatus> {
async getStatus({ log, serviceNames }: { log: LogEntry, serviceNames?: string[] }): Promise<AllEnvironmentStatus> {
log.verbose(`Getting environment status (${this.garden.projectName})`)

const envStatus: EnvironmentStatusMap = await this.getEnvironmentStatus({ log })
Expand Down
6 changes: 2 additions & 4 deletions garden-service/src/commands/delete.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,6 @@
*/

import * as Bluebird from "bluebird"
import {
DeleteSecretResult,
EnvironmentStatusMap,
} from "../types/plugin/outputs"
import {
Command,
CommandResult,
Expand All @@ -22,6 +18,8 @@ import { NotFoundError } from "../exceptions"
import dedent = require("dedent")
import { ServiceStatus, getServiceRuntimeContext } from "../types/service"
import { logHeader } from "../logger/util"
import { DeleteSecretResult } from "../types/plugin/provider/deleteSecret"
import { EnvironmentStatusMap } from "../types/plugin/provider/getEnvironmentStatus"

export class DeleteCommand extends Command {
name = "delete"
Expand Down
2 changes: 1 addition & 1 deletion garden-service/src/commands/exec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

import chalk from "chalk"
import { LoggerType } from "../logger/logger"
import { ExecInServiceResult } from "../types/plugin/outputs"
import { ExecInServiceResult } from "../types/plugin/service/execInService"
import { logHeader } from "../logger/util"
import {
Command,
Expand Down
14 changes: 5 additions & 9 deletions garden-service/src/commands/get/get-status.ts
Original file line number Diff line number Diff line change
Expand Up @@ -9,18 +9,14 @@
import * as Bluebird from "bluebird"
import { flatten, fromPairs } from "lodash"
import { deepFilter } from "../../util/util"
import {
Command,
CommandResult,
CommandParams,
} from "../base"
import { EnvironmentStatus } from "../../actions"
import { Command, CommandResult, CommandParams } from "../base"
import { AllEnvironmentStatus } from "../../actions"
import { Garden } from "../../garden"
import { ConfigGraph } from "../../config-graph"
import { getTaskVersion } from "../../tasks/task"
import { LogEntry } from "../../logger/log-entry"
import { getTestVersion } from "../../tasks/test"
import { RunResult } from "../../types/plugin/outputs"
import { RunResult } from "../../types/plugin/base"

export type RunState = "outdated" | "succeeded" | "failed"

Expand All @@ -34,7 +30,7 @@ export interface TestStatuses { [testKey: string]: RunStatus }
export interface TaskStatuses { [taskKey: string]: RunStatus }

// Value is "completed" if the test/task has been run for the current version.
export interface StatusCommandResult extends EnvironmentStatus {
export interface StatusCommandResult extends AllEnvironmentStatus {
tests: TestStatuses
tasks: TaskStatuses
}
Expand All @@ -43,7 +39,7 @@ export class GetStatusCommand extends Command {
name = "status"
help = "Outputs the status of your environment."

async action({ garden, log, opts }: CommandParams): Promise<CommandResult<EnvironmentStatus>> {
async action({ garden, log, opts }: CommandParams): Promise<CommandResult<AllEnvironmentStatus>> {
const status = await garden.actions.getStatus({ log })

let result
Expand Down
2 changes: 1 addition & 1 deletion garden-service/src/commands/get/get-task-result.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import {
} from "../base"
import { logHeader } from "../../logger/util"
import { getTaskVersion } from "../../tasks/task"
import { RunTaskResult } from "../../types/plugin/outputs"
import { RunTaskResult } from "../../types/plugin/task/runTask"
import chalk from "chalk"

export interface TaskResultOutput {
Expand Down
2 changes: 1 addition & 1 deletion garden-service/src/commands/get/get-test-result.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ import {
StringParameter,
} from "../base"
import { NotFoundError } from "../../exceptions"
import { TestResult } from "../../types/plugin/outputs"
import { TestResult } from "../../types/plugin/module/getTestResult"
import { getTestVersion } from "../../tasks/test"
import { findByName, getNames } from "../../util/util"
import { logHeader } from "../../logger/util"
Expand Down
2 changes: 1 addition & 1 deletion garden-service/src/commands/logs.ts
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ import {
BooleanParameter,
} from "./base"
import chalk from "chalk"
import { ServiceLogEntry } from "../types/plugin/outputs"
import { ServiceLogEntry } from "../types/plugin/service/getServiceLogs"
import Bluebird = require("bluebird")
import { Service, getServiceRuntimeContext } from "../types/service"
import Stream from "ts-stream"
Expand Down
2 changes: 1 addition & 1 deletion garden-service/src/commands/run/module.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*/

import chalk from "chalk"
import { RunResult } from "../../types/plugin/outputs"
import { RunResult } from "../../types/plugin/base"
import {
BooleanParameter,
Command,
Expand Down
2 changes: 1 addition & 1 deletion garden-service/src/commands/run/service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
*/

import chalk from "chalk"
import { RunResult } from "../../types/plugin/outputs"
import { RunResult } from "../../types/plugin/base"
import {
BooleanParameter,
Command,
Expand Down
2 changes: 1 addition & 1 deletion garden-service/src/commands/run/test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@

import chalk from "chalk"
import { ParameterError } from "../../exceptions"
import { RunResult } from "../../types/plugin/outputs"
import { RunResult } from "../../types/plugin/base"
import {
findByName,
getNames,
Expand Down
2 changes: 1 addition & 1 deletion garden-service/src/commands/set.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,14 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

import { SetSecretResult } from "../types/plugin/outputs"
import {
Command,
CommandResult,
CommandParams,
StringParameter,
} from "./base"
import dedent = require("dedent")
import { SetSecretResult } from "../types/plugin/provider/setSecret"

export class SetCommand extends Command {
name = "set"
Expand Down
3 changes: 2 additions & 1 deletion garden-service/src/plugins/container/build.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,11 @@
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
*/

import { BuildModuleParams, GetBuildStatusParams } from "../../types/plugin/params"
import { containerHelpers } from "./helpers"
import { ContainerModule } from "./config"
import { ConfigurationError } from "../../exceptions"
import { GetBuildStatusParams } from "../../types/plugin/module/getBuildStatus"
import { BuildModuleParams } from "../../types/plugin/module/build"

export async function getContainerBuildStatus({ module, log }: GetBuildStatusParams<ContainerModule>) {
const identifier = await containerHelpers.imageExistsLocally(module)
Expand Down
4 changes: 3 additions & 1 deletion garden-service/src/plugins/container/container.ts
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,13 @@ import { keyBy } from "lodash"

import { ConfigurationError } from "../../exceptions"
import { GardenPlugin } from "../../types/plugin/plugin"
import { ConfigureModuleParams, HotReloadServiceParams, PublishModuleParams } from "../../types/plugin/params"
import { containerHelpers } from "./helpers"
import { ContainerModule, containerModuleSpecSchema } from "./config"
import { buildContainerModule, getContainerBuildStatus } from "./build"
import { KubernetesProvider } from "../kubernetes/kubernetes"
import { ConfigureModuleParams } from "../../types/plugin/module/configure"
import { PublishModuleParams } from "../../types/plugin/module/publishModule"
import { HotReloadServiceParams } from "../../types/plugin/service/hotReloadService"

export async function configureContainerModule({ ctx, moduleConfig }: ConfigureModuleParams<ContainerModule>) {
// validate hot reload configuration
Expand Down
Loading

0 comments on commit ea86355

Please sign in to comment.