Offline Wiki for beginners/advanced users

Is there already an offline wiki beginners/advanced. Something that we can access in a browser or a pdf? like a single html file containing all links from this page https://jmonkeyengine.github.io/wiki/jme3.html

JME Wiki is a github project. https://github.com/jMonkeyEngine/wiki
You can clone or download it and build html 5 from asciidoc locally, see
https://github.com/jMonkeyEngine/wiki#build

2 Likes

I find this quite interesting, but I have never worked with gradle, so could you explain me, how to convert the files from asciidoc to HTML, please?

The SDK has the wiki as its help.

Ah nice! I just had a look. Is it possible to export all the files to PDF (in one step)? It is not really neccessary, I am just wondering. :grinning:

Yes,
I have not tried it locally my self but it is pretty straight forward

1- Install gradle
2- Go to https://github.com/jMonkeyEngine/wiki and click on clone or download button --> Download zip. It will download wiki-master.zip
3-Unzip it , inside it open console (windows) /terminal (linux)
and run ./gradlew asciidoctor it should generate it under build/asciidoc/html5/index.html directory.

1 Like

Okay, when I build this, I get the following error.

asciidoctor: WARNING: spidermonkey.adoc: line 51: section title out of sequence: expected level 2, got level 3
(Errno::ENOENT) C:/Users/Domenic/Desktop/wiki-master/wiki-master/build/asciidoc/html5/????????????/jme3_ru/faq_ru.html
:asciidoctor FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':asciidoctor'.
> Error running Asciidoctor

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED

Total time: 1 mins 33.481 secs

The stracktrace is as follows:

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':asciidoctor'.
		at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:69)
		at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:46)
		at org.gradle.api.internal.tasks.execution.PostExecutionAnalysisTaskExecuter.execute(PostExecutionAnalysisTaskExecuter.java:35)
		at org.gradle.api.internal.tasks.execution.SkipUpToDateTaskExecuter.execute(SkipUpToDateTaskExecuter.java:68)
		at org.gradle.api.internal.tasks.execution.ValidatingTaskExecuter.execute(ValidatingTaskExecuter.java:58)
		at org.gradle.api.internal.tasks.execution.SkipEmptySourceFilesTaskExecuter.execute(SkipEmptySourceFilesTaskExecuter.java:52)
		at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:52)
		at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:53)
		at org.gradle.api.internal.tasks.execution.ExecuteAtMostOnceTaskExecuter.execute(ExecuteAtMostOnceTaskExecuter.java:43)
		at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:203)
		at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter$EventFiringTaskWorker.execute(DefaultTaskGraphExecuter.java:185)
		at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.processTask(AbstractTaskPlanExecutor.java:66)
		at org.gradle.execution.taskgraph.AbstractTaskPlanExecutor$TaskExecutorWorker.run(AbstractTaskPlanExecutor.java:50)
		at org.gradle.execution.taskgraph.DefaultTaskPlanExecutor.process(DefaultTaskPlanExecutor.java:25)
		at org.gradle.execution.taskgraph.DefaultTaskGraphExecuter.execute(DefaultTaskGraphExecuter.java:110)
		at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:37)
		at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
		at org.gradle.execution.DefaultBuildExecuter.access$000(DefaultBuildExecuter.java:23)
		at org.gradle.execution.DefaultBuildExecuter$1.proceed(DefaultBuildExecuter.java:43)
		at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:32)
		at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:37)
		at org.gradle.execution.DefaultBuildExecuter.execute(DefaultBuildExecuter.java:30)
		at org.gradle.initialization.DefaultGradleLauncher$4.run(DefaultGradleLauncher.java:154)
		at org.gradle.internal.Factories$1.create(Factories.java:22)
		at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
		at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:52)
		at org.gradle.initialization.DefaultGradleLauncher.doBuildStages(DefaultGradleLauncher.java:151)
		at org.gradle.initialization.DefaultGradleLauncher.access$200(DefaultGradleLauncher.java:32)
		at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:99)
		at org.gradle.initialization.DefaultGradleLauncher$1.create(DefaultGradleLauncher.java:93)
		at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:90)
		at org.gradle.internal.progress.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:62)
		at org.gradle.initialization.DefaultGradleLauncher.doBuild(DefaultGradleLauncher.java:93)
		at org.gradle.initialization.DefaultGradleLauncher.run(DefaultGradleLauncher.java:82)
		at org.gradle.launcher.exec.InProcessBuildActionExecuter$DefaultBuildController.run(InProcessBuildActionExecuter.java:94)
		at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:28)
		at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
		at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:43)
		at org.gradle.launcher.exec.InProcessBuildActionExecuter.execute(InProcessBuildActionExecuter.java:28)
		at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:81)
		at org.gradle.launcher.exec.ContinuousBuildActionExecuter.execute(ContinuousBuildActionExecuter.java:46)
		at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:51)
		at org.gradle.launcher.exec.DaemonUsageSuggestingBuildActionExecuter.execute(DaemonUsageSuggestingBuildActionExecuter.java:28)
		at org.gradle.launcher.cli.RunBuildAction.run(RunBuildAction.java:43)
		at org.gradle.internal.Actions$RunnableActionAdapter.execute(Actions.java:173)
		at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:241)
		at org.gradle.launcher.cli.CommandLineActionFactory$ParseAndBuildAction.execute(CommandLineActionFactory.java:214)
		at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:35)
		at org.gradle.launcher.cli.JavaRuntimeValidationAction.execute(JavaRuntimeValidationAction.java:24)
		at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:207)
		at org.gradle.launcher.cli.CommandLineActionFactory$WithLogging.execute(CommandLineActionFactory.java:169)
		at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:33)
		at org.gradle.launcher.cli.ExceptionReportingAction.execute(ExceptionReportingAction.java:22)
		at org.gradle.launcher.Main.doAction(Main.java:33)
		at org.gradle.launcher.bootstrap.EntryPoint.run(EntryPoint.java:45)
		at org.gradle.launcher.bootstrap.ProcessBootstrap.runNoExit(ProcessBootstrap.java:55)
		at org.gradle.launcher.bootstrap.ProcessBootstrap.run(ProcessBootstrap.java:36)
		at org.gradle.launcher.GradleMain.main(GradleMain.java:23)
		at org.gradle.wrapper.BootstrapMainStarter.start(BootstrapMainStarter.java:30)
		at org.gradle.wrapper.WrapperExecutor.execute(WrapperExecutor.java:129)
		at org.gradle.wrapper.GradleWrapperMain.main(GradleWrapperMain.java:61)
Caused by: org.gradle.api.GradleException: Error running Asciidoctor
		at org.asciidoctor.gradle.AsciidoctorTask.processDocumentsAndResources(AsciidoctorTask.groovy:663)
		at org.asciidoctor.gradle.AsciidoctorTask.processAsciidocSources(AsciidoctorTask.groovy:596)
		at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:75)
		at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.doExecute(AnnotationProcessingTaskFactory.java:228)
		at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:221)
		at org.gradle.api.internal.project.taskfactory.AnnotationProcessingTaskFactory$StandardTaskAction.execute(AnnotationProcessingTaskFactory.java:210)
		at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:585)
		at org.gradle.api.internal.AbstractTask$TaskActionWrapper.execute(AbstractTask.java:568)
		at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeAction(ExecuteActionsTaskExecuter.java:80)
		at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeActions(ExecuteActionsTaskExecuter.java:61)
		... 60 more
