An easy way of installing your favourite applications in one single place
- Overview
- Features
- Extensibility
- Repository Structure
- Getting Started
- Project Roadmap
- Contributing
- License
- Acknowledgments
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.src.main.kotlin.com.tomassirio.easyinstaller.service.impl.installer
-
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.src.main.kotlin.com.tomassirio.easyinstaller.service.impl.installer.strategy
File Summary AptStrategy.kt ❯ REPLACE-ME
BaseStrategy.kt ❯ REPLACE-ME
DownloadStrategy.kt ❯ REPLACE-ME
DefaultStrategy.kt ❯ REPLACE-ME
DownloadStrategyContext.kt ❯ REPLACE-ME
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
src.main.kotlin.com.tomassirio.easyinstaller.command
File Summary InstallerCommand.kt ❯ REPLACE-ME
-
Steps: Additionally, if you want to add a new category to the installation processes, you can add a new Step
src.main.kotlin.com.tomassirio.easyinstaller.command.step
File Summary DatabaseToolStep.kt ❯ REPLACE-ME
PackageManagerStep.kt ❯ REPLACE-ME
SecurityToolStep.kt ❯ REPLACE-ME
CommandLineToolStep.kt ❯ REPLACE-ME
BaseStep.kt ❯ REPLACE-ME
BuildAndCiCdToolStep.kt ❯ REPLACE-ME
BackupSyncToolStep.kt ❯ REPLACE-ME
VersionControlSystemStep.kt ❯ REPLACE-ME
CommunicationToolStep.kt ❯ REPLACE-ME
InstallationStep.kt ❯ REPLACE-ME
ContainerAndVirtualizationToolStep.kt ❯ REPLACE-ME
ProgrammingLanguageToolStep.kt ❯ REPLACE-ME
DocumentationToolStep.kt ❯ REPLACE-ME
ShellAndTerminalManagerStep.kt ❯ REPLACE-ME
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.
src.main.kotlin.com.tomassirio.easyinstaller.service.annotation
File Summary ProgrammingLanguageTool.kt ❯ REPLACE-ME
DatabaseTool.kt ❯ REPLACE-ME
PackageManager.kt ❯ REPLACE-ME
ContainerAndVirtualizationTool.kt ❯ REPLACE-ME
IdesAndTextEditor.kt ❯ REPLACE-ME
SecurityTool.kt ❯ REPLACE-ME
CloudCLITool.kt ❯ REPLACE-ME
CommunicationTool.kt ❯ REPLACE-ME
CommandLineTool.kt ❯ REPLACE-ME
ShellAndTerminalManager.kt ❯ REPLACE-ME
BuildAndCiCdTool.kt ❯ REPLACE-ME
VersionControlSystem.kt ❯ REPLACE-ME
DocumentationTool.kt ❯ REPLACE-ME
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
:Implement installers and test them -
Task 2
:Add Documentation. -
Task 3
: Welcome Hacktoberfest new Joiners!.
Contributions are welcome! Specially if you are here for Hacktoberfest 2024!
Here are several ways you can contribute:
- Report Issues: Submit bugs found or log feature requests for the
easyinstaller
project. - Submit Pull Requests: Review open PRs, and submit your own PRs.
- Join the Discussions: Share your insights, provide feedback, or ask questions.
Contributing Guidelines
- Fork the Repository: Start by forking the project repository to your github account.
- Clone Locally: Clone the forked repository to your local machine using a git client.
git clone https://github.com/tomassirio/easyinstaller
- Create a New Branch: Always work on a new branch, giving it a descriptive name.
git checkout -b new-feature-x
- Make Your Changes: Develop and test your changes locally.
- Commit Your Changes: Commit with a clear message describing your updates.
git commit -m 'Implemented new feature x.'
- Push to github: Push the changes to your forked repository.
git push origin new-feature-x
- Submit a Pull Request: Create a PR against the original project repository. Clearly describe the changes and their motivations.
- Review: Once your PR is reviewed and approved, it will be merged into the main branch. Congratulations on your contribution!