Я делаю скрипт javaFilesConcatenator, используя cat
и sed
, который объединяет несколько .java
файлов:
#!/bin/bash
########################################################################################################################
# This file create a "MainFileName.java.output" file concatenating all java file in this directory.
# Run this script as '$ ./javaFilesConcatenator MainFileName' when "MainFileName.java" contains the main method.
########################################################################################################################
cat *.java | sed -e 's/public class/class/g;s/public interface/interface/g' >$1.java.output
sed -i "s/class $1/public class $1/g" $1.java.output
Для запуска этого скрипта я беру имя главного класса в качестве входного аргумента от пользователя, потому что главный класс должен быть public
, а другие нет. Я заменяю все public class ClassName
на class ClassName
, кроме главного класса.
Теперь я хочу изменить свой скрипт так, чтобы он был более дружественным к пользователю, чтобы он определял главный класс без указания имени главного класса. Я думаю, это будет возможно, потому что главный класс отличается от других. Он содержит метод main
.
И еще одно требование - поместить все import
(например, import java.util.Scanner;
) в начало документа, вырезая из разных позиций (каждый файл имеет несколько import
в начале, после конкатенации они не все в начале) выходного файла.
Еще одно необязательное требование - удаление всех package com.alhelal.texpad;
подобных строк, но не комментариев со словом package
.
Как я могу выполнить свои требования?