diff --git a/packages/code-api/src/atomgit/atomgit.service.ts b/packages/code-api/src/atomgit/atomgit.service.ts index ff07433a..a4fe9a0b 100644 --- a/packages/code-api/src/atomgit/atomgit.service.ts +++ b/packages/code-api/src/atomgit/atomgit.service.ts @@ -13,6 +13,7 @@ import { EntryParam, FileAction, FileActionHeader, + GetEntryInfoParam, GitlensBlame, ICodeAPIService, IRepositoryModel, @@ -44,7 +45,7 @@ export class AtomGitAPIService implements ICodeAPIService { constructor() { this._PRIVATE_TOKEN = this.config.token || this.helper.ATOMGIT_TOKEN || ''; } - getEntryInfo?(repo: IRepositoryModel, entry: EntryParam): Promise { + getEntryInfo(repo: IRepositoryModel, entry: GetEntryInfoParam): Promise { throw new Error('Method not implemented.'); } getBranchNames?(repo: IRepositoryModel): Promise { diff --git a/packages/code-api/src/codeup/codeup.service.ts b/packages/code-api/src/codeup/codeup.service.ts index 0970f557..636ff56a 100644 --- a/packages/code-api/src/codeup/codeup.service.ts +++ b/packages/code-api/src/codeup/codeup.service.ts @@ -5,7 +5,7 @@ import { IReporterService, localize, LRUCache, MessageType } from '@opensumi/ide import { DEFAULT_SEARCH_IN_WORKSPACE_LIMIT } from '@opensumi/ide-search'; import { CodePlatformRegistry } from '../common/config'; import { HelperService } from '../common/service'; -import { Branch, FileAction, FileActionHeader, FileActionResult, Project } from '../common/types'; +import { Branch, FileAction, FileActionHeader, FileActionResult, GetEntryInfoParam, Project } from '../common/types'; import { BranchOrTag, CodePlatform, @@ -194,21 +194,21 @@ export class CodeUPAPIService implements ICodeAPIService { return new Uint8Array(new TextEncoder().encode(infoAndBlobs?.content || '')); } - // async getEntryInfo(repo: IRepositoryModel, entry: EntryParam) { - // const data = await this.request( - // `/api/v3/projects/${this.getProjectId(repo)}/repository/tree_entry`, - // { - // params: { - // ref_name: repo.commit, - // path: entry.path, - // }, - // } - // ); - // return { - // size: data.size, - // fileType: data.render === 'download' ? 'binary' : data.render, - // } as const; - // } + async getEntryInfo(repo: IRepositoryModel, entry: GetEntryInfoParam) { + const data = await this.request( + `/api/v3/projects/${this.getProjectId(repo)}/repository/tree_entry`, + { + params: { + ref_name: repo.commit, + path: entry.path, + }, + } + ); + return { + ...data, + fileType: data.render === 'download' ? 'binary' : data.render, + } as const; + } async getBranches(repo: IRepositoryModel): Promise { return this.request( diff --git a/packages/code-api/src/common/types.ts b/packages/code-api/src/common/types.ts index 46659ac1..69eafe12 100644 --- a/packages/code-api/src/common/types.ts +++ b/packages/code-api/src/common/types.ts @@ -183,6 +183,7 @@ export interface EntryInfo { * file size */ size: number; + mode: string; /** * file type */ @@ -306,6 +307,11 @@ export interface Branch { }; } +export interface GetEntryInfoParam { + ref_name: string; + path: string; +} + export interface User { email: string; name: string; @@ -404,7 +410,7 @@ export interface ICodeAPIService { /** * 获取 entry 相关信息 */ - getEntryInfo?(repo: IRepositoryModel, entry: EntryParam): Promise; + getEntryInfo(repo: IRepositoryModel, entry: GetEntryInfoParam): Promise; /** * 获取所有分支 */ diff --git a/packages/code-api/src/gitee/gitee.service.ts b/packages/code-api/src/gitee/gitee.service.ts index 751904d8..27457a84 100644 --- a/packages/code-api/src/gitee/gitee.service.ts +++ b/packages/code-api/src/gitee/gitee.service.ts @@ -16,6 +16,7 @@ import { FileAction, FileActionHeader, FileActionResult, + GetEntryInfoParam, GitlensBlame, ICodeAPIService, IRepositoryModel, @@ -64,7 +65,7 @@ export class GiteeAPIService implements ICodeAPIService { this._PRIVATE_TOKEN = this.config.token || this.helper.GITEE_TOKEN || ''; } - getEntryInfo?(repo: IRepositoryModel, entry: EntryParam): Promise { + getEntryInfo(repo: IRepositoryModel, entry: GetEntryInfoParam): Promise { throw new Error('Method not implemented.'); } getBranchNames?(repo: IRepositoryModel): Promise { diff --git a/packages/code-api/src/github/github.service.ts b/packages/code-api/src/github/github.service.ts index 46840606..38d0f396 100644 --- a/packages/code-api/src/github/github.service.ts +++ b/packages/code-api/src/github/github.service.ts @@ -21,7 +21,7 @@ import { TreeEntry, User, } from '../common/types'; -import type { EntryParam, IRepositoryModel } from '../common/types'; +import type { EntryParam, GetEntryInfoParam, IRepositoryModel } from '../common/types'; import { CodeAPI as ConflictAPI, CodePlatform, CommitFileStatus } from '../common/types'; import { retry, RetryError } from '../common/utils'; import { API } from './types'; @@ -93,7 +93,7 @@ export class GitHubAPIService implements ICodeAPIService { ): Promise { throw new Error('Method not implemented.'); } - getEntryInfo?(repo: IRepositoryModel, entry: EntryParam): Promise { + getEntryInfo(repo: IRepositoryModel, entry: GetEntryInfoParam): Promise { throw new Error('Method not implemented.'); } getBranchNames?(repo: IRepositoryModel): Promise { diff --git a/packages/code-api/src/gitlab/gitlab.service.ts b/packages/code-api/src/gitlab/gitlab.service.ts index 2c4eb80b..fb5f80e5 100644 --- a/packages/code-api/src/gitlab/gitlab.service.ts +++ b/packages/code-api/src/gitlab/gitlab.service.ts @@ -9,6 +9,7 @@ import type { CommitParams, EntryInfo, EntryParam, + GetEntryInfoParam, ICodeAPIService, IRepositoryModel, Project, @@ -80,7 +81,7 @@ export class GitLabAPIService implements ICodeAPIService { ): Promise { throw new Error('Method not implemented.'); } - getEntryInfo?(repo: IRepositoryModel, entry: EntryParam): Promise { + getEntryInfo(repo: IRepositoryModel, entry: GetEntryInfoParam): Promise { throw new Error('Method not implemented.'); } getBranchNames?(repo: IRepositoryModel): Promise { diff --git a/packages/code-api/src/gitlink/gitlink.service.ts b/packages/code-api/src/gitlink/gitlink.service.ts index 4742e021..55d592ff 100644 --- a/packages/code-api/src/gitlink/gitlink.service.ts +++ b/packages/code-api/src/gitlink/gitlink.service.ts @@ -11,6 +11,7 @@ import type { EntryParam, FileAction, FileActionHeader, + GetEntryInfoParam, GitlensBlame, ICodeAPIService, IRepositoryModel, @@ -74,7 +75,7 @@ export class GitLinkAPIService implements ICodeAPIService { ): Promise { throw new Error('Method not implemented.'); } - getEntryInfo?(_repo: IRepositoryModel, _entry: EntryParam): Promise { + getEntryInfo(_repo: IRepositoryModel, _entry: GetEntryInfoParam): Promise { throw new Error('Method not implemented.'); } getBranchNames?(_repo: IRepositoryModel): Promise { diff --git a/packages/code-service/src/commands.contribution.ts b/packages/code-service/src/commands.contribution.ts index 48fc68c6..bd167b8d 100644 --- a/packages/code-service/src/commands.contribution.ts +++ b/packages/code-service/src/commands.contribution.ts @@ -1,4 +1,4 @@ -import { CodeAPI, CodePlatform, CommitFileChange, CommitParams, CommitRecord } from '@codeblitzjs/ide-code-api'; +import { CodeAPI, CodePlatform, CommitFileChange, CommitParams, CommitRecord, EntryInfo } from '@codeblitzjs/ide-code-api'; import { Autowired } from '@opensumi/di'; import { IClipboardService, IOpenerService } from '@opensumi/ide-core-browser'; import { Command, CommandContribution, CommandRegistry, Disposable, Domain } from '@opensumi/ide-core-common'; @@ -58,6 +58,7 @@ export class CommandsContribution extends Disposable implements CommandContribut CODE_SERVICE_COMMANDS.COMMIT_DETAIL, CODE_SERVICE_COMMANDS.COMMIT_COMPARE, CODE_SERVICE_COMMANDS.COMMIT_FILE, + CODE_SERVICE_COMMANDS.GET_ENTRY_INFO, CODE_SERVICE_COMMANDS.REMOTE_URL, CODE_SERVICE_COMMANDS.CHECKOUT_BRANCH, CODE_SERVICE_COMMANDS.CHECKOUT_COMMIT, @@ -244,9 +245,21 @@ export class CommandsContribution extends Disposable implements CommandContribut options?: any, ): Promise { const repo = this.codeModel.getRepository(repoPath); - if (!repo) throw new Error(`${filePath} not exists`); + if (!repo) throw new Error(`repo ${repoPath} not exists`); return repo.request.getBlobByCommitPath(commitHash, filePath, options); } + async getEntryInfo( + repoPath: string, + refName: string, + filePath: string, + ): Promise { + const repo = this.codeModel.getRepository(repoPath); + if (!repo) throw new Error(`repo ${repoPath} not exists`); + return repo.request.getEntryInfo({ + ref_name: refName, + path: filePath, + }); + } async remoteUrl(repoPath: string): Promise { const repo = this.codeModel.getRepository(repoPath); diff --git a/packages/code-service/src/commands.ts b/packages/code-service/src/commands.ts index b46ce1a7..92bb284b 100644 --- a/packages/code-service/src/commands.ts +++ b/packages/code-service/src/commands.ts @@ -49,6 +49,11 @@ export namespace CODE_SERVICE_COMMANDS { category: CATEGORY, }; + export const GET_ENTRY_INFO: Command = { + id: 'code-service.getEntryInfo', + category: CATEGORY, + }; + export const REMOTE_URL: Command = { id: 'code-service.remoteUrl', category: CATEGORY, diff --git a/packages/startup/src/code/startup.module.ts b/packages/startup/src/code/startup.module.ts index 792b7749..5e208868 100644 --- a/packages/startup/src/code/startup.module.ts +++ b/packages/startup/src/code/startup.module.ts @@ -3,11 +3,11 @@ import { ComponentContribution, ComponentRegistry, getIcon, -} from '@codeblitzjs/ide-core/lib/modules/opensumi__ide-core-browser'; +} from '@opensumi/ide-core-browser'; import { IMainLayoutService, MainLayoutContribution, -} from '@codeblitzjs/ide-core/lib/modules/opensumi__ide-main-layout'; +} from '@opensumi/ide-main-layout'; import { Autowired, Injectable, Provider } from '@opensumi/di'; import { BrowserModule, diff --git a/packages/startup/src/startup/index.tsx b/packages/startup/src/startup/index.tsx index 60e6c500..317b4e2b 100644 --- a/packages/startup/src/startup/index.tsx +++ b/packages/startup/src/startup/index.tsx @@ -45,7 +45,7 @@ import { IAIBackServiceOption, IChatProgress, sleep, -} from '@codeblitzjs/ide-core/lib/modules/opensumi__ide-core-browser'; +} from '@opensumi/ide-core-browser'; (window as any).alex = Alex; diff --git a/packages/startup/src/startup/startup.module.ts b/packages/startup/src/startup/startup.module.ts index 34ca534d..516b87c0 100644 --- a/packages/startup/src/startup/startup.module.ts +++ b/packages/startup/src/startup/startup.module.ts @@ -2,7 +2,7 @@ import { CodeModelService } from '@codeblitzjs/ide-code-service'; import { IMainLayoutService, MainLayoutContribution, -} from '@codeblitzjs/ide-core/lib/modules/opensumi__ide-main-layout'; +} from '@opensumi/ide-main-layout'; import { Autowired, Injectable, Provider } from '@opensumi/di'; import { BrowserModule, diff --git a/packages/startup/src/startup/web-scm.plugin.ts b/packages/startup/src/startup/web-scm.plugin.ts index c15bd7d3..07f9fa4f 100644 --- a/packages/startup/src/startup/web-scm.plugin.ts +++ b/packages/startup/src/startup/web-scm.plugin.ts @@ -1,6 +1,6 @@ import type { Uri } from '@codeblitzjs/ide-core'; import type { IPluginAPI } from '@codeblitzjs/ide-core/lib/editor'; -import { Deferred } from '@codeblitzjs/ide-core/lib/modules/opensumi__ide-core-browser'; +import { Deferred } from '@opensumi/ide-utils'; import * as localforage from 'localforage'; export const PLUGIN_ID = 'web-scm';