• This repository has been archived on 13/Nov/2023
  • Stars
    star
    171
  • Rank 214,710 (Top 5 %)
  • Language
    Kotlin
  • License
    Apache License 2.0
  • Created over 4 years ago
  • Updated 6 months ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Never open sonatype's website again for releasing your libraries on maven central.

startship

demo

$ brew install saket/repo/startship
$
$ cd ~/path/to/your/library/project
$ startship release && say "released"

startship makes the process of releasing JVM libraries a bit easier by automating usage of Sonatype Nexus so that you don't have to constantly refresh your browser after every operation to check if has gone through yet.

startship will read your library's maven coordinates from gradle.properties, find your staged repository, request it to be closed, wait till it's closed, promote it to release, and finally wait till it's synced to maven central. It also tries to be helpful by making sure you don't release an incorrect artifact by comparing maven coordinates and versions.

Maven coordinates

Maven coordinates for your artifacts are read from your project's gradle.properties.

GROUP=com.example
POM_ARTIFACT_ID=nicolascage
VERSION_NAME=4.2.0

Alternatively, you can provide them using -c.

# Single artifact
$ startship release -c com.example:nicolascage:4.2.0

# Multiple artifacts
$ startship release -c com.example:nicolascage,dianekruger:4.2.0

Sonatype credentials

Sonatype account credentials are read from your machine's ~/gradle/gradle.properties.

mavenCentralUsername=username
mavenCentralPassword=password

You can also provide these using -u and -p options. The values passed can be either Gradle property keys or your actual username or password values.

$ startship release -u yourActualUsername -p YOUR_PASSWORD_GRADLE_PROPERTY

Contributing and running locally

Sonatype's endpoints are badly documented and can be really flaky at times, causing startship to fail. If you run into issues, please consider sending a PR. For your local development, startship can be modified to run in mock mode:

 // AppModule.kt
 val nexus = RealNexus(
-  api = nexusModule.nexusApi,
+  api = MockNexusApi(pom = ...),
   debugMode = debugMode,
-  config = NexusConfig.DEFAULT,
+  config = MOCK_NEXUS_CONFIG,
   scheduler = Schedulers.single()
 )

Next, run startship using:

./run release -c com.example:nicolascage:4.2.0

Releasing

  1. Draft a changelog.
  2. Run ./gradlew clean distZip and attach build/distributions/startship.zip to a new GitHub release.
  3. Update the homebrew formula with a link to the uploaded startship.zip archive. A sha256 checksum of the archive can be created by running sha256sum on the command line.

License

Copyright 2020 Saket Narayan.

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

More Repositories

1

InboxRecyclerView

Build expandable descendant navigation, inspired by Google Inbox
Kotlin
1,976
star
2

cascade

Nested popup menus with smooth height animations for Android
Kotlin
1,949
star
3

press

Cross-platform markdown editor written in Kotlin Multiplatform (work in progress)
Kotlin
1,857
star
4

Dank

Here lies the greatest Reddit app that was never released
Java
815
star
5

telephoto

Building blocks for designing media experiences in Compose UI
Kotlin
785
star
6

Better-Link-Movement-Method

Attempts to improve how clickable links are detected, highlighted and handled in TextView
Java
778
star
7

FluidKeyboardResize

Smoothly reacting to keyboard visibility changes in Android
Kotlin
643
star
8

swipe

Swipe gesture actions for Compose UI
Kotlin
564
star
9

flick

Flick dismiss all the things!
Kotlin
465
star
10

extended-spans

Squiggly underlines and rounded corners for text in Compose UI
Kotlin
361
star
11

unfurl

Generate link previews, inspired by Slack.
HTML
259
star
12

squiggly-slider

Squiggly slider, inspired by Android 13's media player notification.
Kotlin
165
star
13

ReuserView

woke af
Kotlin
127
star
14

file-size

Unit for representing and converting between file sizes, inspired by kotlin.time.Duration
Kotlin
74
star
15

Bunk-o-Meter

App for tracking college bunks.
Java
55
star
16

RxDiffUtil

Simplifying DiffUtil with RxJava
Java
16
star
17

BaseAndroidProject

A project with all the necessary dependencies and basic configuration I use everywhere.
Kotlin
13
star
18

PaparazziPlayground

https://github.com/cashapp/paparazzi
Kotlin
8
star
19

TestAssignment

Work in progress
Kotlin
8
star
20

Rx-Image-Loader

Interview assignment for uncommon.is
Java
8
star
21

press-website

Landing page for https://github.com/saket/press.
HTML
8
star
22

HelloAndroid

Kotlin
5
star
23

pdf-password-validator

A trimmed version of Java's PdfRenderer library that only validates a Pdf's password
Java
4
star
24

ProgressNotificationIssue

Java
4
star
25

Balloon

Java
3
star
26

BottomSheetPlease

Sample project for reproducing https://github.com/material-components/material-components-android/issues/1059
Kotlin
3
star
27

NestedScrollingBug

Sample project for https://issuetracker.google.com/issues/63971352
Java
2
star
28

homebrew-repo

Homebrew formulas
Ruby
1
star
29

LintBugSample

Kotlin
1
star