Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Import a script in a folder containing multiple scripts #47

Open
jmini opened this issue Jan 10, 2023 · 2 comments
Open

Import a script in a folder containing multiple scripts #47

jmini opened this issue Jan 10, 2023 · 2 comments

Comments

@jmini
Copy link

jmini commented Jan 10, 2023

In a folder ~/tmp/tmp1 create 2 files:

  • cli.java
  • log.java
Sources

cli.java:

///usr/bin/env jbang "$0" "$@" ; exit $?
//DEPS info.picocli:picocli:4.6.3


import picocli.CommandLine;
import picocli.CommandLine.Command;
import picocli.CommandLine.Parameters;

import java.util.concurrent.Callable;

@Command(name = "cli", mixinStandardHelpOptions = true, version = "cli 0.1",
        description = "cli made with jbang")
class cli implements Callable<Integer> {

    @Parameters(index = "0", description = "The greeting to print", defaultValue = "World!")
    private String greeting;

    public static void main(String... args) {
        int exitCode = new CommandLine(new cli()).execute(args);
        System.exit(exitCode);
    }

    @Override
    public Integer call() throws Exception { // your business logic goes here...
        System.out.println("Hello " + greeting);
        return 0;
    }
}

log.java:

///usr/bin/env jbang "$0" "$@" ; exit $?

//DEPS ch.qos.reload4j:reload4j:1.2.19

import static java.lang.System.out;

import org.apache.log4j.Logger;
import org.apache.log4j.BasicConfigurator;

import java.util.Arrays;

class log {

	static final Logger logger = Logger.getLogger(log.class);

	public static void main(String[] args) {
		BasicConfigurator.configure(); 
		logger.info("Welcome to jbang");

		Arrays.asList(args).forEach(arg -> logger.warn("arg: " + arg));
		logger.info("Hello from Java!");
	}
}

Import the cli.java script as Jbang project into Eclipse.

  • Both scripts appears in the cli.java project.
  • The dependencies are only resolved for the cli.java file

cli.java JBang project in Eclipse IDE

@jmini
Copy link
Author

jmini commented Jan 10, 2023

For me this is related to how the resource is linked into the project.

In the .project file:

	<linkedResources>
		<link>
			<name>src</name>
			<type>2</type>
			<location>/home/jbr/tmp/tmp1</location>
		</link>
	</linkedResources>

The folder containing the file is linked.

For me it would be more correct to link only a specific file:

	<linkedResources>
		<link>
			<name>src/cli.java</name>
			<type>1</type>
			<location>/home/jbr/tmp/tmp1/cli.java</location>
		</link>
	</linkedResources>

Often I have a jbang script in a non-empty folder (like at the root of a git repo where there is plenty of other projects).

For me the idea to import a Jbang script a a dedicated Eclipse project is to work only on that script.

@fbricon
Copy link
Collaborator

fbricon commented Jan 10, 2023

It used to work like that (1 project / script) but I must have somehow broken it in Eclipse when implementing 1 project / folder

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants