An easy way of installing your favourite applications in one single place
Easy Installer is your Go-To application for installing your favourite applications in one single place.
It is a command-line tool that allows you to install commonly used applications with a single command. It is a Spring Boot application that uses Spring Shell to provide a command-line interface to the user. The application is designed to be extensible, so you can easily add new installers to the list of supported applications.
Easy Installer was designed to extend or even replace the applications offered.
It is also Multi-platform, so you can use it on Windows, MacOS, and Linux.
[!WARNING] The application is still in its early stages, so some features may not work as expected.
There's a few entities easily extensible in Easy Installer:
Installers: You can add new installers to the list of supported applications. To do this, you need to create a new class that implements the InstallableApplication
interface.
❯ REPLACE-ME
|
| [BitwardenCliInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/BitwardenCliInstaller.kt) | ❯ REPLACE-ME
|
| [AlacrittyInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/AlacrittyInstaller.kt) | ❯ REPLACE-ME
|
| [ItermInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/ItermInstaller.kt) | ❯ REPLACE-ME
|
| [AtomInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/AtomInstaller.kt) | ❯ REPLACE-ME
|
| [ScreenInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/ScreenInstaller.kt) | ❯ REPLACE-ME
|
| [GithubCliInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/GithubCliInstaller.kt) | ❯ REPLACE-ME
|
| [AptInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/AptInstaller.kt) | ❯ REPLACE-ME
|
| [PyCharmInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/PyCharmInstaller.kt) | ❯ REPLACE-ME
|
| [GCloudInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/GCloudInstaller.kt) | ❯ REPLACE-ME
|
| [AwsCliInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/AwsCliInstaller.kt) | ❯ REPLACE-ME
|
| [MkDocsInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/MkDocsInstaller.kt) | ❯ REPLACE-ME
|
| [BorgBackupInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/BorgBackupInstaller.kt) | ❯ REPLACE-ME
|
| [DiscordInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/DiscordInstaller.kt) | ❯ REPLACE-ME
|
| [AgeInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/AgeInstaller.kt) | ❯ REPLACE-ME
|
| [EclipseInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/EclipseInstaller.kt) | ❯ REPLACE-ME
|
| [GoInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/GoInstaller.kt) | ❯ REPLACE-ME
|
| [PostgreSqlInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/PostgreSqlInstaller.kt) | ❯ REPLACE-ME
|
| [FishInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/FishInstaller.kt) | ❯ REPLACE-ME
|
| [SynchtingInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/SynchtingInstaller.kt) | ❯ REPLACE-ME
|
| [GitKrakenInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/GitKrakenInstaller.kt) | ❯ REPLACE-ME
|
| [MavenInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/MavenInstaller.kt) | ❯ REPLACE-ME
|
| [RedisInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/RedisInstaller.kt) | ❯ REPLACE-ME
|
| [HttpieInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/HttpieInstaller.kt) | ❯ REPLACE-ME
|
| [MongoDbInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/MongoDbInstaller.kt) | ❯ REPLACE-ME
|
| [SublimeInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/SublimeInstaller.kt) | ❯ REPLACE-ME
|
| [RipGrepInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/RipGrepInstaller.kt) | ❯ REPLACE-ME
|
| [RustInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/RustInstaller.kt) | ❯ REPLACE-ME
|
| [JqInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/JqInstaller.kt) | ❯ REPLACE-ME
|
| [NodeInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/NodeInstaller.kt) | ❯ REPLACE-ME
|
| [KubectlInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/KubectlInstaller.kt) | ❯ REPLACE-ME
|
| [ZoomInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/ZoomInstaller.kt) | ❯ REPLACE-ME
|
| [JenkinsInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/JenkinsInstaller.kt) | ❯ REPLACE-ME
|
| [DjangoInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/DjangoInstaller.kt) | ❯ REPLACE-ME
|
| [HugoInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/HugoInstaller.kt) | ❯ REPLACE-ME
|
| [DockerComposeInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/DockerComposeInstaller.kt) | ❯ REPLACE-ME
|
| [SonarQubeInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/SonarQubeInstaller.kt) | ❯ REPLACE-ME
|
| [AzureCliInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/AzureCliInstaller.kt) | ❯ REPLACE-ME
|
| [MySqlInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/MySqlInstaller.kt) | ❯ REPLACE-ME
|
| [NixInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/NixInstaller.kt) | ❯ REPLACE-ME
|
| [RubyInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/RubyInstaller.kt) | ❯ REPLACE-ME
|
| [VsCodeInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/VsCodeInstaller.kt) | ❯ REPLACE-ME
|
| [BrewInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/BrewInstaller.kt) | ❯ REPLACE-ME
|
| [GpgInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/GpgInstaller.kt) | ❯ REPLACE-ME
|
| [GradleInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/GradleInstaller.kt) | ❯ REPLACE-ME
|
| [DockerInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/DockerInstaller.kt) | ❯ REPLACE-ME
|
| [GitInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/GitInstaller.kt) | ❯ REPLACE-ME
|
| [AgInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/AgInstaller.kt) | ❯ REPLACE-ME
|
| [SdkManagerInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/SdkManagerInstaller.kt) | ❯ REPLACE-ME
|
| [ZshInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/ZshInstaller.kt) | ❯ REPLACE-ME
|
| [FzfInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/FzfInstaller.kt) | ❯ REPLACE-ME
|
| [TerraformInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/TerraformInstaller.kt) | ❯ REPLACE-ME
|
| [PlantumlInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/PlantumlInstaller.kt) | ❯ REPLACE-ME
|
| [PythonInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/PythonInstaller.kt) | ❯ REPLACE-ME
|
| [StarshipInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/StarshipInstaller.kt) | ❯ REPLACE-ME
|
| [TmuxInstaller.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/TmuxInstaller.kt) | ❯ REPLACE-ME
|
Strategies: You can add new strategies to the list of supported package managers. To do this, you need to create a new class that implements the DownloadStrategy
interface.
❯ REPLACE-ME
|
| [BaseStrategy.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/strategy/BaseStrategy.kt) | ❯ REPLACE-ME
|
| [DownloadStrategy.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/strategy/DownloadStrategy.kt) | ❯ REPLACE-ME
|
| [DefaultStrategy.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/strategy/DefaultStrategy.kt) | ❯ REPLACE-ME
|
| [DownloadStrategyContext.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/strategy/DownloadStrategyContext.kt) | ❯ REPLACE-ME
|
| [BrewStrategy.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/impl/installer/strategy/BrewStrategy.kt) | ❯ REPLACE-ME
|
Commands: You can add new commands to the list of supported commands. To do this, you can create a new Command in the InstallerCommand or add new features using SpringShell
❯ REPLACE-ME
|
Steps: Additionally, if you want to add a new category to the installation processes, you can add a new Step
❯ REPLACE-ME
|
| [PackageManagerStep.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/command/step/PackageManagerStep.kt) | ❯ REPLACE-ME
|
| [SecurityToolStep.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/command/step/SecurityToolStep.kt) | ❯ REPLACE-ME
|
| [CommandLineToolStep.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/command/step/CommandLineToolStep.kt) | ❯ REPLACE-ME
|
| [BaseStep.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/command/step/BaseStep.kt) | ❯ REPLACE-ME
|
| [BuildAndCiCdToolStep.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/command/step/BuildAndCiCdToolStep.kt) | ❯ REPLACE-ME
|
| [BackupSyncToolStep.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/command/step/BackupSyncToolStep.kt) | ❯ REPLACE-ME
|
| [VersionControlSystemStep.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/command/step/VersionControlSystemStep.kt) | ❯ REPLACE-ME
|
| [CommunicationToolStep.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/command/step/CommunicationToolStep.kt) | ❯ REPLACE-ME
|
| [InstallationStep.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/command/step/InstallationStep.kt) | ❯ REPLACE-ME
|
| [ContainerAndVirtualizationToolStep.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/command/step/ContainerAndVirtualizationToolStep.kt) | ❯ REPLACE-ME
|
| [ProgrammingLanguageToolStep.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/command/step/ProgrammingLanguageToolStep.kt) | ❯ REPLACE-ME
|
| [DocumentationToolStep.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/command/step/DocumentationToolStep.kt) | ❯ REPLACE-ME
|
| [ShellAndTerminalManagerStep.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/command/step/ShellAndTerminalManagerStep.kt) | ❯ REPLACE-ME
|
| [CloudCliToolStep.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/command/step/CloudCliToolStep.kt) | ❯ REPLACE-ME
|
Annotations: To simplify the implementation of a Step, you can tag your installers with annotations to their corresponding step, or you can create a new one.
❯ REPLACE-ME
|
| [DatabaseTool.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/annotation/DatabaseTool.kt) | ❯ REPLACE-ME
|
| [PackageManager.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/annotation/PackageManager.kt) | ❯ REPLACE-ME
|
| [ContainerAndVirtualizationTool.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/annotation/ContainerAndVirtualizationTool.kt) | ❯ REPLACE-ME
|
| [IdesAndTextEditor.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/annotation/IdesAndTextEditor.kt) | ❯ REPLACE-ME
|
| [SecurityTool.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/annotation/SecurityTool.kt) | ❯ REPLACE-ME
|
| [CloudCLITool.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/annotation/CloudCLITool.kt) | ❯ REPLACE-ME
|
| [CommunicationTool.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/annotation/CommunicationTool.kt) | ❯ REPLACE-ME
|
| [CommandLineTool.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/annotation/CommandLineTool.kt) | ❯ REPLACE-ME
|
| [ShellAndTerminalManager.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/annotation/ShellAndTerminalManager.kt) | ❯ REPLACE-ME
|
| [BuildAndCiCdTool.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/annotation/BuildAndCiCdTool.kt) | ❯ REPLACE-ME
|
| [VersionControlSystem.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/annotation/VersionControlSystem.kt) | ❯ REPLACE-ME
|
| [DocumentationTool.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/annotation/DocumentationTool.kt) | ❯ REPLACE-ME
|
| [BackupSyncTool.kt](https://github.com/tomassirio/easyinstaller/blob/main/src/main/kotlin/com/tomassirio/easyinstaller/service/annotation/BackupSyncTool.kt) | ❯ REPLACE-ME
|
[!IMPORTANT]
This application also implements a Default Installer in case you pick no package manager. You can find the URLs for the default installers in the application.properties file. This feature is purely experimental at the moment as it is complicated to implement for many OSs
└── easyinstaller/
├── mvnw
├── mvnw.cmd
├── pom.xml
└── src
├── main
│ ├── kotlin
│ │ └── com.tomassirio.easyinstaller
│ │ ├── command
│ │ │ ├── step
│ │ │ └── InstallerCommand.kt
│ │ ├── service
│ │ │ ├── annotation
│ │ │ ├── impl
│ │ │ │ ├── installer
│ │ └───└───└────└── strategy
├── test
└── resources
└── application.properties
Kotlin: version 1.9.24
Build the project from source:
Clone the easyinstaller repository:
❯ git clone https://github.com/tomassirio/easyinstaller
Navigate to the project directory:
❯ cd easyinstaller
Install the required dependencies:
❯ ./mvnw clean install
To run the project, execute the following command:
❯ java -jar target/EasyInstaller-0.1.0.jar
Execute the test suite using the following command:
❯ ./mvnw clean verify
[!TIP] You can use the help command to get all the available commands and their descriptions.
[!NOTE] So far the application implements a quick install and a manual one (The manual one was the one I invested the most time on)
Task 1
: Task 2
: Task 3
: Welcome Hacktoberfest new Joiners!.Contributions are welcome! Specially if you are here for Hacktoberfest 2024!
Here are several ways you can contribute:
easyinstaller
project.