summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
Diffstat (limited to 'doc')
-rw-r--r--doc/FreeBSD.mdwn6
-rw-r--r--doc/Linux.mdwn2
-rw-r--r--doc/haskell_newbie.mdwn6
-rw-r--r--doc/todo/chroot_should_type_check_inner_and_outer_OS.mdwn9
-rw-r--r--doc/todo/depend_on_concurrent-output.mdwn3
-rw-r--r--doc/todo/type_level_OS_requirements.mdwn9
-rw-r--r--doc/writing_properties.mdwn10
7 files changed, 30 insertions, 15 deletions
diff --git a/doc/FreeBSD.mdwn b/doc/FreeBSD.mdwn
index 2edff223..47b9c65b 100644
--- a/doc/FreeBSD.mdwn
+++ b/doc/FreeBSD.mdwn
@@ -1,8 +1,10 @@
Propellor is in the early stages of supporting FreeBSD. It should basically
work, and there are some modules with FreeBSD-specific properties.
-However, many other properties assume they're being run on a
-Debian Linux system, and need additional porting to support FreeBSD.
+However, many other properties only work on a Debian Linux system, and need
+additional porting to support FreeBSD. Such properties have types like
+`Property DebianLike`. The type checker will detect and reject attempts
+to combine such properties with `Property FreeBSD`.
[Sample config file](http://git.joeyh.name/?p=propellor.git;a=blob;f=config-freebsd.hs)
which configures a FreeBSD system, as well as a Linux one.
diff --git a/doc/Linux.mdwn b/doc/Linux.mdwn
index 0434d69d..00276f69 100644
--- a/doc/Linux.mdwn
+++ b/doc/Linux.mdwn
@@ -6,4 +6,4 @@ Indeed, Propellor has been ported to [[FreeBSD]] now!
See [[forum/Supported_OS]] for porting tips.
Note that you can run Propellor on a OSX laptop and have it manage Linux
-systems.
+and other systems.
diff --git a/doc/haskell_newbie.mdwn b/doc/haskell_newbie.mdwn
index e92481f9..bd343cd6 100644
--- a/doc/haskell_newbie.mdwn
+++ b/doc/haskell_newbie.mdwn
@@ -48,12 +48,12 @@ Finally, you need to define the configuration for each host in the list:
[[!format haskell """
mylaptop :: Host
mylaptop = host "mylaptop.example.com"
- & os (System (Debian Unstable) "amd64")
+ & osDebian Unstable "amd64"
& Apt.stdSourcesList
myserver :: Host
myserver = host "server.example.com"
- & os (System (Debian (Stable "jessie")) "amd64")
+ & osDebian (Stable "jessie") "amd64"
& Apt.stdSourcesList
& Apt.installed ["ssh"]
"""]]
@@ -96,7 +96,7 @@ is.
<pre>
config.hs:30:19:
Couldn't match expected type `RevertableProperty'
- with actual type `Property NoInfo'
+ with actual type `Property DebianLike'
In the return type of a call of `Apt.installed'
In the second argument of `(!)', namely `Apt.installed ["ssh"]'
In the first argument of `(&)', namely
diff --git a/doc/todo/chroot_should_type_check_inner_and_outer_OS.mdwn b/doc/todo/chroot_should_type_check_inner_and_outer_OS.mdwn
new file mode 100644
index 00000000..ff5d5434
--- /dev/null
+++ b/doc/todo/chroot_should_type_check_inner_and_outer_OS.mdwn
@@ -0,0 +1,9 @@
+Currently chroot properties containing any OS can be added to any host. Of
+course, some won't work. It would be nice to type check that the
+combination of inner and outer OS are compatable (ie, some linux on some
+linux).
+
+I have a partially done patch for that, but it failed at the last hurdle.
+See commit message 0b0ea182ab3301ade8b87b1be1cdecc3464cd1da
+
+[[!tag users/joey]]
diff --git a/doc/todo/depend_on_concurrent-output.mdwn b/doc/todo/depend_on_concurrent-output.mdwn
index fdc66b04..a104c82b 100644
--- a/doc/todo/depend_on_concurrent-output.mdwn
+++ b/doc/todo/depend_on_concurrent-output.mdwn
@@ -8,3 +8,6 @@ Once this is done, can switch GHC-Options back to -O0 from -O.
-O0 is better because ghc takes less memory to build propellor.
[[!tag user/joey]]
+
+> [[done]]. Didn't wait for it to hit stable; cabal will be used to install
+> it.
diff --git a/doc/todo/type_level_OS_requirements.mdwn b/doc/todo/type_level_OS_requirements.mdwn
index 7c2fb78f..fed1b279 100644
--- a/doc/todo/type_level_OS_requirements.mdwn
+++ b/doc/todo/type_level_OS_requirements.mdwn
@@ -21,13 +21,12 @@ withOS.
The `os` property would need to yield a `Property (os:[])`, where the type
level list contains a type-level eqivilant of the value passed to the
-property. Is that possible to do? reification or something?
-(See: <https://www.schoolofhaskell.com/user/thoughtpolice/using-reflection>)
-Or, alternatively, could have less polymorphic `debian` etc
+property. Is that possible to do?
+Or, alternatively, could have less polymorphic `osDebian` etc
properties replace the `os` property.
If a Host's list of properties, when all combined together,
-contains more than one element in its '[OS], that needs to be a type error,
+contains more than one element in its '[OS], that could be a type error,
the OS of the Host is indeterminite. Which would be fixed by using the `os`
property to specify.
@@ -53,3 +52,5 @@ work with that version, with some added ugliness.
--[[Joey]]
[[!tag user/joey]]
+
+> [[done]]!! --[[Joey]]
diff --git a/doc/writing_properties.mdwn b/doc/writing_properties.mdwn
index 2209026f..1b7f046a 100644
--- a/doc/writing_properties.mdwn
+++ b/doc/writing_properties.mdwn
@@ -31,7 +31,7 @@ Propellor makes it very easy to put together a property like this.
Let's start with a property that combines the two properties you mentioned:
- hasLoginShell :: UserName -> FilePath -> Property
+ hasLoginShell :: UserName -> FilePath -> Property UnixLike
hasLoginShell user shell = shellSetTo user shell `requires` shellEnabled shell
The shellEnabled property can be easily written using propellor's file
@@ -40,14 +40,14 @@ manipulation properties.
-- Need to add an import to the top of the source file.
import qualified Propellor.Property.File as File
- shellEnabled :: FilePath -> Property
+ shellEnabled :: FilePath -> Property UnixLike
shellEnabled shell = "/etc/shells" `File.containsLine` shell
And then, we want to actually change the user's shell. The `chsh(1)`
program can do that, so we can simply tell propellor the command line to
run:
- shellSetTo :: UserName -> FilePath -> Property
+ shellSetTo :: UserName -> FilePath -> Property UnixLike
shellSetTo user shell = cmdProperty "chsh" ["--shell", shell, user]
The only remaining problem with this is that shellSetTo runs chsh every
@@ -56,7 +56,7 @@ it runs, even when it didn't really do much. Now, there's an easy way to
avoid that problem, we could just tell propellor to assume that chsh
has not made a change:
- shellSetTo :: UserName -> FilePath -> Property
+ shellSetTo :: UserName -> FilePath -> Property UnixLike
shellSetTo user shell = cmdProperty "chsh" ["--shell", shell, user]
`assume` NoChange
@@ -64,7 +64,7 @@ But, it's not much harder to do this right. Let's make the property
check if the user's shell is already set to the desired value and avoid
doing anything in that case.
- shellSetTo :: UserName -> FilePath -> Property
+ shellSetTo :: UserName -> FilePath -> Property UnixLike
shellSetTo user shell = check needchangeshell $
cmdProperty "chsh" ["--shell", shell, user]
where