Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move to default branch #7231

Draft
wants to merge 12 commits into
base: master
Choose a base branch
from
2 changes: 1 addition & 1 deletion cli/buildengine.ts
Expand Up @@ -411,7 +411,7 @@ function updateCodalBuildAsync() {
.then(
() => /v\d+/.test(cs.gittag) ? Promise.resolve() : codalGitAsync("pull"),
e =>
codalGitAsync("checkout", "master")
codalGitAsync("checkout", "master") // leave as master
.then(() => codalGitAsync("pull")))
.then(() => codalGitAsync("checkout", cs.gittag))
}
Expand Down
107 changes: 11 additions & 96 deletions cli/cli.ts
Expand Up @@ -251,49 +251,6 @@ function searchAsync(...query: string[]) {
})
}

function pkginfoAsync(repopath: string) {
let parsed = pxt.github.parseRepoId(repopath)
if (!parsed) {
console.log('Unknown repo');
return Promise.resolve();
}

const pkgInfo = (cfg: pxt.PackageConfig, tag?: string) => {
pxt.log(`name: ${cfg.name}`)
pxt.log(`description: ${cfg.description}`)
if (pxt.appTarget.appTheme)
pxt.log(`shareable url: ${pxt.appTarget.appTheme.embedUrl}#pub:gh/${parsed.fullName}${tag ? "#" + tag : ""}`)
}

return pxt.packagesConfigAsync()
.then(config => {
const status = pxt.github.repoStatus(parsed, config);
pxt.log(`github org: ${parsed.owner}`);
if (parsed.tag) pxt.log(`github tag: ${parsed.tag}`);
pxt.log(`package status: ${status == pxt.github.GitRepoStatus.Approved ? "approved" : status == pxt.github.GitRepoStatus.Banned ? "banned" : "neutral"}`)
if (parsed.tag)
return pxt.github.downloadPackageAsync(repopath, config)
.then(pkg => {
let cfg: pxt.PackageConfig = JSON.parse(pkg.files[pxt.CONFIG_NAME])
pkgInfo(cfg, parsed.tag)
pxt.debug(`size: ${JSON.stringify(pkg.files).length}`)
})

return pxt.github.pkgConfigAsync(parsed.fullName)
.then(cfg => {
pkgInfo(cfg)
return pxt.github.listRefsAsync(repopath)
.then(tags => {
pxt.log("tags: " + tags.join(", "))
return pxt.github.listRefsAsync(repopath, "heads")
})
.then(heads => {
pxt.log("branches: " + heads.join(", "))
})
})
})
}

