All Projects → saket → Startship

saket / Startship

Licence: apache-2.0
Never open sonatype's website again for releasing your libraries on maven central.

Programming Languages

kotlin
9241 projects

Labels

Projects that are alternatives of or similar to Startship

Jsonwatch
Track changes in JSON data from the command line
Stars: ✭ 130 (-3.7%)
Mutual labels:  cli
Remarker
▶️ Remark cli
Stars: ✭ 132 (-2.22%)
Mutual labels:  cli
Sonic Pi Tool
🎻 Controlling Sonic Pi from the command line
Stars: ✭ 133 (-1.48%)
Mutual labels:  cli
The Way
A command line code snippets manager
Stars: ✭ 132 (-2.22%)
Mutual labels:  cli
Oq
A performant, and portable jq wrapper to facilitate the consumption and output of formats other than JSON; using jq filters to transform the data.
Stars: ✭ 132 (-2.22%)
Mutual labels:  cli
Kosko
Organize Kubernetes manifests in JavaScript.
Stars: ✭ 133 (-1.48%)
Mutual labels:  cli
Natrium
A pre-build (Swift) script to alter your Xcode project at pre-build-time per environment, build configuration and target.
Stars: ✭ 131 (-2.96%)
Mutual labels:  cli
Programmer Calculator
Terminal calculator made for programmers working with multiple number representations, sizes, and overall close to the bits
Stars: ✭ 135 (+0%)
Mutual labels:  cli
Gitignore It
📃 A CLI to generate .gitignore files
Stars: ✭ 132 (-2.22%)
Mutual labels:  cli
Om
General command line utility for working with Pivotal Operations Manager
Stars: ✭ 133 (-1.48%)
Mutual labels:  cli
Yt Audio
A simple, configurable youtube-dl wrapper to download and manage youtube audio
Stars: ✭ 132 (-2.22%)
Mutual labels:  cli
Grape
🍇 Syntax-aware grep-like for Clojure
Stars: ✭ 132 (-2.22%)
Mutual labels:  cli
Ink Link
Link component for Ink
Stars: ✭ 133 (-1.48%)
Mutual labels:  cli
Github Default Branch
Rename your default branch on GitHub
Stars: ✭ 132 (-2.22%)
Mutual labels:  cli
Csv2ofx
A Python library and command line tool for converting csv to ofx and qif files
Stars: ✭ 133 (-1.48%)
Mutual labels:  cli
Wmenu
An easy to use menu structure for cli applications that prompts users to make choices.
Stars: ✭ 130 (-3.7%)
Mutual labels:  cli
Asm Cli Rust
interative assembly shell written in rust
Stars: ✭ 133 (-1.48%)
Mutual labels:  cli
Grofer
A system and resource monitoring tool written in Golang!
Stars: ✭ 135 (+0%)
Mutual labels:  cli
Spotify Cli Mac
🎶 A nodejs app to control Spotify without leaving your terminal. 🎶
Stars: ✭ 134 (-0.74%)
Mutual labels:  cli
Expo Cli
Tools for creating, running, and deploying universal Expo and React Native apps
Stars: ✭ 1,993 (+1376.3%)
Mutual labels:  cli

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.

SONATYPE_NEXUS_USERNAME=username
SONATYPE_NEXUS_PASSWORD=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.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].