Skip to content

Commit

Permalink
sync from internal (facebook#6)
Browse files Browse the repository at this point in the history
  • Loading branch information
acoates-ms authored and ontzic committed Mar 7, 2019
1 parent c6cb0ad commit d5557f9
Show file tree
Hide file tree
Showing 11 changed files with 5,194 additions and 12 deletions.
164 changes: 164 additions & 0 deletions .ado/publish.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,164 @@
// Used to publish this fork of react-native
// Publish it as an attached tar asset to the GitHub release for general consumption, since we can't publish this to the npmjs npm feed

const fs = require("fs");
const path = require("path");
const execSync = require("child_process").execSync;

function exec(command) {
try {
console.log(`Running command: ${command}`);
return execSync(command, {
stdio: "inherit"
});
} catch (err) {
process.exitCode = 1;
console.log(`Failure running: ${command}`);
throw err;
}
}

function doPublish() {
const publishBranchName = process.env.publishBranchName;

const tempPublishBranch = `publish-${Date.now()}`;

const pkgJsonPath = path.resolve(__dirname, "../package.json");
let pkgJson = JSON.parse(fs.readFileSync(pkgJsonPath, "utf8"));

let releaseVersion = pkgJson.version;

const versionGroups = /(.*-microsoft\.)([0-9]*)/.exec(releaseVersion);
if (versionGroups) {
releaseVersion = versionGroups[1] + (parseInt(versionGroups[2]) + 1);
} else {
if (releaseVersion.indexOf("-") === -1) {
releaseVersion = releaseVersion + "-microsoft.0";
} else {
console.log("Invalid version to publish");
exit(1);
}
}

pkgJson.version = releaseVersion;
fs.writeFileSync(pkgJsonPath, JSON.stringify(pkgJson, null, 2));
console.log(`Updating package.json to version ${releaseVersion}`);

exec(`git checkout -b ${tempPublishBranch}`);

exec(`git add ${pkgJsonPath}`);
exec(`git commit -m "Applying package update to ${releaseVersion}`);
exec(`git tag v${releaseVersion}`);
exec(`git push origin HEAD:${tempPublishBranch} --follow-tags --verbose`);
exec(`git push origin tag v${releaseVersion}`);

// -------- Generating Android Artifacts with JavaDoc
exec("gradlew installArchives");

// undo uncommenting javadoc setting
exec("git checkout ReactAndroid/gradle.properties");

// Configure npm to publish to internal feed
const npmrcPath = path.resolve(__dirname, "../.npmrc");
const npmrcContents = `registry=https:${
process.env.publishnpmfeed
}/registry/\nalways-auth=true`;
console.log(`Creating ${npmrcPath} for publishing:`);
console.log(npmrcContents);
fs.writeFileSync(npmrcPath, npmrcContents);

exec(`npm publish`);
exec(`del ${npmrcPath}`);

// Push tar to GitHub releases
exec(`npm pack`);

const npmTarPath = path.resolve(
__dirname,
`../react-native-${releaseVersion}.tgz`
);
const assetUpdateUrl = `https://uploads.github.com/repos/Microsoft/react-native/releases/{id}/assets?name=react-native-${releaseVersion}.tgz`;
const authHeader =
"Basic " + new Buffer(":" + process.env.githubToken).toString("base64");
const userAgent = "Microsoft-React-Native-Release-Agent";

let uploadReleaseAssetUrl = "";
exec("npm install request@^2.69.0 --no-save");

const request = require("request");

const uploadTarBallToRelease = function() {
request.post(
{
url: uploadReleaseAssetUrl,
headers: {
"User-Agent": userAgent,
Authorization: authHeader,
"Content-Type": "application/octet-stream"
},
formData: {
file: fs.createReadStream(npmTarPath)
}
},
function(err, res, body) {
if (err) {
console.error(err);
process.exitCode = 1;
throw err;
}

var formattedResponse = JSON.parse(body);

if (formattedResponse.errors) {
process.exitCode = 1;
console.error(formattedResponse.errors);
throw formattedResponse.errors;
}

exec(`del ${npmTarPath}`);
exec(`git checkout ${publishBranchName}`);
exec(`git pull origin ${publishBranchName}`);
exec(`git merge ${tempPublishBranch} --no-edit`);
exec(
`git push origin HEAD:${publishBranchName} --follow-tags --verbose`
);
exec(`git branch -d ${tempPublishBranch}`);
exec(`git push origin --delete -d ${tempPublishBranch}`);
}
);
};

const createReleaseRequestBody = {
tag_name: `v${releaseVersion}`,
target_commitish: tempPublishBranch,
name: `v${releaseVersion}`,
body: `v${releaseVersion}`,
draft: false,
prerelease: true
};
console.log('createReleaseRequestBody: ' + JSON.stringify(createReleaseRequestBody, null, 2));

request.post(
{
url: "https://api.github.com/repos/Microsoft/react-native/releases",
headers: {
"User-Agent": userAgent,
Authorization: authHeader
},
json: true,
body: createReleaseRequestBody
},
function(err, res, body) {
if (err) {
console.log(err);
throw new Error("Error fetching release id.");
}

console.log("Created GitHub Release: " + JSON.stringify(body, null, 2));
uploadReleaseAssetUrl = assetUpdateUrl.replace(/{id}/, body.id);
uploadTarBallToRelease();
}
);
}

doPublish();
84 changes: 84 additions & 0 deletions .ado/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
# This file defines the Android PR build steps used during the CI loop
name: $(Date:yyyyMMdd).$(Rev:.r)

trigger: none # will disable CI builds entirely

pr:
- master

jobs:
- job: RNGithubPublish
displayName: React-Native GitHub Publish
pool:
name: OE Standard Pool
demands: ['Agent.OS -equals Windows_NT', 'ANDROID_NDK', 'OnPrem -equals False']
timeoutInMinutes: 90 # how long to run the job before automatically cancelling
cancelTimeoutInMinutes: 5 # how much time to give 'run always even if cancelled tasks' before killing them
steps:
- checkout: self # self represents the repo where the initial Pipelines YAML file was found
clean: true # whether to fetch clean each time
fetchDepth: 2 # the depth of commits to ask Git to fetch
lfs: false # whether to download Git-LFS files
submodules: recursive # set to 'true' for a single level of submodules or 'recursive' to get submodules of submodules
persistCredentials: true # set to 'true' to leave the OAuth token in the Git config after the initial fetch

- task: CmdLine@2
displayName: npm install
inputs:
script: npm install

- task: NuGetCommand@2
displayName: NuGet restore
inputs:
command: restore
restoreSolution: ReactAndroid/packages.config
feedsToUse: config
#vstsFeed: # Required when feedsToUse == Select
#includeNuGetOrg: true # Required when feedsToUse == Select
nugetConfigPath: ReactAndroid/NuGet.Config
#externalFeedCredentials: # Optional
#noCache: false
#disableParallelProcessing: false
restoreDirectory: packages/
verbosityRestore: Detailed # Options: quiet, normal, detailed
#packagesToPush: '$(Build.ArtifactStagingDirectory)/**/*.nupkg;!$(Build.ArtifactStagingDirectory)/**/*.symbols.nupkg' # Required when command == Push
#nuGetFeedType: 'internal' # Required when command == Push# Options: internal, external
#publishVstsFeed: # Required when command == Push && NuGetFeedType == Internal
#publishPackageMetadata: true # Optional
#allowPackageConflicts: # Optional
#publishFeedCredentials: # Required when command == Push && NuGetFeedType == External
#verbosityPush: 'Detailed' # Options: quiet, normal, detailed
#packagesToPack: '**/*.csproj' # Required when command == Pack
#configuration: '$(BuildConfiguration)' # Optional
#packDestination: '$(Build.ArtifactStagingDirectory)' # Optional
#versioningScheme: 'off' # Options: off, byPrereleaseNumber, byEnvVar, byBuildNumber
#includeReferencedProjects: false # Optional
#versionEnvVar: # Required when versioningScheme == ByEnvVar
#majorVersion: '1' # Required when versioningScheme == ByPrereleaseNumber
#minorVersion: '0' # Required when versioningScheme == ByPrereleaseNumber
#patchVersion: '0' # Required when versioningScheme == ByPrereleaseNumber
#packTimezone: 'utc' # Required when versioningScheme == ByPrereleaseNumber# Options: utc, local
#includeSymbols: false # Optional
#toolPackage: # Optional
#buildProperties: # Optional
#basePath: # Optional
#verbosityPack: 'Detailed' # Options: quiet, normal, detailed
#arguments: # Required when command == Custom

- task: CmdLine@1
displayName: 'npm auth'
inputs:
filename: npm
arguments: 'config set $(publishnpmfeed)/registry/:_authToken $(npmTokenOffice)'

- task: CmdLine@2
displayName: Do Publish
inputs:
script: node .ado/publish.js

- task: CmdLine@1
displayName: 'npm unauth'
inputs:
filename: npm
arguments: 'config set $(publishnpmfeed)/registry/:_authToken XXXXX'

16 changes: 15 additions & 1 deletion CHANGELOG.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,20 @@
{
"name": "@microsoft/react-native",
"name": "react-native",
"entries": [
{
"version": "0.0.2",
"tag": "react-native_v0.0.2",
"date": "Wed, 06 Mar 2019 05:43:46 GMT",
"comments": {
"patch": [
{
"comment": "Rename microsoft react-native",
"author": "Andrew Coates (REDMOND) <acoates@microsoft.com>",
"commit": "0c0c2e0fa8762dda21b96ec3031a90450a45607f"
}
]
}
},
{
"version": "0.3.9",
"tag": "@microsoft/react-native_v0.3.9",
Expand Down
11 changes: 9 additions & 2 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,13 @@
# Change Log - @microsoft/react-native
# Change Log - react-native

This log was last generated on Tue, 05 Mar 2019 20:54:55 GMT and should not be manually modified.
This log was last generated on Wed, 06 Mar 2019 05:43:46 GMT and should not be manually modified.

## 0.0.2
Wed, 06 Mar 2019 05:43:46 GMT

### Patches

- Rename microsoft react-native

## 0.3.9
Tue, 05 Mar 2019 20:54:55 GMT
Expand Down
12 changes: 12 additions & 0 deletions Libraries/Components/TextInput/TextInputState.js
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,12 @@ function focusTextInput(textFieldID: ?number) {
UIManager.AndroidTextInput.Commands.focusTextInput,
null,
);
} else if (Platform.OS === 'win32') {
UIManager.dispatchViewManagerCommand(
textFieldID,
UIManager.RCTView.Commands.focus,
null,
);
}
}
}
Expand All @@ -65,6 +71,12 @@ function blurTextInput(textFieldID: ?number) {
UIManager.AndroidTextInput.Commands.blurTextInput,
null,
);
} else if (Platform.OS === 'win32') {
UIManager.dispatchViewManagerCommand(
textFieldID,
UIManager.RCTView.Commands.blur,
null,
);
}
}
}
Expand Down
4 changes: 4 additions & 0 deletions Libraries/Components/Touchable/TouchableBounce.js
Original file line number Diff line number Diff line change
Expand Up @@ -164,6 +164,9 @@ const TouchableBounce = ((createReactClass({
accessibilityRole={this.props.accessibilityRole}
accessibilityStates={this.props.accessibilityStates}
onAccessibilityTap={this.props.onAccessibilityTap} // TODO(OSS Candidate ISS#2710739)
acceptsKeyboardFocus={(this.props.acceptsKeyboardFocus === undefined || this.props.acceptsKeyboardFocus) && !this.props.disabled} // TODO(macOS/win ISS#2323203)
enableFocusRing={(this.props.enableFocusRing === undefined || this.props.enableFocusRing) && !this.props.disabled} // TODO(macOS/win ISS#2323203)
tabIndex={this.props.tabIndex} // TODO(win ISS#2323203)
nativeID={this.props.nativeID}
testID={this.props.testID}
hitSlop={this.props.hitSlop}
Expand All @@ -175,6 +178,7 @@ const TouchableBounce = ((createReactClass({
onResponderMove={this.touchableHandleResponderMove}
onResponderRelease={this.touchableHandleResponderRelease}
onResponderTerminate={this.touchableHandleResponderTerminate}
tooltip={this.props.tooltip} // TODO(macOS/win ISS#2323203)
clickable={this.props.clickable !== false && this.props.onPress !== undefined && !this.props.disabled} // TODO(android ISS)
onClick={this.touchableHandlePress} // TODO(android ISS)
onMouseEnter={this.props.onMouseEnter} // [TODO(macOS ISS#2323203)
Expand Down
10 changes: 6 additions & 4 deletions Libraries/Components/Touchable/TouchableHighlight.js
Original file line number Diff line number Diff line change
Expand Up @@ -352,8 +352,9 @@ const TouchableHighlight = ((createReactClass({
accessibilityRole={this.props.accessibilityRole}
accessibilityStates={this.props.accessibilityStates}
onAccessibilityTap={this.props.onAccessibilityTap} // TODO(OSS Candidate ISS#2710739)
acceptsKeyboardFocus={(this.props.acceptsKeyboardFocus === undefined || this.props.acceptsKeyboardFocus) && !this.props.disabled} // TODO(macOS ISS#2323203)
enableFocusRing={(this.props.enableFocusRing === undefined || this.props.enableFocusRing) && !this.props.disabled} // TODO(macOS ISS#2323203)
acceptsKeyboardFocus={(this.props.acceptsKeyboardFocus === undefined || this.props.acceptsKeyboardFocus) && !this.props.disabled} // TODO(macOS/win ISS#2323203)
enableFocusRing={(this.props.enableFocusRing === undefined || this.props.enableFocusRing) && !this.props.disabled} // TODO(macOS/win ISS#2323203)
tabIndex={this.props.tabIndex} // TODO(win ISS#2323203)
style={StyleSheet.compose(
this.props.style,
this.state.extraUnderlayStyle,
Expand All @@ -371,14 +372,15 @@ const TouchableHighlight = ((createReactClass({
onResponderMove={this.touchableHandleResponderMove}
onResponderRelease={this.touchableHandleResponderRelease}
onResponderTerminate={this.touchableHandleResponderTerminate}
tooltip={this.props.tooltip} // TODO(macOS/win ISS#2323203)
clickable={this.props.clickable !== false && this.props.onPress !== undefined} // TODO(android ISS)
onClick={this.touchableHandlePress} // TODO(android ISS)
onMouseEnter={this.props.onMouseEnter} // [TODO(macOS ISS#2323203)
onMouseEnter={this.props.onMouseEnter} // [TODO(macOS/win ISS#2323203)
onMouseLeave={this.props.onMouseLeave}
onDragEnter={this.props.onDragEnter}
onDragLeave={this.props.onDragLeave}
onDrop={this.props.onDrop}
draggedTypes={this.props.draggedTypes} // ]TODO(macOS ISS#2323203)
draggedTypes={this.props.draggedTypes} // ]TODO(macOS/win ISS#2323203)
nativeID={this.props.nativeID}
testID={this.props.testID}>
{React.cloneElement(child, {
Expand Down
2 changes: 2 additions & 0 deletions Libraries/Components/Touchable/TouchableOpacity.js
Original file line number Diff line number Diff line change
Expand Up @@ -262,6 +262,7 @@ const TouchableOpacity = ((createReactClass({
onAccessibilityTap={this.props.onAccessibilityTap} // TODO(OSS Candidate ISS#2710739)
acceptsKeyboardFocus={(this.props.acceptsKeyboardFocus === undefined || this.props.acceptsKeyboardFocus) && !this.props.disabled} // TODO(macOS ISS#2323203)
enableFocusRing={(this.props.enableFocusRing === undefined || this.props.enableFocusRing) && !this.props.disabled} // TODO(macOS ISS#2323203)
tabIndex={this.props.tabIndex} // TODO(win ISS#2323203)
style={[this.props.style, {opacity: this.state.anim}]}
nativeID={this.props.nativeID}
testID={this.props.testID}
Expand All @@ -278,6 +279,7 @@ const TouchableOpacity = ((createReactClass({
onResponderMove={this.touchableHandleResponderMove}
onResponderRelease={this.touchableHandleResponderRelease}
onResponderTerminate={this.touchableHandleResponderTerminate}
tooltip={this.props.tooltip} // TODO(macOS/win ISS#2323203)
clickable={this.props.clickable !== false && this.props.onPress !== undefined} // TODO(android ISS)
onClick={this.touchableHandlePress} // TODO(android ISS)
onMouseEnter={this.props.onMouseEnter} // [TODO(macOS ISS#2323203)
Expand Down
Loading

0 comments on commit d5557f9

Please sign in to comment.