Caused by: org.asciidoctor.internal.AsciidoctorCoreException: org.jruby.exceptions.RaiseException: (Errno::ENOENT) C:/Users/Domenic/Desktop/wiki-master/wiki-master/build/asciidoc/html5/????????????/jme3_ru/faq_ru.html
		at org.asciidoctor.internal.JRubyAsciidoctor.renderFile(JRubyAsciidoctor.java:345)
		at org.asciidoctor.Asciidoctor$renderFile.call(Unknown Source)
		at org.asciidoctor.gradle.AsciidoctorProxyImpl.renderFile(AsciidoctorProxyImpl.groovy:26)
		at org.asciidoctor.gradle.AsciidoctorProxy$renderFile.call(Unknown Source)
		at org.asciidoctor.gradle.AsciidoctorTask.processSingleFile(AsciidoctorTask.groovy:676)
		at org.asciidoctor.gradle.AsciidoctorTask$_processDocumentsAndResources_closure7.doCall(AsciidoctorTask.groovy:656)
		at org.asciidoctor.gradle.AsciidoctorTask.processDocumentsAndResources(AsciidoctorTask.groovy:651)
		... 69 more
Caused by: org.jruby.exceptions.RaiseException: (Errno::ENOENT) C:/Users/Domenic/Desktop/wiki-master/wiki-master/build/asciidoc/html5/????????????/jme3_ru/faq_ru.html
		at org.jruby.RubyFile.initialize(org/jruby/RubyFile.java:363)
		at org.jruby.RubyIO.open(org/jruby/RubyIO.java:1179)
		at RUBY.write(C:/Users/Domenic/.gradle/caches/modules-2/files-2.1/org.asciidoctor/asciidoctorj/1.5.4/fff9a4fe8f098a2b3a64d87988e685883a5bb5d0/asciidoctorj-1.5.4.jar!/gems/asciidoctor-1.5.4/lib/asciidoctor/document.rb:1076)
		at RUBY.convert(C:/Users/Domenic/.gradle/caches/modules-2/files-2.1/org.asciidoctor/asciidoctorj/1.5.4/fff9a4fe8f098a2b3a64d87988e685883a5bb5d0/asciidoctorj-1.5.4.jar!/gems/asciidoctor-1.5.4/lib/asciidoctor.rb:1508)
		at RUBY.convert_file(C:/Users/Domenic/.gradle/caches/modules-2/files-2.1/org.asciidoctor/asciidoctorj/1.5.4/fff9a4fe8f098a2b3a64d87988e685883a5bb5d0/asciidoctorj-1.5.4.jar!/gems/asciidoctor-1.5.4/lib/asciidoctor.rb:1576)
		at RUBY.convertFile(<script>:68)
		at org.jruby.gen.InterfaceImpl838559310.convertFile(org/jruby/gen/InterfaceImpl838559310.gen:13)
		at org.asciidoctor.gradle.AsciidoctorProxyImpl.renderFile(AsciidoctorProxyImpl.groovy:26)
		at org.asciidoctor.gradle.AsciidoctorTask.processSingleFile(AsciidoctorTask.groovy:676)
		at org.asciidoctor.gradle.AsciidoctorTask$_processDocumentsAndResources_closure7.doCall(AsciidoctorTask.groovy:656)
		at org.asciidoctor.gradle.AsciidoctorTask.processDocumentsAndResources(AsciidoctorTask.groovy:651)
		at org.asciidoctor.gradle.AsciidoctorTask.processAsciidocSources(AsciidoctorTask.groovy:596)


BUILD FAILED

Total time: 48.13 secs

Am I doing something wrong here?

EDIT:
It seems like it worked. I just noticed that all files have been converted corectly to HTML. Well, then I am fine so far :wink:

1 Like

You should be able to print the manual in the SDK, most print functions allow printing to PDF (depending on the OS).

Hello normen, I tried that, but then only the current selected chapter will be printed (to PDF).

I followed your instructions and I successfully converted it into html just with some errors like the one @Domenic mentioned but I think it’s on the file itself. It’s working fine now, thank you very much.

1 Like

You’re welcome my friend :slight_smile:
Glad that it was helpful.

Yeah as @Abnonymous said, really thank you! For me it worked too!

1 Like

You are welcome Domenic :slight_smile:
Glad it worked.

1 Like