aboutsummaryrefslogtreecommitdiff
path: root/build2/bash/rule.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'build2/bash/rule.hxx')
-rw-r--r--build2/bash/rule.hxx89
1 files changed, 0 insertions, 89 deletions
diff --git a/build2/bash/rule.hxx b/build2/bash/rule.hxx
deleted file mode 100644
index c160bb7..0000000
--- a/build2/bash/rule.hxx
+++ /dev/null
@@ -1,89 +0,0 @@
-// file : build2/bash/rule.hxx -*- C++ -*-
-// copyright : Copyright (c) 2014-2019 Code Synthesis Ltd
-// license : MIT; see accompanying LICENSE file
-
-#ifndef BUILD2_BASH_RULE_HXX
-#define BUILD2_BASH_RULE_HXX
-
-#include <libbuild2/types.hxx>
-#include <libbuild2/utility.hxx>
-
-#include <libbuild2/install/rule.hxx>
-
-#include <libbuild2/in/rule.hxx>
-
-namespace build2
-{
- namespace bash
- {
- // Preprocess a bash script (exe{}) or module (bash{}) .in file that
- // imports one or more bash modules.
- //
- // Note that the default substitution symbol is '@' and the mode is lax
- // (think bash arrays). The idea is that '@' is normally used in ways that
- // are highly unlikely to be misinterpreted as substitutions. The user,
- // however, is still able to override both of these choices with the
- // corresponding in.* variables (e.g., to use '`' and strict mode).
- //
- class in_rule: public in::rule
- {
- public:
- in_rule (): rule ("bash.in 1", "bash.in", '@', false /* strict */) {}
-
- virtual bool
- match (action, target&, const string&) const override;
-
- virtual recipe
- apply (action, target&) const override;
-
- virtual target_state
- perform_update (action, const target&) const override;
-
- virtual prerequisite_target
- search (action,
- const target&,
- const prerequisite_member&,
- include_type) const override;
-
- virtual optional<string>
- substitute (const location&,
- action a,
- const target&,
- const string&,
- bool) const override;
-
- string
- substitute_import (const location&,
- action a,
- const target&,
- const string&) const;
- };
-
- // Installation rule for bash scripts (exe{}) and modules (bash{}). Here
- // we do:
- //
- // 1. Signal to in_rule that this is update for install.
- //
- // 2. Custom filtering of prerequisites.
- //
- class install_rule: public install::file_rule
- {
- public:
- install_rule (const in_rule& in): in_ (in) {}
-
- virtual bool
- match (action, target&, const string&) const override;
-
- virtual recipe
- apply (action, target&) const override;
-
- virtual const target*
- filter (action, const target&, const prerequisite&) const override;
-
- private:
- const in_rule& in_;
- };
- }
-}
-
-#endif // BUILD2_BASH_RULE_HXX