Git commit c3d82f75916efed5bbb3f895e40545d31d9bf281 by Michael Pyne. Committed on 14/04/2018 at 04:34. Pushed by mpyne into branch 'make_it_mojo'.
mojo: Add --launch-browser cmdline option. Launches the configured default browser to show the status viewer web page recently introduced. M +11 -0 doc/index.docbook M +29 -0 doc/man-kdesrc-build.1.docbook M +25 -0 modules/ksb/Application.pm https://commits.kde.org/kdesrc-build/c3d82f75916efed5bbb3f895e40545d31d9bf281 diff --git a/doc/index.docbook b/doc/index.docbook index 0182369..e005630 100644 --- a/doc/index.docbook +++ b/doc/index.docbook @@ -3271,6 +3271,17 @@ kdepim: master </listitem> </varlistentry> +<varlistentry id="cmdline-launch-browser"> +<term><parameter>--launch-browser</parameter></term> +<listitem><para> + When &kdesrc-build; is already running (that is, in a separate terminal + session), you can use this option to have &kdesrc-build; launch a web + browser that will show a web page showing the status of the build process. + This does not require Internet access, and can be more convenient than the + command-line output. +</para></listitem> +</varlistentry> + <varlistentry id="cmdline-no-rebuild-on-fail"> <term><parameter>--no-rebuild-on-fail</parameter></term> <listitem><para> diff --git a/doc/man-kdesrc-build.1.docbook b/doc/man-kdesrc-build.1.docbook index 539b54a..0d0602f 100644 --- a/doc/man-kdesrc-build.1.docbook +++ b/doc/man-kdesrc-build.1.docbook @@ -43,6 +43,18 @@ <arg rep="repeat"><replaceable>OPTIONS</replaceable></arg> <arg rep="repeat"><replaceable>Module name | Module set name</replaceable></arg> </cmdsynopsis> + +<cmdsynopsis> +<command>kdesrc-build</command> +<arg choice='plain'>--query</arg> +<arg choice='req'><replaceable>VALUE TO QUERY</replaceable></arg> +<arg rep="repeat"><replaceable>Module name</replaceable></arg> +</cmdsynopsis> + +<cmdsynopsis> +<command>kdesrc-build</command> +<arg choice='plain'>--launch-browser</arg> +</cmdsynopsis> </refsynopsisdiv> <refsect1> @@ -568,6 +580,23 @@ combining short options into one at this point. (E.g. running </listitem> </varlistentry> +<varlistentry> +<term> +<option>--launch-browser</option> +</term> + +<listitem> +<para> + When <command>kdesrc-build</command> is already running (in a separate + terminal), you can run this command to run a Web browser to show a web page + that will track the status of the running kdesrc-build session. The + browser is opened using the <command>xdg-open</command> so this requires + your environment to be configured to associate your preferred browser to + web pages. +</para> +</listitem> +</varlistentry> + <varlistentry> <term> <option>--run=<replaceable>foo</replaceable></option> diff --git a/modules/ksb/Application.pm b/modules/ksb/Application.pm index 736f408..8745c31 100644 --- a/modules/ksb/Application.pm +++ b/modules/ksb/Application.pm @@ -24,6 +24,7 @@ use ksb::DependencyResolver 0.20; use ksb::Updater::Git; use ksb::Version qw(scriptVersion); +use Mojo::File; use Mojo::IOLoop; use Mojo::JSON qw(encode_json); use Mojo::Message::Request; @@ -294,6 +295,7 @@ DONE 'rc-file=s', 'prefix=s', 'niceness|nice:10', 'ignore-modules=s{,}', 'print-modules', 'pretend|dry-run|p', 'refresh-build', 'query=s', 'start-program|run=s{,}', + 'launch-browser', 'revision=i', 'resume-from=s', 'resume-after=s', 'rebuild-failures', 'resume', 'stop-on-failure', 'stop-after=s', 'stop-before=s', 'set-module-option-value=s', @@ -359,6 +361,10 @@ sub generateModuleList my %ignoredSelectors; @ignoredSelectors{@{$cmdlineGlobalOptions->{'ignore-modules'}}} = undef; + if (exists $cmdlineGlobalOptions->{'launch-browser'}) { + _launchStatusViewerBrowser(); # does not return + } + my @startProgramAndArgs = @{$cmdlineGlobalOptions->{'start-program'}}; delete @{$cmdlineGlobalOptions}{qw/ignore-modules start-program/}; @@ -2737,6 +2743,25 @@ sub _reachableModuleLogs return keys %tempHash; } +# Runs xdg-open to the URL at $XDG_RUNTIME_DIR/kdesrc-build-status-server, if +# that file exists and is readable. Otherwise lets the user know there was an +# error. Either way this function always exits the process immediately. +sub _launchStatusViewerBrowser +{ + my $run = $ENV{XDG_RUNTIME_DIR} // '/tmp'; + my $file = "$run/kdesrc-build-status-server"; + my $url = eval { Mojo::File->new($file)->slurp }; + + if ($url) { + exec { 'xdg-open' } 'xdg-open', $url or die + "Failed to launch browser, couldn't run xdg-open: $!"; + } + else { + say "Unable to launch browser for the status server, couldn't find right URL"; + exit 1; + } +} + # Installs the given subroutine as a signal handler for a set of signals which # could kill the program. #
