Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .fikarc
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
"issueBranchTemplate": "feature/iss/#<ISSUE_NUMBER>"
},
"start": {
"fromDevelopOnly": true,
"pullBeforeAlways": true,
"fromDevelopOnly": false,
"pullBeforeAlways": false,
"checkoutToFeature": true
},
"finish": {
Expand Down
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@
"inversify": "^6.0.1",
"open": "^8.4.0",
"promptly": "^3.2.0",
"prompts": "^2.4.2",
"reflect-metadata": "^0.1.13",
"ts-morph": "^14.0.0",
"valid-url": "^1.0.9"
Expand All @@ -46,6 +47,7 @@
"@types/jest": "^27.5.0",
"@types/node": "^17.0.25",
"@types/promptly": "^3.0.2",
"@types/prompts": "^2.4.1",
"@types/reflect-metadata": "^0.1.0",
"@types/valid-url": "^1.0.3",
"babel-jest": "^28.0.3",
Expand Down
55 changes: 55 additions & 0 deletions src/actions/fika/set-workspace.action.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
import { IPromptService } from "@/domain/service/i-prompt.service";
import { IConfigService } from "src/domain/service/i_config.service";
import { IConnectService } from "src/domain/service/i_connect.service";
import { IMessageService } from "@/domain/service/i_message.service";
import { WorkspaceType } from "@/domain/entity/add_on/workspace_platform.entity";
import SERVICE_IDENTIFIER from "src/config/constants/identifiers";
import container from "src/config/ioc_config";
import { Workspace } from "@/domain/entity/workspace.entity";
import { Uuid } from "@/domain/value_object/uuid.vo";

export const switchNoWorkspace = async () => {
const messageService = container.get<IMessageService>(SERVICE_IDENTIFIER.MessageService);
await messageService.showSuccess(
`Your Fika account hasn't been connected to any workspace\n To connect to one, please, first run the command "fika connect <workspace_type>"\n and then copy the command "fika set <workspace_type:TOKEN>" from your browser\n and run it in your terninal`,
"Fika Quick Start Documentation",
"https://fikadev.com/manual"
);
};
export const switchOneWorkspace = async (workspace: Workspace) => {
const messageService = container.get<IMessageService>(SERVICE_IDENTIFIER.MessageService);
await messageService.showSuccess(
`${workspace.workspaceName} from ${workspace.workspaceType} is the only workspace connected to your Fika account.`,
"Fika Quick Start Documentation",
"https://fikadev.com/manual"
);
};
export const switchMultiWorkspace = async (workspaceList: Workspace[]) => {
const promptService = container.get<IPromptService>(SERVICE_IDENTIFIER.PromptService);
const configService = container.get<IConfigService>(SERVICE_IDENTIFIER.ConfigService);
const messageService = container.get<IMessageService>(SERVICE_IDENTIFIER.MessageService);
const newWorkspaceId = await promptService.askChooseWorkspace(workspaceList);
configService.updateCurrentWorkspaceId(newWorkspaceId);
await messageService.showSuccess(
`This workspace has been set to be your current workspace.\n If you want to switch to another workspace, please run the command "fika set" again.`,
"Fika Quick Start Documentation",
"https://fikadev.com/manual"
);
};
export const setNewWorkspace = async (workspaceTypeAndId: string) => {
const configService = container.get<IConfigService>(SERVICE_IDENTIFIER.ConfigService);
const messageService = container.get<IMessageService>(SERVICE_IDENTIFIER.MessageService);
const connectService = container.get<IConnectService>(SERVICE_IDENTIFIER.ConnectService);
const [workspaceType, idString] = workspaceTypeAndId.split(":");
const workspaceId: Uuid = new Uuid(idString);
const workspace = await connectService.requestWorkspace(
workspaceType as WorkspaceType,
workspaceId
);
configService.updateWorkspace(workspace);
await messageService.showSuccess(
`The connection was successfully established with the workspace\n This workspace has been set to be your current workspace.\n If you want to switch to one of your previous workspace, please run the command "fika set"`,
"Fika Quick Start Documentation",
"https://fikadev.com/manual"
);
};
20 changes: 12 additions & 8 deletions src/command/init/init.action.ts
Original file line number Diff line number Diff line change
Expand Up @@ -37,19 +37,23 @@ export const initAction = async () => {
"release",
foundReleaseBrances
);
//console.log(developBranchName, mainBranchName, releaseBranchName);
await initGitRepo();
//console.log(developBranchName, mainBranchName, releaseBranchName);
await gitPlatformService.checkoutToBranchWithoutReset(mainBranchName);
const initialConfig = JSON.parse(JSON.stringify(defaultLocalConfig));
initialConfig.branchNames = {
develop: developBranchName,
main: mainBranchName,
release: releaseBranchName,
issueBranchTemplate: initialConfig.branchNames.issueBranchTemplate,
};
await configService.createLocalConfig(initialConfig);
// const initialConfig = JSON.parse(JSON.stringify(defaultLocalConfig));
// console.log("with init default values", initialConfig);
// const promptBranchNames = {
// develop: developBranchName,
// main: mainBranchName,
// release: releaseBranchName,
// };
//console.log("with the prompt values", promptBranchNames);
await configService.createLocalConfig(developBranchName, mainBranchName, releaseBranchName);
await gitPlatformService.stageAllChanges();
await gitPlatformService.commitWithMessage("Add .fikarc for fika configuration");
await initFixedBranch(mainBranchName);
await initFixedBranch(releaseBranchName);
await initFixedBranch(developBranchName);
//console.log(developBranchName, mainBranchName, releaseBranchName);
};
4 changes: 2 additions & 2 deletions src/command/set/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import { setAction } from "./set.action";
export const setCommand = new Command()
.command("set")
.description("set Notion bot id")
.argument("<notion-bot-id>")
.action(async (argument: string) => {
.argument("[notion-bot-id]", undefined)
.action(async (argument?: string) => {
await commandWrapper(setAction, argument);
});
38 changes: 19 additions & 19 deletions src/command/set/set.action.ts
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
import { WorkspaceType } from "@/domain/entity/add_on/workspace_platform.entity";
import { IMessageService } from "@/domain/service/i_message.service";
import { Uuid } from "@/domain/value_object/uuid.vo";
import SERVICE_IDENTIFIER from "src/config/constants/identifiers";
import container from "src/config/ioc_config";
import { IConfigService } from "src/domain/service/i_config.service";
import { IConnectService } from "src/domain/service/i_connect.service";
import {
switchNoWorkspace,
switchOneWorkspace,
switchMultiWorkspace,
setNewWorkspace,
} from "@/actions/fika/set-workspace.action";

export const setAction = async (workspaceTypeAndId: string) => {
export const setAction = async (workspaceTypeAndId?: string) => {
const configService = container.get<IConfigService>(SERVICE_IDENTIFIER.ConfigService);
const messageService = container.get<IMessageService>(SERVICE_IDENTIFIER.MessageService);
const connectService = container.get<IConnectService>(SERVICE_IDENTIFIER.ConnectService);
const [workspaceType, idString] = workspaceTypeAndId.split(":");
const workspaceId: Uuid = new Uuid(idString);
const workspace = await connectService.requestWorkspace(
workspaceType as WorkspaceType,
workspaceId
);
configService.updateWorkspace(workspace);
await messageService.showSuccess(
"Notion is connected successfully",
"Fika Quick Start Documentation",
"https://blog.fikadev.com/posts/start-fika"
);
if (workspaceTypeAndId === undefined) {
const workspaceList = configService.getWorkspaceList();
if (workspaceList === "NOT_CONNECTED") {
await switchNoWorkspace();
} else if (workspaceList.length === 1) {
await switchOneWorkspace(workspaceList[0]);
} else {
await switchMultiWorkspace(workspaceList);
}
} else {
await setNewWorkspace(workspaceTypeAndId);
}
};
3 changes: 2 additions & 1 deletion src/config/constants/default_config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,9 @@ import { ObjectType } from "src/domain/entity/dev_object.entity";
export const issueNumberTag = "<ISSUE_NUMBER>";

export const defaultConfig: Config = {
workspace: "NOT_CONNECTED",
workspaces: "NOT_CONNECTED",
fikaToken: "UN_AUTHENTICATED",
currentWorkspaceId: "NOT_CONNECTED",
addOns: [
{
name: "Repo.Analyzer",
Expand Down
3 changes: 2 additions & 1 deletion src/domain/entity/config.entity.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,8 @@ import { NotConnected } from "./notion_workspace.entity";
import { Workspace } from "./workspace.entity";

export interface Config {
workspace: Workspace | NotConnected;
workspaces: Workspace[] | NotConnected;
addOns: AddOnConfig[];
fikaToken: FikaToken | UnAuthenticated;
currentWorkspaceId: string | NotConnected;
}
Loading