export function pokeRepoAsync(parsed: commandParser.ParsedCommand): Promise<void> {
const repo = parsed.args[0];

Expand Down Expand Up @@ -450,18 +407,18 @@ function ciAsync() {
fs.writeFileSync(npmrc, cfg)
}

const latest = branch == "master" ? "latest" : "git-" + branch
// upload locs on build on master
const masterOrReleaseBranchRx = /^(master|v\d+\.\d+\.\d+)$/;
const apiStringBranchRx = pxt.appTarget.uploadApiStringsBranchRx
? new RegExp(pxt.appTarget.uploadApiStringsBranchRx)
: masterOrReleaseBranchRx;
const defaultBranch = pxt.github.isDefaultBranch(branch)
const latest = defaultBranch ? "latest" : "git-" + branch
// upload locs on build on default or releases
const apiStringBranchRx: (t: string) => boolean = ((t:string) => new RegExp(pxt.appTarget.uploadApiStringsBranchRx).test(t))
Copy link
Member

@jwunderl jwunderl May 11, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
const apiStringBranchRx: (t: string) => boolean = ((t:string) => new RegExp(pxt.appTarget.uploadApiStringsBranchRx).test(t))
const apiStringBranchRx: (t: string) => boolean = ((t: string) => new RegExp(pxt.appTarget.uploadApiStringsBranchRx).test(t))

to make the linter happy

? ((t: string) => new RegExp(pxt.appTarget.uploadApiStringsBranchRx).test(t))
: ((t: string) => pxt.github.isDefaultOrReleaseBranch(t));
const uploadDocs = !pullRequest
&& !!pxt.appTarget.uploadDocs
&& masterOrReleaseBranchRx.test(branch);
&& pxt.github.isDefaultOrReleaseBranch(branch);
const uploadApiStrings = !pullRequest
&& (!!pxt.appTarget.uploadDocs || pxt.appTarget.uploadApiStringsBranchRx)
&& apiStringBranchRx.test(branch);
&& apiStringBranchRx(branch);

pxt.log(`tag: ${tag}`);
pxt.log(`branch: ${branch}`);
Expand All @@ -482,7 +439,7 @@ function ciAsync() {
.then(isTaggedCommit => {
pxt.log(`is tagged commit: ${isTaggedCommit}`);
let p = npmPublishAsync();
if (branch === "master" && isTaggedCommit) {
if (defaultBranch && isTaggedCommit) {
if (uploadDocs)
p = p
.then(() => buildWebStringsAsync())
Expand Down Expand Up @@ -1664,14 +1621,14 @@ function ciBuildInfo(): CiBuildInfo {

pxt.log(`event name: ${eventName}`);

// PR: not on master or not a release number
// PR: not on default or not a release number
return {
ci: "githubactions",
branch,
tag,
commit,
commitUrl: "https://github.com/" + repoSlug + "/commits/" + commit,
pullRequest: !(branch == "master" || /^v\d+\.\d+\.\d+$/.test(tag))
pullRequest: !pxt.github.isDefaultOrReleaseBranch(branch)
}
}
}
Expand Down Expand Up @@ -5429,32 +5386,6 @@ function writeProjects(prjs: SavedProject[], outDir: string): string[] {
return dirs;
}

function cherryPickAsync(parsed: commandParser.ParsedCommand) {
const commit = parsed.args[0];
const name = parsed.flags["name"] || commit.slice(0, 7);
let majorVersion = parseInt(pxtVersion().split('.')[0]);
const gitAsync = (args: string[]) => nodeutil.spawnAsync({
cmd: "git",
args
})

let branches: string[] = [];
for (let i = majorVersion - 1; i >= 0; --i) branches.push("v" + i);
pxt.log(`cherry picking ${commit} into ${branches.join(', ')}`)

let p = gitAsync(["pull"]);
branches.forEach(branch => {
const pr = `cp/${branch}${name}`;
p = p.then(() => gitAsync(["checkout", branch]))
.then(() => gitAsync(["pull"]))
.then(() => gitAsync(["checkout", "-b", pr]))
.then(() => gitAsync(["cherry-pick", commit]))
.then(() => gitAsync(["push", "--set-upstream", "origin", pr]));
})

return p.catch(() => gitAsync(["checkout", "master"]));
}

function checkDocsAsync(parsed?: commandParser.ParsedCommand): Promise<void> {
return internalCheckDocsAsync(
true,
Expand Down Expand Up @@ -6156,7 +6087,6 @@ function testGithubPackagesAsync(parsed: commandParser.ParsedCommand): Promise<v
let tag = pxt.semver.sortLatestTags(tags)[0];
if (!tag) {
reportWarning({ repo: fullname, title: "create a release", body: "You need to create a release in this repository. Follow the instructions at https://makecode.com/extensions/versioning." });
tag = "master";
}
else {
reportLog(` release: ${tag}`)
Expand Down Expand Up @@ -6805,21 +6735,6 @@ ${pxt.crowdin.KEY_VARIABLE} - crowdin key
}
}, c => pyconv.convertAsync(c.args, !!c.flags["internal"]))

p.defineCommand({
name: "cherrypick",
aliases: ["cp"],
help: "recursively cherrypicks and push branches",
argString: "<commit>",
advanced: true,
flags: {
"name": {
description: "name of the branch",
type: "string",
argument: "name"
}
}
}, cherryPickAsync);

p.defineCommand({
name: "decompile",
help: "decompile typescript files",
Expand Down
4 changes: 2 additions & 2 deletions docs/github-explorer.html
Expand Up @@ -138,7 +138,7 @@
login
}
nameWithOwner
object(expression: "master:pxt.json") {
object(expression: "HEAD:pxt.json") {
... on Blob {
text
}
Expand Down Expand Up @@ -251,7 +251,7 @@

const url = targets[repo.target].url +
`?nocookiebanner=1&${readOnly ? 'controller=1&readonly=1&ws=mem&' : 'editorLayout=ide&nosandbox=1'}#pub:github:`
+ repo.nameWithOwner + "#master";
+ repo.nameWithOwner;
$("#makecodecolumn").attr("src", url);
});

Expand Down
4 changes: 2 additions & 2 deletions localtypings/pxtarget.d.ts
Expand Up @@ -77,7 +77,7 @@ declare namespace pxt {
compileService?: TargetCompileService;
ignoreDocsErrors?: boolean;
uploadApiStringsBranchRx?: string; // regular expression to match branches that should upload api strings
uploadDocs?: boolean; // enable uploading to crowdin on master or v* builds
uploadDocs?: boolean; // enable uploading to crowdin on default branch or v* builds
variants?: Map<AppTarget>; // patches on top of the current AppTarget for different chip variants
multiVariants?: string[];
alwaysMultiVariant?: boolean;
Expand Down Expand Up @@ -244,7 +244,7 @@ declare namespace pxt {
codalTarget?: string | {
name: string; // "codal-arduino-uno"
url: string; // "https://github.com/lancaster-university/codal-arduino-uno"
branch: string; // "master"
branch: string; // "main"
type: string; // "git"
branches?: pxt.Map<string>; // overrides repo url -> commit sha
};
Expand Down
3 changes: 2 additions & 1 deletion pxtlib/browserutils.ts
Expand Up @@ -755,7 +755,7 @@ namespace pxt.BrowserUtils {
class MemTranslationDb implements ITranslationDb {
translations: pxt.Map<ITranslationDbEntry> = {};
key(lang: string, filename: string, branch: string) {
return `${lang}|${filename}|${branch || "master"}`;
return `${lang}|${filename}|${branch || "default"}`;
}
get(lang: string, filename: string, branch: string): ITranslationDbEntry {
return this.translations[this.key(lang, filename, branch)];
Expand Down Expand Up @@ -1030,6 +1030,7 @@ namespace pxt.BrowserUtils {
}

function getTutorialInfoKey(filename: string, branch?: string) {
// TODO: 'main' support
return `${filename}|${branch || "master"}`;
}

Expand Down
2 changes: 1 addition & 1 deletion pxtlib/cpp.ts
Expand Up @@ -1016,7 +1016,7 @@ namespace pxt.cpp {
"libraries": U.values(codalLibraries).map(r => ({
"name": r.project,
"url": "https://github.com/" + r.fullName,
"branch": r.tag || "master",
"branch": r.tag || "master", // leave as master
"type": "git"
}))
}
Expand Down
2 changes: 1 addition & 1 deletion pxtlib/docsrender.ts
Expand Up @@ -535,7 +535,7 @@ namespace pxt.docs {
if (opts.repo)
markdown += `
\`\`\`package
${opts.repo.name.replace(/^pxt-/, '')}=github:${opts.repo.fullName}#${opts.repo.tag || "master"}
${opts.repo.name.replace(/^pxt-/, '')}=github:${opts.repo.fullName}${opts.repo.tag ? `#${opts.repo.tag}` : ""}
\`\`\`
`;

Expand Down