Skip to content

Commit a223216

Browse files
committed
fix: skill creation and clone returns 'no skill repository found'
1 parent 43a0c05 commit a223216

File tree

6 files changed

+213
-150
lines changed

6 files changed

+213
-150
lines changed

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -366,7 +366,7 @@
366366
"webpack-cli": "^4.5.0"
367367
},
368368
"dependencies": {
369-
"@alexa/acdl": "0.3.0",
369+
"@alexa/acdl": "*",
370370
"adm-zip": "0.4.14",
371371
"apl-suggester": "^2023.1.0",
372372
"apl-viewhost-web": "^2023.1.0-1",

src/askContainer/commands/cloneSkill/cloneHostedSkillManager.ts

Lines changed: 18 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,17 @@ import * as fs from "fs";
77
import * as https from "https";
88
import * as path from "path";
99
import * as vscode from "vscode";
10-
import {Repository} from "../../../@types/git";
1110
import {BRANCH_TO_STAGE, GIT_MESSAGES, SKILL, SKILL_FOLDER} from "../../../constants";
1211
import {AskError, logAskError} from "../../../exceptions";
1312
import {Logger} from "../../../logger";
1413
import {SmapiClientFactory} from "../../../runtime";
15-
import {getOrInstantiateGitApi, GitInTerminalHelper, isGitInstalled} from "../../../utils/gitHelper";
14+
import {GitInTerminalHelper, isGitInstalled} from "../../../utils/gitHelper";
1615
import {checkAskPrePushScript, checkAuthInfoScript, checkGitCredentialHelperScript} from "../../../utils/s3ScriptChecker";
1716
import {createSkillPackageFolder, syncSkillPackage} from "../../../utils/skillPackageHelper";
1817
import {AbstractCloneSkillManager} from "./abstractCloneSkillManager";
1918

2019
export class CloneHostedSkillManager extends AbstractCloneSkillManager {
21-
async setupGitFolder(): Promise<Repository> {
20+
async setupGitFolder(): Promise<void> {
2221
Logger.verbose(`Calling method: setupGitFolder`);
2322
try {
2423
const smapiClient = SmapiClientFactory.getInstance(this.profile, this.context);
@@ -27,7 +26,7 @@ export class CloneHostedSkillManager extends AbstractCloneSkillManager {
2726
const credentialsList = await smapiClient.generateCredentialsForAlexaHostedSkillV1(skillId, {
2827
repository: this.skillInfo.data.hostedSkillMetadata!.alexaHosted!.repository!,
2928
});
30-
const repositoryCredentials = credentialsList.repositoryCredentials;
29+
const {repositoryCredentials} = credentialsList;
3130
if (
3231
repositoryCredentials === undefined ||
3332
repositoryCredentials.username === undefined ||
@@ -41,29 +40,15 @@ export class CloneHostedSkillManager extends AbstractCloneSkillManager {
4140
throw new AskError("Failed to retrieve hosted skill repo URL from the service.");
4241
}
4342
await this.downloadGitCredentialScript(this.fsPath, this.context);
43+
4444
gitHelper.init();
4545
gitHelper.configureCredentialHelper(repoUrl, this.profile, skillId);
4646
gitHelper.addOrigin(repoUrl);
47+
gitHelper.fetchAll();
48+
gitHelper.checkoutBranch("prod")
49+
gitHelper.checkoutBranch("master");
4750

48-
/**
49-
* Since gitHelper commands are failing due to execSync
50-
* not waiting to call next command, calling the following
51-
* set of git commands through inbuilt git extension
52-
*/
53-
await vscode.commands.executeCommand("git.openRepository", this.fsPath);
54-
55-
const gitApi = await getOrInstantiateGitApi(this.context);
56-
const repo = gitApi?.getRepository(vscode.Uri.file(this.fsPath));
57-
58-
if (repo === undefined || repo === null) {
59-
throw new AskError("No skill repository found.");
60-
}
61-
62-
await repo.fetch();
63-
await repo.checkout("prod");
64-
await repo.checkout("master");
6551
await this.setPrePushHookScript(this.fsPath, this.context);
66-
return repo;
6752
} catch (err) {
6853
throw logAskError(`Git folder setup failed for ${this.fsPath}`, err);
6954
}
@@ -125,37 +110,40 @@ export class CloneHostedSkillManager extends AbstractCloneSkillManager {
125110
Logger.verbose(`Calling method: cloneSkill, args: `, progressBar);
126111

127112
this.checkGitInstallation();
128-
incrAmount = incrAmount ?? 25;
113+
const incrementAmount = incrAmount ?? 25;
129114

130115
fs.mkdirSync(path.join(this.fsPath, SKILL_FOLDER.HIDDEN_ASK_FOLDER));
131116

132-
const skillRepo = await this.setupGitFolder();
117+
await this.setupGitFolder();
133118
progressBar.report({
134-
increment: incrAmount,
119+
increment: incrementAmount,
135120
message: "Git access set. Checking skill metadata files...",
136121
});
137122

138123
this.createAskResourcesConfig(true);
139124
this.createAskStateConfig();
140125
progressBar.report({
141-
increment: incrAmount,
126+
increment: incrementAmount,
142127
message: "Skill metadata files created. Checking skill package...",
143128
});
144129

145130
GitInTerminalHelper.addFilesToIgnore(this.fsPath, this.filesToIgnore());
146131

147132
createSkillPackageFolder(this.fsPath);
148133
progressBar.report({
149-
increment: incrAmount,
134+
increment: incrementAmount,
150135
message: "Skill package created. Syncing from service...",
151136
});
152137

153138
const skillPkgPath = path.join(this.fsPath, SKILL_FOLDER.SKILL_PACKAGE.NAME);
154-
const skillStage = BRANCH_TO_STAGE[skillRepo.state.HEAD!.name!];
139+
const gitHelper = new GitInTerminalHelper(this.fsPath, Logger.logLevel);
140+
const curBranch = gitHelper.getCurrentBranch();
141+
const skillStage = BRANCH_TO_STAGE[curBranch];
155142
const skillPackageStatus = await syncSkillPackage(skillPkgPath, this.skillInfo.data.skillSummary.skillId!, this.context, skillStage);
156-
void this.postCloneSkill(true, skillPackageStatus.skill?.eTag);
143+
144+
this.postCloneSkill(true, skillPackageStatus.skill?.eTag);
157145
progressBar.report({
158-
increment: incrAmount,
146+
increment: incrementAmount,
159147
message: "Skill package synced.",
160148
});
161149
}

0 commit comments

Comments
 (0)