Skip to content

Commit

Permalink
Set up configs and flows from Expensify repository template (#123)
Browse files Browse the repository at this point in the history
Co-authored-by: Tomek Zawadzki <[email protected]>
  • Loading branch information
robertKozik and tomekzaw authored Jan 18, 2024
1 parent 72bcc55 commit f4e64ac
Show file tree
Hide file tree
Showing 29 changed files with 1,311 additions and 467 deletions.
15 changes: 15 additions & 0 deletions .eslintignore
Original file line number Diff line number Diff line change
@@ -1,2 +1,17 @@
**/node_modules/*
parser/react-native-live-markdown-parser.js

# any js file inside android and ios folders
**/android/**/*.js
**/ios/**/*.js

# Output of the build process & scripts
lib/**/*
scripts/**/*

babel.config.js
metro.config.js
react-native.config.js
jest.config.js
webpack.config.js
.eslintrc.js
43 changes: 20 additions & 23 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,15 @@ module.exports = {
project: true,
tsconfigRootDir: __dirname,
},
env: {
jest: true,
},
extends: [
'expensify',
'plugin:@typescript-eslint/recommended',
'prettier',
'plugin:@typescript-eslint/stylistic',
'plugin:import/typescript',
'prettier',
'plugin:prettier/recommended',
],
plugins: [
Expand All @@ -24,34 +29,24 @@ module.exports = {
},
root: true,
rules: {
'prettier/prettier': [
'error',
'rulesdir/prefer-underscore-method': 'off',
'react/jsx-props-no-spreading': 'off',
'react/require-default-props': 'off',
'react/jsx-filename-extension': ['error', { extensions: ['.tsx', '.jsx'] }],
"import/extensions": [
"error",
"ignorePackages",
{
quoteProps: 'consistent',
singleQuote: true,
tabWidth: 2,
trailingComma: 'es5',
useTabs: false,
},
],
'curly': 'error',
"jsx": "never",
"ts": "never",
"tsx": "never"
}
],
'import/no-unresolved': 'error',
'import/consistent-type-specifier-style': ['error', 'prefer-top-level'],
'react/jsx-uses-vars': 'error',
'react/jsx-uses-react': 'error',
'no-use-before-define': 'off',
'@typescript-eslint/no-use-before-define': 'off', // TODO consider enabling this (currently it reports styles defined at the bottom of the file)
'@typescript-eslint/ban-ts-comment': [
'error',
{
'ts-ignore': 'allow-with-description',
'ts-expect-error': 'allow-with-description',
},
],
'@typescript-eslint/no-unused-vars': ['error', { argsIgnorePattern: '^_' }],
'@typescript-eslint/no-var-requires': 'warn',
'eqeqeq': 'error',
'no-unreachable': 'error',
'@typescript-eslint/consistent-type-imports': [
'error',
{ prefer: 'type-imports' },
Expand All @@ -62,5 +57,7 @@ module.exports = {
],
'tsdoc/syntax': 'error',
'@typescript-eslint/no-non-null-assertion': 'off',
'@typescript-eslint/array-type': ['error', {default: 'array-simple'}],
'@typescript-eslint/consistent-type-definitions': 'off',
},
};
Binary file added .github/OSBotify private key.gpg
Binary file not shown.
18 changes: 18 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
<!-- If necessary, assign reviewers that know the area or changes well. Feel free to tag any additional reviewers you see fit. -->

### Details
<!-- Explanation of the change or anything fishy that is going on -->

### Related Issues
<!-- Please replace GH_LINK with the link to the GitHub issue this Pull Request is related to -->
GH_LINK

### Manual Tests
<!---
Most changes should have accompanying tests. Describe the tests you added or if no tests were added an explanation about why one was not needed.
--->

### Linked PRs
<!---
Please include links to any update PRs in repos that must change their package.json version.
--->
39 changes: 39 additions & 0 deletions .github/workflows/cla.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: CLA Assistant

on:
issue_comment:
types: [created]
pull_request_target:
types: [opened, closed, synchronize]

jobs:
CLA:
runs-on: ubuntu-latest
# This job only runs for pull request comments or pull request target events (not issue comments)
if: github.event.issue.pull_request || github.event_name == 'pull_request_target'
steps:
- uses: actions-ecosystem/action-regex-match@9c35fe9ac1840239939c59e5db8839422eed8a73
id: sign
with:
text: ${{ github.event.comment.body }}
regex: '\s*I have read the CLA Document and I hereby sign the CLA\s*'
- uses: actions-ecosystem/action-regex-match@9c35fe9ac1840239939c59e5db8839422eed8a73
id: recheck
with:
text: ${{ github.event.comment.body }}
regex: '\s*recheck\s*'
- name: CLA Assistant
if: ${{ steps.recheck.outputs.match != '' || steps.sign.outputs.match != '' }} || github.event_name == 'pull_request_target'
# Version: 2.1.2-beta
uses: cla-assistant/github-action@948230deb0d44dd38957592f08c6bd934d96d0cf
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
PERSONAL_ACCESS_TOKEN : ${{ secrets.CLA_BOTIFY_TOKEN }}
with:
path-to-signatures: '${{ github.repository }}/cla.json'
path-to-document: 'https://github.com/${{ github.repository }}/blob/main/CLA.md'
branch: 'main'
remote-organization-name: 'Expensify'
remote-repository-name: 'CLA'
lock-pullrequest-aftermerge: false
allowlist: 'snyk-bot,OSBotify'
39 changes: 39 additions & 0 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Lint JavaScript

on:
pull_request:
types: [opened, synchronize]

jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2

- uses: actions/cache@v2
with:
path: ~/.yarn
key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- name: Setup Node
uses: actions/setup-node@v1
with:
node-version: "16.x"

- name: Setup web example
run: npm ci
working-directory: ./WebExample

- run: yarn install --immutable


- name: Verify there's no Prettier diff
run: |
yarn lint --fix --quiet
if ! git diff --name-only --exit-code; then
# shellcheck disable=SC2016
echo 'Error: Prettier diff detected! Please run `npm run prettier` and commit the changes.'
exit 1
fi
87 changes: 87 additions & 0 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
# name: Publish package to npmjs

# # This workflow runs when code is pushed to `main` (i.e: when a pull request is merged)
# on:
# push:
# branches: [main]

# # Ensure that only once instance of this workflow executes at a time.
# # If multiple PRs are merged in quick succession, there will only ever be one publish workflow running and one pending.
# concurrency: ${{ github.workflow }}

# jobs:
# version:
# runs-on: ubuntu-latest

# # OSBotify will update the version on `main`, so this check is important to prevent an infinite loop
# if: ${{ github.actor != 'OSBotify' }}

# steps:
# - uses: actions/checkout@v3
# with:
# ref: main

# - name: Decrypt & Import OSBotify GPG key
# run: |
# cd .github
# gpg --quiet --batch --yes --decrypt --passphrase="$LARGE_SECRET_PASSPHRASE" --output OSBotify-private-key.asc OSBotify-private-key.asc.gpg
# gpg --import OSBotify-private-key.asc
# env:
# LARGE_SECRET_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}

# - name: Set up git for OSBotify
# run: |
# git config --global user.signingkey 367811D53E34168C
# git config --global commit.gpgsign true
# git config --global user.name OSBotify
# git config --global user.email [email protected]

# - uses: actions/setup-node@v3
# with:
# node-version: '16.x'
# registry-url: 'https://registry.npmjs.org'

# - name: Generate branch name
# run: echo "BRANCH_NAME=OSBotify-bump-version-$(uuidgen)" >> $GITHUB_ENV

# - name: Create branch for version-bump pull request
# run: git checkout -b ${{ env.BRANCH_NAME }}

# - name: Install npm packages
# run: npm ci

# - name: Update npm version
# run: npm version patch

# - name: Set new version in GitHub ENV
# run: echo "NEW_VERSION=$(jq '.version' package.json)" >> $GITHUB_ENV

# - name: Push branch and publish tags
# run: git push --set-upstream origin ${{ env.BRANCH_NAME }} && git push --tags

# - name: Create pull request
# run: |
# gh pr create \
# --title "Update version to ${{ env.NEW_VERSION }}" \
# --body "Update version to ${{ env.NEW_VERSION }}"
# sleep 5
# env:
# GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }}

# - name: Auto-approve pull request
# run: gh pr review --approve ${{ env.BRANCH_NAME }}
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# - name: Auto-merge pull request
# run: gh pr merge --merge --delete-branch ${{ env.BRANCH_NAME }}
# env:
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

# - name: Build package
# run: npm run build

# - name: Publish to npm
# run: npm publish
# env:
# NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }}
12 changes: 6 additions & 6 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,16 +1,17 @@
# OSX
#
.DS_Store

# XDE
.expo/
# IDE
.idea

# VSCode
.vscode/
jsconfig.json

# NPM file created by GitHub actions
.npmrc

# Xcode
#
build/
*.pbxuser
!default.pbxuser
Expand All @@ -30,7 +31,6 @@ DerivedData
project.xcworkspace

# Android/IJ
#
.classpath
.cxx
.gradle
Expand All @@ -48,11 +48,11 @@ example/ios/Pods
example/vendor/

# node.js
#
node_modules/
npm-debug.log
yarn-debug.log
yarn-error.log
dist/

# BUCK
buck-out/
Expand Down
9 changes: 9 additions & 0 deletions .prettierrc.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
module.exports = {
tabWidth: 2,
singleQuote: true,
trailingComma: 'all',
bracketSpacing: false,
arrowParens: 'always',
printWidth: 190,
singleAttributePerLine: true,
};
2 changes: 1 addition & 1 deletion .watchmanconfig
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{}
{}
4 changes: 1 addition & 3 deletions WebExample/app.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,7 @@
"resizeMode": "contain",
"backgroundColor": "#ffffff"
},
"assetBundlePatterns": [
"**/*"
],
"assetBundlePatterns": ["**/*"],
"ios": {
"supportsTablet": true
},
Expand Down
8 changes: 2 additions & 6 deletions WebExample/babel.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,8 @@ module.exports = function (api) {
{
extensions: ['.tsx', '.ts', '.js', '.json'],
alias: {
'react': path.join(__dirname, 'node_modules', 'react'),
'react-native': path.join(
__dirname,
'node_modules',
'react-native-web'
),
react: path.join(__dirname, 'node_modules', 'react'),
'react-native': path.join(__dirname, 'node_modules', 'react-native-web'),
[pak.name]: path.join(__dirname, '..', pak.source),
},
},
Expand Down
2 changes: 1 addition & 1 deletion WebExample/webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ module.exports = async function (env, argv) {
dangerouslyAddModulePathsToTranspile: ['react-native-live-markdown'],
},
},
argv
argv,
);
return config;
};
16 changes: 14 additions & 2 deletions babel.config.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,15 @@
module.exports = {
presets: ['module:metro-react-native-babel-preset'],
module.exports = (api) => {
const isWeb = api.caller((caller) => caller && caller.target === 'web');
if (isWeb) {
return {
// Default browser list is a reasonable preset covering a wide list of non-dead browsers
// https://github.com/browserslist/browserslist#best-practices
targets: 'defaults',
presets: ['@babel/preset-env', '@babel/preset-react'],
};
}

return {
presets: ['module:metro-react-native-babel-preset'],
};
};
5 changes: 0 additions & 5 deletions example/index.js

This file was deleted.

5 changes: 5 additions & 0 deletions example/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
import {AppRegistry} from 'react-native';
import App from './src/App';
import {name as appName} from './app.json';

AppRegistry.registerComponent(appName, () => App);
Loading

0 comments on commit f4e64ac

Please sign in to comment.