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

Release v2.0.0 #48

Open
wants to merge 227 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
227 commits
Select commit Hold shift + click to select a range
0b09aec
feat!: add ability to resolve remote Maven deps
shreyashsaitwal Aug 20, 2021
bc90965
chore: re-define metadata file's JSON Schema in YAML
shreyashsaitwal Aug 20, 2021
09d9319
feat: add ability to merge Android manifests from AARs
shreyashsaitwal Aug 23, 2021
3678aba
chore!: remove version.number field & add Hive adapters
shreyashsaitwal Aug 24, 2021
768e441
refactor: create file service class to get paths of commonly used files
shreyashsaitwal Aug 27, 2021
f19fba3
feat!: add support for creating sibling extensions
shreyashsaitwal Sep 1, 2021
b1624d3
fix: ProcessStreamer won't 'stream' the process' output
shreyashsaitwal Sep 2, 2021
8f845cc
feat: add clean command
shreyashsaitwal Sep 5, 2021
f8f4c5d
fix: old removed deps would get packed w/ extension
shreyashsaitwal Sep 7, 2021
74650e0
chore: handle artifacts already available as dev-deps during resolution
shreyashsaitwal Sep 9, 2021
2430685
chore: update linter rules
shreyashsaitwal Sep 10, 2021
f932a76
feat: add deps command w/ sync & tree subcommands
shreyashsaitwal Sep 10, 2021
04883bc
refactor: address code duplication caused by Command.printUsage method
shreyashsaitwal Sep 11, 2021
28fad20
chore(process_streamer): don't exit abruptly if program can't be invo…
shreyashsaitwal Sep 11, 2021
68b52d8
feat(prompt): add ability to navigate mcq using w/q keys
shreyashsaitwal Oct 25, 2021
d1aff00
docs: add link to a video tutorial for installing Rush (#29)
zainulhassan815 Nov 25, 2021
893bf24
docs: reformat README.md
shreyashsaitwal Nov 25, 2021
ac35549
docs: add article by Juan Antonio in helpful links
shreyashsaitwal Dec 3, 2021
8f71e95
chore: merge changes introduced in 1.2.4 & 1.2.5
shreyashsaitwal Apr 26, 2022
560f0ed
chore: initial bits of the maven artifact resolver
shreyashsaitwal Apr 29, 2022
6e6e04d
chore(resolver): add ability to serialize pom.xml
shreyashsaitwal Apr 29, 2022
85f328e
refactor(resolver): add ability to deserialize from pom.xml & simplif…
shreyashsaitwal Apr 30, 2022
ce26dd2
chore(resolver): add ability to download artifacts' main & source files
shreyashsaitwal Apr 30, 2022
b12341c
chore(resolver): avoid fetching artifact files if they already exist …
shreyashsaitwal May 1, 2022
11df68c
test(resolver): we don't do that here
shreyashsaitwal May 1, 2022
d35f532
feat(resolver): interpolate version number from properties when required
shreyashsaitwal May 2, 2022
239bc3d
chore(resolver): export necessary classes & separate download methods…
shreyashsaitwal May 4, 2022
9c1c3d3
fix(resolver): source artifacts should always be jars
shreyashsaitwal May 4, 2022
0c335c1
chore(resolver): add scope field to resolved artifact
shreyashsaitwal May 11, 2022
c821c65
fix(resolver): remove surrounding square brackets from version in coo…
shreyashsaitwal May 11, 2022
eaac8d8
chore(resolver): override ==, toString() & hashCode for necessary cla…
shreyashsaitwal May 11, 2022
7d1dcd3
feat(resolver): add ability to interpolate dep version from parent's …
shreyashsaitwal May 11, 2022
2db8c66
feat: use packages/resolver for resolving remote dependencies
shreyashsaitwal May 11, 2022
60ef2c5
chore: upgrade dependencies
shreyashsaitwal May 11, 2022
99ab111
fix: move Hive.init() in the run function of required commands
shreyashsaitwal May 12, 2022
dbbf7d7
fix: sources jars shouldn't be added to classpath during build
shreyashsaitwal May 12, 2022
e016fbd
chore: only deserialize compile and runtime scoped deps
shreyashsaitwal May 13, 2022
de6da32
chore: init Hive in sync cmd & add isDirectDep field to RemoteDep
shreyashsaitwal May 13, 2022
82b071b
chore: remove unnecessary transitive dependencies during sync
shreyashsaitwal May 14, 2022
cb43b01
feat: add 'deps info' subcommand to print project's dep info
shreyashsaitwal May 14, 2022
0ae3808
refactor: this one's big af
shreyashsaitwal Aug 15, 2022
f176eca
chore: use the artifact resolver to fetch dev-deps and build tools
shreyashsaitwal Aug 20, 2022
ddf420e
chore: make home directory consistent across all OSes
shreyashsaitwal Aug 21, 2022
ca881dd
refactor: de-librarify resolver and re-implement it in a better way
shreyashsaitwal Aug 23, 2022
2e2dd48
fix: make kotlin, proguard, desugaring & manifest merging work again
shreyashsaitwal Aug 26, 2022
763db7a
chore: using Java 8 features w/o enabling desugaring should fail duri…
shreyashsaitwal Aug 26, 2022
a266c7b
chore: separate declaration of runtime and comptime deps in rush.yml
shreyashsaitwal Aug 27, 2022
039de0b
chore: implement basic version conflict resolution
shreyashsaitwal Aug 28, 2022
c3177ec
fix: info cmd printed every dep in the deps box as project's direct dep
shreyashsaitwal Aug 28, 2022
7c049d3
chore: consolidate dep resolution logic in the build cmd and remove s…
shreyashsaitwal Aug 29, 2022
d7224a1
chore: add basic support for resolving version conflicts in deps usin…
shreyashsaitwal Aug 29, 2022
bb8283f
chore: re-add the sync cmd
shreyashsaitwal Aug 29, 2022
e6806d5
chore: make sync cmd the center of everything dep-resolution
shreyashsaitwal Aug 29, 2022
6bd07f2
chore: add full support for resolving single set dep version ranges
shreyashsaitwal Aug 30, 2022
203f901
feat: add support for helper blocks
shreyashsaitwal Sep 4, 2022
2ef2596
chore!: deprecate RUSH_DATA_DIR env var in favor of RUSH_HOME var
shreyashsaitwal Sep 4, 2022
ca52cb6
chore: compile helper enums only of they've been modified
shreyashsaitwal Sep 4, 2022
5043ac0
chore: rewrite upgrade cmd
shreyashsaitwal Sep 4, 2022
cb69086
refactor: remove generator.dart
shreyashsaitwal Sep 5, 2022
cbdc806
chore: use the build_version package for generating version.dart
shreyashsaitwal Sep 5, 2022
6508197
chore: return exit codes from commands
shreyashsaitwal Sep 5, 2022
b3e70d2
fix: consider every file that falls under the helpers package as a he…
shreyashsaitwal Sep 6, 2022
0dcd173
chore: improvise the logging story
shreyashsaitwal Sep 9, 2022
ef0b047
chore: don't try to resolve dev-deps on every build & make all boxes …
shreyashsaitwal Sep 11, 2022
5250f6e
chore: update IntelliJ lib XMLs during sync & move templates to creat…
shreyashsaitwal Sep 12, 2022
4b576eb
chore: add debug flag
shreyashsaitwal Sep 12, 2022
66ace20
chore: rename info subcmd to tree & colorize its output
shreyashsaitwal Sep 12, 2022
697b8a6
feat: add migrate cmd to migrate v1.*.* projects to v2.*.*
shreyashsaitwal Sep 13, 2022
b7e5cfc
chore!: make it necessary to add explicit dependency on Kotlin stdlib…
shreyashsaitwal Sep 13, 2022
b5ae474
fix: incorrect IJ lib XML format
shreyashsaitwal Sep 14, 2022
260c677
fix: dep resolution would fail bcz of late var lib service not gettin…
shreyashsaitwal Sep 15, 2022
6271dbe
refactor: re-structure lib dir as a proper Dart package
shreyashsaitwal Sep 18, 2022
6e6b458
chore: add annotation processor as an in-tree module (#42)
shreyashsaitwal Sep 18, 2022
4bba70b
chore(proc): make the modules publishable to Maven Central
shreyashsaitwal Sep 19, 2022
210259f
fix(proc): generate sources and javadoc jars to meet central sync req…
shreyashsaitwal Sep 19, 2022
c2b30d4
chore(proc): upload uber jar for processor along with other artifacts
shreyashsaitwal Sep 21, 2022
7db47ff
chore(proc): make uber jar the default & include kt-stdlib in it
shreyashsaitwal Sep 21, 2022
acc298d
chore: replace local jars for Rush processor & annotations w/ remote …
shreyashsaitwal Sep 21, 2022
062adf1
feat: add support for declaring custom Maven repositories
shreyashsaitwal Sep 21, 2022
0800f80
chore: update config file template
shreyashsaitwal Sep 21, 2022
ac29c53
fix: local Maven repo location should be /c/Users/shrey/.m2/repositor…
shreyashsaitwal Sep 22, 2022
1c328f5
feat: add support for eclipse-jdt-ls based IDEs and code editors
shreyashsaitwal Sep 22, 2022
3d59bf5
chore(proc): bump processor version
shreyashsaitwal Sep 22, 2022
29dc0d2
chore: take comptime deps in account while migrating & add logs
shreyashsaitwal Sep 22, 2022
6f7b00a
fix: deps tree cmd should also print local project deps
shreyashsaitwal Sep 22, 2022
cf3f815
chore: declare desugar tool as a remote Maven artifact
shreyashsaitwal Sep 23, 2022
6404f65
chore: re-sync deps only if needed
shreyashsaitwal Sep 24, 2022
a21b91e
chore: re-fetch existing artifacts if their checksums don't match
shreyashsaitwal Sep 26, 2022
401ffa0
feat: make kapt & desugar tool jdk version independent
shreyashsaitwal Sep 27, 2022
01e38ea
feat: add support for `<queries>` manifest tag
shreyashsaitwal Sep 27, 2022
24047f4
feat: add support for `<profilable>` & `<uses-native-library>` manife…
shreyashsaitwal Sep 27, 2022
a7896f2
chore(proc): bump version
shreyashsaitwal Sep 27, 2022
161f06b
fix: deps field in config should be uncommented when Kotlin is enabled
shreyashsaitwal Sep 27, 2022
ce61a38
fix(proc): `@Option` element did not work as expected
shreyashsaitwal Sep 30, 2022
8603ae7
fix(proc): helpers didn't work on simple properties
shreyashsaitwal Oct 1, 2022
e334237
refactor(proc): small refactor & add doc comments where necessary
shreyashsaitwal Oct 1, 2022
451be46
chore(proc): bump version
shreyashsaitwal Oct 1, 2022
17f0043
fix: perform checksum validation only after the artifact is fetched r…
shreyashsaitwal Oct 1, 2022
5936f6d
chore: sync deps after migrating extensions
shreyashsaitwal Oct 1, 2022
cfe0e49
chore: rework the upgrade command
shreyashsaitwal Oct 1, 2022
2ec0c81
fix: handle alternate format of checksum files
shreyashsaitwal Oct 3, 2022
1e6fb28
feat: add ability to sync either only dev or project deps
shreyashsaitwal Oct 3, 2022
b0fbe00
feat: add ability to forcefully sync dependencies
shreyashsaitwal Oct 3, 2022
7f09cee
fix(proc): lateinit var `underlyingType` should be initialized before…
shreyashsaitwal Oct 3, 2022
1b9ad3d
chore: declare `runtime.jar` as a remote Maven dep
shreyashsaitwal Oct 3, 2022
1d90b67
chore: extract aars after syncing
shreyashsaitwal Oct 3, 2022
ed77e63
refactor: rename 'dev-dep' references to 'provided-deps' for AI2 prov…
shreyashsaitwal Oct 3, 2022
a92e7e4
refactor: rewrite annotations in Java to remove dependency on Kotlin
shreyashsaitwal Oct 3, 2022
d10b47b
fix: provided deps' scope should be runtime during resolution
shreyashsaitwal Oct 4, 2022
881031e
fix(proc): generate sources and javadoc jars for annotations
shreyashsaitwal Oct 4, 2022
7614ed6
fix: don't remove rogue deps from cache (for now) + a small refactor
shreyashsaitwal Oct 4, 2022
d78ed59
fix(proc): block parameters had incorrect helper definition
shreyashsaitwal Oct 4, 2022
9b9d0b2
refactor(proc): small refactor
shreyashsaitwal Oct 6, 2022
89c32f9
fix(proc): helper def gen would fail if both getter & setter of simpl…
shreyashsaitwal Oct 6, 2022
8229f0e
fix(proc): annotations must be compiled againts Java 8
shreyashsaitwal Oct 6, 2022
de329e3
fix(proc): logic error `==` should be `!=`
shreyashsaitwal Oct 6, 2022
84c9ffb
chore(proc): bump version
shreyashsaitwal Oct 6, 2022
a77b76a
feat: add `--[no-]color` flag & support or `NO_COLOR` env var
shreyashsaitwal Oct 7, 2022
829ac7a
fix: don't perform checksum validation on checksum files themselves
shreyashsaitwal Oct 7, 2022
625e808
improve: resolve transitive dependencies of artifacts concurrently
shreyashsaitwal Oct 7, 2022
c97e19a
doc: update README
shreyashsaitwal Oct 8, 2022
8e17427
refactor(proc): clean up Java to Yail type convertor logic
shreyashsaitwal Oct 8, 2022
ae26151
feat(proc): add support for method continuations
shreyashsaitwal Oct 8, 2022
9d6326a
fix(proc): primitive types won't get converted to Yail types in simpl…
shreyashsaitwal Oct 9, 2022
3a9500d
improve(proc): print more helpful diagnostics
shreyashsaitwal Oct 9, 2022
49bdf4d
chore(proc): bump version
shreyashsaitwal Oct 9, 2022
447c22f
chore: remove `000swap.exe` & use `move` from CMD to replace EXE afte…
shreyashsaitwal Oct 9, 2022
da7d656
chore: apparently, we can rename running exes on Windows
shreyashsaitwal Oct 10, 2022
1aedb38
feat(proc): allow extension components to live in any package
shreyashsaitwal Oct 10, 2022
c8f25dd
refactor(proc): move things around
shreyashsaitwal Oct 10, 2022
9b0917e
fix: remove class files of deleted sources after compilation
shreyashsaitwal Oct 10, 2022
bf5fd61
chore: remove `android` field from rush.yml
shreyashsaitwal Oct 12, 2022
31b5c22
feat: merge proguard rules from dep AARs
shreyashsaitwal Oct 12, 2022
26e616b
chore: update template files
shreyashsaitwal Oct 19, 2022
2d0b3ee
chore: fail early if descriptor JSON files are not present
shreyashsaitwal Oct 20, 2022
10e2ca9
chore: print total time taken by build at the end
shreyashsaitwal Oct 21, 2022
9f7642a
chore: use `-include` to include pg rules from AARs
shreyashsaitwal Oct 21, 2022
34058e3
chore(proc): rename `@ExtensionComponent` to `@Extension`
shreyashsaitwal Oct 21, 2022
82b5bcc
refactor(proc): fix duplicate logic
shreyashsaitwal Oct 21, 2022
0abf41e
chore(proc): bump version
shreyashsaitwal Oct 23, 2022
e5997cd
chore: remove rogue deps from cache during sync
shreyashsaitwal Oct 24, 2022
69f97b3
chore: update install scripts
shreyashsaitwal Oct 24, 2022
0fca319
ci: update CI workflow
shreyashsaitwal Oct 27, 2022
a7a1b96
refactor: fix formating
shreyashsaitwal Oct 27, 2022
d74c41d
refactor: make dart analyzer happy
shreyashsaitwal Oct 27, 2022
26ccd74
ci: use Zulu Java distribution
shreyashsaitwal Oct 27, 2022
d884175
ci: run build_runner before analyzing source
shreyashsaitwal Oct 27, 2022
cb46600
ci: add `--delete-conflicting-outputs` flag to build runner
shreyashsaitwal Oct 27, 2022
20f700e
ci: set working dir for Gradle step
shreyashsaitwal Oct 27, 2022
a929877
ci: chmod gradlew
shreyashsaitwal Oct 27, 2022
3c3032c
ci: fix yaml indentation
shreyashsaitwal Oct 27, 2022
510c033
ci: a step cannot have both `uses` & `run`
shreyashsaitwal Oct 27, 2022
48bfd7c
ci: cd out in for loop
shreyashsaitwal Oct 27, 2022
307a975
ci: create release only when branch is main and event is not a PR
shreyashsaitwal Oct 27, 2022
2a819c1
ci: fix job name refs
shreyashsaitwal Oct 27, 2022
8e0af28
ci: trying stuff out
shreyashsaitwal Oct 27, 2022
b58e0ff
ci: trying stuff out #2
shreyashsaitwal Oct 27, 2022
5ec9d22
chore: remove unnecessary scripts & update install.sh script
shreyashsaitwal Oct 27, 2022
85407e4
chore: ext project dir name should be exactly as provided by user
shreyashsaitwal Oct 30, 2022
d0f93fe
chore: remove jitpack and jcenter from default repos
shreyashsaitwal Nov 1, 2022
70d388e
chore(install): ask for user confirmation before downloading dev deps
shreyashsaitwal Nov 1, 2022
1fabb03
fix: provide every comptime dep as libjar to pg & refactor lib service
shreyashsaitwal Nov 4, 2022
7979a6e
refactor: use "extension deps" to refer to project deps to reduce con…
shreyashsaitwal Nov 4, 2022
2133878
fix: use system default encoding for decoding process output
shreyashsaitwal Nov 5, 2022
50181e2
chore: update pub deps
shreyashsaitwal Nov 5, 2022
832c0ab
fix: return all transitive deps when getting extension deps
shreyashsaitwal Nov 7, 2022
2761a19
fix: remove provided deps from artifacts after resolving
shreyashsaitwal Nov 8, 2022
c3e71a1
refactor: remove the extra "s" from `lib_service.dart` name
shreyashsaitwal Nov 8, 2022
b1a128d
chore: fix formatting
shreyashsaitwal Nov 8, 2022
49c11f1
chore(proc): upgrade deps
shreyashsaitwal Nov 9, 2022
2bee9fb
chore: bump proc, ai2-rt & cli versions
shreyashsaitwal Nov 9, 2022
6efeea4
fix: prevent android-2.1.2.jar from getting added to the classpath
shreyashsaitwal Nov 12, 2022
c0863a0
fix: disallow null values in rush.yml
shreyashsaitwal Nov 13, 2022
e82d315
fix: remove name field from `@Extension` annotation
shreyashsaitwal Nov 13, 2022
a2bb725
chore: update processor & ai2rt version
shreyashsaitwal Nov 13, 2022
a13c9cd
feat: add support for `${applicationId}` in Android manifest
shreyashsaitwal Nov 13, 2022
073c23b
chore(proc): update version
shreyashsaitwal Nov 13, 2022
59bf434
fix: every type under runtime pkg should be a valid YAIL type
shreyashsaitwal Nov 21, 2022
f3d742b
chore(proc): update version
shreyashsaitwal Nov 29, 2022
3bb7885
chore: fix README formatting
shreyashsaitwal Dec 21, 2022
a0701ee
fix: Java projects should now compile even if there are space chars i…
shreyashsaitwal Dec 23, 2022
0ba8cf7
fix: resolve java.exe symlink before consuming it
shreyashsaitwal Dec 23, 2022
337e199
fix: migrate cmd regex didn't match on all possible cases & other min…
shreyashsaitwal Jan 27, 2023
c68cea0
fix(proc): pass annotations & runtime jar paths as env vars
shreyashsaitwal Jan 27, 2023
e13e0d6
chore: bump default kotlin version to 1.8.0
shreyashsaitwal Jan 27, 2023
20949b2
chore: don't use emojis, not all terminals render them properly
shreyashsaitwal Jan 28, 2023
762f24b
fix: don't silently fail when dev-deps aren't present
shreyashsaitwal Jan 28, 2023
1bdde40
fix: always extract aars during sync when required
shreyashsaitwal Feb 4, 2023
c5501cf
chore: upgrade deps
shreyashsaitwal Feb 4, 2023
6140fa0
fix: decompress library class files before adding them into ART jar
shreyashsaitwal Mar 18, 2023
00a0039
fix: extract outdated aars on every sync
shreyashsaitwal Mar 19, 2023
cf665be
fix: don't add provided deps to classpath when deps are synced during…
shreyashsaitwal Mar 19, 2023
4a3ce82
ci: verify formatting only on PRs
shreyashsaitwal Mar 19, 2023
b01ba33
chore: update README.md
shreyashsaitwal Mar 28, 2023
976ef3a
chore: update README.md
shreyashsaitwal Mar 28, 2023
c5b04bc
chore: use LF line ending for every text file
shreyashsaitwal Jun 2, 2023
47c313d
Merge branch '2.0' of https://github.com/shreyashsaitwal/rush-cli int…
shreyashsaitwal Jun 2, 2023
c35107e
fix: minor issues in migrate command
shreyashsaitwal Jun 7, 2023
2004e36
fix: take JAVA_HOME env var into account when starting any Java process
shreyashsaitwal Jun 30, 2023
d7efe05
chore: update dependencies
shreyashsaitwal Aug 12, 2023
b07aecf
chore: get rid of blocking code where possible
shreyashsaitwal Aug 27, 2023
db1e1e7
fix: deprecated annotation won't work on helper options
shreyashsaitwal Sep 28, 2023
1ecffe4
fix: the `deprecated` key in components.json is a string apparently
shreyashsaitwal Oct 3, 2023
65ca9d2
ci: upgrade checkout and setup-dart action versions
shreyashsaitwal Oct 3, 2023
a989b55
misc: upgrade to Gradle v8.3
shreyashsaitwal Oct 3, 2023
50f5ce6
ci: use Java version 8
shreyashsaitwal Oct 3, 2023
88b1089
chore: trying to get this build on CI
shreyashsaitwal Oct 3, 2023
4874020
fix: add every manifest element to every component in multicomponent
shreyashsaitwal Oct 5, 2023
5750601
chore(processor): don't use shaded JSON library
shreyashsaitwal Oct 8, 2023
25f3a0f
fix(processor): signing task should depend on jar
shreyashsaitwal Oct 8, 2023
4ff9ac2
chore: added new ProGuard rules to keep helper & component classes (#55)
jewelshkjony Dec 5, 2023
20ddc90
chore: change tick and cross chars
shreyashsaitwal Dec 23, 2023
bc55ae6
fix!: I'd got the whole runtime/comptime thing wrong
shreyashsaitwal Dec 26, 2023
912e5ca
fix(processor): don't mix properties of different components
shreyashsaitwal Dec 26, 2023
fc35126
fix: pick highest one when multiple dep versions are found
shreyashsaitwal Dec 27, 2023
69ade2b
chore(processor): update processor deps
shreyashsaitwal Dec 27, 2023
8d5f7c7
Merge branch '2.0' of https://github.com/shreyashsaitwal/rush-cli int…
shreyashsaitwal Dec 27, 2023
9e307e8
feat: accept class doc comment as component description
shreyashsaitwal Dec 28, 2023
d3d34b6
chore: don't perform checks like missing description on deprecated bl…
shreyashsaitwal Dec 28, 2023
792d810
fix: "can't find referenced class" caused by desugaring
hammerhai Jan 11, 2024
b192773
chore: add `rushVersion` to `component_build_infos.json`
shreyashsaitwal Dec 28, 2023
0afa249
chore: re-introduce comptime deps as provided deps
shreyashsaitwal Jan 15, 2024
5de0298
chore!: don't sync deps automatically before build
shreyashsaitwal Jan 15, 2024
0384443
fix: allow syncing dev-deps in non-project dirs
shreyashsaitwal Jan 15, 2024
2d41af5
fix(processor): update config model
shreyashsaitwal Jan 26, 2024
dddd8ea
fix: prevent provided deps from being removed as rogue deps
shreyashsaitwal Jan 28, 2024
ce3e43e
chore(deps): bump actions/download-artifact in /.github/workflows (#66)
dependabot[bot] Sep 16, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1 @@
*.sh text eol=lf
* text eol=lf
167 changes: 78 additions & 89 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,111 +1,100 @@
name: CI
name: Rush CI

on:
workflow_dispatch:
push:
branches: [main, dev]
pull_request:
branches: [main, dev]
workflow_dispatch: # This let's us trigger the workflow manually from GitHub.

jobs:
build:
annotation-processor:
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v4
- uses: actions/setup-java@v3
with:
distribution: zulu
java-version: 8
- uses: gradle/gradle-build-action@v2
with:
gradle-version: 8.3
build-root-directory: processor
- name: Execute build
working-directory: processor
run: |
chmod +x ./gradlew
./gradlew build

cli:
strategy:
fail-fast: true
matrix:
include:
- os: windows-latest
os_short: win
- os: macos-latest
os_short: macos
- os: ubuntu-latest
os_short: linux

- os: ubuntu-22.04
target: x86_64-linux
- os: macos-12
target: x86_64-apple-darwin
- os: windows-2022
target: x86_64-windows
runs-on: ${{ matrix.os }}

steps:
- uses: actions/checkout@v2
- uses: dart-lang/setup-dart@v1

- name: Get deps
- uses: actions/checkout@v4
- uses: dart-lang/setup-dart@v1.5.1
- name: Install dependencies
run: dart pub get

- name: Build the executable
- name: Verify formatting
if: ${{ github.event_name == 'pull_request' }}
run: dart format -o none --set-exit-if-changed .
- name: Run build_runner
run: dart run build_runner build --delete-conflicting-outputs
- name: Analyze source
if: ${{ github.event_name == 'pull_request' }}
run: dart analyze
- name: Build executable
shell: bash
run: |
chmod +x ./scripts/build.sh
./scripts/build.sh -v 1.2.1

mkdir build
if [ "$OS" = "Windows_NT" ]; then
dart compile exe -o build/rush.exe bin/rush.dart
else
dart compile exe -o build/rush bin/rush.dart
fi
- name: Upload executable
if: ${{ github.ref != 'refs/heads/main' }}
uses: actions/upload-artifact@v2
uses: actions/upload-artifact@v3
with:
name: rush-${{ matrix.os_short }}
path: ./build/bin/*

- name: Get jq
if: ${{ github.ref == 'refs/heads/main' && github.event_name == 'push' }}
shell: bash
run: |
if [[ "$OSTYPE" == "linux-gnu"* ]]; then sudo apt-get install jq; fi
if [[ "$OSTYPE" == "darwin"* ]]; then brew install jq; fi
if [[ "$OSTYPE" == "cygwin" ]] || [[ "$OSTYPE" == "msys" ]]; then choco install jq; fi

- name: Upload exe to pack repo
if: ${{ github.ref == 'refs/heads/main' && github.event_name == 'push' }}
shell: bash
run: |
chmod +x ./scripts/upload_exe.sh
./scripts/upload_exe.sh ${{ secrets.GH_PAT }}

release:
needs: [build]
if: ${{ github.ref == 'refs/heads/main' && github.event_name == 'push' }}

strategy:
fail-fast: true
matrix:
include:
- os: windows-latest
os_short: win
- os: macos-latest
os_short: mac
- os: ubuntu-latest
os_short: linux

runs-on: ubuntu-latest

env:
BASE_DIR: build/${{ matrix.os_short }}

if-no-files-found: error
name: rush-${{ matrix.target }}
path: build/*

create-release:
if: ${{ github.ref == 'refs/heads/main' && github.event_name != 'pull_request' }}
needs: [cli, annotation-processor]
runs-on: ubuntu-22.04
steps:
- uses: actions/checkout@v2

- name: Download pack repo
- uses: actions/checkout@v4
- uses: actions/download-artifact@v4.1.7
- name: Download JAR dependencies
run: |
mkdir build
curl -#Lo build/pack.zip -u "shreyashsaitwal:${{ secrets.GH_PAT }}" https://github.com/shreyashsaitwal/pack/archive/refs/heads/main.zip
unzip -o build/pack.zip -d build
rm build/pack.zip

- name: Add files to base directory
env:
PACK_DIR: build/pack-main
mkdir libs && cd libs
wget https://github.com/mit-cml/appinventor-sources/raw/master/appinventor/lib/kawa/kawa-1.11-modified.jar
wget https://github.com/mit-cml/appinventor-sources/raw/master/appinventor/lib/physicaloid/physicaloid-library.jar
wget https://dl.google.com/android/repository/platform-33_r02.zip && unzip platform-33_r02.zip
cp android-13/android.jar android-33.jar
rm -r android-13 platform-33_r02.zip
- name: Create platform archives
run: |
mkdir -p $BASE_DIR/exe
cp -R $PACK_DIR/exe/${{ matrix.os_short }} $BASE_DIR/exe
cp -R $PACK_DIR/dev-deps $BASE_DIR
cp -R $PACK_DIR/tools $BASE_DIR

- name: Create ZIP
run: |
cd $BASE_DIR
zip -r rush-${{ matrix.os_short }}.zip *

- name: Release
mkdir archives
for VAR in x86_64-linux x86_64-windows x86_64-apple-darwin
do
# Move the executable to bin dir
mkdir rush-$VAR/bin && mv rush-$VAR/rush* rush-$VAR/bin
# Copy JARs downloaded in prev step
cp libs/ rush-$VAR -r
# Create ZIP
cd rush-$VAR && zip ../archives/rush-$VAR.zip . -r9
cd ..
done
- name: Create a new draft release
uses: softprops/action-gh-release@v1
with:
draft: true
tag_name: draft
files: ${{ env.BASE_DIR }}/rush-${{ matrix.os_short }}.zip
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
fail_on_unmatched_files: true
files: archives/*.zip
18 changes: 11 additions & 7 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,17 +1,21 @@
# Files and directories created by IntelliJ IDEA
/.idea
*.iml
/.vscode

# Files and directories created by pub
.dart_tool/
.packages
.idea
pubspec.lock

# Conventional directory for build outputs
build/
/build/

# Directory created by dartdoc
doc/api/
/doc/api/

misc/
temp/
/misc/
/temp/

*.iml
env.dart
*.g.dart
/scratch.dart
60 changes: 49 additions & 11 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,53 @@
![Banner](assets/banner.png)
# ⚡ Rush
**Rush** is a modern extension builder for MIT App Inventor 2.

![dart action](https://github.com/ShreyashSaitwal/rush-cli/actions/workflows/ci.yml/badge.svg) [![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
> **Note**: This readme is for an unreleased version of Rush. Head over to [main](https://github.com/shreyashsaitwal/rush-cli/tree/main) for current stable version.

Rush is a new, and probably, improved way of building App Inventor 2 extensions. It is a build tool, which aims to improve the developer experience by reducing the boilerplate code and making extension development feel more like Android development.
## Features
* Faster builds
* Maven like dependency management
* Kotlin language support
* Support for AndroidManifest.xml

Check out the [wiki section](https://github.com/ShreyashSaitwal/rush-cli/wiki) for a detailed overview and getting started with Rush.
## Installation
> **Note**: Before installing Rush, make sure that you have JDK 8 or above installed.

## Building from sources
1. Install [Dart SDK](https://dart.dev/get-dart).
2. Clone this repo: `git clone https://github.com/shreyashsaitwal/rush-cli`.
3. `cd` into the repo's base directory.
4. Run `dart pub get`.
5. Run the build script: `./scripts/build.sh -v VER_NAME`.
6. The generated executable can be found in `./build` directory.
### Windows
In PowerShell, run:
```ps1
iwr https://raw.githubusercontent.com/shreyashsaitwal/rush-cli/main/scripts/install/install.ps1 -useb | iex
```

### Linux and macOS
1. In the terminal, run:

```sh
curl https://raw.githubusercontent.com/shreyashsaitwal/rush-cli/main/scripts/install/install.sh -fsSL | sh
```

2. Add `$HOME/.rush/bin` to the `PATH` environment variable.

## Quick start
Now, that you've installed Rush, let's create a simple extension.

1. Open the terminal in the directory where you want to create your extension project.

2. Run `rush create <NAME_OF_THE_EXTENSION>`.
This will show you some prompts.
- `Package name`: This is the package name in which your extension class will be placed.
- `Language`: The language in which you wish to write your extension.
This is just for the sake of sample code generation, you can later manually change the language as per your desire or even use both languages together.
- `IDE`: Your favorite IDE or text editor.
This is required to generate the file required by these IDEs to support features like code completion and syntax highlighting.
You can of course use any other text editor as well, but it's very unlikely that it would work well with Rush projects even if it supports Java.

3. `cd` into the generated project directory and run `rush build`.

4. That's it, the generated extension file (AIX) can be found in the `out` directory.

## Todo
- [ ] Core concepts of extension dev
- [ ] Faq
- [ ] Contributing
- [ ] Limitations
- [ ] List more features
19 changes: 17 additions & 2 deletions analysis_options.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,23 @@ include: package:lints/recommended.yaml

analyzer:
exclude: ['**.g.dart']
strong-mode:
implicit-casts: false
language:
strict-raw-types: true
strict-inference: true

linter:
rules:
- always_declare_return_types
- avoid_empty_else
- avoid_print
- avoid_redundant_argument_values
- only_throw_errors
- prefer_final_fields
- prefer_final_in_for_each
- prefer_final_locals
- prefer_single_quotes
- prefer_typing_uninitialized_variables
- unawaited_futures
- unnecessary_raw_strings
- valid_regexps
- await_only_futures
Binary file modified assets/banner.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified assets/icon-ext.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading